diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 7dd895c61..66814f366 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -13,10 +13,10 @@ name: "CodeQL" on: push: - branches: [ main ] + branches: [main] pull_request: # The branches below must be a subset of the branches above - branches: [ main ] + branches: [main] jobs: analyze: @@ -30,40 +30,40 @@ jobs: strategy: fail-fast: false matrix: - language: [ 'javascript', 'python' ] + language: ["javascript", "python"] # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ] # Learn more: # https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed steps: - - name: Checkout repository - uses: actions/checkout@v2 + - name: Checkout repository + uses: actions/checkout@v2 - # Initializes the CodeQL tools for scanning. - - name: Initialize CodeQL - uses: github/codeql-action/init@v1 - with: - languages: ${{ matrix.language }} - # If you wish to specify custom queries, you can do so here or in a config file. - # By default, queries listed here will override any specified in a config file. - # Prefix the list here with "+" to use these queries and those in the config file. - # queries: ./path/to/local/query, your-org/your-repo/queries@main + # Initializes the CodeQL tools for scanning. + - name: Initialize CodeQL + uses: github/codeql-action/init@v1 + with: + languages: ${{ matrix.language }} + # If you wish to specify custom queries, you can do so here or in a config file. + # By default, queries listed here will override any specified in a config file. + # Prefix the list here with "+" to use these queries and those in the config file. + # queries: ./path/to/local/query, your-org/your-repo/queries@main - # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). - # If this step fails, then you should remove it and run the build manually (see below) - - name: Autobuild - uses: github/codeql-action/autobuild@v1 + # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). + # If this step fails, then you should remove it and run the build manually (see below) + - name: Autobuild + uses: github/codeql-action/autobuild@v1 - # ℹ️ Command-line programs to run using the OS shell. - # 📚 https://git.io/JvXDl + # ℹ️ Command-line programs to run using the OS shell. + # 📚 https://git.io/JvXDl - # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines - # and modify them (or add more) to build your code if your project - # uses a compiled language + # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines + # and modify them (or add more) to build your code if your project + # uses a compiled language - #- run: | - # make bootstrap - # make release + #- run: | + # make bootstrap + # make release - - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v1 + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v1 diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index d55d756b1..c7a09ecc5 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -3,9 +3,9 @@ name: Validate Main on: # Triggers the workflow on push or pull request events for the master branch push: - branches: [ main ] + branches: [main] pull_request: - branches: [ main ] + branches: [main] # Allows you to run this workflow manually from the Actions tab workflow_dispatch: @@ -24,7 +24,7 @@ jobs: - name: Setup nodejs uses: actions/setup-node@v2 with: - node-version: '14' + node-version: "14" - name: Run makefile run: | @@ -38,7 +38,6 @@ jobs: name: colte-package path: BUILD/colte_*.deb - package-install: runs-on: ubuntu-latest needs: build @@ -60,7 +59,6 @@ jobs: sudo dpkg -i colte_*.deb || /bin/true sudo apt-get install --yes -f - run-tests: runs-on: ubuntu-latest services: @@ -78,7 +76,7 @@ jobs: - name: Setup nodejs uses: actions/setup-node@v2 with: - node-version: '14' + node-version: "14" - name: Checkout repo uses: actions/checkout@v2 diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 000000000..b9daecb01 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,17 @@ +**/node_modules + +# Vendored css and js files +emergency/homepage/bootstrap.css +emergency/registry/polls/static/css/bootstrap.css +webadmin/public/bootstrap-4.5.3 +webgui/public/stylesheets/bootstrap.min.css + +# Ignore Jekyll build products Should be moved into the docs directory once +# https://github.com/prettier/prettier/issues/4081 is merged. +docs/_site +docs/.sass-cache +docs/.jekyll-cache +docs/.jekyll-metadata + +# Ignore python files, that will be formatted via black +python/**/*.py \ No newline at end of file diff --git a/.prettierrc.yml b/.prettierrc.yml new file mode 100644 index 000000000..7b3b9a903 --- /dev/null +++ b/.prettierrc.yml @@ -0,0 +1,5 @@ +trailingComma: "es5" +printWidth: 100 +tabWidth: 2 +semi: true +bracketSpacing: false diff --git a/README.md b/README.md index c209ba511..d523f34ea 100644 --- a/README.md +++ b/README.md @@ -1,25 +1,31 @@ # CoLTE + CoLTE is the Community LTE Project. It is designed to be an all-in-one turnkey solution that sets up a small-scale locally-run LTE network. CoLTE consists of several main elements working together: -1) An all-in-one software EPC, powered by [open5gs] (https://github.com/open5gs/open5gs). -2) Network monitoring software, powered by [haulage](https://github.com/uw-ictd/haulage), to keep track of how many bytes each user uses and bill appropriately. -3) A Web GUI that lets network users check the status of their account, top up, transfer/resell credit, and buy data packages. -4) A Web-based admin tool that lets administrators manage all the information above. -5) Local Web and DNS serving/caching via Nginx and BIND. + +1. An all-in-one software EPC, powered by [open5gs] (https://github.com/open5gs/open5gs). +2. Network monitoring software, powered by [haulage](https://github.com/uw-ictd/haulage), to keep track of how many bytes each user uses and bill appropriately. +3. A Web GUI that lets network users check the status of their account, top up, transfer/resell credit, and buy data packages. +4. A Web-based admin tool that lets administrators manage all the information above. +5. Local Web and DNS serving/caching via Nginx and BIND. # Installation + ### Basic System Requirements: + We now support Ubuntu 18.04 (bionic), Ubuntu 20.04 (focal), and Debian 10 (buster). Our primary deployments are currently on bionic and buster, and we have better test coverage for those distributions. We recommend buster for new installs. ### Apt Packages + To ease deployment, we host apt packages on our server. You will need to add our apt repository to get colte and haulage, and you will also need to add the open5gs repository separately. To do this, use the following commands according to your distribution: #### Debian 10 (buster) (Recommended) + ```shell echo "deb [signed-by=/usr/share/keyrings/colte-archive-keyring.gpg] http://colte.cs.washington.edu $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/colte.list sudo wget -O /usr/share/keyrings/colte-archive-keyring.gpg http://colte.cs.washington.edu/colte-archive-keyring.gpg @@ -32,6 +38,7 @@ sudo apt install colte ``` #### Ubuntu 18.04 or 20.04 (bionic or focal) + ```shell echo "deb [signed-by=/usr/share/keyrings/colte-archive-keyring.gpg] http://colte.cs.washington.edu $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/colte.list sudo wget -O /usr/share/keyrings/colte-archive-keyring.gpg http://colte.cs.washington.edu/colte-archive-keyring.gpg @@ -46,52 +53,67 @@ After installation, the admin tool will be running and listening on [http://loca Haulage can be started with `sudo haulage` or `sudo systemctl start haulage`, but will likely fail if not first configured for your system (see [configuration](#Configuration)). To start Open5Gs, refer to the docs [here](https://open5gs.org/open5gs/docs/). ### Working With The Source: + The top-level Makefile will compile all source and generate a `.deb` package if you type `make`. If you want to run the webgui or webadmin from source in a local terminal without doing a system-wide installation, `cd` into the corresponding directory and then do the following: + ``` npm install npm start ``` # Configuration + After installation, pointers to all the various config files can be found in `/etc/colte/`. The main config file is `config.yml`. After you edit this file, run `colteconf` to reconfigure all components and restart them as necessary. Note that you **must** run colteconf at least once after installing CoLTE, because there is no way for us to know some of the options (e.g. upstream and downstream interfaces). ## Basic Configs: + Conceptually, your machine will need two network connections: one to the Internet (the upstream WAN) and another to the eNodeB (the downstream LAN) - these can actually be the same interface, it doesn't matter. Set `wan_iface` to your upstream (Internet) interface, and `enb_iface_addr` to the downstream interface's address/subnet. Don't worry about matching `lte_subnet` to any value in particular, because this subnet is created and assigned to the virtual `ogstun` interface used by the Open5Gs pgw. ## Adding Users + Once you’ve configured the system, you will have to add user accounts. The best way to do this is to use `coltedb`. You will have to provide the user’s IMSI, phone number (can be any value you choose), static IP address, and security values (KI and OPC). ## Configuring The Phone -Once you’ve added a user, you *may* have to configure the phone’s APN settings as well. This is easy to do: go to Settings -> Mobile Network -> Advanced -> APN Settings and add an APN. The values for name and apn should both just be “internet”, you can leave everything else alone as it is. + +Once you’ve added a user, you _may_ have to configure the phone’s APN settings as well. This is easy to do: go to Settings -> Mobile Network -> Advanced -> APN Settings and add an APN. The values for name and apn should both just be “internet”, you can leave everything else alone as it is. # Money And Accounting + ## System Architecture -Setting the `metered` variable to `true` (this is on by default) turns on three services: `haulage`, `colte-webgui`, and `colte-webadmin`. [haulage](https://github.com/uw-ictd/haulage) monitors the `ogstun` interface, draws user accounts down from a quota, and turns them off when they hit zero. Users can interact with their account (transfer money, buy data packages, etc) via the webgui - accessible by default at `http://(your IP address):7999`. Similarly, we provide a separate web-based tool for network administrators to change account balances, enable or disable specific users, topup accounts, and transfer money from one user to another. It is accessible *only* from the EPC, at `http://(your IP address):7998`. The username is `admin` and the default password is `password`. + +Setting the `metered` variable to `true` (this is on by default) turns on three services: `haulage`, `colte-webgui`, and `colte-webadmin`. [haulage](https://github.com/uw-ictd/haulage) monitors the `ogstun` interface, draws user accounts down from a quota, and turns them off when they hit zero. Users can interact with their account (transfer money, buy data packages, etc) via the webgui - accessible by default at `http://(your IP address):7999`. Similarly, we provide a separate web-based tool for network administrators to change account balances, enable or disable specific users, topup accounts, and transfer money from one user to another. It is accessible _only_ from the EPC, at `http://(your IP address):7998`. The username is `admin` and the default password is `password`. ## Administration + To add money to a user’s account, use `coltedb topup` or the webadmin tool. By default, users start out with a zero money balance and 10MB of data-balance. To configure the data packages users can buy, as well as their price-points, edit `/etc/colte/pricing.json`. ## WebAdmin and WebGUI + Both of these services are started automatically after installation. They have detailed configurations in `/etc/colte/{webgui.env|webadmin.env}`; for more details, consult `/{webadmin|webgui}/README`. You will have to restart these services after you change any of these variables, and you can do so with: + ``` sudo systemctl {start|stop} {colte-webadmin|colte-webgui} ``` # Log Files + `/var/log/colte`. # Known Issues + - Right now, the webservices are only hosted as high-number ports. In the interest of not dominating your system we do not currently integrate with any apps that serve DNS or HTTP (e.g. `bind` or `nginx`); we plan to eventually support this. In the meantime, you are responsible for either (a) changing the app to listen on 80 or (b) plumbing a port-forwarding solution using `nginx` or something similar. - **open5gs-pgwd conflicts with systemd-networkd:** The open5gs package has a known issue wherein open5gs-pgwd conflicts with systemd-networkd. This is already fixed in source, and will be fixed in the packages as soon as Sukchan drafts a new release of open5gs. Until then, you will see an error after running colteconf, but the following commands will fix it: + ``` sudo systemctl stop open5gs-pgwd sudo systemctl restart systemd-networkd sudo systemctl start open5gs-pgwd ``` + - **systemd-networkd sometimes does not bring up the tun IP address:** -I have seen this issue occasionally, but have not been able to reproduce it consistently. I am not entirely sure what causes it, but have found some other discussion about a similar issue. The issue is claimed to have been fixed in systemd-241, but Ubuntu 18.04 ships with version 237. This issue pops up occasionally, but usually right after you change the `lte_subnet` variable and run `colteconf`. Sometimes, but not always, starting (or restarting) `open5gs-pgwd` and/or `systemd-networkd` will fix this issue. If not, a system reboot usually does the trick. + I have seen this issue occasionally, but have not been able to reproduce it consistently. I am not entirely sure what causes it, but have found some other discussion about a similar issue. The issue is claimed to have been fixed in systemd-241, but Ubuntu 18.04 ships with version 237. This issue pops up occasionally, but usually right after you change the `lte_subnet` variable and run `colteconf`. Sometimes, but not always, starting (or restarting) `open5gs-pgwd` and/or `systemd-networkd` will fix this issue. If not, a system reboot usually does the trick. # What about OAI? diff --git a/colte-common-models/customer.js b/colte-common-models/customer.js index eae0b19de..a956f3b11 100644 --- a/colte-common-models/customer.js +++ b/colte-common-models/customer.js @@ -1,37 +1,31 @@ // database connection will be injected externally. let knex = null; -const { attachPaginate } = require('knex-paginate'); +const {attachPaginate} = require("knex-paginate"); attachPaginate(); -var fs = require('fs'); -var dateTime = require('date-time'); +var fs = require("fs"); +var dateTime = require("date-time"); var transaction_log = process.env.TRANSACTION_LOG || "/var/log/colte/transaction_log.txt"; function transfer_balance_impl(sender_imsi, receiver_imsi, amount, kind) { function fetch_bals(trx) { - return trx.select( - 'balance' - ).forUpdate( - ).where( - 'imsi', sender_imsi - ).from( - 'customers' - ).then((sender_bal) => { - return trx.select( - 'balance' - ).where( - 'imsi', receiver_imsi - ).from( - 'customers' - ).then((receiver_bal) => { - return [sender_bal, receiver_bal]; + return trx + .select("balance") + .forUpdate() + .where("imsi", sender_imsi) + .from("customers") + .then((sender_bal) => { + return trx + .select("balance") + .where("imsi", receiver_imsi) + .from("customers") + .then((receiver_bal) => { + return [sender_bal, receiver_bal]; + }); }); - }); } function transfer_func(trx) { - return fetch_bals( - trx - ).then((data) => { + return fetch_bals(trx).then((data) => { var err = null; var sender_bal; var receiver_bal; @@ -51,33 +45,36 @@ function transfer_balance_impl(sender_imsi, receiver_imsi, amount, kind) { } } if (err) { - return new Promise((res, rej) => { rej(err) }); + return new Promise((res, rej) => { + rej(err); + }); } sender_bal = Number(sender_bal) - Number(amount); receiver_bal = Number(receiver_bal) + Number(amount); - return trx.update( - { balance: sender_bal } - ).where( - 'imsi', sender_imsi - ).from( - 'customers' - ).then((unused_data) => { - // note we're still using the data argument from the fetch_bals promise - return trx.update({ balance: receiver_bal }).where('imsi', receiver_imsi).from('customers') - }).then((data2) => { - var result = "Transfered " + amount + ". New balances are " + sender_bal + " and " + receiver_bal; - console.log(result); + return trx + .update({balance: sender_bal}) + .where("imsi", sender_imsi) + .from("customers") + .then((unused_data) => { + // note we're still using the data argument from the fetch_bals promise + return trx.update({balance: receiver_bal}).where("imsi", receiver_imsi).from("customers"); + }) + .then((data2) => { + var result = + "Transfered " + amount + ". New balances are " + sender_bal + " and " + receiver_bal; + console.log(result); - fs.appendFile( - transaction_log, dateTime() + " " + kind + " " + sender_imsi + " " + receiver_imsi + " " + amount + "\n", - function(err) { - if(err) { - return console.log(err); + fs.appendFile( + transaction_log, + dateTime() + " " + kind + " " + sender_imsi + " " + receiver_imsi + " " + amount + "\n", + function (err) { + if (err) { + return console.log(err); + } } - } - ); - }) + ); + }); }); } @@ -90,115 +87,133 @@ var customer = { }, all(page) { - return knex.select( - 'imsi', 'msisdn', 'raw_down', 'raw_up', 'balance', 'data_balance', 'enabled', 'bridged', 'admin', 'username' - ).from( - 'customers' - ).paginate( - {perPage: 10, currentPage: page, isLengthAware: true} - ); + return knex + .select( + "imsi", + "msisdn", + "raw_down", + "raw_up", + "balance", + "data_balance", + "enabled", + "bridged", + "admin", + "username" + ) + .from("customers") + .paginate({perPage: 10, currentPage: page, isLengthAware: true}); }, find_by_ip(ip) { - return knex.select( - 'customers.imsi', 'raw_up', 'raw_down', 'balance', 'data_balance', 'msisdn', 'admin', 'username' - ).from( - 'customers' - ).join( - 'static_ips', "customers.imsi", "=", "static_ips.imsi" - ).where( - 'static_ips.ip', ip - ); + return knex + .select( + "customers.imsi", + "raw_up", + "raw_down", + "balance", + "data_balance", + "msisdn", + "admin", + "username" + ) + .from("customers") + .join("static_ips", "customers.imsi", "=", "static_ips.imsi") + .where("static_ips.ip", ip); }, find(imsi) { - return knex.select( - 'imsi', 'raw_up', 'raw_down', 'balance', 'data_balance', 'msisdn', 'bridged', 'enabled' - ).where( - 'imsi', imsi - ).from( - 'customers' - ); + return knex + .select( + "imsi", + "raw_up", + "raw_down", + "balance", + "data_balance", + "msisdn", + "bridged", + "enabled" + ) + .where("imsi", imsi) + .from("customers"); }, update(imsi, bridged, enabled, balance, data_balance, username) { - return knex.update( - {balance: balance, data_balance: data_balance, bridged: bridged, enabled: enabled, username: username} - ).where( - 'imsi', imsi - ).from( - 'customers' - ).catch(function(error) { - throw new Error(error.sqlMessage); - }); + return knex + .update({ + balance: balance, + data_balance: data_balance, + bridged: bridged, + enabled: enabled, + username: username, + }) + .where("imsi", imsi) + .from("customers") + .catch(function (error) { + throw new Error(error.sqlMessage); + }); }, change_enabled(msisdn, isEnabled) { - return knex.select( - 'enabled' - ).where( - 'msisdn', msisdn - ).from( - 'customers' - ).catch(function (error) { - throw new Error(error.sqlMessage); - }).then( - function(rows) { + return knex + .select("enabled") + .where("msisdn", msisdn) + .from("customers") + .catch(function (error) { + throw new Error(error.sqlMessage); + }) + .then(function (rows) { if (rows.length != 1) { console.log("msisdn error"); throw new Error("msisdn error"); } return rows; - } - ).then(function(rows) { - return knex.update( - {enabled: isEnabled} - ).where( - 'msisdn', msisdn - ).from( - 'customers' - ).catch(function(error) { - throw new Error(error.sqlMessage); + }) + .then(function (rows) { + return knex + .update({enabled: isEnabled}) + .where("msisdn", msisdn) + .from("customers") + .catch(function (error) { + throw new Error(error.sqlMessage); + }); }); - }) }, top_up(imsi, delta) { - return knex.select( - 'balance' - ).where( - 'imsi', imsi - ).from( - 'customers' - ).catch(function(error) { - throw new Error(error.sqlMessage); - }).then(function(rows) { - if (rows.length != 1) { - throw new Error("imsi error"); - } - return rows; - }).then(function(rows) { - var newBalance = parseInt(rows[0].balance) + parseInt(delta); - var rval = knex.update( - {balance: newBalance} - ).where( - 'imsi', imsi - ).from( - 'customers' - ).catch(function (error) { + return knex + .select("balance") + .where("imsi", imsi) + .from("customers") + .catch(function (error) { throw new Error(error.sqlMessage); - }); + }) + .then(function (rows) { + if (rows.length != 1) { + throw new Error("imsi error"); + } + return rows; + }) + .then(function (rows) { + var newBalance = parseInt(rows[0].balance) + parseInt(delta); + var rval = knex + .update({balance: newBalance}) + .where("imsi", imsi) + .from("customers") + .catch(function (error) { + throw new Error(error.sqlMessage); + }); - fs.appendFile( - transaction_log, dateTime() + " TOPUP " + imsi + " " + delta + "\n", - function(err) { - if(err) { - return console.log(err); + fs.appendFile( + transaction_log, + dateTime() + " TOPUP " + imsi + " " + delta + "\n", + function (err) { + if (err) { + return console.log(err); + } } - } - ); - return rval; - }) + ); + return rval; + }); }, // moves "amount" from the customer with sender_imsi to the customer with receiver_imsi @@ -214,77 +229,75 @@ var customer = { }, transfer_balance_msisdn(sender_imsi, receiver_msisdn, amount) { - return knex.select( - 'imsi' - ).where( - 'msisdn', receiver_msisdn - ).from( - 'customers' - ).catch(function(error) { - throw new Error(error.sqlMessage); - }).then(function(rows) { - if (rows.length != 1) { - throw new Error("msisdn error"); - } - return rows; - }).then(function(rows) { - return customer.transfer_balance(sender_imsi, rows[0].imsi, amount); - }) + return knex + .select("imsi") + .where("msisdn", receiver_msisdn) + .from("customers") + .catch(function (error) { + throw new Error(error.sqlMessage); + }) + .then(function (rows) { + if (rows.length != 1) { + throw new Error("msisdn error"); + } + return rows; + }) + .then(function (rows) { + return customer.transfer_balance(sender_imsi, rows[0].imsi, amount); + }); }, -// ASSUMPTION: all three of these values are already sanitized/validated. -// We can cancel the transaction if (for some reason) the user doesn't -// have enough funds, otherwise no logic is really needed. + // ASSUMPTION: all three of these values are already sanitized/validated. + // We can cancel the transaction if (for some reason) the user doesn't + // have enough funds, otherwise no logic is really needed. purchase_package(imsi, cost, data) { - function purchase_func(trx) { console.log("IMSI = " + imsi + " cost = " + cost + " data = " + data); - return trx.select( - 'balance', 'data_balance' - ).forUpdate( - ).where( - 'imsi', imsi - ).from( - 'customers' - ).catch(function(error) { - throw new Error(error.sqlMessage); - }).then(function(rows) { - if (rows.length != 1) { - throw new Error("IMSI error"); - } - return rows; - }).then(function(rows) { - var newBalance = parseInt(rows[0].balance) - parseInt(cost); - var newData = parseInt(rows[0].data_balance) + parseInt(data); + return trx + .select("balance", "data_balance") + .forUpdate() + .where("imsi", imsi) + .from("customers") + .catch(function (error) { + throw new Error(error.sqlMessage); + }) + .then(function (rows) { + if (rows.length != 1) { + throw new Error("IMSI error"); + } + return rows; + }) + .then(function (rows) { + var newBalance = parseInt(rows[0].balance) - parseInt(cost); + var newData = parseInt(rows[0].data_balance) + parseInt(data); - if (newBalance < 0) { - throw new Error("Insufficient funds for transfer!"); - } + if (newBalance < 0) { + throw new Error("Insufficient funds for transfer!"); + } - var rval = trx.update( - {balance: newBalance, data_balance: newData} - ).where( - 'imsi', imsi - ).from( - 'customers' - ).catch((error) => { - throw new Error(error.sqlMessage); - }); + var rval = trx + .update({balance: newBalance, data_balance: newData}) + .where("imsi", imsi) + .from("customers") + .catch((error) => { + throw new Error(error.sqlMessage); + }); - fs.appendFile( - transaction_log, - dateTime() + " PURCHASE " + imsi + " " + data + " " + cost + "\n", - function(err) { - if(err) { - return console.log(err); + fs.appendFile( + transaction_log, + dateTime() + " PURCHASE " + imsi + " " + data + " " + cost + "\n", + function (err) { + if (err) { + return console.log(err); + } } - }); - return rval; - }); + ); + return rval; + }); } return knex.transaction(purchase_func); - } -} + }, +}; module.exports = customer; diff --git a/colte-common-models/db/migrations/20210222213205_init.js b/colte-common-models/db/migrations/20210222213205_init.js index a855afafc..2e8ab036a 100644 --- a/colte-common-models/db/migrations/20210222213205_init.js +++ b/colte-common-models/db/migrations/20210222213205_init.js @@ -1,30 +1,29 @@ - -exports.up = function(knex) { +exports.up = function (knex) { return knex.schema .createTable("customers", (table) => { - table.string("imsi", 16).notNullable().primary(); - table.string("username", 50).notNullable(); - table.bigInteger("raw_down").notNullable().unsigned().defaultTo(0); - table.bigInteger("raw_up").notNullable().unsigned().defaultTo(0); - table.bigInteger("data_balance").notNullable().defaultTo(10000000); - table.decimal("balance", 15,4).notNullable().defaultTo(0); - table.boolean("bridged").notNullable().defaultTo(true); - table.boolean("enabled").notNullable().defaultTo(true); - table.boolean("admin").notNullable().defaultTo(false); - table.string("msisdn", 16).notNullable(); + table.string("imsi", 16).notNullable().primary(); + table.string("username", 50).notNullable(); + table.bigInteger("raw_down").notNullable().unsigned().defaultTo(0); + table.bigInteger("raw_up").notNullable().unsigned().defaultTo(0); + table.bigInteger("data_balance").notNullable().defaultTo(10000000); + table.decimal("balance", 15, 4).notNullable().defaultTo(0); + table.boolean("bridged").notNullable().defaultTo(true); + table.boolean("enabled").notNullable().defaultTo(true); + table.boolean("admin").notNullable().defaultTo(false); + table.string("msisdn", 16).notNullable(); }) .createTable("static_ips", (table) => { - table.string("imsi", 16).notNullable().primary(); - table.string("ip", 16).notNullable().unique(); - table.foreign("imsi").references("customers.imsi"); + table.string("imsi", 16).notNullable().primary(); + table.string("ip", 16).notNullable().unique(); + table.foreign("imsi").references("customers.imsi"); }); }; -exports.down = function(knex) { +exports.down = function (knex) { return knex.schema .table("static_ips", (table) => { - table.dropForeign("imsi"); + table.dropForeign("imsi"); }) .dropTable("customers") - .dropTable("static_ips") + .dropTable("static_ips"); }; diff --git a/colte-common-models/db/seeds/00-baseline.js b/colte-common-models/db/seeds/00-baseline.js index 3d6f78c32..a4b3e48a4 100644 --- a/colte-common-models/db/seeds/00-baseline.js +++ b/colte-common-models/db/seeds/00-baseline.js @@ -1,25 +1,82 @@ - -exports.seed = function(knex) { +exports.seed = function (knex) { // Deletes ALL existing entries - return knex('static_ips').del() - .then(() => { return knex("customers").del(); }) + return knex("static_ips") + .del() .then(() => { - return knex('customers').insert([ - {imsi: "000000000000001", username: "localAdmin", raw_down: 0, raw_up: 0, data_balance: 100000000, balance: 0, bridged: true, enabled: true, admin: false, msisdn: "99"}, - {imsi: "000000000000002", username: "User2", raw_down: 0, raw_up: 0, data_balance: 100000000, balance: 2500, bridged: true, enabled: true, admin: false, msisdn: "2"}, - {imsi: "000000000000003", username: "User3", raw_down: 0, raw_up: 0, data_balance: 100000000, balance: 0, bridged: true, enabled: true, admin: false, msisdn: "3"}, - {imsi: "000000000000004", username: "User4", raw_down: 0, raw_up: 0, data_balance: 100000000, balance: 0, bridged: true, enabled: true, admin: false, msisdn: "4"}, - {imsi: "000000000000005", username: "User5", raw_down: 0, raw_up: 0, data_balance: 100000000, balance: 25000000, bridged: true, enabled: true, admin: false, msisdn: "5"} + return knex("customers").del(); + }) + .then(() => { + return knex("customers").insert([ + { + imsi: "000000000000001", + username: "localAdmin", + raw_down: 0, + raw_up: 0, + data_balance: 100000000, + balance: 0, + bridged: true, + enabled: true, + admin: false, + msisdn: "99", + }, + { + imsi: "000000000000002", + username: "User2", + raw_down: 0, + raw_up: 0, + data_balance: 100000000, + balance: 2500, + bridged: true, + enabled: true, + admin: false, + msisdn: "2", + }, + { + imsi: "000000000000003", + username: "User3", + raw_down: 0, + raw_up: 0, + data_balance: 100000000, + balance: 0, + bridged: true, + enabled: true, + admin: false, + msisdn: "3", + }, + { + imsi: "000000000000004", + username: "User4", + raw_down: 0, + raw_up: 0, + data_balance: 100000000, + balance: 0, + bridged: true, + enabled: true, + admin: false, + msisdn: "4", + }, + { + imsi: "000000000000005", + username: "User5", + raw_down: 0, + raw_up: 0, + data_balance: 100000000, + balance: 25000000, + bridged: true, + enabled: true, + admin: false, + msisdn: "5", + }, ]); }) .then(() => { // Inserts seed entries - return knex('static_ips').insert([ + return knex("static_ips").insert([ {imsi: "000000000000001", ip: "127.0.0.1"}, {imsi: "000000000000002", ip: "192.168.151.2"}, {imsi: "000000000000003", ip: "192.168.151.3"}, {imsi: "000000000000004", ip: "192.168.151.4"}, - {imsi: "000000000000005", ip: "192.168.151.5"} + {imsi: "000000000000005", ip: "192.168.151.5"}, ]); }); }; diff --git a/colte-common-models/index.js b/colte-common-models/index.js index 19011c5b4..91d1a51da 100644 --- a/colte-common-models/index.js +++ b/colte-common-models/index.js @@ -1,16 +1,16 @@ -'use strict' -const env = process.env.NODE_ENV || 'development'; +"use strict"; +const env = process.env.NODE_ENV || "development"; function buildCustomer() { - let config = require("./knexfile.js")[env] - config.connection.database = process.env.DB_NAME; - const knex = require('knex')(config); - const customer = require('./customer.js'); + let config = require("./knexfile.js")[env]; + config.connection.database = process.env.DB_NAME; + const knex = require("knex")(config); + const customer = require("./customer.js"); - customer.register_knex(knex) - return customer + customer.register_knex(knex); + return customer; } module.exports.buildCustomer = buildCustomer; -module.exports.getKnexInstance = require('knex'); -module.exports.knexFile = require("./knexfile.js"); \ No newline at end of file +module.exports.getKnexInstance = require("knex"); +module.exports.knexFile = require("./knexfile.js"); diff --git a/colte-common-models/knexfile.js b/colte-common-models/knexfile.js index 2a04bdf49..3e7cf7c92 100644 --- a/colte-common-models/knexfile.js +++ b/colte-common-models/knexfile.js @@ -1,66 +1,64 @@ // Update with your config settings. module.exports = { - test: { - client: 'mysql', + client: "mysql", connection: { host: process.env.DB_HOST, port: process.env.DB_PORT || 3306, database: process.env.DB_NAME, user: process.env.DB_USER, - password: process.env.DB_PASSWORD + password: process.env.DB_PASSWORD, }, migrations: { - directory: './db/migrations' + directory: "./db/migrations", }, seeds: { - directory: "./db/seeds" - } + directory: "./db/seeds", + }, }, development: { - client: 'mysql', + client: "mysql", connection: { host: process.env.DB_HOST, database: process.env.DB_NAME, user: process.env.DB_USER, - password: process.env.DB_PASSWORD - } + password: process.env.DB_PASSWORD, + }, }, staging: { - client: 'mysql', + client: "mysql", connection: { host: process.env.DB_HOST, database: process.env.DB_NAME, user: process.env.DB_USER, - password: process.env.DB_PASSWORD + password: process.env.DB_PASSWORD, }, pool: { min: 2, - max: 10 + max: 10, }, migrations: { - tableName: 'knex_migrations' - } + tableName: "knex_migrations", + }, }, production: { - client: 'mysql', + client: "mysql", connection: { host: process.env.DB_HOST, database: process.env.DB_NAME, user: process.env.DB_USER, - password: process.env.DB_PASSWORD + password: process.env.DB_PASSWORD, }, pool: { min: 2, - max: 10 + max: 10, }, migrations: { - tableName: 'knex_migrations' - } - } - + tableName: "knex_migrations", + }, + }, }; diff --git a/docs/404.html b/docs/404.html index af2774423..a0a278f7c 100644 --- a/docs/404.html +++ b/docs/404.html @@ -23,4 +23,4 @@

404

Page not found :(

The requested page could not be found.

- \ No newline at end of file + diff --git a/docs/README.md b/docs/README.md index ebd2e2814..0d8df72bd 100644 --- a/docs/README.md +++ b/docs/README.md @@ -4,4 +4,4 @@ This directory contains higher-level user-facing documentation for the CoLTE project. The intent is to present an approachable version of the documentation targeted at _users_ of CoLTE, not developers. Development documentation for now is probably most appropriately captured in README.md or ARCHITECTURE.md files as -appropriate. \ No newline at end of file +appropriate. diff --git a/docs/_config.yml b/docs/_config.yml index 363db6f34..68da72f45 100644 --- a/docs/_config.yml +++ b/docs/_config.yml @@ -23,7 +23,7 @@ description: >- # this means to ignore newlines until "baseurl:" the University of Washington ICTD Lab. baseurl: "" # the subpath of your site, e.g. /blog twitter_username: "" -github_username: "uw-ictd" +github_username: "uw-ictd" # For local development consider including the theme as a gem below instead of # using ghpages remote themes, and allowing the url to default diff --git a/docs/about.md b/docs/about.md index 2f4833e34..a07f9340f 100644 --- a/docs/about.md +++ b/docs/about.md @@ -8,18 +8,18 @@ CoLTE is the Community LTE Project. It is designed to be an all-in-one turnkey solution that sets up a small-scale locally-run LTE/5G network. CoLTE consists of several main elements working together: - 1. An all-in-one software EPC, powered by [open5gs] (https://github.com/open5gs/open5gs). +1. An all-in-one software EPC, powered by [open5gs] (https://github.com/open5gs/open5gs). - 2. Network monitoring software, powered by haulage, to keep track of how many - bytes each user uses and bill appropriately. +2. Network monitoring software, powered by haulage, to keep track of how many + bytes each user uses and bill appropriately. - 3. A Web GUI that lets network users check the status of their account, top - up, transfer/resell credit, and buy data packages. +3. A Web GUI that lets network users check the status of their account, top + up, transfer/resell credit, and buy data packages. - 4. A Web-based admin tool that lets administrators manage all the information - above. +4. A Web-based admin tool that lets administrators manage all the information + above. - 5. Local Web and DNS serving/caching via Nginx and BIND. +5. Local Web and DNS serving/caching via Nginx and BIND. For details of the history of the colte project, checkout the CoLTE blog at [blog.colte.network](https://blog.colte.network). diff --git a/docs/index.md b/docs/index.md index 6fa4cf895..638513b5c 100644 --- a/docs/index.md +++ b/docs/index.md @@ -12,4 +12,4 @@ detailed information about CoLTE, check out the bar on the left. If you would like to contribute to this documentation, we value your input! Please reach out with suggestions to `colte@cs.washington.edu` or open an issue [https://github.com/uw-ictd/colte/issues/new](https://github.com/uw-ictd/colte/issues/new) -in our repository. \ No newline at end of file +in our repository. diff --git a/docs/tutorials/epc-setup.md b/docs/tutorials/epc-setup.md index 991fb30f1..6eb5f778b 100644 --- a/docs/tutorials/epc-setup.md +++ b/docs/tutorials/epc-setup.md @@ -1,5 +1,5 @@ --- -title: "EPC \"Network in a Box\" Setup" +title: 'EPC "Network in a Box" Setup' parent: Tutorials layout: page --- @@ -19,7 +19,6 @@ to version conflicts. ![Diagram of LTE architecture including 4 main sections: User equipment (UE), eNodeB base station, Evolved Packet Core (EPC), Upstream IP networks/Internet](https://i.imgur.com/dMZQVDl.png) - CoLTE simplifies implementation and configuration of the Evolved Packet Core (EPC) elements of an LTE network using the Open5GS package. @@ -29,6 +28,7 @@ internet. It connects to the radio base station, known as the eNodeB, which in turn will associate with User Equipment (UE). ## II. CoLTE Installation + Ensure all Ubuntu packages are up-to-date: ```bash @@ -51,6 +51,7 @@ sudo apt install colte ## III. Network Interface Configuration ### A. Recommendation Configuration + This requires an EPC machine with 2 or more ethernet ports (here named enp1s0 and enp4s0). The upstream interface receives an IP address via DHCP as usual from the upstream router, which passes its traffic to and from the Internet. The @@ -97,6 +98,7 @@ the first configuration is recommended for deployments for security reasons. **The alternative should be used for testing only**. ### B. NOT Recommended for deployment + If you don’t yet have a machine with 2 ethernet ports or a USB to ethernet adapter dongle, you can temporarily use a machine with a single ethernet port along with a simple switch or router. If using a simple switch, you can follow @@ -127,6 +129,7 @@ network daemon to apply the configuration changes: $ sudo netplan try $ sudo netplan apply ``` + If the eNB will be plugged into its own dedicated EPC ethernet port, as in the recommended configuration above, you may need to connect that EPC ethernet port to something (e.g. the eNB, a switch, another machine) via an ethernet cable to @@ -138,6 +141,7 @@ the MME will continually throw errors if you try to run it. ## IV. CoLTE Configuration ### A. Using `colteconf` + CoLTE simplifies LTE network configuration by consolidating relevant configuration files into the directory `/etc/colte`. The primary configuration file is `/etc/colte/config.yml`. Update this file as below: @@ -178,6 +182,7 @@ $ sudo colteconf update This will update the configuration and reload services. ### B. Monitoring CoLTE + Ubuntu’s built-in logging and monitoring services can be used to monitor the core network services: @@ -191,7 +196,7 @@ OR $ sudo systemctl status open5gs-mmed.service ``` -*Tab complete may be able to fill in the service name for systemctl at least* +_Tab complete may be able to fill in the service name for systemctl at least_ ## V. 'Persist' CoLTE Configuration @@ -219,6 +224,7 @@ $ sudo iptables-restore < /etc/iptables/rules.v4 ## VI. User Administration and Management ### A. Command line using `coltedb` + CoLTE comes with the command `coltedb` which can be used to modify the user database via the command line. Run `coltedb` without any arguments to see a summary of the available commands. @@ -229,27 +235,27 @@ spreadsheet or text file by the SIM card manufacturer when you buy them. **PLEASE KEEP THIS INFO SECRET!!!** This is essential for the privacy and security of your network. -* IMSI - * unique identifier for SIM card - * manufacturer provides -* MSISDN - * an arbitrary number representing the user’s “phone number” - * could be the last 5 or more digits of the IMSI- make this up if not - provided to you -* IP Address - * this value sets a private static IP for each SIM card - * you’re also free to set this -* Key - * user’s private key used in LTE encryption - * manufacturer provides -* OPC - * “carrier” private key used in LTE encryption - * manufacturer provides -* APN (*optional)* - * access point name - * for some CBRS LTE phone models such as the LG G8 ThinQ, the APN sent by - the phone is hard-coded to be the string “ims”, so the only solution we’ve - found is to set the APN on the EPC to match. +- IMSI + - unique identifier for SIM card + - manufacturer provides +- MSISDN + - an arbitrary number representing the user’s “phone number” + - could be the last 5 or more digits of the IMSI- make this up if not + provided to you +- IP Address + - this value sets a private static IP for each SIM card + - you’re also free to set this +- Key + - user’s private key used in LTE encryption + - manufacturer provides +- OPC + - “carrier” private key used in LTE encryption + - manufacturer provides +- APN (_optional)_ + - access point name + - for some CBRS LTE phone models such as the LG G8 ThinQ, the APN sent by + the phone is hard-coded to be the string “ims”, so the only solution we’ve + found is to set the APN on the EPC to match. To add a single new user in the command line, use the following command format: @@ -264,6 +270,7 @@ $ sudo coltedb add 460660003400030 30 192.168.151.30 0x00112233445566778899AABBC ``` ### B. Bulk add using a script + The shell script “bulk_add.sh” is provided for your convenience in the [conf/](https://github.com/uw-ictd/colte/tree/main/conf) folder of the github repo. It takes a single argument, the filename (full path if not in the same @@ -278,6 +285,7 @@ info, and the APN set for each user): 460660003400033 33 192.168.151.33 0x00112233445566778899AABBCCDDEEFF 0x000102030405060708090A0B0C0D0E0F ims 460660003400034 34 192.168.151.34 0x00112233445566778899AABBCCDDEEFF 0x000102030405060708090A0B0C0D0E0F ims ``` + Then, to add them all at once to the database, you would run: ```bash diff --git a/emergency/README.md b/emergency/README.md index 672e73e31..44117f611 100644 --- a/emergency/README.md +++ b/emergency/README.md @@ -1,13 +1,16 @@ # emergency + Our Mozilla Challenge proposal was to create a standalone LTE Network-in-a-Box to be deployed in the wake of a natural disaster. This box will provide all sorts of emergency services to their users. Compared to normal LTE networks, there are two main features we need to investigate/create/connect: emergency mode connections and emergency webservices. ## Main Architecture: + In the interests of simplicity and ease of development/deployment, we're using a microservice architecture wherein every independent webapp is provisioned in its own independent Docker container. Each container is forwarded a separate host port (e.g. chat runs on localhost:8081->container:80, wiki runs on localhost:8082->container:80). The main landing page (TODO.local) is static HTML consisting of simple button-links to independent subdomains (e.g. chat.TODO.local) and then each site creates/installs its own apache .conf file in /etc/apache2/sites-available that uses an Apache VirtualHost entry to redirect/port-forward the correct subdomain (e.g. chat.TODO.local -> localhost:8081). ## Creating A Webapp: -Creating/installing a new webapp are pretty straightforward under this system. First, write your webapp in whatever framework/system you choose, and once complete, package it up as a Docker image. Once created, all that's left to do is (1) write a corresponding Apache .conf file for the site, (2) write the correct Ansible .yml file to fetch/install/start the service, and (3) add a pointer in /system_setup/$OS/ansible/emergency.yml. For great and simple examples of how to do this, check out the rocketchat.* files. \ No newline at end of file + +Creating/installing a new webapp are pretty straightforward under this system. First, write your webapp in whatever framework/system you choose, and once complete, package it up as a Docker image. Once created, all that's left to do is (1) write a corresponding Apache .conf file for the site, (2) write the correct Ansible .yml file to fetch/install/start the service, and (3) add a pointer in /system_setup/$OS/ansible/emergency.yml. For great and simple examples of how to do this, check out the rocketchat.\* files. diff --git a/emergency/homepage.yml b/emergency/homepage.yml index 6c8750885..9cf6abd8b 100644 --- a/emergency/homepage.yml +++ b/emergency/homepage.yml @@ -4,26 +4,26 @@ # NOTE: you need to already have docker installed somehow (varies per system, goddamn it) - - name: create emergencell directory - file: - src: "{{ emergency_dir }}/homepage/" - dest: "/var/www/emergencell" - state: link - become: yes +- name: create emergencell directory + file: + src: "{{ emergency_dir }}/homepage/" + dest: "/var/www/emergencell" + state: link + become: yes - - name: copy website configuration file - copy: - src: "{{ emergency_dir }}/homepage.conf" - dest: "/etc/nginx/sites-available/emergencell_homepage" - become: yes +- name: copy website configuration file + copy: + src: "{{ emergency_dir }}/homepage.conf" + dest: "/etc/nginx/sites-available/emergencell_homepage" + become: yes - - name: symlink website into sites-enabled - file: - src: "/etc/nginx/sites-available/emergencell_homepage" - dest: "/etc/nginx/sites-enabled/emergencell_homepage" - state: link - become: yes +- name: symlink website into sites-enabled + file: + src: "/etc/nginx/sites-available/emergencell_homepage" + dest: "/etc/nginx/sites-enabled/emergencell_homepage" + state: link + become: yes - - name: restart nginx - service: name=nginx state=reloaded - become: yes +- name: restart nginx + service: name=nginx state=reloaded + become: yes diff --git a/emergency/homepage/bootstrap.js b/emergency/homepage/bootstrap.js index 534d53343..00a0e9a24 100644 --- a/emergency/homepage/bootstrap.js +++ b/emergency/homepage/bootstrap.js @@ -1,7 +1,2335 @@ /*! - * Bootstrap v4.0.0 (https://getbootstrap.com) - * Copyright 2011-2018 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("jquery"),require("popper.js")):"function"==typeof define&&define.amd?define(["exports","jquery","popper.js"],e):e(t.bootstrap={},t.jQuery,t.Popper)}(this,function(t,e,n){"use strict";function i(t,e){for(var n=0;n0?i:null}catch(t){return null}},reflow:function(t){return t.offsetHeight},triggerTransitionEnd:function(n){t(n).trigger(e.end)},supportsTransitionEnd:function(){return Boolean(e)},isElement:function(t){return(t[0]||t).nodeType},typeCheckConfig:function(t,e,n){for(var s in n)if(Object.prototype.hasOwnProperty.call(n,s)){var r=n[s],o=e[s],a=o&&i.isElement(o)?"element":(l=o,{}.toString.call(l).match(/\s([a-zA-Z]+)/)[1].toLowerCase());if(!new RegExp(r).test(a))throw new Error(t.toUpperCase()+': Option "'+s+'" provided type "'+a+'" but expected type "'+r+'".')}var l}};return e=("undefined"==typeof window||!window.QUnit)&&{end:"transitionend"},t.fn.emulateTransitionEnd=n,i.supportsTransitionEnd()&&(t.event.special[i.TRANSITION_END]={bindType:e.end,delegateType:e.end,handle:function(e){if(t(e.target).is(this))return e.handleObj.handler.apply(this,arguments)}}),i}(e),L=(a="alert",h="."+(l="bs.alert"),c=(o=e).fn[a],u={CLOSE:"close"+h,CLOSED:"closed"+h,CLICK_DATA_API:"click"+h+".data-api"},f="alert",d="fade",_="show",g=function(){function t(t){this._element=t}var e=t.prototype;return e.close=function(t){t=t||this._element;var e=this._getRootElement(t);this._triggerCloseEvent(e).isDefaultPrevented()||this._removeElement(e)},e.dispose=function(){o.removeData(this._element,l),this._element=null},e._getRootElement=function(t){var e=P.getSelectorFromElement(t),n=!1;return e&&(n=o(e)[0]),n||(n=o(t).closest("."+f)[0]),n},e._triggerCloseEvent=function(t){var e=o.Event(u.CLOSE);return o(t).trigger(e),e},e._removeElement=function(t){var e=this;o(t).removeClass(_),P.supportsTransitionEnd()&&o(t).hasClass(d)?o(t).one(P.TRANSITION_END,function(n){return e._destroyElement(t,n)}).emulateTransitionEnd(150):this._destroyElement(t)},e._destroyElement=function(t){o(t).detach().trigger(u.CLOSED).remove()},t._jQueryInterface=function(e){return this.each(function(){var n=o(this),i=n.data(l);i||(i=new t(this),n.data(l,i)),"close"===e&&i[e](this)})},t._handleDismiss=function(t){return function(e){e&&e.preventDefault(),t.close(this)}},s(t,null,[{key:"VERSION",get:function(){return"4.0.0"}}]),t}(),o(document).on(u.CLICK_DATA_API,'[data-dismiss="alert"]',g._handleDismiss(new g)),o.fn[a]=g._jQueryInterface,o.fn[a].Constructor=g,o.fn[a].noConflict=function(){return o.fn[a]=c,g._jQueryInterface},g),R=(m="button",E="."+(v="bs.button"),T=".data-api",y=(p=e).fn[m],C="active",I="btn",A="focus",b='[data-toggle^="button"]',D='[data-toggle="buttons"]',S="input",w=".active",N=".btn",O={CLICK_DATA_API:"click"+E+T,FOCUS_BLUR_DATA_API:"focus"+E+T+" blur"+E+T},k=function(){function t(t){this._element=t}var e=t.prototype;return e.toggle=function(){var t=!0,e=!0,n=p(this._element).closest(D)[0];if(n){var i=p(this._element).find(S)[0];if(i){if("radio"===i.type)if(i.checked&&p(this._element).hasClass(C))t=!1;else{var s=p(n).find(w)[0];s&&p(s).removeClass(C)}if(t){if(i.hasAttribute("disabled")||n.hasAttribute("disabled")||i.classList.contains("disabled")||n.classList.contains("disabled"))return;i.checked=!p(this._element).hasClass(C),p(i).trigger("change")}i.focus(),e=!1}}e&&this._element.setAttribute("aria-pressed",!p(this._element).hasClass(C)),t&&p(this._element).toggleClass(C)},e.dispose=function(){p.removeData(this._element,v),this._element=null},t._jQueryInterface=function(e){return this.each(function(){var n=p(this).data(v);n||(n=new t(this),p(this).data(v,n)),"toggle"===e&&n[e]()})},s(t,null,[{key:"VERSION",get:function(){return"4.0.0"}}]),t}(),p(document).on(O.CLICK_DATA_API,b,function(t){t.preventDefault();var e=t.target;p(e).hasClass(I)||(e=p(e).closest(N)),k._jQueryInterface.call(p(e),"toggle")}).on(O.FOCUS_BLUR_DATA_API,b,function(t){var e=p(t.target).closest(N)[0];p(e).toggleClass(A,/^focus(in)?$/.test(t.type))}),p.fn[m]=k._jQueryInterface,p.fn[m].Constructor=k,p.fn[m].noConflict=function(){return p.fn[m]=y,k._jQueryInterface},k),j=function(t){var e="carousel",n="bs.carousel",i="."+n,o=t.fn[e],a={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0},l={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean"},h="next",c="prev",u="left",f="right",d={SLIDE:"slide"+i,SLID:"slid"+i,KEYDOWN:"keydown"+i,MOUSEENTER:"mouseenter"+i,MOUSELEAVE:"mouseleave"+i,TOUCHEND:"touchend"+i,LOAD_DATA_API:"load"+i+".data-api",CLICK_DATA_API:"click"+i+".data-api"},_="carousel",g="active",p="slide",m="carousel-item-right",v="carousel-item-left",E="carousel-item-next",T="carousel-item-prev",y={ACTIVE:".active",ACTIVE_ITEM:".active.carousel-item",ITEM:".carousel-item",NEXT_PREV:".carousel-item-next, .carousel-item-prev",INDICATORS:".carousel-indicators",DATA_SLIDE:"[data-slide], [data-slide-to]",DATA_RIDE:'[data-ride="carousel"]'},C=function(){function o(e,n){this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this._config=this._getConfig(n),this._element=t(e)[0],this._indicatorsElement=t(this._element).find(y.INDICATORS)[0],this._addEventListeners()}var C=o.prototype;return C.next=function(){this._isSliding||this._slide(h)},C.nextWhenVisible=function(){!document.hidden&&t(this._element).is(":visible")&&"hidden"!==t(this._element).css("visibility")&&this.next()},C.prev=function(){this._isSliding||this._slide(c)},C.pause=function(e){e||(this._isPaused=!0),t(this._element).find(y.NEXT_PREV)[0]&&P.supportsTransitionEnd()&&(P.triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},C.cycle=function(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config.interval&&!this._isPaused&&(this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},C.to=function(e){var n=this;this._activeElement=t(this._element).find(y.ACTIVE_ITEM)[0];var i=this._getItemIndex(this._activeElement);if(!(e>this._items.length-1||e<0))if(this._isSliding)t(this._element).one(d.SLID,function(){return n.to(e)});else{if(i===e)return this.pause(),void this.cycle();var s=e>i?h:c;this._slide(s,this._items[e])}},C.dispose=function(){t(this._element).off(i),t.removeData(this._element,n),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},C._getConfig=function(t){return t=r({},a,t),P.typeCheckConfig(e,t,l),t},C._addEventListeners=function(){var e=this;this._config.keyboard&&t(this._element).on(d.KEYDOWN,function(t){return e._keydown(t)}),"hover"===this._config.pause&&(t(this._element).on(d.MOUSEENTER,function(t){return e.pause(t)}).on(d.MOUSELEAVE,function(t){return e.cycle(t)}),"ontouchstart"in document.documentElement&&t(this._element).on(d.TOUCHEND,function(){e.pause(),e.touchTimeout&&clearTimeout(e.touchTimeout),e.touchTimeout=setTimeout(function(t){return e.cycle(t)},500+e._config.interval)}))},C._keydown=function(t){if(!/input|textarea/i.test(t.target.tagName))switch(t.which){case 37:t.preventDefault(),this.prev();break;case 39:t.preventDefault(),this.next()}},C._getItemIndex=function(e){return this._items=t.makeArray(t(e).parent().find(y.ITEM)),this._items.indexOf(e)},C._getItemByDirection=function(t,e){var n=t===h,i=t===c,s=this._getItemIndex(e),r=this._items.length-1;if((i&&0===s||n&&s===r)&&!this._config.wrap)return e;var o=(s+(t===c?-1:1))%this._items.length;return-1===o?this._items[this._items.length-1]:this._items[o]},C._triggerSlideEvent=function(e,n){var i=this._getItemIndex(e),s=this._getItemIndex(t(this._element).find(y.ACTIVE_ITEM)[0]),r=t.Event(d.SLIDE,{relatedTarget:e,direction:n,from:s,to:i});return t(this._element).trigger(r),r},C._setActiveIndicatorElement=function(e){if(this._indicatorsElement){t(this._indicatorsElement).find(y.ACTIVE).removeClass(g);var n=this._indicatorsElement.children[this._getItemIndex(e)];n&&t(n).addClass(g)}},C._slide=function(e,n){var i,s,r,o=this,a=t(this._element).find(y.ACTIVE_ITEM)[0],l=this._getItemIndex(a),c=n||a&&this._getItemByDirection(e,a),_=this._getItemIndex(c),C=Boolean(this._interval);if(e===h?(i=v,s=E,r=u):(i=m,s=T,r=f),c&&t(c).hasClass(g))this._isSliding=!1;else if(!this._triggerSlideEvent(c,r).isDefaultPrevented()&&a&&c){this._isSliding=!0,C&&this.pause(),this._setActiveIndicatorElement(c);var I=t.Event(d.SLID,{relatedTarget:c,direction:r,from:l,to:_});P.supportsTransitionEnd()&&t(this._element).hasClass(p)?(t(c).addClass(s),P.reflow(c),t(a).addClass(i),t(c).addClass(i),t(a).one(P.TRANSITION_END,function(){t(c).removeClass(i+" "+s).addClass(g),t(a).removeClass(g+" "+s+" "+i),o._isSliding=!1,setTimeout(function(){return t(o._element).trigger(I)},0)}).emulateTransitionEnd(600)):(t(a).removeClass(g),t(c).addClass(g),this._isSliding=!1,t(this._element).trigger(I)),C&&this.cycle()}},o._jQueryInterface=function(e){return this.each(function(){var i=t(this).data(n),s=r({},a,t(this).data());"object"==typeof e&&(s=r({},s,e));var l="string"==typeof e?e:s.slide;if(i||(i=new o(this,s),t(this).data(n,i)),"number"==typeof e)i.to(e);else if("string"==typeof l){if("undefined"==typeof i[l])throw new TypeError('No method named "'+l+'"');i[l]()}else s.interval&&(i.pause(),i.cycle())})},o._dataApiClickHandler=function(e){var i=P.getSelectorFromElement(this);if(i){var s=t(i)[0];if(s&&t(s).hasClass(_)){var a=r({},t(s).data(),t(this).data()),l=this.getAttribute("data-slide-to");l&&(a.interval=!1),o._jQueryInterface.call(t(s),a),l&&t(s).data(n).to(l),e.preventDefault()}}},s(o,null,[{key:"VERSION",get:function(){return"4.0.0"}},{key:"Default",get:function(){return a}}]),o}();return t(document).on(d.CLICK_DATA_API,y.DATA_SLIDE,C._dataApiClickHandler),t(window).on(d.LOAD_DATA_API,function(){t(y.DATA_RIDE).each(function(){var e=t(this);C._jQueryInterface.call(e,e.data())})}),t.fn[e]=C._jQueryInterface,t.fn[e].Constructor=C,t.fn[e].noConflict=function(){return t.fn[e]=o,C._jQueryInterface},C}(e),H=function(t){var e="collapse",n="bs.collapse",i="."+n,o=t.fn[e],a={toggle:!0,parent:""},l={toggle:"boolean",parent:"(string|element)"},h={SHOW:"show"+i,SHOWN:"shown"+i,HIDE:"hide"+i,HIDDEN:"hidden"+i,CLICK_DATA_API:"click"+i+".data-api"},c="show",u="collapse",f="collapsing",d="collapsed",_="width",g="height",p={ACTIVES:".show, .collapsing",DATA_TOGGLE:'[data-toggle="collapse"]'},m=function(){function i(e,n){this._isTransitioning=!1,this._element=e,this._config=this._getConfig(n),this._triggerArray=t.makeArray(t('[data-toggle="collapse"][href="#'+e.id+'"],[data-toggle="collapse"][data-target="#'+e.id+'"]'));for(var i=t(p.DATA_TOGGLE),s=0;s0&&(this._selector=o,this._triggerArray.push(r))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}var o=i.prototype;return o.toggle=function(){t(this._element).hasClass(c)?this.hide():this.show()},o.show=function(){var e,s,r=this;if(!this._isTransitioning&&!t(this._element).hasClass(c)&&(this._parent&&0===(e=t.makeArray(t(this._parent).find(p.ACTIVES).filter('[data-parent="'+this._config.parent+'"]'))).length&&(e=null),!(e&&(s=t(e).not(this._selector).data(n))&&s._isTransitioning))){var o=t.Event(h.SHOW);if(t(this._element).trigger(o),!o.isDefaultPrevented()){e&&(i._jQueryInterface.call(t(e).not(this._selector),"hide"),s||t(e).data(n,null));var a=this._getDimension();t(this._element).removeClass(u).addClass(f),this._element.style[a]=0,this._triggerArray.length>0&&t(this._triggerArray).removeClass(d).attr("aria-expanded",!0),this.setTransitioning(!0);var l=function(){t(r._element).removeClass(f).addClass(u).addClass(c),r._element.style[a]="",r.setTransitioning(!1),t(r._element).trigger(h.SHOWN)};if(P.supportsTransitionEnd()){var _="scroll"+(a[0].toUpperCase()+a.slice(1));t(this._element).one(P.TRANSITION_END,l).emulateTransitionEnd(600),this._element.style[a]=this._element[_]+"px"}else l()}}},o.hide=function(){var e=this;if(!this._isTransitioning&&t(this._element).hasClass(c)){var n=t.Event(h.HIDE);if(t(this._element).trigger(n),!n.isDefaultPrevented()){var i=this._getDimension();if(this._element.style[i]=this._element.getBoundingClientRect()[i]+"px",P.reflow(this._element),t(this._element).addClass(f).removeClass(u).removeClass(c),this._triggerArray.length>0)for(var s=0;s0&&t(n).toggleClass(d,!i).attr("aria-expanded",i)}},i._getTargetFromElement=function(e){var n=P.getSelectorFromElement(e);return n?t(n)[0]:null},i._jQueryInterface=function(e){return this.each(function(){var s=t(this),o=s.data(n),l=r({},a,s.data(),"object"==typeof e&&e);if(!o&&l.toggle&&/show|hide/.test(e)&&(l.toggle=!1),o||(o=new i(this,l),s.data(n,o)),"string"==typeof e){if("undefined"==typeof o[e])throw new TypeError('No method named "'+e+'"');o[e]()}})},s(i,null,[{key:"VERSION",get:function(){return"4.0.0"}},{key:"Default",get:function(){return a}}]),i}();return t(document).on(h.CLICK_DATA_API,p.DATA_TOGGLE,function(e){"A"===e.currentTarget.tagName&&e.preventDefault();var i=t(this),s=P.getSelectorFromElement(this);t(s).each(function(){var e=t(this),s=e.data(n)?"toggle":i.data();m._jQueryInterface.call(e,s)})}),t.fn[e]=m._jQueryInterface,t.fn[e].Constructor=m,t.fn[e].noConflict=function(){return t.fn[e]=o,m._jQueryInterface},m}(e),W=function(t){var e="dropdown",i="bs.dropdown",o="."+i,a=".data-api",l=t.fn[e],h=new RegExp("38|40|27"),c={HIDE:"hide"+o,HIDDEN:"hidden"+o,SHOW:"show"+o,SHOWN:"shown"+o,CLICK:"click"+o,CLICK_DATA_API:"click"+o+a,KEYDOWN_DATA_API:"keydown"+o+a,KEYUP_DATA_API:"keyup"+o+a},u="disabled",f="show",d="dropup",_="dropright",g="dropleft",p="dropdown-menu-right",m="dropdown-menu-left",v="position-static",E='[data-toggle="dropdown"]',T=".dropdown form",y=".dropdown-menu",C=".navbar-nav",I=".dropdown-menu .dropdown-item:not(.disabled)",A="top-start",b="top-end",D="bottom-start",S="bottom-end",w="right-start",N="left-start",O={offset:0,flip:!0,boundary:"scrollParent"},k={offset:"(number|string|function)",flip:"boolean",boundary:"(string|element)"},L=function(){function a(t,e){this._element=t,this._popper=null,this._config=this._getConfig(e),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}var l=a.prototype;return l.toggle=function(){if(!this._element.disabled&&!t(this._element).hasClass(u)){var e=a._getParentFromElement(this._element),i=t(this._menu).hasClass(f);if(a._clearMenus(),!i){var s={relatedTarget:this._element},r=t.Event(c.SHOW,s);if(t(e).trigger(r),!r.isDefaultPrevented()){if(!this._inNavbar){if("undefined"==typeof n)throw new TypeError("Bootstrap dropdown require Popper.js (https://popper.js.org)");var o=this._element;t(e).hasClass(d)&&(t(this._menu).hasClass(m)||t(this._menu).hasClass(p))&&(o=e),"scrollParent"!==this._config.boundary&&t(e).addClass(v),this._popper=new n(o,this._menu,this._getPopperConfig())}"ontouchstart"in document.documentElement&&0===t(e).closest(C).length&&t("body").children().on("mouseover",null,t.noop),this._element.focus(),this._element.setAttribute("aria-expanded",!0),t(this._menu).toggleClass(f),t(e).toggleClass(f).trigger(t.Event(c.SHOWN,s))}}}},l.dispose=function(){t.removeData(this._element,i),t(this._element).off(o),this._element=null,this._menu=null,null!==this._popper&&(this._popper.destroy(),this._popper=null)},l.update=function(){this._inNavbar=this._detectNavbar(),null!==this._popper&&this._popper.scheduleUpdate()},l._addEventListeners=function(){var e=this;t(this._element).on(c.CLICK,function(t){t.preventDefault(),t.stopPropagation(),e.toggle()})},l._getConfig=function(n){return n=r({},this.constructor.Default,t(this._element).data(),n),P.typeCheckConfig(e,n,this.constructor.DefaultType),n},l._getMenuElement=function(){if(!this._menu){var e=a._getParentFromElement(this._element);this._menu=t(e).find(y)[0]}return this._menu},l._getPlacement=function(){var e=t(this._element).parent(),n=D;return e.hasClass(d)?(n=A,t(this._menu).hasClass(p)&&(n=b)):e.hasClass(_)?n=w:e.hasClass(g)?n=N:t(this._menu).hasClass(p)&&(n=S),n},l._detectNavbar=function(){return t(this._element).closest(".navbar").length>0},l._getPopperConfig=function(){var t=this,e={};return"function"==typeof this._config.offset?e.fn=function(e){return e.offsets=r({},e.offsets,t._config.offset(e.offsets)||{}),e}:e.offset=this._config.offset,{placement:this._getPlacement(),modifiers:{offset:e,flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}}},a._jQueryInterface=function(e){return this.each(function(){var n=t(this).data(i);if(n||(n=new a(this,"object"==typeof e?e:null),t(this).data(i,n)),"string"==typeof e){if("undefined"==typeof n[e])throw new TypeError('No method named "'+e+'"');n[e]()}})},a._clearMenus=function(e){if(!e||3!==e.which&&("keyup"!==e.type||9===e.which))for(var n=t.makeArray(t(E)),s=0;s0&&r--,40===e.which&&rdocument.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},p._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},p._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=t.left+t.right
',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent"},f="show",d="out",_={HIDE:"hide"+o,HIDDEN:"hidden"+o,SHOW:"show"+o,SHOWN:"shown"+o,INSERTED:"inserted"+o,CLICK:"click"+o,FOCUSIN:"focusin"+o,FOCUSOUT:"focusout"+o,MOUSEENTER:"mouseenter"+o,MOUSELEAVE:"mouseleave"+o},g="fade",p="show",m=".tooltip-inner",v=".arrow",E="hover",T="focus",y="click",C="manual",I=function(){function a(t,e){if("undefined"==typeof n)throw new TypeError("Bootstrap tooltips require Popper.js (https://popper.js.org)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var I=a.prototype;return I.enable=function(){this._isEnabled=!0},I.disable=function(){this._isEnabled=!1},I.toggleEnabled=function(){this._isEnabled=!this._isEnabled},I.toggle=function(e){if(this._isEnabled)if(e){var n=this.constructor.DATA_KEY,i=t(e.currentTarget).data(n);i||(i=new this.constructor(e.currentTarget,this._getDelegateConfig()),t(e.currentTarget).data(n,i)),i._activeTrigger.click=!i._activeTrigger.click,i._isWithActiveTrigger()?i._enter(null,i):i._leave(null,i)}else{if(t(this.getTipElement()).hasClass(p))return void this._leave(null,this);this._enter(null,this)}},I.dispose=function(){clearTimeout(this._timeout),t.removeData(this.element,this.constructor.DATA_KEY),t(this.element).off(this.constructor.EVENT_KEY),t(this.element).closest(".modal").off("hide.bs.modal"),this.tip&&t(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,null!==this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},I.show=function(){var e=this;if("none"===t(this.element).css("display"))throw new Error("Please use show on visible elements");var i=t.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){t(this.element).trigger(i);var s=t.contains(this.element.ownerDocument.documentElement,this.element);if(i.isDefaultPrevented()||!s)return;var r=this.getTipElement(),o=P.getUID(this.constructor.NAME);r.setAttribute("id",o),this.element.setAttribute("aria-describedby",o),this.setContent(),this.config.animation&&t(r).addClass(g);var l="function"==typeof this.config.placement?this.config.placement.call(this,r,this.element):this.config.placement,h=this._getAttachment(l);this.addAttachmentClass(h);var c=!1===this.config.container?document.body:t(this.config.container);t(r).data(this.constructor.DATA_KEY,this),t.contains(this.element.ownerDocument.documentElement,this.tip)||t(r).appendTo(c),t(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new n(this.element,r,{placement:h,modifiers:{offset:{offset:this.config.offset},flip:{behavior:this.config.fallbackPlacement},arrow:{element:v},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){e._handlePopperPlacementChange(t)}}),t(r).addClass(p),"ontouchstart"in document.documentElement&&t("body").children().on("mouseover",null,t.noop);var u=function(){e.config.animation&&e._fixTransition();var n=e._hoverState;e._hoverState=null,t(e.element).trigger(e.constructor.Event.SHOWN),n===d&&e._leave(null,e)};P.supportsTransitionEnd()&&t(this.tip).hasClass(g)?t(this.tip).one(P.TRANSITION_END,u).emulateTransitionEnd(a._TRANSITION_DURATION):u()}},I.hide=function(e){var n=this,i=this.getTipElement(),s=t.Event(this.constructor.Event.HIDE),r=function(){n._hoverState!==f&&i.parentNode&&i.parentNode.removeChild(i),n._cleanTipClass(),n.element.removeAttribute("aria-describedby"),t(n.element).trigger(n.constructor.Event.HIDDEN),null!==n._popper&&n._popper.destroy(),e&&e()};t(this.element).trigger(s),s.isDefaultPrevented()||(t(i).removeClass(p),"ontouchstart"in document.documentElement&&t("body").children().off("mouseover",null,t.noop),this._activeTrigger[y]=!1,this._activeTrigger[T]=!1,this._activeTrigger[E]=!1,P.supportsTransitionEnd()&&t(this.tip).hasClass(g)?t(i).one(P.TRANSITION_END,r).emulateTransitionEnd(150):r(),this._hoverState="")},I.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},I.isWithContent=function(){return Boolean(this.getTitle())},I.addAttachmentClass=function(e){t(this.getTipElement()).addClass("bs-tooltip-"+e)},I.getTipElement=function(){return this.tip=this.tip||t(this.config.template)[0],this.tip},I.setContent=function(){var e=t(this.getTipElement());this.setElementContent(e.find(m),this.getTitle()),e.removeClass(g+" "+p)},I.setElementContent=function(e,n){var i=this.config.html;"object"==typeof n&&(n.nodeType||n.jquery)?i?t(n).parent().is(e)||e.empty().append(n):e.text(t(n).text()):e[i?"html":"text"](n)},I.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},I._getAttachment=function(t){return c[t.toUpperCase()]},I._setListeners=function(){var e=this;this.config.trigger.split(" ").forEach(function(n){if("click"===n)t(e.element).on(e.constructor.Event.CLICK,e.config.selector,function(t){return e.toggle(t)});else if(n!==C){var i=n===E?e.constructor.Event.MOUSEENTER:e.constructor.Event.FOCUSIN,s=n===E?e.constructor.Event.MOUSELEAVE:e.constructor.Event.FOCUSOUT;t(e.element).on(i,e.config.selector,function(t){return e._enter(t)}).on(s,e.config.selector,function(t){return e._leave(t)})}t(e.element).closest(".modal").on("hide.bs.modal",function(){return e.hide()})}),this.config.selector?this.config=r({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},I._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},I._enter=function(e,n){var i=this.constructor.DATA_KEY;(n=n||t(e.currentTarget).data(i))||(n=new this.constructor(e.currentTarget,this._getDelegateConfig()),t(e.currentTarget).data(i,n)),e&&(n._activeTrigger["focusin"===e.type?T:E]=!0),t(n.getTipElement()).hasClass(p)||n._hoverState===f?n._hoverState=f:(clearTimeout(n._timeout),n._hoverState=f,n.config.delay&&n.config.delay.show?n._timeout=setTimeout(function(){n._hoverState===f&&n.show()},n.config.delay.show):n.show())},I._leave=function(e,n){var i=this.constructor.DATA_KEY;(n=n||t(e.currentTarget).data(i))||(n=new this.constructor(e.currentTarget,this._getDelegateConfig()),t(e.currentTarget).data(i,n)),e&&(n._activeTrigger["focusout"===e.type?T:E]=!1),n._isWithActiveTrigger()||(clearTimeout(n._timeout),n._hoverState=d,n.config.delay&&n.config.delay.hide?n._timeout=setTimeout(function(){n._hoverState===d&&n.hide()},n.config.delay.hide):n.hide())},I._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},I._getConfig=function(n){return"number"==typeof(n=r({},this.constructor.Default,t(this.element).data(),n)).delay&&(n.delay={show:n.delay,hide:n.delay}),"number"==typeof n.title&&(n.title=n.title.toString()),"number"==typeof n.content&&(n.content=n.content.toString()),P.typeCheckConfig(e,n,this.constructor.DefaultType),n},I._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},I._cleanTipClass=function(){var e=t(this.getTipElement()),n=e.attr("class").match(l);null!==n&&n.length>0&&e.removeClass(n.join(""))},I._handlePopperPlacementChange=function(t){this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},I._fixTransition=function(){var e=this.getTipElement(),n=this.config.animation;null===e.getAttribute("x-placement")&&(t(e).removeClass(g),this.config.animation=!1,this.hide(),this.show(),this.config.animation=n)},a._jQueryInterface=function(e){return this.each(function(){var n=t(this).data(i),s="object"==typeof e&&e;if((n||!/dispose|hide/.test(e))&&(n||(n=new a(this,s),t(this).data(i,n)),"string"==typeof e)){if("undefined"==typeof n[e])throw new TypeError('No method named "'+e+'"');n[e]()}})},s(a,null,[{key:"VERSION",get:function(){return"4.0.0"}},{key:"Default",get:function(){return u}},{key:"NAME",get:function(){return e}},{key:"DATA_KEY",get:function(){return i}},{key:"Event",get:function(){return _}},{key:"EVENT_KEY",get:function(){return o}},{key:"DefaultType",get:function(){return h}}]),a}();return t.fn[e]=I._jQueryInterface,t.fn[e].Constructor=I,t.fn[e].noConflict=function(){return t.fn[e]=a,I._jQueryInterface},I}(e),x=function(t){var e="popover",n="bs.popover",i="."+n,o=t.fn[e],a=new RegExp("(^|\\s)bs-popover\\S+","g"),l=r({},U.Default,{placement:"right",trigger:"click",content:"",template:''}),h=r({},U.DefaultType,{content:"(string|element|function)"}),c="fade",u="show",f=".popover-header",d=".popover-body",_={HIDE:"hide"+i,HIDDEN:"hidden"+i,SHOW:"show"+i,SHOWN:"shown"+i,INSERTED:"inserted"+i,CLICK:"click"+i,FOCUSIN:"focusin"+i,FOCUSOUT:"focusout"+i,MOUSEENTER:"mouseenter"+i,MOUSELEAVE:"mouseleave"+i},g=function(r){var o,g;function p(){return r.apply(this,arguments)||this}g=r,(o=p).prototype=Object.create(g.prototype),o.prototype.constructor=o,o.__proto__=g;var m=p.prototype;return m.isWithContent=function(){return this.getTitle()||this._getContent()},m.addAttachmentClass=function(e){t(this.getTipElement()).addClass("bs-popover-"+e)},m.getTipElement=function(){return this.tip=this.tip||t(this.config.template)[0],this.tip},m.setContent=function(){var e=t(this.getTipElement());this.setElementContent(e.find(f),this.getTitle());var n=this._getContent();"function"==typeof n&&(n=n.call(this.element)),this.setElementContent(e.find(d),n),e.removeClass(c+" "+u)},m._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},m._cleanTipClass=function(){var e=t(this.getTipElement()),n=e.attr("class").match(a);null!==n&&n.length>0&&e.removeClass(n.join(""))},p._jQueryInterface=function(e){return this.each(function(){var i=t(this).data(n),s="object"==typeof e?e:null;if((i||!/destroy|hide/.test(e))&&(i||(i=new p(this,s),t(this).data(n,i)),"string"==typeof e)){if("undefined"==typeof i[e])throw new TypeError('No method named "'+e+'"');i[e]()}})},s(p,null,[{key:"VERSION",get:function(){return"4.0.0"}},{key:"Default",get:function(){return l}},{key:"NAME",get:function(){return e}},{key:"DATA_KEY",get:function(){return n}},{key:"Event",get:function(){return _}},{key:"EVENT_KEY",get:function(){return i}},{key:"DefaultType",get:function(){return h}}]),p}(U);return t.fn[e]=g._jQueryInterface,t.fn[e].Constructor=g,t.fn[e].noConflict=function(){return t.fn[e]=o,g._jQueryInterface},g}(e),K=function(t){var e="scrollspy",n="bs.scrollspy",i="."+n,o=t.fn[e],a={offset:10,method:"auto",target:""},l={offset:"number",method:"string",target:"(string|element)"},h={ACTIVATE:"activate"+i,SCROLL:"scroll"+i,LOAD_DATA_API:"load"+i+".data-api"},c="dropdown-item",u="active",f={DATA_SPY:'[data-spy="scroll"]',ACTIVE:".active",NAV_LIST_GROUP:".nav, .list-group",NAV_LINKS:".nav-link",NAV_ITEMS:".nav-item",LIST_ITEMS:".list-group-item",DROPDOWN:".dropdown",DROPDOWN_ITEMS:".dropdown-item",DROPDOWN_TOGGLE:".dropdown-toggle"},d="offset",_="position",g=function(){function o(e,n){var i=this;this._element=e,this._scrollElement="BODY"===e.tagName?window:e,this._config=this._getConfig(n),this._selector=this._config.target+" "+f.NAV_LINKS+","+this._config.target+" "+f.LIST_ITEMS+","+this._config.target+" "+f.DROPDOWN_ITEMS,this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,t(this._scrollElement).on(h.SCROLL,function(t){return i._process(t)}),this.refresh(),this._process()}var g=o.prototype;return g.refresh=function(){var e=this,n=this._scrollElement===this._scrollElement.window?d:_,i="auto"===this._config.method?n:this._config.method,s=i===_?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),t.makeArray(t(this._selector)).map(function(e){var n,r=P.getSelectorFromElement(e);if(r&&(n=t(r)[0]),n){var o=n.getBoundingClientRect();if(o.width||o.height)return[t(n)[i]().top+s,r]}return null}).filter(function(t){return t}).sort(function(t,e){return t[0]-e[0]}).forEach(function(t){e._offsets.push(t[0]),e._targets.push(t[1])})},g.dispose=function(){t.removeData(this._element,n),t(this._scrollElement).off(i),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},g._getConfig=function(n){if("string"!=typeof(n=r({},a,n)).target){var i=t(n.target).attr("id");i||(i=P.getUID(e),t(n.target).attr("id",i)),n.target="#"+i}return P.typeCheckConfig(e,n,l),n},g._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},g._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},g._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},g._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=n){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t0)return this._activeTarget=null,void this._clear();for(var s=this._offsets.length;s--;){this._activeTarget!==this._targets[s]&&t>=this._offsets[s]&&("undefined"==typeof this._offsets[s+1]||t=4)throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}(e),t.Util=P,t.Alert=L,t.Button=R,t.Carousel=j,t.Collapse=H,t.Dropdown=W,t.Modal=M,t.Popover=x,t.Scrollspy=K,t.Tab=V,t.Tooltip=U,Object.defineProperty(t,"__esModule",{value:!0})}); -//# sourceMappingURL=bootstrap.min.js.map \ No newline at end of file + * Bootstrap v4.0.0 (https://getbootstrap.com) + * Copyright 2011-2018 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +!(function (t, e) { + "object" == typeof exports && "undefined" != typeof module + ? e(exports, require("jquery"), require("popper.js")) + : "function" == typeof define && define.amd + ? define(["exports", "jquery", "popper.js"], e) + : e((t.bootstrap = {}), t.jQuery, t.Popper); +})(this, function (t, e, n) { + "use strict"; + function i(t, e) { + for (var n = 0; n < e.length; n++) { + var i = e[n]; + (i.enumerable = i.enumerable || !1), + (i.configurable = !0), + "value" in i && (i.writable = !0), + Object.defineProperty(t, i.key, i); + } + } + function s(t, e, n) { + return e && i(t.prototype, e), n && i(t, n), t; + } + function r() { + return (r = + Object.assign || + function (t) { + for (var e = 1; e < arguments.length; e++) { + var n = arguments[e]; + for (var i in n) Object.prototype.hasOwnProperty.call(n, i) && (t[i] = n[i]); + } + return t; + }).apply(this, arguments); + } + (e = e && e.hasOwnProperty("default") ? e.default : e), + (n = n && n.hasOwnProperty("default") ? n.default : n); + var o, + a, + l, + h, + c, + u, + f, + d, + _, + g, + p, + m, + v, + E, + T, + y, + C, + I, + A, + b, + D, + S, + w, + N, + O, + k, + P = (function (t) { + var e = !1; + function n(e) { + var n = this, + s = !1; + return ( + t(this).one(i.TRANSITION_END, function () { + s = !0; + }), + setTimeout(function () { + s || i.triggerTransitionEnd(n); + }, e), + this + ); + } + var i = { + TRANSITION_END: "bsTransitionEnd", + getUID: function (t) { + do { + t += ~~(1e6 * Math.random()); + } while (document.getElementById(t)); + return t; + }, + getSelectorFromElement: function (e) { + var n, + i = e.getAttribute("data-target"); + (i && "#" !== i) || (i = e.getAttribute("href") || ""), + "#" === i.charAt(0) && + ((n = i), + (i = n = + "function" == typeof t.escapeSelector + ? t.escapeSelector(n).substr(1) + : n.replace(/(:|\.|\[|\]|,|=|@)/g, "\\$1"))); + try { + return t(document).find(i).length > 0 ? i : null; + } catch (t) { + return null; + } + }, + reflow: function (t) { + return t.offsetHeight; + }, + triggerTransitionEnd: function (n) { + t(n).trigger(e.end); + }, + supportsTransitionEnd: function () { + return Boolean(e); + }, + isElement: function (t) { + return (t[0] || t).nodeType; + }, + typeCheckConfig: function (t, e, n) { + for (var s in n) + if (Object.prototype.hasOwnProperty.call(n, s)) { + var r = n[s], + o = e[s], + a = + o && i.isElement(o) + ? "element" + : ((l = o), + {}.toString + .call(l) + .match(/\s([a-zA-Z]+)/)[1] + .toLowerCase()); + if (!new RegExp(r).test(a)) + throw new Error( + t.toUpperCase() + + ': Option "' + + s + + '" provided type "' + + a + + '" but expected type "' + + r + + '".' + ); + } + var l; + }, + }; + return ( + (e = ("undefined" == typeof window || !window.QUnit) && {end: "transitionend"}), + (t.fn.emulateTransitionEnd = n), + i.supportsTransitionEnd() && + (t.event.special[i.TRANSITION_END] = { + bindType: e.end, + delegateType: e.end, + handle: function (e) { + if (t(e.target).is(this)) return e.handleObj.handler.apply(this, arguments); + }, + }), + i + ); + })(e), + L = + ((a = "alert"), + (h = "." + (l = "bs.alert")), + (c = (o = e).fn[a]), + (u = {CLOSE: "close" + h, CLOSED: "closed" + h, CLICK_DATA_API: "click" + h + ".data-api"}), + (f = "alert"), + (d = "fade"), + (_ = "show"), + (g = (function () { + function t(t) { + this._element = t; + } + var e = t.prototype; + return ( + (e.close = function (t) { + t = t || this._element; + var e = this._getRootElement(t); + this._triggerCloseEvent(e).isDefaultPrevented() || this._removeElement(e); + }), + (e.dispose = function () { + o.removeData(this._element, l), (this._element = null); + }), + (e._getRootElement = function (t) { + var e = P.getSelectorFromElement(t), + n = !1; + return e && (n = o(e)[0]), n || (n = o(t).closest("." + f)[0]), n; + }), + (e._triggerCloseEvent = function (t) { + var e = o.Event(u.CLOSE); + return o(t).trigger(e), e; + }), + (e._removeElement = function (t) { + var e = this; + o(t).removeClass(_), + P.supportsTransitionEnd() && o(t).hasClass(d) + ? o(t) + .one(P.TRANSITION_END, function (n) { + return e._destroyElement(t, n); + }) + .emulateTransitionEnd(150) + : this._destroyElement(t); + }), + (e._destroyElement = function (t) { + o(t).detach().trigger(u.CLOSED).remove(); + }), + (t._jQueryInterface = function (e) { + return this.each(function () { + var n = o(this), + i = n.data(l); + i || ((i = new t(this)), n.data(l, i)), "close" === e && i[e](this); + }); + }), + (t._handleDismiss = function (t) { + return function (e) { + e && e.preventDefault(), t.close(this); + }; + }), + s(t, null, [ + { + key: "VERSION", + get: function () { + return "4.0.0"; + }, + }, + ]), + t + ); + })()), + o(document).on(u.CLICK_DATA_API, '[data-dismiss="alert"]', g._handleDismiss(new g())), + (o.fn[a] = g._jQueryInterface), + (o.fn[a].Constructor = g), + (o.fn[a].noConflict = function () { + return (o.fn[a] = c), g._jQueryInterface; + }), + g), + R = + ((m = "button"), + (E = "." + (v = "bs.button")), + (T = ".data-api"), + (y = (p = e).fn[m]), + (C = "active"), + (I = "btn"), + (A = "focus"), + (b = '[data-toggle^="button"]'), + (D = '[data-toggle="buttons"]'), + (S = "input"), + (w = ".active"), + (N = ".btn"), + (O = { + CLICK_DATA_API: "click" + E + T, + FOCUS_BLUR_DATA_API: "focus" + E + T + " blur" + E + T, + }), + (k = (function () { + function t(t) { + this._element = t; + } + var e = t.prototype; + return ( + (e.toggle = function () { + var t = !0, + e = !0, + n = p(this._element).closest(D)[0]; + if (n) { + var i = p(this._element).find(S)[0]; + if (i) { + if ("radio" === i.type) + if (i.checked && p(this._element).hasClass(C)) t = !1; + else { + var s = p(n).find(w)[0]; + s && p(s).removeClass(C); + } + if (t) { + if ( + i.hasAttribute("disabled") || + n.hasAttribute("disabled") || + i.classList.contains("disabled") || + n.classList.contains("disabled") + ) + return; + (i.checked = !p(this._element).hasClass(C)), p(i).trigger("change"); + } + i.focus(), (e = !1); + } + } + e && this._element.setAttribute("aria-pressed", !p(this._element).hasClass(C)), + t && p(this._element).toggleClass(C); + }), + (e.dispose = function () { + p.removeData(this._element, v), (this._element = null); + }), + (t._jQueryInterface = function (e) { + return this.each(function () { + var n = p(this).data(v); + n || ((n = new t(this)), p(this).data(v, n)), "toggle" === e && n[e](); + }); + }), + s(t, null, [ + { + key: "VERSION", + get: function () { + return "4.0.0"; + }, + }, + ]), + t + ); + })()), + p(document) + .on(O.CLICK_DATA_API, b, function (t) { + t.preventDefault(); + var e = t.target; + p(e).hasClass(I) || (e = p(e).closest(N)), k._jQueryInterface.call(p(e), "toggle"); + }) + .on(O.FOCUS_BLUR_DATA_API, b, function (t) { + var e = p(t.target).closest(N)[0]; + p(e).toggleClass(A, /^focus(in)?$/.test(t.type)); + }), + (p.fn[m] = k._jQueryInterface), + (p.fn[m].Constructor = k), + (p.fn[m].noConflict = function () { + return (p.fn[m] = y), k._jQueryInterface; + }), + k), + j = (function (t) { + var e = "carousel", + n = "bs.carousel", + i = "." + n, + o = t.fn[e], + a = {interval: 5e3, keyboard: !0, slide: !1, pause: "hover", wrap: !0}, + l = { + interval: "(number|boolean)", + keyboard: "boolean", + slide: "(boolean|string)", + pause: "(string|boolean)", + wrap: "boolean", + }, + h = "next", + c = "prev", + u = "left", + f = "right", + d = { + SLIDE: "slide" + i, + SLID: "slid" + i, + KEYDOWN: "keydown" + i, + MOUSEENTER: "mouseenter" + i, + MOUSELEAVE: "mouseleave" + i, + TOUCHEND: "touchend" + i, + LOAD_DATA_API: "load" + i + ".data-api", + CLICK_DATA_API: "click" + i + ".data-api", + }, + _ = "carousel", + g = "active", + p = "slide", + m = "carousel-item-right", + v = "carousel-item-left", + E = "carousel-item-next", + T = "carousel-item-prev", + y = { + ACTIVE: ".active", + ACTIVE_ITEM: ".active.carousel-item", + ITEM: ".carousel-item", + NEXT_PREV: ".carousel-item-next, .carousel-item-prev", + INDICATORS: ".carousel-indicators", + DATA_SLIDE: "[data-slide], [data-slide-to]", + DATA_RIDE: '[data-ride="carousel"]', + }, + C = (function () { + function o(e, n) { + (this._items = null), + (this._interval = null), + (this._activeElement = null), + (this._isPaused = !1), + (this._isSliding = !1), + (this.touchTimeout = null), + (this._config = this._getConfig(n)), + (this._element = t(e)[0]), + (this._indicatorsElement = t(this._element).find(y.INDICATORS)[0]), + this._addEventListeners(); + } + var C = o.prototype; + return ( + (C.next = function () { + this._isSliding || this._slide(h); + }), + (C.nextWhenVisible = function () { + !document.hidden && + t(this._element).is(":visible") && + "hidden" !== t(this._element).css("visibility") && + this.next(); + }), + (C.prev = function () { + this._isSliding || this._slide(c); + }), + (C.pause = function (e) { + e || (this._isPaused = !0), + t(this._element).find(y.NEXT_PREV)[0] && + P.supportsTransitionEnd() && + (P.triggerTransitionEnd(this._element), this.cycle(!0)), + clearInterval(this._interval), + (this._interval = null); + }), + (C.cycle = function (t) { + t || (this._isPaused = !1), + this._interval && (clearInterval(this._interval), (this._interval = null)), + this._config.interval && + !this._isPaused && + (this._interval = setInterval( + (document.visibilityState ? this.nextWhenVisible : this.next).bind(this), + this._config.interval + )); + }), + (C.to = function (e) { + var n = this; + this._activeElement = t(this._element).find(y.ACTIVE_ITEM)[0]; + var i = this._getItemIndex(this._activeElement); + if (!(e > this._items.length - 1 || e < 0)) + if (this._isSliding) + t(this._element).one(d.SLID, function () { + return n.to(e); + }); + else { + if (i === e) return this.pause(), void this.cycle(); + var s = e > i ? h : c; + this._slide(s, this._items[e]); + } + }), + (C.dispose = function () { + t(this._element).off(i), + t.removeData(this._element, n), + (this._items = null), + (this._config = null), + (this._element = null), + (this._interval = null), + (this._isPaused = null), + (this._isSliding = null), + (this._activeElement = null), + (this._indicatorsElement = null); + }), + (C._getConfig = function (t) { + return (t = r({}, a, t)), P.typeCheckConfig(e, t, l), t; + }), + (C._addEventListeners = function () { + var e = this; + this._config.keyboard && + t(this._element).on(d.KEYDOWN, function (t) { + return e._keydown(t); + }), + "hover" === this._config.pause && + (t(this._element) + .on(d.MOUSEENTER, function (t) { + return e.pause(t); + }) + .on(d.MOUSELEAVE, function (t) { + return e.cycle(t); + }), + "ontouchstart" in document.documentElement && + t(this._element).on(d.TOUCHEND, function () { + e.pause(), + e.touchTimeout && clearTimeout(e.touchTimeout), + (e.touchTimeout = setTimeout(function (t) { + return e.cycle(t); + }, 500 + e._config.interval)); + })); + }), + (C._keydown = function (t) { + if (!/input|textarea/i.test(t.target.tagName)) + switch (t.which) { + case 37: + t.preventDefault(), this.prev(); + break; + case 39: + t.preventDefault(), this.next(); + } + }), + (C._getItemIndex = function (e) { + return ( + (this._items = t.makeArray(t(e).parent().find(y.ITEM))), this._items.indexOf(e) + ); + }), + (C._getItemByDirection = function (t, e) { + var n = t === h, + i = t === c, + s = this._getItemIndex(e), + r = this._items.length - 1; + if (((i && 0 === s) || (n && s === r)) && !this._config.wrap) return e; + var o = (s + (t === c ? -1 : 1)) % this._items.length; + return -1 === o ? this._items[this._items.length - 1] : this._items[o]; + }), + (C._triggerSlideEvent = function (e, n) { + var i = this._getItemIndex(e), + s = this._getItemIndex(t(this._element).find(y.ACTIVE_ITEM)[0]), + r = t.Event(d.SLIDE, {relatedTarget: e, direction: n, from: s, to: i}); + return t(this._element).trigger(r), r; + }), + (C._setActiveIndicatorElement = function (e) { + if (this._indicatorsElement) { + t(this._indicatorsElement).find(y.ACTIVE).removeClass(g); + var n = this._indicatorsElement.children[this._getItemIndex(e)]; + n && t(n).addClass(g); + } + }), + (C._slide = function (e, n) { + var i, + s, + r, + o = this, + a = t(this._element).find(y.ACTIVE_ITEM)[0], + l = this._getItemIndex(a), + c = n || (a && this._getItemByDirection(e, a)), + _ = this._getItemIndex(c), + C = Boolean(this._interval); + if ( + (e === h ? ((i = v), (s = E), (r = u)) : ((i = m), (s = T), (r = f)), + c && t(c).hasClass(g)) + ) + this._isSliding = !1; + else if (!this._triggerSlideEvent(c, r).isDefaultPrevented() && a && c) { + (this._isSliding = !0), C && this.pause(), this._setActiveIndicatorElement(c); + var I = t.Event(d.SLID, {relatedTarget: c, direction: r, from: l, to: _}); + P.supportsTransitionEnd() && t(this._element).hasClass(p) + ? (t(c).addClass(s), + P.reflow(c), + t(a).addClass(i), + t(c).addClass(i), + t(a) + .one(P.TRANSITION_END, function () { + t(c) + .removeClass(i + " " + s) + .addClass(g), + t(a).removeClass(g + " " + s + " " + i), + (o._isSliding = !1), + setTimeout(function () { + return t(o._element).trigger(I); + }, 0); + }) + .emulateTransitionEnd(600)) + : (t(a).removeClass(g), + t(c).addClass(g), + (this._isSliding = !1), + t(this._element).trigger(I)), + C && this.cycle(); + } + }), + (o._jQueryInterface = function (e) { + return this.each(function () { + var i = t(this).data(n), + s = r({}, a, t(this).data()); + "object" == typeof e && (s = r({}, s, e)); + var l = "string" == typeof e ? e : s.slide; + if ((i || ((i = new o(this, s)), t(this).data(n, i)), "number" == typeof e)) + i.to(e); + else if ("string" == typeof l) { + if ("undefined" == typeof i[l]) + throw new TypeError('No method named "' + l + '"'); + i[l](); + } else s.interval && (i.pause(), i.cycle()); + }); + }), + (o._dataApiClickHandler = function (e) { + var i = P.getSelectorFromElement(this); + if (i) { + var s = t(i)[0]; + if (s && t(s).hasClass(_)) { + var a = r({}, t(s).data(), t(this).data()), + l = this.getAttribute("data-slide-to"); + l && (a.interval = !1), + o._jQueryInterface.call(t(s), a), + l && t(s).data(n).to(l), + e.preventDefault(); + } + } + }), + s(o, null, [ + { + key: "VERSION", + get: function () { + return "4.0.0"; + }, + }, + { + key: "Default", + get: function () { + return a; + }, + }, + ]), + o + ); + })(); + return ( + t(document).on(d.CLICK_DATA_API, y.DATA_SLIDE, C._dataApiClickHandler), + t(window).on(d.LOAD_DATA_API, function () { + t(y.DATA_RIDE).each(function () { + var e = t(this); + C._jQueryInterface.call(e, e.data()); + }); + }), + (t.fn[e] = C._jQueryInterface), + (t.fn[e].Constructor = C), + (t.fn[e].noConflict = function () { + return (t.fn[e] = o), C._jQueryInterface; + }), + C + ); + })(e), + H = (function (t) { + var e = "collapse", + n = "bs.collapse", + i = "." + n, + o = t.fn[e], + a = {toggle: !0, parent: ""}, + l = {toggle: "boolean", parent: "(string|element)"}, + h = { + SHOW: "show" + i, + SHOWN: "shown" + i, + HIDE: "hide" + i, + HIDDEN: "hidden" + i, + CLICK_DATA_API: "click" + i + ".data-api", + }, + c = "show", + u = "collapse", + f = "collapsing", + d = "collapsed", + _ = "width", + g = "height", + p = {ACTIVES: ".show, .collapsing", DATA_TOGGLE: '[data-toggle="collapse"]'}, + m = (function () { + function i(e, n) { + (this._isTransitioning = !1), + (this._element = e), + (this._config = this._getConfig(n)), + (this._triggerArray = t.makeArray( + t( + '[data-toggle="collapse"][href="#' + + e.id + + '"],[data-toggle="collapse"][data-target="#' + + e.id + + '"]' + ) + )); + for (var i = t(p.DATA_TOGGLE), s = 0; s < i.length; s++) { + var r = i[s], + o = P.getSelectorFromElement(r); + null !== o && + t(o).filter(e).length > 0 && + ((this._selector = o), this._triggerArray.push(r)); + } + (this._parent = this._config.parent ? this._getParent() : null), + this._config.parent || + this._addAriaAndCollapsedClass(this._element, this._triggerArray), + this._config.toggle && this.toggle(); + } + var o = i.prototype; + return ( + (o.toggle = function () { + t(this._element).hasClass(c) ? this.hide() : this.show(); + }), + (o.show = function () { + var e, + s, + r = this; + if ( + !this._isTransitioning && + !t(this._element).hasClass(c) && + (this._parent && + 0 === + (e = t.makeArray( + t(this._parent) + .find(p.ACTIVES) + .filter('[data-parent="' + this._config.parent + '"]') + )).length && + (e = null), + !(e && (s = t(e).not(this._selector).data(n)) && s._isTransitioning)) + ) { + var o = t.Event(h.SHOW); + if ((t(this._element).trigger(o), !o.isDefaultPrevented())) { + e && + (i._jQueryInterface.call(t(e).not(this._selector), "hide"), + s || t(e).data(n, null)); + var a = this._getDimension(); + t(this._element).removeClass(u).addClass(f), + (this._element.style[a] = 0), + this._triggerArray.length > 0 && + t(this._triggerArray).removeClass(d).attr("aria-expanded", !0), + this.setTransitioning(!0); + var l = function () { + t(r._element).removeClass(f).addClass(u).addClass(c), + (r._element.style[a] = ""), + r.setTransitioning(!1), + t(r._element).trigger(h.SHOWN); + }; + if (P.supportsTransitionEnd()) { + var _ = "scroll" + (a[0].toUpperCase() + a.slice(1)); + t(this._element).one(P.TRANSITION_END, l).emulateTransitionEnd(600), + (this._element.style[a] = this._element[_] + "px"); + } else l(); + } + } + }), + (o.hide = function () { + var e = this; + if (!this._isTransitioning && t(this._element).hasClass(c)) { + var n = t.Event(h.HIDE); + if ((t(this._element).trigger(n), !n.isDefaultPrevented())) { + var i = this._getDimension(); + if ( + ((this._element.style[i] = this._element.getBoundingClientRect()[i] + "px"), + P.reflow(this._element), + t(this._element).addClass(f).removeClass(u).removeClass(c), + this._triggerArray.length > 0) + ) + for (var s = 0; s < this._triggerArray.length; s++) { + var r = this._triggerArray[s], + o = P.getSelectorFromElement(r); + if (null !== o) + t(o).hasClass(c) || t(r).addClass(d).attr("aria-expanded", !1); + } + this.setTransitioning(!0); + var a = function () { + e.setTransitioning(!1), + t(e._element).removeClass(f).addClass(u).trigger(h.HIDDEN); + }; + (this._element.style[i] = ""), + P.supportsTransitionEnd() + ? t(this._element).one(P.TRANSITION_END, a).emulateTransitionEnd(600) + : a(); + } + } + }), + (o.setTransitioning = function (t) { + this._isTransitioning = t; + }), + (o.dispose = function () { + t.removeData(this._element, n), + (this._config = null), + (this._parent = null), + (this._element = null), + (this._triggerArray = null), + (this._isTransitioning = null); + }), + (o._getConfig = function (t) { + return ((t = r({}, a, t)).toggle = Boolean(t.toggle)), P.typeCheckConfig(e, t, l), t; + }), + (o._getDimension = function () { + return t(this._element).hasClass(_) ? _ : g; + }), + (o._getParent = function () { + var e = this, + n = null; + P.isElement(this._config.parent) + ? ((n = this._config.parent), + "undefined" != typeof this._config.parent.jquery && (n = this._config.parent[0])) + : (n = t(this._config.parent)[0]); + var s = '[data-toggle="collapse"][data-parent="' + this._config.parent + '"]'; + return ( + t(n) + .find(s) + .each(function (t, n) { + e._addAriaAndCollapsedClass(i._getTargetFromElement(n), [n]); + }), + n + ); + }), + (o._addAriaAndCollapsedClass = function (e, n) { + if (e) { + var i = t(e).hasClass(c); + n.length > 0 && t(n).toggleClass(d, !i).attr("aria-expanded", i); + } + }), + (i._getTargetFromElement = function (e) { + var n = P.getSelectorFromElement(e); + return n ? t(n)[0] : null; + }), + (i._jQueryInterface = function (e) { + return this.each(function () { + var s = t(this), + o = s.data(n), + l = r({}, a, s.data(), "object" == typeof e && e); + if ( + (!o && l.toggle && /show|hide/.test(e) && (l.toggle = !1), + o || ((o = new i(this, l)), s.data(n, o)), + "string" == typeof e) + ) { + if ("undefined" == typeof o[e]) + throw new TypeError('No method named "' + e + '"'); + o[e](); + } + }); + }), + s(i, null, [ + { + key: "VERSION", + get: function () { + return "4.0.0"; + }, + }, + { + key: "Default", + get: function () { + return a; + }, + }, + ]), + i + ); + })(); + return ( + t(document).on(h.CLICK_DATA_API, p.DATA_TOGGLE, function (e) { + "A" === e.currentTarget.tagName && e.preventDefault(); + var i = t(this), + s = P.getSelectorFromElement(this); + t(s).each(function () { + var e = t(this), + s = e.data(n) ? "toggle" : i.data(); + m._jQueryInterface.call(e, s); + }); + }), + (t.fn[e] = m._jQueryInterface), + (t.fn[e].Constructor = m), + (t.fn[e].noConflict = function () { + return (t.fn[e] = o), m._jQueryInterface; + }), + m + ); + })(e), + W = (function (t) { + var e = "dropdown", + i = "bs.dropdown", + o = "." + i, + a = ".data-api", + l = t.fn[e], + h = new RegExp("38|40|27"), + c = { + HIDE: "hide" + o, + HIDDEN: "hidden" + o, + SHOW: "show" + o, + SHOWN: "shown" + o, + CLICK: "click" + o, + CLICK_DATA_API: "click" + o + a, + KEYDOWN_DATA_API: "keydown" + o + a, + KEYUP_DATA_API: "keyup" + o + a, + }, + u = "disabled", + f = "show", + d = "dropup", + _ = "dropright", + g = "dropleft", + p = "dropdown-menu-right", + m = "dropdown-menu-left", + v = "position-static", + E = '[data-toggle="dropdown"]', + T = ".dropdown form", + y = ".dropdown-menu", + C = ".navbar-nav", + I = ".dropdown-menu .dropdown-item:not(.disabled)", + A = "top-start", + b = "top-end", + D = "bottom-start", + S = "bottom-end", + w = "right-start", + N = "left-start", + O = {offset: 0, flip: !0, boundary: "scrollParent"}, + k = {offset: "(number|string|function)", flip: "boolean", boundary: "(string|element)"}, + L = (function () { + function a(t, e) { + (this._element = t), + (this._popper = null), + (this._config = this._getConfig(e)), + (this._menu = this._getMenuElement()), + (this._inNavbar = this._detectNavbar()), + this._addEventListeners(); + } + var l = a.prototype; + return ( + (l.toggle = function () { + if (!this._element.disabled && !t(this._element).hasClass(u)) { + var e = a._getParentFromElement(this._element), + i = t(this._menu).hasClass(f); + if ((a._clearMenus(), !i)) { + var s = {relatedTarget: this._element}, + r = t.Event(c.SHOW, s); + if ((t(e).trigger(r), !r.isDefaultPrevented())) { + if (!this._inNavbar) { + if ("undefined" == typeof n) + throw new TypeError( + "Bootstrap dropdown require Popper.js (https://popper.js.org)" + ); + var o = this._element; + t(e).hasClass(d) && + (t(this._menu).hasClass(m) || t(this._menu).hasClass(p)) && + (o = e), + "scrollParent" !== this._config.boundary && t(e).addClass(v), + (this._popper = new n(o, this._menu, this._getPopperConfig())); + } + "ontouchstart" in document.documentElement && + 0 === t(e).closest(C).length && + t("body").children().on("mouseover", null, t.noop), + this._element.focus(), + this._element.setAttribute("aria-expanded", !0), + t(this._menu).toggleClass(f), + t(e).toggleClass(f).trigger(t.Event(c.SHOWN, s)); + } + } + } + }), + (l.dispose = function () { + t.removeData(this._element, i), + t(this._element).off(o), + (this._element = null), + (this._menu = null), + null !== this._popper && (this._popper.destroy(), (this._popper = null)); + }), + (l.update = function () { + (this._inNavbar = this._detectNavbar()), + null !== this._popper && this._popper.scheduleUpdate(); + }), + (l._addEventListeners = function () { + var e = this; + t(this._element).on(c.CLICK, function (t) { + t.preventDefault(), t.stopPropagation(), e.toggle(); + }); + }), + (l._getConfig = function (n) { + return ( + (n = r({}, this.constructor.Default, t(this._element).data(), n)), + P.typeCheckConfig(e, n, this.constructor.DefaultType), + n + ); + }), + (l._getMenuElement = function () { + if (!this._menu) { + var e = a._getParentFromElement(this._element); + this._menu = t(e).find(y)[0]; + } + return this._menu; + }), + (l._getPlacement = function () { + var e = t(this._element).parent(), + n = D; + return ( + e.hasClass(d) + ? ((n = A), t(this._menu).hasClass(p) && (n = b)) + : e.hasClass(_) + ? (n = w) + : e.hasClass(g) + ? (n = N) + : t(this._menu).hasClass(p) && (n = S), + n + ); + }), + (l._detectNavbar = function () { + return t(this._element).closest(".navbar").length > 0; + }), + (l._getPopperConfig = function () { + var t = this, + e = {}; + return ( + "function" == typeof this._config.offset + ? (e.fn = function (e) { + return (e.offsets = r({}, e.offsets, t._config.offset(e.offsets) || {})), e; + }) + : (e.offset = this._config.offset), + { + placement: this._getPlacement(), + modifiers: { + offset: e, + flip: {enabled: this._config.flip}, + preventOverflow: {boundariesElement: this._config.boundary}, + }, + } + ); + }), + (a._jQueryInterface = function (e) { + return this.each(function () { + var n = t(this).data(i); + if ( + (n || ((n = new a(this, "object" == typeof e ? e : null)), t(this).data(i, n)), + "string" == typeof e) + ) { + if ("undefined" == typeof n[e]) + throw new TypeError('No method named "' + e + '"'); + n[e](); + } + }); + }), + (a._clearMenus = function (e) { + if (!e || (3 !== e.which && ("keyup" !== e.type || 9 === e.which))) + for (var n = t.makeArray(t(E)), s = 0; s < n.length; s++) { + var r = a._getParentFromElement(n[s]), + o = t(n[s]).data(i), + l = {relatedTarget: n[s]}; + if (o) { + var h = o._menu; + if ( + t(r).hasClass(f) && + !( + e && + (("click" === e.type && /input|textarea/i.test(e.target.tagName)) || + ("keyup" === e.type && 9 === e.which)) && + t.contains(r, e.target) + ) + ) { + var u = t.Event(c.HIDE, l); + t(r).trigger(u), + u.isDefaultPrevented() || + ("ontouchstart" in document.documentElement && + t("body").children().off("mouseover", null, t.noop), + n[s].setAttribute("aria-expanded", "false"), + t(h).removeClass(f), + t(r).removeClass(f).trigger(t.Event(c.HIDDEN, l))); + } + } + } + }), + (a._getParentFromElement = function (e) { + var n, + i = P.getSelectorFromElement(e); + return i && (n = t(i)[0]), n || e.parentNode; + }), + (a._dataApiKeydownHandler = function (e) { + if ( + (/input|textarea/i.test(e.target.tagName) + ? !( + 32 === e.which || + (27 !== e.which && + ((40 !== e.which && 38 !== e.which) || t(e.target).closest(y).length)) + ) + : h.test(e.which)) && + (e.preventDefault(), e.stopPropagation(), !this.disabled && !t(this).hasClass(u)) + ) { + var n = a._getParentFromElement(this), + i = t(n).hasClass(f); + if ( + (i || (27 === e.which && 32 === e.which)) && + (!i || (27 !== e.which && 32 !== e.which)) + ) { + var s = t(n).find(I).get(); + if (0 !== s.length) { + var r = s.indexOf(e.target); + 38 === e.which && r > 0 && r--, + 40 === e.which && r < s.length - 1 && r++, + r < 0 && (r = 0), + s[r].focus(); + } + } else { + if (27 === e.which) { + var o = t(n).find(E)[0]; + t(o).trigger("focus"); + } + t(this).trigger("click"); + } + } + }), + s(a, null, [ + { + key: "VERSION", + get: function () { + return "4.0.0"; + }, + }, + { + key: "Default", + get: function () { + return O; + }, + }, + { + key: "DefaultType", + get: function () { + return k; + }, + }, + ]), + a + ); + })(); + return ( + t(document) + .on(c.KEYDOWN_DATA_API, E, L._dataApiKeydownHandler) + .on(c.KEYDOWN_DATA_API, y, L._dataApiKeydownHandler) + .on(c.CLICK_DATA_API + " " + c.KEYUP_DATA_API, L._clearMenus) + .on(c.CLICK_DATA_API, E, function (e) { + e.preventDefault(), e.stopPropagation(), L._jQueryInterface.call(t(this), "toggle"); + }) + .on(c.CLICK_DATA_API, T, function (t) { + t.stopPropagation(); + }), + (t.fn[e] = L._jQueryInterface), + (t.fn[e].Constructor = L), + (t.fn[e].noConflict = function () { + return (t.fn[e] = l), L._jQueryInterface; + }), + L + ); + })(e), + M = (function (t) { + var e = "modal", + n = "bs.modal", + i = "." + n, + o = t.fn.modal, + a = {backdrop: !0, keyboard: !0, focus: !0, show: !0}, + l = {backdrop: "(boolean|string)", keyboard: "boolean", focus: "boolean", show: "boolean"}, + h = { + HIDE: "hide" + i, + HIDDEN: "hidden" + i, + SHOW: "show" + i, + SHOWN: "shown" + i, + FOCUSIN: "focusin" + i, + RESIZE: "resize" + i, + CLICK_DISMISS: "click.dismiss" + i, + KEYDOWN_DISMISS: "keydown.dismiss" + i, + MOUSEUP_DISMISS: "mouseup.dismiss" + i, + MOUSEDOWN_DISMISS: "mousedown.dismiss" + i, + CLICK_DATA_API: "click" + i + ".data-api", + }, + c = "modal-scrollbar-measure", + u = "modal-backdrop", + f = "modal-open", + d = "fade", + _ = "show", + g = { + DIALOG: ".modal-dialog", + DATA_TOGGLE: '[data-toggle="modal"]', + DATA_DISMISS: '[data-dismiss="modal"]', + FIXED_CONTENT: ".fixed-top, .fixed-bottom, .is-fixed, .sticky-top", + STICKY_CONTENT: ".sticky-top", + NAVBAR_TOGGLER: ".navbar-toggler", + }, + p = (function () { + function o(e, n) { + (this._config = this._getConfig(n)), + (this._element = e), + (this._dialog = t(e).find(g.DIALOG)[0]), + (this._backdrop = null), + (this._isShown = !1), + (this._isBodyOverflowing = !1), + (this._ignoreBackdropClick = !1), + (this._originalBodyPadding = 0), + (this._scrollbarWidth = 0); + } + var p = o.prototype; + return ( + (p.toggle = function (t) { + return this._isShown ? this.hide() : this.show(t); + }), + (p.show = function (e) { + var n = this; + if (!this._isTransitioning && !this._isShown) { + P.supportsTransitionEnd() && + t(this._element).hasClass(d) && + (this._isTransitioning = !0); + var i = t.Event(h.SHOW, {relatedTarget: e}); + t(this._element).trigger(i), + this._isShown || + i.isDefaultPrevented() || + ((this._isShown = !0), + this._checkScrollbar(), + this._setScrollbar(), + this._adjustDialog(), + t(document.body).addClass(f), + this._setEscapeEvent(), + this._setResizeEvent(), + t(this._element).on(h.CLICK_DISMISS, g.DATA_DISMISS, function (t) { + return n.hide(t); + }), + t(this._dialog).on(h.MOUSEDOWN_DISMISS, function () { + t(n._element).one(h.MOUSEUP_DISMISS, function (e) { + t(e.target).is(n._element) && (n._ignoreBackdropClick = !0); + }); + }), + this._showBackdrop(function () { + return n._showElement(e); + })); + } + }), + (p.hide = function (e) { + var n = this; + if ((e && e.preventDefault(), !this._isTransitioning && this._isShown)) { + var i = t.Event(h.HIDE); + if ((t(this._element).trigger(i), this._isShown && !i.isDefaultPrevented())) { + this._isShown = !1; + var s = P.supportsTransitionEnd() && t(this._element).hasClass(d); + s && (this._isTransitioning = !0), + this._setEscapeEvent(), + this._setResizeEvent(), + t(document).off(h.FOCUSIN), + t(this._element).removeClass(_), + t(this._element).off(h.CLICK_DISMISS), + t(this._dialog).off(h.MOUSEDOWN_DISMISS), + s + ? t(this._element) + .one(P.TRANSITION_END, function (t) { + return n._hideModal(t); + }) + .emulateTransitionEnd(300) + : this._hideModal(); + } + } + }), + (p.dispose = function () { + t.removeData(this._element, n), + t(window, document, this._element, this._backdrop).off(i), + (this._config = null), + (this._element = null), + (this._dialog = null), + (this._backdrop = null), + (this._isShown = null), + (this._isBodyOverflowing = null), + (this._ignoreBackdropClick = null), + (this._scrollbarWidth = null); + }), + (p.handleUpdate = function () { + this._adjustDialog(); + }), + (p._getConfig = function (t) { + return (t = r({}, a, t)), P.typeCheckConfig(e, t, l), t; + }), + (p._showElement = function (e) { + var n = this, + i = P.supportsTransitionEnd() && t(this._element).hasClass(d); + (this._element.parentNode && + this._element.parentNode.nodeType === Node.ELEMENT_NODE) || + document.body.appendChild(this._element), + (this._element.style.display = "block"), + this._element.removeAttribute("aria-hidden"), + (this._element.scrollTop = 0), + i && P.reflow(this._element), + t(this._element).addClass(_), + this._config.focus && this._enforceFocus(); + var s = t.Event(h.SHOWN, {relatedTarget: e}), + r = function () { + n._config.focus && n._element.focus(), + (n._isTransitioning = !1), + t(n._element).trigger(s); + }; + i ? t(this._dialog).one(P.TRANSITION_END, r).emulateTransitionEnd(300) : r(); + }), + (p._enforceFocus = function () { + var e = this; + t(document) + .off(h.FOCUSIN) + .on(h.FOCUSIN, function (n) { + document !== n.target && + e._element !== n.target && + 0 === t(e._element).has(n.target).length && + e._element.focus(); + }); + }), + (p._setEscapeEvent = function () { + var e = this; + this._isShown && this._config.keyboard + ? t(this._element).on(h.KEYDOWN_DISMISS, function (t) { + 27 === t.which && (t.preventDefault(), e.hide()); + }) + : this._isShown || t(this._element).off(h.KEYDOWN_DISMISS); + }), + (p._setResizeEvent = function () { + var e = this; + this._isShown + ? t(window).on(h.RESIZE, function (t) { + return e.handleUpdate(t); + }) + : t(window).off(h.RESIZE); + }), + (p._hideModal = function () { + var e = this; + (this._element.style.display = "none"), + this._element.setAttribute("aria-hidden", !0), + (this._isTransitioning = !1), + this._showBackdrop(function () { + t(document.body).removeClass(f), + e._resetAdjustments(), + e._resetScrollbar(), + t(e._element).trigger(h.HIDDEN); + }); + }), + (p._removeBackdrop = function () { + this._backdrop && (t(this._backdrop).remove(), (this._backdrop = null)); + }), + (p._showBackdrop = function (e) { + var n = this, + i = t(this._element).hasClass(d) ? d : ""; + if (this._isShown && this._config.backdrop) { + var s = P.supportsTransitionEnd() && i; + if ( + ((this._backdrop = document.createElement("div")), + (this._backdrop.className = u), + i && t(this._backdrop).addClass(i), + t(this._backdrop).appendTo(document.body), + t(this._element).on(h.CLICK_DISMISS, function (t) { + n._ignoreBackdropClick + ? (n._ignoreBackdropClick = !1) + : t.target === t.currentTarget && + ("static" === n._config.backdrop ? n._element.focus() : n.hide()); + }), + s && P.reflow(this._backdrop), + t(this._backdrop).addClass(_), + !e) + ) + return; + if (!s) return void e(); + t(this._backdrop).one(P.TRANSITION_END, e).emulateTransitionEnd(150); + } else if (!this._isShown && this._backdrop) { + t(this._backdrop).removeClass(_); + var r = function () { + n._removeBackdrop(), e && e(); + }; + P.supportsTransitionEnd() && t(this._element).hasClass(d) + ? t(this._backdrop).one(P.TRANSITION_END, r).emulateTransitionEnd(150) + : r(); + } else e && e(); + }), + (p._adjustDialog = function () { + var t = this._element.scrollHeight > document.documentElement.clientHeight; + !this._isBodyOverflowing && + t && + (this._element.style.paddingLeft = this._scrollbarWidth + "px"), + this._isBodyOverflowing && + !t && + (this._element.style.paddingRight = this._scrollbarWidth + "px"); + }), + (p._resetAdjustments = function () { + (this._element.style.paddingLeft = ""), (this._element.style.paddingRight = ""); + }), + (p._checkScrollbar = function () { + var t = document.body.getBoundingClientRect(); + (this._isBodyOverflowing = t.left + t.right < window.innerWidth), + (this._scrollbarWidth = this._getScrollbarWidth()); + }), + (p._setScrollbar = function () { + var e = this; + if (this._isBodyOverflowing) { + t(g.FIXED_CONTENT).each(function (n, i) { + var s = t(i)[0].style.paddingRight, + r = t(i).css("padding-right"); + t(i) + .data("padding-right", s) + .css("padding-right", parseFloat(r) + e._scrollbarWidth + "px"); + }), + t(g.STICKY_CONTENT).each(function (n, i) { + var s = t(i)[0].style.marginRight, + r = t(i).css("margin-right"); + t(i) + .data("margin-right", s) + .css("margin-right", parseFloat(r) - e._scrollbarWidth + "px"); + }), + t(g.NAVBAR_TOGGLER).each(function (n, i) { + var s = t(i)[0].style.marginRight, + r = t(i).css("margin-right"); + t(i) + .data("margin-right", s) + .css("margin-right", parseFloat(r) + e._scrollbarWidth + "px"); + }); + var n = document.body.style.paddingRight, + i = t("body").css("padding-right"); + t("body") + .data("padding-right", n) + .css("padding-right", parseFloat(i) + this._scrollbarWidth + "px"); + } + }), + (p._resetScrollbar = function () { + t(g.FIXED_CONTENT).each(function (e, n) { + var i = t(n).data("padding-right"); + "undefined" != typeof i && t(n).css("padding-right", i).removeData("padding-right"); + }), + t(g.STICKY_CONTENT + ", " + g.NAVBAR_TOGGLER).each(function (e, n) { + var i = t(n).data("margin-right"); + "undefined" != typeof i && t(n).css("margin-right", i).removeData("margin-right"); + }); + var e = t("body").data("padding-right"); + "undefined" != typeof e && + t("body").css("padding-right", e).removeData("padding-right"); + }), + (p._getScrollbarWidth = function () { + var t = document.createElement("div"); + (t.className = c), document.body.appendChild(t); + var e = t.getBoundingClientRect().width - t.clientWidth; + return document.body.removeChild(t), e; + }), + (o._jQueryInterface = function (e, i) { + return this.each(function () { + var s = t(this).data(n), + a = r({}, o.Default, t(this).data(), "object" == typeof e && e); + if ((s || ((s = new o(this, a)), t(this).data(n, s)), "string" == typeof e)) { + if ("undefined" == typeof s[e]) + throw new TypeError('No method named "' + e + '"'); + s[e](i); + } else a.show && s.show(i); + }); + }), + s(o, null, [ + { + key: "VERSION", + get: function () { + return "4.0.0"; + }, + }, + { + key: "Default", + get: function () { + return a; + }, + }, + ]), + o + ); + })(); + return ( + t(document).on(h.CLICK_DATA_API, g.DATA_TOGGLE, function (e) { + var i, + s = this, + o = P.getSelectorFromElement(this); + o && (i = t(o)[0]); + var a = t(i).data(n) ? "toggle" : r({}, t(i).data(), t(this).data()); + ("A" !== this.tagName && "AREA" !== this.tagName) || e.preventDefault(); + var l = t(i).one(h.SHOW, function (e) { + e.isDefaultPrevented() || + l.one(h.HIDDEN, function () { + t(s).is(":visible") && s.focus(); + }); + }); + p._jQueryInterface.call(t(i), a, this); + }), + (t.fn.modal = p._jQueryInterface), + (t.fn.modal.Constructor = p), + (t.fn.modal.noConflict = function () { + return (t.fn.modal = o), p._jQueryInterface; + }), + p + ); + })(e), + U = (function (t) { + var e = "tooltip", + i = "bs.tooltip", + o = "." + i, + a = t.fn[e], + l = new RegExp("(^|\\s)bs-tooltip\\S+", "g"), + h = { + animation: "boolean", + template: "string", + title: "(string|element|function)", + trigger: "string", + delay: "(number|object)", + html: "boolean", + selector: "(string|boolean)", + placement: "(string|function)", + offset: "(number|string)", + container: "(string|element|boolean)", + fallbackPlacement: "(string|array)", + boundary: "(string|element)", + }, + c = {AUTO: "auto", TOP: "top", RIGHT: "right", BOTTOM: "bottom", LEFT: "left"}, + u = { + animation: !0, + template: + '', + trigger: "hover focus", + title: "", + delay: 0, + html: !1, + selector: !1, + placement: "top", + offset: 0, + container: !1, + fallbackPlacement: "flip", + boundary: "scrollParent", + }, + f = "show", + d = "out", + _ = { + HIDE: "hide" + o, + HIDDEN: "hidden" + o, + SHOW: "show" + o, + SHOWN: "shown" + o, + INSERTED: "inserted" + o, + CLICK: "click" + o, + FOCUSIN: "focusin" + o, + FOCUSOUT: "focusout" + o, + MOUSEENTER: "mouseenter" + o, + MOUSELEAVE: "mouseleave" + o, + }, + g = "fade", + p = "show", + m = ".tooltip-inner", + v = ".arrow", + E = "hover", + T = "focus", + y = "click", + C = "manual", + I = (function () { + function a(t, e) { + if ("undefined" == typeof n) + throw new TypeError("Bootstrap tooltips require Popper.js (https://popper.js.org)"); + (this._isEnabled = !0), + (this._timeout = 0), + (this._hoverState = ""), + (this._activeTrigger = {}), + (this._popper = null), + (this.element = t), + (this.config = this._getConfig(e)), + (this.tip = null), + this._setListeners(); + } + var I = a.prototype; + return ( + (I.enable = function () { + this._isEnabled = !0; + }), + (I.disable = function () { + this._isEnabled = !1; + }), + (I.toggleEnabled = function () { + this._isEnabled = !this._isEnabled; + }), + (I.toggle = function (e) { + if (this._isEnabled) + if (e) { + var n = this.constructor.DATA_KEY, + i = t(e.currentTarget).data(n); + i || + ((i = new this.constructor(e.currentTarget, this._getDelegateConfig())), + t(e.currentTarget).data(n, i)), + (i._activeTrigger.click = !i._activeTrigger.click), + i._isWithActiveTrigger() ? i._enter(null, i) : i._leave(null, i); + } else { + if (t(this.getTipElement()).hasClass(p)) return void this._leave(null, this); + this._enter(null, this); + } + }), + (I.dispose = function () { + clearTimeout(this._timeout), + t.removeData(this.element, this.constructor.DATA_KEY), + t(this.element).off(this.constructor.EVENT_KEY), + t(this.element).closest(".modal").off("hide.bs.modal"), + this.tip && t(this.tip).remove(), + (this._isEnabled = null), + (this._timeout = null), + (this._hoverState = null), + (this._activeTrigger = null), + null !== this._popper && this._popper.destroy(), + (this._popper = null), + (this.element = null), + (this.config = null), + (this.tip = null); + }), + (I.show = function () { + var e = this; + if ("none" === t(this.element).css("display")) + throw new Error("Please use show on visible elements"); + var i = t.Event(this.constructor.Event.SHOW); + if (this.isWithContent() && this._isEnabled) { + t(this.element).trigger(i); + var s = t.contains(this.element.ownerDocument.documentElement, this.element); + if (i.isDefaultPrevented() || !s) return; + var r = this.getTipElement(), + o = P.getUID(this.constructor.NAME); + r.setAttribute("id", o), + this.element.setAttribute("aria-describedby", o), + this.setContent(), + this.config.animation && t(r).addClass(g); + var l = + "function" == typeof this.config.placement + ? this.config.placement.call(this, r, this.element) + : this.config.placement, + h = this._getAttachment(l); + this.addAttachmentClass(h); + var c = !1 === this.config.container ? document.body : t(this.config.container); + t(r).data(this.constructor.DATA_KEY, this), + t.contains(this.element.ownerDocument.documentElement, this.tip) || + t(r).appendTo(c), + t(this.element).trigger(this.constructor.Event.INSERTED), + (this._popper = new n(this.element, r, { + placement: h, + modifiers: { + offset: {offset: this.config.offset}, + flip: {behavior: this.config.fallbackPlacement}, + arrow: {element: v}, + preventOverflow: {boundariesElement: this.config.boundary}, + }, + onCreate: function (t) { + t.originalPlacement !== t.placement && e._handlePopperPlacementChange(t); + }, + onUpdate: function (t) { + e._handlePopperPlacementChange(t); + }, + })), + t(r).addClass(p), + "ontouchstart" in document.documentElement && + t("body").children().on("mouseover", null, t.noop); + var u = function () { + e.config.animation && e._fixTransition(); + var n = e._hoverState; + (e._hoverState = null), + t(e.element).trigger(e.constructor.Event.SHOWN), + n === d && e._leave(null, e); + }; + P.supportsTransitionEnd() && t(this.tip).hasClass(g) + ? t(this.tip) + .one(P.TRANSITION_END, u) + .emulateTransitionEnd(a._TRANSITION_DURATION) + : u(); + } + }), + (I.hide = function (e) { + var n = this, + i = this.getTipElement(), + s = t.Event(this.constructor.Event.HIDE), + r = function () { + n._hoverState !== f && i.parentNode && i.parentNode.removeChild(i), + n._cleanTipClass(), + n.element.removeAttribute("aria-describedby"), + t(n.element).trigger(n.constructor.Event.HIDDEN), + null !== n._popper && n._popper.destroy(), + e && e(); + }; + t(this.element).trigger(s), + s.isDefaultPrevented() || + (t(i).removeClass(p), + "ontouchstart" in document.documentElement && + t("body").children().off("mouseover", null, t.noop), + (this._activeTrigger[y] = !1), + (this._activeTrigger[T] = !1), + (this._activeTrigger[E] = !1), + P.supportsTransitionEnd() && t(this.tip).hasClass(g) + ? t(i).one(P.TRANSITION_END, r).emulateTransitionEnd(150) + : r(), + (this._hoverState = "")); + }), + (I.update = function () { + null !== this._popper && this._popper.scheduleUpdate(); + }), + (I.isWithContent = function () { + return Boolean(this.getTitle()); + }), + (I.addAttachmentClass = function (e) { + t(this.getTipElement()).addClass("bs-tooltip-" + e); + }), + (I.getTipElement = function () { + return (this.tip = this.tip || t(this.config.template)[0]), this.tip; + }), + (I.setContent = function () { + var e = t(this.getTipElement()); + this.setElementContent(e.find(m), this.getTitle()), e.removeClass(g + " " + p); + }), + (I.setElementContent = function (e, n) { + var i = this.config.html; + "object" == typeof n && (n.nodeType || n.jquery) + ? i + ? t(n).parent().is(e) || e.empty().append(n) + : e.text(t(n).text()) + : e[i ? "html" : "text"](n); + }), + (I.getTitle = function () { + var t = this.element.getAttribute("data-original-title"); + return ( + t || + (t = + "function" == typeof this.config.title + ? this.config.title.call(this.element) + : this.config.title), + t + ); + }), + (I._getAttachment = function (t) { + return c[t.toUpperCase()]; + }), + (I._setListeners = function () { + var e = this; + this.config.trigger.split(" ").forEach(function (n) { + if ("click" === n) + t(e.element).on(e.constructor.Event.CLICK, e.config.selector, function (t) { + return e.toggle(t); + }); + else if (n !== C) { + var i = n === E ? e.constructor.Event.MOUSEENTER : e.constructor.Event.FOCUSIN, + s = n === E ? e.constructor.Event.MOUSELEAVE : e.constructor.Event.FOCUSOUT; + t(e.element) + .on(i, e.config.selector, function (t) { + return e._enter(t); + }) + .on(s, e.config.selector, function (t) { + return e._leave(t); + }); + } + t(e.element) + .closest(".modal") + .on("hide.bs.modal", function () { + return e.hide(); + }); + }), + this.config.selector + ? (this.config = r({}, this.config, {trigger: "manual", selector: ""})) + : this._fixTitle(); + }), + (I._fixTitle = function () { + var t = typeof this.element.getAttribute("data-original-title"); + (this.element.getAttribute("title") || "string" !== t) && + (this.element.setAttribute( + "data-original-title", + this.element.getAttribute("title") || "" + ), + this.element.setAttribute("title", "")); + }), + (I._enter = function (e, n) { + var i = this.constructor.DATA_KEY; + (n = n || t(e.currentTarget).data(i)) || + ((n = new this.constructor(e.currentTarget, this._getDelegateConfig())), + t(e.currentTarget).data(i, n)), + e && (n._activeTrigger["focusin" === e.type ? T : E] = !0), + t(n.getTipElement()).hasClass(p) || n._hoverState === f + ? (n._hoverState = f) + : (clearTimeout(n._timeout), + (n._hoverState = f), + n.config.delay && n.config.delay.show + ? (n._timeout = setTimeout(function () { + n._hoverState === f && n.show(); + }, n.config.delay.show)) + : n.show()); + }), + (I._leave = function (e, n) { + var i = this.constructor.DATA_KEY; + (n = n || t(e.currentTarget).data(i)) || + ((n = new this.constructor(e.currentTarget, this._getDelegateConfig())), + t(e.currentTarget).data(i, n)), + e && (n._activeTrigger["focusout" === e.type ? T : E] = !1), + n._isWithActiveTrigger() || + (clearTimeout(n._timeout), + (n._hoverState = d), + n.config.delay && n.config.delay.hide + ? (n._timeout = setTimeout(function () { + n._hoverState === d && n.hide(); + }, n.config.delay.hide)) + : n.hide()); + }), + (I._isWithActiveTrigger = function () { + for (var t in this._activeTrigger) if (this._activeTrigger[t]) return !0; + return !1; + }), + (I._getConfig = function (n) { + return ( + "number" == + typeof (n = r({}, this.constructor.Default, t(this.element).data(), n)).delay && + (n.delay = {show: n.delay, hide: n.delay}), + "number" == typeof n.title && (n.title = n.title.toString()), + "number" == typeof n.content && (n.content = n.content.toString()), + P.typeCheckConfig(e, n, this.constructor.DefaultType), + n + ); + }), + (I._getDelegateConfig = function () { + var t = {}; + if (this.config) + for (var e in this.config) + this.constructor.Default[e] !== this.config[e] && (t[e] = this.config[e]); + return t; + }), + (I._cleanTipClass = function () { + var e = t(this.getTipElement()), + n = e.attr("class").match(l); + null !== n && n.length > 0 && e.removeClass(n.join("")); + }), + (I._handlePopperPlacementChange = function (t) { + this._cleanTipClass(), this.addAttachmentClass(this._getAttachment(t.placement)); + }), + (I._fixTransition = function () { + var e = this.getTipElement(), + n = this.config.animation; + null === e.getAttribute("x-placement") && + (t(e).removeClass(g), + (this.config.animation = !1), + this.hide(), + this.show(), + (this.config.animation = n)); + }), + (a._jQueryInterface = function (e) { + return this.each(function () { + var n = t(this).data(i), + s = "object" == typeof e && e; + if ( + (n || !/dispose|hide/.test(e)) && + (n || ((n = new a(this, s)), t(this).data(i, n)), "string" == typeof e) + ) { + if ("undefined" == typeof n[e]) + throw new TypeError('No method named "' + e + '"'); + n[e](); + } + }); + }), + s(a, null, [ + { + key: "VERSION", + get: function () { + return "4.0.0"; + }, + }, + { + key: "Default", + get: function () { + return u; + }, + }, + { + key: "NAME", + get: function () { + return e; + }, + }, + { + key: "DATA_KEY", + get: function () { + return i; + }, + }, + { + key: "Event", + get: function () { + return _; + }, + }, + { + key: "EVENT_KEY", + get: function () { + return o; + }, + }, + { + key: "DefaultType", + get: function () { + return h; + }, + }, + ]), + a + ); + })(); + return ( + (t.fn[e] = I._jQueryInterface), + (t.fn[e].Constructor = I), + (t.fn[e].noConflict = function () { + return (t.fn[e] = a), I._jQueryInterface; + }), + I + ); + })(e), + x = (function (t) { + var e = "popover", + n = "bs.popover", + i = "." + n, + o = t.fn[e], + a = new RegExp("(^|\\s)bs-popover\\S+", "g"), + l = r({}, U.Default, { + placement: "right", + trigger: "click", + content: "", + template: + '', + }), + h = r({}, U.DefaultType, {content: "(string|element|function)"}), + c = "fade", + u = "show", + f = ".popover-header", + d = ".popover-body", + _ = { + HIDE: "hide" + i, + HIDDEN: "hidden" + i, + SHOW: "show" + i, + SHOWN: "shown" + i, + INSERTED: "inserted" + i, + CLICK: "click" + i, + FOCUSIN: "focusin" + i, + FOCUSOUT: "focusout" + i, + MOUSEENTER: "mouseenter" + i, + MOUSELEAVE: "mouseleave" + i, + }, + g = (function (r) { + var o, g; + function p() { + return r.apply(this, arguments) || this; + } + (g = r), + ((o = p).prototype = Object.create(g.prototype)), + (o.prototype.constructor = o), + (o.__proto__ = g); + var m = p.prototype; + return ( + (m.isWithContent = function () { + return this.getTitle() || this._getContent(); + }), + (m.addAttachmentClass = function (e) { + t(this.getTipElement()).addClass("bs-popover-" + e); + }), + (m.getTipElement = function () { + return (this.tip = this.tip || t(this.config.template)[0]), this.tip; + }), + (m.setContent = function () { + var e = t(this.getTipElement()); + this.setElementContent(e.find(f), this.getTitle()); + var n = this._getContent(); + "function" == typeof n && (n = n.call(this.element)), + this.setElementContent(e.find(d), n), + e.removeClass(c + " " + u); + }), + (m._getContent = function () { + return this.element.getAttribute("data-content") || this.config.content; + }), + (m._cleanTipClass = function () { + var e = t(this.getTipElement()), + n = e.attr("class").match(a); + null !== n && n.length > 0 && e.removeClass(n.join("")); + }), + (p._jQueryInterface = function (e) { + return this.each(function () { + var i = t(this).data(n), + s = "object" == typeof e ? e : null; + if ( + (i || !/destroy|hide/.test(e)) && + (i || ((i = new p(this, s)), t(this).data(n, i)), "string" == typeof e) + ) { + if ("undefined" == typeof i[e]) + throw new TypeError('No method named "' + e + '"'); + i[e](); + } + }); + }), + s(p, null, [ + { + key: "VERSION", + get: function () { + return "4.0.0"; + }, + }, + { + key: "Default", + get: function () { + return l; + }, + }, + { + key: "NAME", + get: function () { + return e; + }, + }, + { + key: "DATA_KEY", + get: function () { + return n; + }, + }, + { + key: "Event", + get: function () { + return _; + }, + }, + { + key: "EVENT_KEY", + get: function () { + return i; + }, + }, + { + key: "DefaultType", + get: function () { + return h; + }, + }, + ]), + p + ); + })(U); + return ( + (t.fn[e] = g._jQueryInterface), + (t.fn[e].Constructor = g), + (t.fn[e].noConflict = function () { + return (t.fn[e] = o), g._jQueryInterface; + }), + g + ); + })(e), + K = (function (t) { + var e = "scrollspy", + n = "bs.scrollspy", + i = "." + n, + o = t.fn[e], + a = {offset: 10, method: "auto", target: ""}, + l = {offset: "number", method: "string", target: "(string|element)"}, + h = { + ACTIVATE: "activate" + i, + SCROLL: "scroll" + i, + LOAD_DATA_API: "load" + i + ".data-api", + }, + c = "dropdown-item", + u = "active", + f = { + DATA_SPY: '[data-spy="scroll"]', + ACTIVE: ".active", + NAV_LIST_GROUP: ".nav, .list-group", + NAV_LINKS: ".nav-link", + NAV_ITEMS: ".nav-item", + LIST_ITEMS: ".list-group-item", + DROPDOWN: ".dropdown", + DROPDOWN_ITEMS: ".dropdown-item", + DROPDOWN_TOGGLE: ".dropdown-toggle", + }, + d = "offset", + _ = "position", + g = (function () { + function o(e, n) { + var i = this; + (this._element = e), + (this._scrollElement = "BODY" === e.tagName ? window : e), + (this._config = this._getConfig(n)), + (this._selector = + this._config.target + + " " + + f.NAV_LINKS + + "," + + this._config.target + + " " + + f.LIST_ITEMS + + "," + + this._config.target + + " " + + f.DROPDOWN_ITEMS), + (this._offsets = []), + (this._targets = []), + (this._activeTarget = null), + (this._scrollHeight = 0), + t(this._scrollElement).on(h.SCROLL, function (t) { + return i._process(t); + }), + this.refresh(), + this._process(); + } + var g = o.prototype; + return ( + (g.refresh = function () { + var e = this, + n = this._scrollElement === this._scrollElement.window ? d : _, + i = "auto" === this._config.method ? n : this._config.method, + s = i === _ ? this._getScrollTop() : 0; + (this._offsets = []), + (this._targets = []), + (this._scrollHeight = this._getScrollHeight()), + t + .makeArray(t(this._selector)) + .map(function (e) { + var n, + r = P.getSelectorFromElement(e); + if ((r && (n = t(r)[0]), n)) { + var o = n.getBoundingClientRect(); + if (o.width || o.height) return [t(n)[i]().top + s, r]; + } + return null; + }) + .filter(function (t) { + return t; + }) + .sort(function (t, e) { + return t[0] - e[0]; + }) + .forEach(function (t) { + e._offsets.push(t[0]), e._targets.push(t[1]); + }); + }), + (g.dispose = function () { + t.removeData(this._element, n), + t(this._scrollElement).off(i), + (this._element = null), + (this._scrollElement = null), + (this._config = null), + (this._selector = null), + (this._offsets = null), + (this._targets = null), + (this._activeTarget = null), + (this._scrollHeight = null); + }), + (g._getConfig = function (n) { + if ("string" != typeof (n = r({}, a, n)).target) { + var i = t(n.target).attr("id"); + i || ((i = P.getUID(e)), t(n.target).attr("id", i)), (n.target = "#" + i); + } + return P.typeCheckConfig(e, n, l), n; + }), + (g._getScrollTop = function () { + return this._scrollElement === window + ? this._scrollElement.pageYOffset + : this._scrollElement.scrollTop; + }), + (g._getScrollHeight = function () { + return ( + this._scrollElement.scrollHeight || + Math.max(document.body.scrollHeight, document.documentElement.scrollHeight) + ); + }), + (g._getOffsetHeight = function () { + return this._scrollElement === window + ? window.innerHeight + : this._scrollElement.getBoundingClientRect().height; + }), + (g._process = function () { + var t = this._getScrollTop() + this._config.offset, + e = this._getScrollHeight(), + n = this._config.offset + e - this._getOffsetHeight(); + if ((this._scrollHeight !== e && this.refresh(), t >= n)) { + var i = this._targets[this._targets.length - 1]; + this._activeTarget !== i && this._activate(i); + } else { + if (this._activeTarget && t < this._offsets[0] && this._offsets[0] > 0) + return (this._activeTarget = null), void this._clear(); + for (var s = this._offsets.length; s--; ) { + this._activeTarget !== this._targets[s] && + t >= this._offsets[s] && + ("undefined" == typeof this._offsets[s + 1] || t < this._offsets[s + 1]) && + this._activate(this._targets[s]); + } + } + }), + (g._activate = function (e) { + (this._activeTarget = e), this._clear(); + var n = this._selector.split(","); + n = n.map(function (t) { + return t + '[data-target="' + e + '"],' + t + '[href="' + e + '"]'; + }); + var i = t(n.join(",")); + i.hasClass(c) + ? (i.closest(f.DROPDOWN).find(f.DROPDOWN_TOGGLE).addClass(u), i.addClass(u)) + : (i.addClass(u), + i + .parents(f.NAV_LIST_GROUP) + .prev(f.NAV_LINKS + ", " + f.LIST_ITEMS) + .addClass(u), + i.parents(f.NAV_LIST_GROUP).prev(f.NAV_ITEMS).children(f.NAV_LINKS).addClass(u)), + t(this._scrollElement).trigger(h.ACTIVATE, {relatedTarget: e}); + }), + (g._clear = function () { + t(this._selector).filter(f.ACTIVE).removeClass(u); + }), + (o._jQueryInterface = function (e) { + return this.each(function () { + var i = t(this).data(n); + if ( + (i || ((i = new o(this, "object" == typeof e && e)), t(this).data(n, i)), + "string" == typeof e) + ) { + if ("undefined" == typeof i[e]) + throw new TypeError('No method named "' + e + '"'); + i[e](); + } + }); + }), + s(o, null, [ + { + key: "VERSION", + get: function () { + return "4.0.0"; + }, + }, + { + key: "Default", + get: function () { + return a; + }, + }, + ]), + o + ); + })(); + return ( + t(window).on(h.LOAD_DATA_API, function () { + for (var e = t.makeArray(t(f.DATA_SPY)), n = e.length; n--; ) { + var i = t(e[n]); + g._jQueryInterface.call(i, i.data()); + } + }), + (t.fn[e] = g._jQueryInterface), + (t.fn[e].Constructor = g), + (t.fn[e].noConflict = function () { + return (t.fn[e] = o), g._jQueryInterface; + }), + g + ); + })(e), + V = (function (t) { + var e = "bs.tab", + n = "." + e, + i = t.fn.tab, + r = { + HIDE: "hide" + n, + HIDDEN: "hidden" + n, + SHOW: "show" + n, + SHOWN: "shown" + n, + CLICK_DATA_API: "click.bs.tab.data-api", + }, + o = "dropdown-menu", + a = "active", + l = "disabled", + h = "fade", + c = "show", + u = ".dropdown", + f = ".nav, .list-group", + d = ".active", + _ = "> li > .active", + g = '[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]', + p = ".dropdown-toggle", + m = "> .dropdown-menu .active", + v = (function () { + function n(t) { + this._element = t; + } + var i = n.prototype; + return ( + (i.show = function () { + var e = this; + if ( + !( + (this._element.parentNode && + this._element.parentNode.nodeType === Node.ELEMENT_NODE && + t(this._element).hasClass(a)) || + t(this._element).hasClass(l) + ) + ) { + var n, + i, + s = t(this._element).closest(f)[0], + o = P.getSelectorFromElement(this._element); + if (s) { + var h = "UL" === s.nodeName ? _ : d; + i = (i = t.makeArray(t(s).find(h)))[i.length - 1]; + } + var c = t.Event(r.HIDE, {relatedTarget: this._element}), + u = t.Event(r.SHOW, {relatedTarget: i}); + if ( + (i && t(i).trigger(c), + t(this._element).trigger(u), + !u.isDefaultPrevented() && !c.isDefaultPrevented()) + ) { + o && (n = t(o)[0]), this._activate(this._element, s); + var g = function () { + var n = t.Event(r.HIDDEN, {relatedTarget: e._element}), + s = t.Event(r.SHOWN, {relatedTarget: i}); + t(i).trigger(n), t(e._element).trigger(s); + }; + n ? this._activate(n, n.parentNode, g) : g(); + } + } + }), + (i.dispose = function () { + t.removeData(this._element, e), (this._element = null); + }), + (i._activate = function (e, n, i) { + var s = this, + r = ("UL" === n.nodeName ? t(n).find(_) : t(n).children(d))[0], + o = i && P.supportsTransitionEnd() && r && t(r).hasClass(h), + a = function () { + return s._transitionComplete(e, r, i); + }; + r && o ? t(r).one(P.TRANSITION_END, a).emulateTransitionEnd(150) : a(); + }), + (i._transitionComplete = function (e, n, i) { + if (n) { + t(n).removeClass(c + " " + a); + var s = t(n.parentNode).find(m)[0]; + s && t(s).removeClass(a), + "tab" === n.getAttribute("role") && n.setAttribute("aria-selected", !1); + } + if ( + (t(e).addClass(a), + "tab" === e.getAttribute("role") && e.setAttribute("aria-selected", !0), + P.reflow(e), + t(e).addClass(c), + e.parentNode && t(e.parentNode).hasClass(o)) + ) { + var r = t(e).closest(u)[0]; + r && t(r).find(p).addClass(a), e.setAttribute("aria-expanded", !0); + } + i && i(); + }), + (n._jQueryInterface = function (i) { + return this.each(function () { + var s = t(this), + r = s.data(e); + if ((r || ((r = new n(this)), s.data(e, r)), "string" == typeof i)) { + if ("undefined" == typeof r[i]) + throw new TypeError('No method named "' + i + '"'); + r[i](); + } + }); + }), + s(n, null, [ + { + key: "VERSION", + get: function () { + return "4.0.0"; + }, + }, + ]), + n + ); + })(); + return ( + t(document).on(r.CLICK_DATA_API, g, function (e) { + e.preventDefault(), v._jQueryInterface.call(t(this), "show"); + }), + (t.fn.tab = v._jQueryInterface), + (t.fn.tab.Constructor = v), + (t.fn.tab.noConflict = function () { + return (t.fn.tab = i), v._jQueryInterface; + }), + v + ); + })(e); + !(function (t) { + if ("undefined" == typeof t) + throw new TypeError( + "Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript." + ); + var e = t.fn.jquery.split(" ")[0].split("."); + if ((e[0] < 2 && e[1] < 9) || (1 === e[0] && 9 === e[1] && e[2] < 1) || e[0] >= 4) + throw new Error( + "Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0" + ); + })(e), + (t.Util = P), + (t.Alert = L), + (t.Button = R), + (t.Carousel = j), + (t.Collapse = H), + (t.Dropdown = W), + (t.Modal = M), + (t.Popover = x), + (t.Scrollspy = K), + (t.Tab = V), + (t.Tooltip = U), + Object.defineProperty(t, "__esModule", {value: !0}); +}); +//# sourceMappingURL=bootstrap.min.js.map diff --git a/emergency/homepage/contact.html b/emergency/homepage/contact.html index d4e9fef49..b191638e3 100644 --- a/emergency/homepage/contact.html +++ b/emergency/homepage/contact.html @@ -1,35 +1,56 @@ - - - - - - - + + + + + - - - -
Request Help
+
Request Help
- - - - - - - - - - - - - - - -
Name:
Current Location:
Details: -
- + + + + + + + + + + + + + + + + +
Name: + +
Current Location: + +
Details: + +
+
diff --git a/emergency/homepage/index.html b/emergency/homepage/index.html index 8c233db6f..19dec6430 100644 --- a/emergency/homepage/index.html +++ b/emergency/homepage/index.html @@ -1,26 +1,26 @@ - - - - - - + + + + + + - EmergenCell + EmergenCell - - + + - -

Welcome to the Emergency Network

-

Maps

+ +

Welcome to the Emergency Network

+

Maps

Person Registry

-

Contact Help

-

Chat Room

- - +

Contact Help

+

Chat Room

+ + diff --git a/emergency/homepage/jquery-3.js b/emergency/homepage/jquery-3.js index 105d00e61..daccbe8b4 100644 --- a/emergency/homepage/jquery-3.js +++ b/emergency/homepage/jquery-3.js @@ -1,4 +1,3937 @@ /*! jQuery v3.2.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/parseXML,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-event/ajax,-effects,-effects/Tween,-effects/animatedSelector | (c) JS Foundation and other contributors | jquery.org/license */ -!function(a,b){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){"use strict";var c=[],d=a.document,e=Object.getPrototypeOf,f=c.slice,g=c.concat,h=c.push,i=c.indexOf,j={},k=j.toString,l=j.hasOwnProperty,m=l.toString,n=m.call(Object),o={};function p(a,b){b=b||d;var c=b.createElement("script");c.text=a,b.head.appendChild(c).parentNode.removeChild(c)}var q="3.2.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/parseXML,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-event/ajax,-effects,-effects/Tween,-effects/animatedSelector",r=function(a,b){return new r.fn.init(a,b)},s=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,t=/^-ms-/,u=/-([a-z])/g,v=function(a,b){return b.toUpperCase()};r.fn=r.prototype={jquery:q,constructor:r,length:0,toArray:function(){return f.call(this)},get:function(a){return null==a?f.call(this):a<0?this[a+this.length]:this[a]},pushStack:function(a){var b=r.merge(this.constructor(),a);return b.prevObject=this,b},each:function(a){return r.each(this,a)},map:function(a){return this.pushStack(r.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(f.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(a<0?b:0);return this.pushStack(c>=0&&c0&&b-1 in a)}var x=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;c+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(N),U=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),aa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:d<0?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ca=function(a,b){return b?"\0"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0&&("form"in a||"label"in a)},{dir:"parentNode",next:"legend"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(ba,ca):b.setAttribute("id",k=u),o=g(a),h=o.length;while(h--)o[h]="#"+k+" "+sa(o[h]);r=o.join(","),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(P,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("fieldset");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return function(b){return"form"in b?b.parentNode&&b.disabled===!1?"label"in b?"label"in b.parentNode?b.parentNode.disabled===a:b.disabled===a:b.isDisabled===a||b.isDisabled!==!a&&ea(b)===a:b.disabled===a:"label"in b&&b.disabled===a}}function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function qa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return!!b&&"HTML"!==b.nodeName},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute("id")===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}}):(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c,d,e,f=b.getElementById(a);if(f){if(c=f.getAttributeNode("id"),c&&c.value===a)return[f];e=b.getElementsByName(a),d=0;while(f=e[d++])if(c=f.getAttributeNode("id"),c&&c.value===a)return[f]}return[]}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){if("undefined"!=typeof b.getElementsByClassName&&p)return b.getElementsByClassName(a)},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){a.innerHTML="";var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+K+"*[*^$|!~]?="),2!==a.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"*"),s.call(a,"[s!='']:x"),r.push("!=",N)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Y.test(o.compareDocumentPosition),t=b||Y.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?I(k,a)-I(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(S,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.escape=function(a){return(a+"").replace(ba,ca)},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(_,aa),a[3]=(a[3]||a[4]||a[5]||"").replace(_,aa),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&T.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(_,aa).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:!b||(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(O," ")+" ").indexOf(c)>-1:"|="===b&&(e===c||e.slice(0,c.length+1)===c+"-"))}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(_,aa).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:oa(!1),disabled:oa(!0),checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[c<0?c+b:c]}),even:pa(function(a,b){for(var c=0;c=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=c<0?c+b:c;++d1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;d-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];i1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(P,"$1"),c,i0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,c,e){var f,i,j,k,l,m="function"==typeof a&&a,n=!e&&g(a=m.selector||a);if(c=c||[],1===n.length){if(i=n[0]=n[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&9===b.nodeType&&p&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(_,aa),b)||[])[0],!b)return c;m&&(b=b.parentNode),a=a.slice(i.shift().value.length)}f=V.needsContext.test(a)?0:i.length;while(f--){if(j=i[f],d.relative[k=j.type])break;if((l=d.find[k])&&(e=l(j.matches[0].replace(_,aa),$.test(i[0].type)&&qa(b.parentNode)||b))){if(i.splice(f,1),a=e.length&&sa(i),!a)return G.apply(c,e),c;break}}}return(m||h(a,n))(e,b,!p,c,!b||$.test(a)&&qa(b.parentNode)||b),c},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("fieldset"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){if(!c)return a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){if(!c&&"input"===a.nodeName.toLowerCase())return a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(J,function(a,b,c){var d;if(!c)return a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);r.find=x,r.expr=x.selectors,r.expr[":"]=r.expr.pseudos,r.uniqueSort=r.unique=x.uniqueSort,r.text=x.getText,r.isXMLDoc=x.isXML,r.contains=x.contains,r.escapeSelector=x.escape;var y=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&r(a).is(c))break;d.push(a)}return d},z=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},A=r.expr.match.needsContext;function B(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()}var C=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,D=/^.[^:#\[\.,]*$/;function E(a,b,c){return r.isFunction(b)?r.grep(a,function(a,d){return!!b.call(a,d,a)!==c}):b.nodeType?r.grep(a,function(a){return a===b!==c}):"string"!=typeof b?r.grep(a,function(a){return i.call(b,a)>-1!==c}):D.test(b)?r.filter(b,a,c):(b=r.filter(b,a),r.grep(a,function(a){return i.call(b,a)>-1!==c&&1===a.nodeType}))}r.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a){return 1===a.nodeType}))},r.fn.extend({find:function(a){var b,c,d=this.length,e=this;if("string"!=typeof a)return this.pushStack(r(a).filter(function(){for(b=0;b1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(E(this,a||[],!1))},not:function(a){return this.pushStack(E(this,a||[],!0))},is:function(a){return!!E(this,"string"==typeof a&&A.test(a)?r(a):a||[],!1).length}});var F,G=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,H=r.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||F,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:G.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof r?b[0]:b,r.merge(this,r.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),C.test(e[1])&&r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&(this[0]=f,this.length=1),this}return a.nodeType?(this[0]=a,this.length=1,this):r.isFunction(a)?void 0!==c.ready?c.ready(a):a(r):r.makeArray(a,this)};H.prototype=r.fn,F=r(d);var I=/^(?:parents|prev(?:Until|All))/,J={children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({has:function(a){var b=r(a,this),c=b.length;return this.filter(function(){for(var a=0;a-1:1===c.nodeType&&r.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?r.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?i.call(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function K(a,b){while((a=a[b])&&1!==a.nodeType);return a}r.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return y(a,"parentNode")},parentsUntil:function(a,b,c){return y(a,"parentNode",c)},next:function(a){return K(a,"nextSibling")},prev:function(a){return K(a,"previousSibling")},nextAll:function(a){return y(a,"nextSibling")},prevAll:function(a){return y(a,"previousSibling")},nextUntil:function(a,b,c){return y(a,"nextSibling",c)},prevUntil:function(a,b,c){return y(a,"previousSibling",c)},siblings:function(a){return z((a.parentNode||{}).firstChild,a)},children:function(a){return z(a.firstChild)},contents:function(a){return B(a,"iframe")?a.contentDocument:(B(a,"template")&&(a=a.content||a),r.merge([],a.childNodes))}},function(a,b){r.fn[a]=function(c,d){var e=r.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=r.filter(d,e)),this.length>1&&(J[a]||r.uniqueSort(e),I.test(a)&&e.reverse()),this.pushStack(e)}});var L=/[^\x20\t\r\n\f]+/g;function M(a){var b={};return r.each(a.match(L)||[],function(a,c){b[c]=!0}),b}r.Callbacks=function(a){a="string"==typeof a?M(a):r.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=e||a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h-1)f.splice(c,1),c<=h&&h--}),this},has:function(a){return a?r.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||b||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j};function N(a){return a}function O(a){throw a}function P(a,b,c,d){var e;try{a&&r.isFunction(e=a.promise)?e.call(a).done(b).fail(c):a&&r.isFunction(e=a.then)?e.call(a,b,c):b.apply(void 0,[a].slice(d))}catch(a){c.apply(void 0,[a])}}r.extend({Deferred:function(b){var c=[["notify","progress",r.Callbacks("memory"),r.Callbacks("memory"),2],["resolve","done",r.Callbacks("once memory"),r.Callbacks("once memory"),0,"resolved"],["reject","fail",r.Callbacks("once memory"),r.Callbacks("once memory"),1,"rejected"]],d="pending",e={state:function(){return d},always:function(){return f.done(arguments).fail(arguments),this},"catch":function(a){return e.then(null,a)},pipe:function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=e&&e.apply(this,arguments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+"With"](this,e?[a]:arguments)})}),a=null}).promise()},then:function(b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(b=f&&(d!==O&&(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook&&(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:N,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:N)),c[2][3].add(g(0,a,r.isFunction(d)?d:O))}).promise()},promise:function(a){return null!=a?r.extend(a,e):e}},f={};return r.each(c,function(a,b){var g=b[2],h=b[5];e[b[1]]=g.add,h&&g.add(function(){d=h},c[3-a][2].disable,c[0][2].lock),g.add(b[3].fire),f[b[0]]=function(){return f[b[0]+"With"](this===f?void 0:this,arguments),this},f[b[0]+"With"]=g.fireWith}),e.promise(f),b&&b.call(f,f),f},when:function(a){var b=arguments.length,c=b,d=Array(c),e=f.call(arguments),g=r.Deferred(),h=function(a){return function(c){d[a]=this,e[a]=arguments.length>1?f.call(arguments):c,--b||g.resolveWith(d,e)}};if(b<=1&&(P(a,g.done(h(c)).resolve,g.reject,!b),"pending"===g.state()||r.isFunction(e[c]&&e[c].then)))return g.then();while(c--)P(e[c],h(c),g.reject);return g.promise()}});var Q=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.Deferred.exceptionHook=function(b,c){a.console&&a.console.warn&&b&&Q.test(b.name)&&a.console.warn("jQuery.Deferred exception: "+b.message,b.stack,c)},r.readyException=function(b){a.setTimeout(function(){throw b})};var R=r.Deferred();r.fn.ready=function(a){return R.then(a)["catch"](function(a){r.readyException(a); -}),this},r.extend({isReady:!1,readyWait:1,ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0&&--r.readyWait>0||R.resolveWith(d,[r]))}}),r.ready.then=R.then;function S(){d.removeEventListener("DOMContentLoaded",S),a.removeEventListener("load",S),r.ready()}"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener("DOMContentLoaded",S),a.addEventListener("load",S));var T=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===r.type(c)){e=!0;for(h in c)T(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(r(a),c)})),b))for(;h1,null,!0)},removeData:function(a){return this.each(function(){X.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=W.get(a,b),c&&(!d||Array.isArray(c)?d=W.access(a,b,r.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return W.get(a,c)||W.access(a,c,{empty:r.Callbacks("once memory").add(function(){W.remove(a,[b+"queue",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length\x20\t\r\n\f]+)/i,la=/^$|\/(?:java|ecma)script/i,ma={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ma.optgroup=ma.option,ma.tbody=ma.tfoot=ma.colgroup=ma.caption=ma.thead,ma.th=ma.td;function na(a,b){var c;return c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[],void 0===b||b&&B(a,b)?r.merge([a],c):c}function oa(a,b){for(var c=0,d=a.length;c-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=na(l.appendChild(f),"script"),j&&oa(g),c){k=0;while(f=g[k++])la.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var ra=d.documentElement,sa=/^key/,ta=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ua=/^([^.]*)(?:\.(.+)|)/;function va(){return!0}function wa(){return!1}function xa(){try{return d.activeElement}catch(a){}}function ya(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)ya(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=wa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(ra,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return"undefined"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(L)||[""],j=b.length;while(j--)h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.hasData(a)&&W.get(a);if(q&&(i=q.events)){b=(b||"").match(L)||[""],j=b.length;while(j--)if(h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&W.remove(a,"handle events")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(W.get(this,"events")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;c=1))for(;j!==this;j=j.parentNode||this)if(1===j.nodeType&&("click"!==a.type||j.disabled!==!0)){for(f=[],g={},c=0;c-1:r.find(e,this,null,[j]).length),g[e]&&f.push(d);f.length&&h.push({elem:j,handlers:f})}return j=this,i\x20\t\r\n\f]*)[^>]*)\/>/gi,Aa=/\s*$/g;function Ea(a,b){return B(a,"table")&&B(11!==b.nodeType?b:b.firstChild,"tr")?r(">tbody",a)[0]||a:a}function Fa(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function Ga(a){var b=Ca.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ha(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(W.hasData(a)&&(f=W.access(a),g=W.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;c1&&"string"==typeof q&&!o.checkClone&&Ba.test(q))return a.each(function(e){var f=a.eq(e);s&&(b[0]=q.call(this,e,f.html())),Ja(f,b,c,d)});if(m&&(e=qa(b,a[0].ownerDocument,!1,a,d),f=e.firstChild,1===e.childNodes.length&&(e=f),f||d)){for(h=r.map(na(e,"script"),Fa),i=h.length;l")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=r.contains(a.ownerDocument,a);if(!(o.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||r.isXMLDoc(a)))for(g=na(h),f=na(a),d=0,e=f.length;d0&&oa(g,!i&&na(a,"script")),h},cleanData:function(a){for(var b,c,d,e=r.event.special,f=0;void 0!==(c=a[f]);f++)if(U(c)){if(b=c[W.expando]){if(b.events)for(d in b.events)e[d]?r.event.remove(c,d):r.removeEvent(c,d,b.handle);c[W.expando]=void 0}c[X.expando]&&(c[X.expando]=void 0)}}}),r.fn.extend({detach:function(a){return Ka(this,a,!0)},remove:function(a){return Ka(this,a)},text:function(a){return T(this,function(a){return void 0===a?r.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.appendChild(a)}})},prepend:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(r.cleanData(na(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null!=a&&a,b=null==b?a:b,this.map(function(){return r.clone(this,a,b)})},html:function(a){return T(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!Aa.test(a)&&!ma[(ka.exec(a)||["",""])[1].toLowerCase()]){a=r.htmlPrefilter(a);try{for(;c1)}}),r.fn.delay=function(b,c){return b=r.fx?r.fx.speeds[b]||b:b,c=c||"fx",this.queue(c,function(c,d){var e=a.setTimeout(c,b);d.stop=function(){a.clearTimeout(e)}})},function(){var a=d.createElement("input"),b=d.createElement("select"),c=b.appendChild(d.createElement("option"));a.type="checkbox",o.checkOn=""!==a.value,o.optSelected=c.selected,a=d.createElement("input"),a.value="t",a.type="radio",o.radioValue="t"===a.value}();var _a,ab=r.expr.attrHandle;r.fn.extend({attr:function(a,b){return T(this,r.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){r.removeAttr(this,a)})}}),r.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?r.prop(a,b,c):(1===f&&r.isXMLDoc(a)||(e=r.attrHooks[b.toLowerCase()]||(r.expr.match.bool.test(b)?_a:void 0)),void 0!==c?null===c?void r.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=r.find.attr(a,b),null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!o.radioValue&&"radio"===b&&B(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d=0,e=b&&b.match(L);if(e&&1===a.nodeType)while(c=e[d++])a.removeAttribute(c)}}),_a={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\w+/g),function(a,b){var c=ab[b]||r.find.attr;ab[b]=function(a,b,d){var e,f,g=b.toLowerCase();return d||(f=ab[g],ab[g]=e,e=null!=c(a,b,d)?g:null,ab[g]=f),e}});var bb=/^(?:input|select|textarea|button)$/i,cb=/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return T(this,r.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[r.propFix[a]||a]})}}),r.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&r.isXMLDoc(a)||(b=r.propFix[b]||b,e=r.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=r.find.attr(a,"tabindex");return b?parseInt(b,10):bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),o.optSelected||(r.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),r.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){r.propFix[this.toLowerCase()]=this});function db(a){var b=a.match(L)||[];return b.join(" ")}function eb(a){return a.getAttribute&&a.getAttribute("class")||""}r.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).addClass(a.call(this,b,eb(this)))});if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=eb(c),d=1===c.nodeType&&" "+db(e)+" "){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=db(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).removeClass(a.call(this,b,eb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=eb(c),d=1===c.nodeType&&" "+db(e)+" "){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=db(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):r.isFunction(a)?this.each(function(c){r(this).toggleClass(a.call(this,c,eb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=r(this),f=a.match(L)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=eb(this),b&&W.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":W.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+db(eb(c))+" ").indexOf(b)>-1)return!0;return!1}});var fb=/\r/g;r.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=r.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,r(this).val()):a,null==e?e="":"number"==typeof e?e+="":Array.isArray(e)&&(e=r.map(e,function(a){return null==a?"":a+""})),b=r.valHooks[this.type]||r.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=r.valHooks[e.type]||r.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(fb,""):null==c?"":c)}}}),r.extend({valHooks:{option:{get:function(a){var b=r.find.attr(a,"value");return null!=b?b:db(r.text(a))}},select:{get:function(a){var b,c,d,e=a.options,f=a.selectedIndex,g="select-one"===a.type,h=g?null:[],i=g?f+1:e.length;for(d=f<0?i:g?f:0;d-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),r.each(["radio","checkbox"],function(){r.valHooks[this]={set:function(a,b){if(Array.isArray(b))return a.checked=r.inArray(r(a).val(),b)>-1}},o.checkOn||(r.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var gb=/^(?:focusinfocus|focusoutblur)$/;r.extend(r.event,{trigger:function(b,c,e,f){var g,h,i,j,k,m,n,o=[e||d],p=l.call(b,"type")?b.type:b,q=l.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!gb.test(p+r.event.triggered)&&(p.indexOf(".")>-1&&(q=p.split("."),p=q.shift(),q.sort()),k=p.indexOf(":")<0&&"on"+p,b=b[r.expando]?b:new r.Event(p,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=q.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:r.makeArray(c,[b]),n=r.event.special[p]||{},f||!n.trigger||n.trigger.apply(e,c)!==!1)){if(!f&&!n.noBubble&&!r.isWindow(e)){for(j=n.delegateType||p,gb.test(j+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),i=h;i===(e.ownerDocument||d)&&o.push(i.defaultView||i.parentWindow||a)}g=0;while((h=o[g++])&&!b.isPropagationStopped())b.type=g>1?j:n.bindType||p,m=(W.get(h,"events")||{})[b.type]&&W.get(h,"handle"),m&&m.apply(h,c),m=k&&h[k],m&&m.apply&&U(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=p,f||b.isDefaultPrevented()||n._default&&n._default.apply(o.pop(),c)!==!1||!U(e)||k&&r.isFunction(e[p])&&!r.isWindow(e)&&(i=e[k],i&&(e[k]=null),r.event.triggered=p,e[p](),r.event.triggered=void 0,i&&(e[k]=i)),b.result}},simulate:function(a,b,c){var d=r.extend(new r.Event,c,{type:a,isSimulated:!0});r.event.trigger(d,null,b)}}),r.fn.extend({trigger:function(a,b){return this.each(function(){r.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];if(c)return r.event.trigger(a,b,c,!0)}}),r.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(a,b){r.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),r.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),o.focusin="onfocusin"in a,o.focusin||r.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){r.event.simulate(b,a.target,r.event.fix(a))};r.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=W.access(d,b);e||d.addEventListener(a,c,!0),W.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=W.access(d,b)-1;e?W.access(d,b,e):(d.removeEventListener(a,c,!0),W.remove(d,b))}}});var hb=/\[\]$/,ib=/\r?\n/g,jb=/^(?:submit|button|image|reset|file)$/i,kb=/^(?:input|select|textarea|keygen)/i;function lb(a,b,c,d){var e;if(Array.isArray(b))r.each(b,function(b,e){c||hb.test(a)?d(a,e):lb(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d); -});else if(c||"object"!==r.type(b))d(a,b);else for(e in b)lb(a+"["+e+"]",b[e],c,d)}r.param=function(a,b){var c,d=[],e=function(a,b){var c=r.isFunction(b)?b():b;d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(null==c?"":c)};if(Array.isArray(a)||a.jquery&&!r.isPlainObject(a))r.each(a,function(){e(this.name,this.value)});else for(c in a)lb(c,a[c],b,e);return d.join("&")},r.fn.extend({serialize:function(){return r.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=r.prop(this,"elements");return a?r.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!r(this).is(":disabled")&&kb.test(this.nodeName)&&!jb.test(a)&&(this.checked||!ja.test(a))}).map(function(a,b){var c=r(this).val();return null==c?null:Array.isArray(c)?r.map(c,function(a){return{name:b.name,value:a.replace(ib,"\r\n")}}):{name:b.name,value:c.replace(ib,"\r\n")}}).get()}}),r.fn.extend({wrapAll:function(a){var b;return this[0]&&(r.isFunction(a)&&(a=a.call(this[0])),b=r(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this},wrapInner:function(a){return r.isFunction(a)?this.each(function(b){r(this).wrapInner(a.call(this,b))}):this.each(function(){var b=r(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=r.isFunction(a);return this.each(function(c){r(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(a){return this.parent(a).not("body").each(function(){r(this).replaceWith(this.childNodes)}),this}}),r.expr.pseudos.hidden=function(a){return!r.expr.pseudos.visible(a)},r.expr.pseudos.visible=function(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)},o.createHTMLDocument=function(){var a=d.implementation.createHTMLDocument("").body;return a.innerHTML="
",2===a.childNodes.length}(),r.parseHTML=function(a,b,c){if("string"!=typeof a)return[];"boolean"==typeof b&&(c=b,b=!1);var e,f,g;return b||(o.createHTMLDocument?(b=d.implementation.createHTMLDocument(""),e=b.createElement("base"),e.href=d.location.href,b.head.appendChild(e)):b=d),f=C.exec(a),g=!c&&[],f?[b.createElement(f[1])]:(f=qa([a],b,g),g&&g.length&&r(g).remove(),r.merge([],f.childNodes))},r.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=r.css(a,"position"),l=r(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=r.css(a,"top"),i=r.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),r.isFunction(b)&&(b=b.call(a,c,r.extend({},h))),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},r.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){r.offset.setOffset(this,a,b)});var b,c,d,e,f=this[0];if(f)return f.getClientRects().length?(d=f.getBoundingClientRect(),b=f.ownerDocument,c=b.documentElement,e=b.defaultView,{top:d.top+e.pageYOffset-c.clientTop,left:d.left+e.pageXOffset-c.clientLeft}):{top:0,left:0}},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===r.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),B(a[0],"html")||(d=a.offset()),d={top:d.top+r.css(a[0],"borderTopWidth",!0),left:d.left+r.css(a[0],"borderLeftWidth",!0)}),{top:b.top-d.top-r.css(c,"marginTop",!0),left:b.left-d.left-r.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent;while(a&&"static"===r.css(a,"position"))a=a.offsetParent;return a||ra})}}),r.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c="pageYOffset"===b;r.fn[a]=function(d){return T(this,function(a,d,e){var f;return r.isWindow(a)?f=a:9===a.nodeType&&(f=a.defaultView),void 0===e?f?f[b]:a[d]:void(f?f.scrollTo(c?f.pageXOffset:e,c?e:f.pageYOffset):a[d]=e)},a,d,arguments.length)}}),r.each(["top","left"],function(a,b){r.cssHooks[b]=Pa(o.pixelPosition,function(a,c){if(c)return c=Oa(a,b),Ma.test(c)?r(a).position()[b]+"px":c})}),r.each({Height:"height",Width:"width"},function(a,b){r.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){r.fn[d]=function(e,f){var g=arguments.length&&(c||"boolean"!=typeof e),h=c||(e===!0||f===!0?"margin":"border");return T(this,function(b,c,e){var f;return r.isWindow(b)?0===d.indexOf("outer")?b["inner"+a]:b.document.documentElement["client"+a]:9===b.nodeType?(f=b.documentElement,Math.max(b.body["scroll"+a],f["scroll"+a],b.body["offset"+a],f["offset"+a],f["client"+a])):void 0===e?r.css(b,c,h):r.style(b,c,e,h)},b,g?e:void 0,g)}})}),r.fn.extend({bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}}),r.holdReady=function(a){a?r.readyWait++:r.ready(!0)},r.isArray=Array.isArray,r.parseJSON=JSON.parse,r.nodeName=B,"function"==typeof define&&define.amd&&define("jquery",[],function(){return r});var mb=a.jQuery,nb=a.$;return r.noConflict=function(b){return a.$===r&&(a.$=nb),b&&a.jQuery===r&&(a.jQuery=mb),r},b||(a.jQuery=a.$=r),r}); +!(function (a, b) { + "use strict"; + "object" == typeof module && "object" == typeof module.exports + ? (module.exports = a.document + ? b(a, !0) + : function (a) { + if (!a.document) throw new Error("jQuery requires a window with a document"); + return b(a); + }) + : b(a); +})("undefined" != typeof window ? window : this, function (a, b) { + "use strict"; + var c = [], + d = a.document, + e = Object.getPrototypeOf, + f = c.slice, + g = c.concat, + h = c.push, + i = c.indexOf, + j = {}, + k = j.toString, + l = j.hasOwnProperty, + m = l.toString, + n = m.call(Object), + o = {}; + function p(a, b) { + b = b || d; + var c = b.createElement("script"); + (c.text = a), b.head.appendChild(c).parentNode.removeChild(c); + } + var q = + "3.2.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/parseXML,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-event/ajax,-effects,-effects/Tween,-effects/animatedSelector", + r = function (a, b) { + return new r.fn.init(a, b); + }, + s = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, + t = /^-ms-/, + u = /-([a-z])/g, + v = function (a, b) { + return b.toUpperCase(); + }; + (r.fn = r.prototype = + { + jquery: q, + constructor: r, + length: 0, + toArray: function () { + return f.call(this); + }, + get: function (a) { + return null == a ? f.call(this) : a < 0 ? this[a + this.length] : this[a]; + }, + pushStack: function (a) { + var b = r.merge(this.constructor(), a); + return (b.prevObject = this), b; + }, + each: function (a) { + return r.each(this, a); + }, + map: function (a) { + return this.pushStack( + r.map(this, function (b, c) { + return a.call(b, c, b); + }) + ); + }, + slice: function () { + return this.pushStack(f.apply(this, arguments)); + }, + first: function () { + return this.eq(0); + }, + last: function () { + return this.eq(-1); + }, + eq: function (a) { + var b = this.length, + c = +a + (a < 0 ? b : 0); + return this.pushStack(c >= 0 && c < b ? [this[c]] : []); + }, + end: function () { + return this.prevObject || this.constructor(); + }, + push: h, + sort: c.sort, + splice: c.splice, + }), + (r.extend = r.fn.extend = + function () { + var a, + b, + c, + d, + e, + f, + g = arguments[0] || {}, + h = 1, + i = arguments.length, + j = !1; + for ( + "boolean" == typeof g && ((j = g), (g = arguments[h] || {}), h++), + "object" == typeof g || r.isFunction(g) || (g = {}), + h === i && ((g = this), h--); + h < i; + h++ + ) + if (null != (a = arguments[h])) + for (b in a) + (c = g[b]), + (d = a[b]), + g !== d && + (j && d && (r.isPlainObject(d) || (e = Array.isArray(d))) + ? (e + ? ((e = !1), (f = c && Array.isArray(c) ? c : [])) + : (f = c && r.isPlainObject(c) ? c : {}), + (g[b] = r.extend(j, f, d))) + : void 0 !== d && (g[b] = d)); + return g; + }), + r.extend({ + expando: "jQuery" + (q + Math.random()).replace(/\D/g, ""), + isReady: !0, + error: function (a) { + throw new Error(a); + }, + noop: function () {}, + isFunction: function (a) { + return "function" === r.type(a); + }, + isWindow: function (a) { + return null != a && a === a.window; + }, + isNumeric: function (a) { + var b = r.type(a); + return ("number" === b || "string" === b) && !isNaN(a - parseFloat(a)); + }, + isPlainObject: function (a) { + var b, c; + return ( + !(!a || "[object Object]" !== k.call(a)) && + (!(b = e(a)) || + ((c = l.call(b, "constructor") && b.constructor), + "function" == typeof c && m.call(c) === n)) + ); + }, + isEmptyObject: function (a) { + var b; + for (b in a) return !1; + return !0; + }, + type: function (a) { + return null == a + ? a + "" + : "object" == typeof a || "function" == typeof a + ? j[k.call(a)] || "object" + : typeof a; + }, + globalEval: function (a) { + p(a); + }, + camelCase: function (a) { + return a.replace(t, "ms-").replace(u, v); + }, + each: function (a, b) { + var c, + d = 0; + if (w(a)) { + for (c = a.length; d < c; d++) if (b.call(a[d], d, a[d]) === !1) break; + } else for (d in a) if (b.call(a[d], d, a[d]) === !1) break; + return a; + }, + trim: function (a) { + return null == a ? "" : (a + "").replace(s, ""); + }, + makeArray: function (a, b) { + var c = b || []; + return ( + null != a && (w(Object(a)) ? r.merge(c, "string" == typeof a ? [a] : a) : h.call(c, a)), c + ); + }, + inArray: function (a, b, c) { + return null == b ? -1 : i.call(b, a, c); + }, + merge: function (a, b) { + for (var c = +b.length, d = 0, e = a.length; d < c; d++) a[e++] = b[d]; + return (a.length = e), a; + }, + grep: function (a, b, c) { + for (var d, e = [], f = 0, g = a.length, h = !c; f < g; f++) + (d = !b(a[f], f)), d !== h && e.push(a[f]); + return e; + }, + map: function (a, b, c) { + var d, + e, + f = 0, + h = []; + if (w(a)) for (d = a.length; f < d; f++) (e = b(a[f], f, c)), null != e && h.push(e); + else for (f in a) (e = b(a[f], f, c)), null != e && h.push(e); + return g.apply([], h); + }, + guid: 1, + proxy: function (a, b) { + var c, d, e; + if (("string" == typeof b && ((c = a[b]), (b = a), (a = c)), r.isFunction(a))) + return ( + (d = f.call(arguments, 2)), + (e = function () { + return a.apply(b || this, d.concat(f.call(arguments))); + }), + (e.guid = a.guid = a.guid || r.guid++), + e + ); + }, + now: Date.now, + support: o, + }), + "function" == typeof Symbol && (r.fn[Symbol.iterator] = c[Symbol.iterator]), + r.each( + "Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "), + function (a, b) { + j["[object " + b + "]"] = b.toLowerCase(); + } + ); + function w(a) { + var b = !!a && "length" in a && a.length, + c = r.type(a); + return ( + "function" !== c && + !r.isWindow(a) && + ("array" === c || 0 === b || ("number" == typeof b && b > 0 && b - 1 in a)) + ); + } + var x = (function (a) { + var b, + c, + d, + e, + f, + g, + h, + i, + j, + k, + l, + m, + n, + o, + p, + q, + r, + s, + t, + u = "sizzle" + 1 * new Date(), + v = a.document, + w = 0, + x = 0, + y = ha(), + z = ha(), + A = ha(), + B = function (a, b) { + return a === b && (l = !0), 0; + }, + C = {}.hasOwnProperty, + D = [], + E = D.pop, + F = D.push, + G = D.push, + H = D.slice, + I = function (a, b) { + for (var c = 0, d = a.length; c < d; c++) if (a[c] === b) return c; + return -1; + }, + J = + "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", + K = "[\\x20\\t\\r\\n\\f]", + L = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+", + M = + "\\[" + + K + + "*(" + + L + + ")(?:" + + K + + "*([*^$|!~]?=)" + + K + + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + + L + + "))|)" + + K + + "*\\]", + N = + ":(" + + L + + ")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|" + + M + + ")*)|.*)\\)|)", + O = new RegExp(K + "+", "g"), + P = new RegExp("^" + K + "+|((?:^|[^\\\\])(?:\\\\.)*)" + K + "+$", "g"), + Q = new RegExp("^" + K + "*," + K + "*"), + R = new RegExp("^" + K + "*([>+~]|" + K + ")" + K + "*"), + S = new RegExp("=" + K + "*([^\\]'\"]*?)" + K + "*\\]", "g"), + T = new RegExp(N), + U = new RegExp("^" + L + "$"), + V = { + ID: new RegExp("^#(" + L + ")"), + CLASS: new RegExp("^\\.(" + L + ")"), + TAG: new RegExp("^(" + L + "|[*])"), + ATTR: new RegExp("^" + M), + PSEUDO: new RegExp("^" + N), + CHILD: new RegExp( + "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + + K + + "*(even|odd|(([+-]|)(\\d*)n|)" + + K + + "*(?:([+-]|)" + + K + + "*(\\d+)|))" + + K + + "*\\)|)", + "i" + ), + bool: new RegExp("^(?:" + J + ")$", "i"), + needsContext: new RegExp( + "^" + + K + + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + + K + + "*((?:-\\d)?\\d*)" + + K + + "*\\)|)(?=[^-]|$)", + "i" + ), + }, + W = /^(?:input|select|textarea|button)$/i, + X = /^h\d$/i, + Y = /^[^{]+\{\s*\[native \w/, + Z = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + $ = /[+~]/, + _ = new RegExp("\\\\([\\da-f]{1,6}" + K + "?|(" + K + ")|.)", "ig"), + aa = function (a, b, c) { + var d = "0x" + b - 65536; + return d !== d || c + ? b + : d < 0 + ? String.fromCharCode(d + 65536) + : String.fromCharCode((d >> 10) | 55296, (1023 & d) | 56320); + }, + ba = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, + ca = function (a, b) { + return b + ? "\0" === a + ? "\ufffd" + : a.slice(0, -1) + "\\" + a.charCodeAt(a.length - 1).toString(16) + " " + : "\\" + a; + }, + da = function () { + m(); + }, + ea = ta( + function (a) { + return a.disabled === !0 && ("form" in a || "label" in a); + }, + {dir: "parentNode", next: "legend"} + ); + try { + G.apply((D = H.call(v.childNodes)), v.childNodes), D[v.childNodes.length].nodeType; + } catch (fa) { + G = { + apply: D.length + ? function (a, b) { + F.apply(a, H.call(b)); + } + : function (a, b) { + var c = a.length, + d = 0; + while ((a[c++] = b[d++])); + a.length = c - 1; + }, + }; + } + function ga(a, b, d, e) { + var f, + h, + j, + k, + l, + o, + r, + s = b && b.ownerDocument, + w = b ? b.nodeType : 9; + if (((d = d || []), "string" != typeof a || !a || (1 !== w && 9 !== w && 11 !== w))) return d; + if (!e && ((b ? b.ownerDocument || b : v) !== n && m(b), (b = b || n), p)) { + if (11 !== w && (l = Z.exec(a))) + if ((f = l[1])) { + if (9 === w) { + if (!(j = b.getElementById(f))) return d; + if (j.id === f) return d.push(j), d; + } else if (s && (j = s.getElementById(f)) && t(b, j) && j.id === f) return d.push(j), d; + } else { + if (l[2]) return G.apply(d, b.getElementsByTagName(a)), d; + if ((f = l[3]) && c.getElementsByClassName && b.getElementsByClassName) + return G.apply(d, b.getElementsByClassName(f)), d; + } + if (c.qsa && !A[a + " "] && (!q || !q.test(a))) { + if (1 !== w) (s = b), (r = a); + else if ("object" !== b.nodeName.toLowerCase()) { + (k = b.getAttribute("id")) ? (k = k.replace(ba, ca)) : b.setAttribute("id", (k = u)), + (o = g(a)), + (h = o.length); + while (h--) o[h] = "#" + k + " " + sa(o[h]); + (r = o.join(",")), (s = ($.test(a) && qa(b.parentNode)) || b); + } + if (r) + try { + return G.apply(d, s.querySelectorAll(r)), d; + } catch (x) { + } finally { + k === u && b.removeAttribute("id"); + } + } + } + return i(a.replace(P, "$1"), b, d, e); + } + function ha() { + var a = []; + function b(c, e) { + return a.push(c + " ") > d.cacheLength && delete b[a.shift()], (b[c + " "] = e); + } + return b; + } + function ia(a) { + return (a[u] = !0), a; + } + function ja(a) { + var b = n.createElement("fieldset"); + try { + return !!a(b); + } catch (c) { + return !1; + } finally { + b.parentNode && b.parentNode.removeChild(b), (b = null); + } + } + function ka(a, b) { + var c = a.split("|"), + e = c.length; + while (e--) d.attrHandle[c[e]] = b; + } + function la(a, b) { + var c = b && a, + d = c && 1 === a.nodeType && 1 === b.nodeType && a.sourceIndex - b.sourceIndex; + if (d) return d; + if (c) while ((c = c.nextSibling)) if (c === b) return -1; + return a ? 1 : -1; + } + function ma(a) { + return function (b) { + var c = b.nodeName.toLowerCase(); + return "input" === c && b.type === a; + }; + } + function na(a) { + return function (b) { + var c = b.nodeName.toLowerCase(); + return ("input" === c || "button" === c) && b.type === a; + }; + } + function oa(a) { + return function (b) { + return "form" in b + ? b.parentNode && b.disabled === !1 + ? "label" in b + ? "label" in b.parentNode + ? b.parentNode.disabled === a + : b.disabled === a + : b.isDisabled === a || (b.isDisabled !== !a && ea(b) === a) + : b.disabled === a + : "label" in b && b.disabled === a; + }; + } + function pa(a) { + return ia(function (b) { + return ( + (b = +b), + ia(function (c, d) { + var e, + f = a([], c.length, b), + g = f.length; + while (g--) c[(e = f[g])] && (c[e] = !(d[e] = c[e])); + }) + ); + }); + } + function qa(a) { + return a && "undefined" != typeof a.getElementsByTagName && a; + } + (c = ga.support = {}), + (f = ga.isXML = + function (a) { + var b = a && (a.ownerDocument || a).documentElement; + return !!b && "HTML" !== b.nodeName; + }), + (m = ga.setDocument = + function (a) { + var b, + e, + g = a ? a.ownerDocument || a : v; + return g !== n && 9 === g.nodeType && g.documentElement + ? ((n = g), + (o = n.documentElement), + (p = !f(n)), + v !== n && + (e = n.defaultView) && + e.top !== e && + (e.addEventListener + ? e.addEventListener("unload", da, !1) + : e.attachEvent && e.attachEvent("onunload", da)), + (c.attributes = ja(function (a) { + return (a.className = "i"), !a.getAttribute("className"); + })), + (c.getElementsByTagName = ja(function (a) { + return a.appendChild(n.createComment("")), !a.getElementsByTagName("*").length; + })), + (c.getElementsByClassName = Y.test(n.getElementsByClassName)), + (c.getById = ja(function (a) { + return ( + (o.appendChild(a).id = u), !n.getElementsByName || !n.getElementsByName(u).length + ); + })), + c.getById + ? ((d.filter.ID = function (a) { + var b = a.replace(_, aa); + return function (a) { + return a.getAttribute("id") === b; + }; + }), + (d.find.ID = function (a, b) { + if ("undefined" != typeof b.getElementById && p) { + var c = b.getElementById(a); + return c ? [c] : []; + } + })) + : ((d.filter.ID = function (a) { + var b = a.replace(_, aa); + return function (a) { + var c = "undefined" != typeof a.getAttributeNode && a.getAttributeNode("id"); + return c && c.value === b; + }; + }), + (d.find.ID = function (a, b) { + if ("undefined" != typeof b.getElementById && p) { + var c, + d, + e, + f = b.getElementById(a); + if (f) { + if (((c = f.getAttributeNode("id")), c && c.value === a)) return [f]; + (e = b.getElementsByName(a)), (d = 0); + while ((f = e[d++])) + if (((c = f.getAttributeNode("id")), c && c.value === a)) return [f]; + } + return []; + } + })), + (d.find.TAG = c.getElementsByTagName + ? function (a, b) { + return "undefined" != typeof b.getElementsByTagName + ? b.getElementsByTagName(a) + : c.qsa + ? b.querySelectorAll(a) + : void 0; + } + : function (a, b) { + var c, + d = [], + e = 0, + f = b.getElementsByTagName(a); + if ("*" === a) { + while ((c = f[e++])) 1 === c.nodeType && d.push(c); + return d; + } + return f; + }), + (d.find.CLASS = + c.getElementsByClassName && + function (a, b) { + if ("undefined" != typeof b.getElementsByClassName && p) + return b.getElementsByClassName(a); + }), + (r = []), + (q = []), + (c.qsa = Y.test(n.querySelectorAll)) && + (ja(function (a) { + (o.appendChild(a).innerHTML = + ""), + a.querySelectorAll("[msallowcapture^='']").length && + q.push("[*^$]=" + K + "*(?:''|\"\")"), + a.querySelectorAll("[selected]").length || + q.push("\\[" + K + "*(?:value|" + J + ")"), + a.querySelectorAll("[id~=" + u + "-]").length || q.push("~="), + a.querySelectorAll(":checked").length || q.push(":checked"), + a.querySelectorAll("a#" + u + "+*").length || q.push(".#.+[+~]"); + }), + ja(function (a) { + a.innerHTML = + ""; + var b = n.createElement("input"); + b.setAttribute("type", "hidden"), + a.appendChild(b).setAttribute("name", "D"), + a.querySelectorAll("[name=d]").length && q.push("name" + K + "*[*^$|!~]?="), + 2 !== a.querySelectorAll(":enabled").length && q.push(":enabled", ":disabled"), + (o.appendChild(a).disabled = !0), + 2 !== a.querySelectorAll(":disabled").length && q.push(":enabled", ":disabled"), + a.querySelectorAll("*,:x"), + q.push(",.*:"); + })), + (c.matchesSelector = Y.test( + (s = + o.matches || + o.webkitMatchesSelector || + o.mozMatchesSelector || + o.oMatchesSelector || + o.msMatchesSelector) + )) && + ja(function (a) { + (c.disconnectedMatch = s.call(a, "*")), s.call(a, "[s!='']:x"), r.push("!=", N); + }), + (q = q.length && new RegExp(q.join("|"))), + (r = r.length && new RegExp(r.join("|"))), + (b = Y.test(o.compareDocumentPosition)), + (t = + b || Y.test(o.contains) + ? function (a, b) { + var c = 9 === a.nodeType ? a.documentElement : a, + d = b && b.parentNode; + return ( + a === d || + !( + !d || + 1 !== d.nodeType || + !(c.contains + ? c.contains(d) + : a.compareDocumentPosition && 16 & a.compareDocumentPosition(d)) + ) + ); + } + : function (a, b) { + if (b) while ((b = b.parentNode)) if (b === a) return !0; + return !1; + }), + (B = b + ? function (a, b) { + if (a === b) return (l = !0), 0; + var d = !a.compareDocumentPosition - !b.compareDocumentPosition; + return d + ? d + : ((d = + (a.ownerDocument || a) === (b.ownerDocument || b) + ? a.compareDocumentPosition(b) + : 1), + 1 & d || (!c.sortDetached && b.compareDocumentPosition(a) === d) + ? a === n || (a.ownerDocument === v && t(v, a)) + ? -1 + : b === n || (b.ownerDocument === v && t(v, b)) + ? 1 + : k + ? I(k, a) - I(k, b) + : 0 + : 4 & d + ? -1 + : 1); + } + : function (a, b) { + if (a === b) return (l = !0), 0; + var c, + d = 0, + e = a.parentNode, + f = b.parentNode, + g = [a], + h = [b]; + if (!e || !f) + return a === n + ? -1 + : b === n + ? 1 + : e + ? -1 + : f + ? 1 + : k + ? I(k, a) - I(k, b) + : 0; + if (e === f) return la(a, b); + c = a; + while ((c = c.parentNode)) g.unshift(c); + c = b; + while ((c = c.parentNode)) h.unshift(c); + while (g[d] === h[d]) d++; + return d ? la(g[d], h[d]) : g[d] === v ? -1 : h[d] === v ? 1 : 0; + }), + n) + : n; + }), + (ga.matches = function (a, b) { + return ga(a, null, null, b); + }), + (ga.matchesSelector = function (a, b) { + if ( + ((a.ownerDocument || a) !== n && m(a), + (b = b.replace(S, "='$1']")), + c.matchesSelector && p && !A[b + " "] && (!r || !r.test(b)) && (!q || !q.test(b))) + ) + try { + var d = s.call(a, b); + if (d || c.disconnectedMatch || (a.document && 11 !== a.document.nodeType)) return d; + } catch (e) {} + return ga(b, n, null, [a]).length > 0; + }), + (ga.contains = function (a, b) { + return (a.ownerDocument || a) !== n && m(a), t(a, b); + }), + (ga.attr = function (a, b) { + (a.ownerDocument || a) !== n && m(a); + var e = d.attrHandle[b.toLowerCase()], + f = e && C.call(d.attrHandle, b.toLowerCase()) ? e(a, b, !p) : void 0; + return void 0 !== f + ? f + : c.attributes || !p + ? a.getAttribute(b) + : (f = a.getAttributeNode(b)) && f.specified + ? f.value + : null; + }), + (ga.escape = function (a) { + return (a + "").replace(ba, ca); + }), + (ga.error = function (a) { + throw new Error("Syntax error, unrecognized expression: " + a); + }), + (ga.uniqueSort = function (a) { + var b, + d = [], + e = 0, + f = 0; + if (((l = !c.detectDuplicates), (k = !c.sortStable && a.slice(0)), a.sort(B), l)) { + while ((b = a[f++])) b === a[f] && (e = d.push(f)); + while (e--) a.splice(d[e], 1); + } + return (k = null), a; + }), + (e = ga.getText = + function (a) { + var b, + c = "", + d = 0, + f = a.nodeType; + if (f) { + if (1 === f || 9 === f || 11 === f) { + if ("string" == typeof a.textContent) return a.textContent; + for (a = a.firstChild; a; a = a.nextSibling) c += e(a); + } else if (3 === f || 4 === f) return a.nodeValue; + } else while ((b = a[d++])) c += e(b); + return c; + }), + (d = ga.selectors = + { + cacheLength: 50, + createPseudo: ia, + match: V, + attrHandle: {}, + find: {}, + relative: { + ">": {dir: "parentNode", first: !0}, + " ": {dir: "parentNode"}, + "+": {dir: "previousSibling", first: !0}, + "~": {dir: "previousSibling"}, + }, + preFilter: { + ATTR: function (a) { + return ( + (a[1] = a[1].replace(_, aa)), + (a[3] = (a[3] || a[4] || a[5] || "").replace(_, aa)), + "~=" === a[2] && (a[3] = " " + a[3] + " "), + a.slice(0, 4) + ); + }, + CHILD: function (a) { + return ( + (a[1] = a[1].toLowerCase()), + "nth" === a[1].slice(0, 3) + ? (a[3] || ga.error(a[0]), + (a[4] = +(a[4] ? a[5] + (a[6] || 1) : 2 * ("even" === a[3] || "odd" === a[3]))), + (a[5] = +(a[7] + a[8] || "odd" === a[3]))) + : a[3] && ga.error(a[0]), + a + ); + }, + PSEUDO: function (a) { + var b, + c = !a[6] && a[2]; + return V.CHILD.test(a[0]) + ? null + : (a[3] + ? (a[2] = a[4] || a[5] || "") + : c && + T.test(c) && + (b = g(c, !0)) && + (b = c.indexOf(")", c.length - b) - c.length) && + ((a[0] = a[0].slice(0, b)), (a[2] = c.slice(0, b))), + a.slice(0, 3)); + }, + }, + filter: { + TAG: function (a) { + var b = a.replace(_, aa).toLowerCase(); + return "*" === a + ? function () { + return !0; + } + : function (a) { + return a.nodeName && a.nodeName.toLowerCase() === b; + }; + }, + CLASS: function (a) { + var b = y[a + " "]; + return ( + b || + ((b = new RegExp("(^|" + K + ")" + a + "(" + K + "|$)")) && + y(a, function (a) { + return b.test( + ("string" == typeof a.className && a.className) || + ("undefined" != typeof a.getAttribute && a.getAttribute("class")) || + "" + ); + })) + ); + }, + ATTR: function (a, b, c) { + return function (d) { + var e = ga.attr(d, a); + return null == e + ? "!=" === b + : !b || + ((e += ""), + "=" === b + ? e === c + : "!=" === b + ? e !== c + : "^=" === b + ? c && 0 === e.indexOf(c) + : "*=" === b + ? c && e.indexOf(c) > -1 + : "$=" === b + ? c && e.slice(-c.length) === c + : "~=" === b + ? (" " + e.replace(O, " ") + " ").indexOf(c) > -1 + : "|=" === b && (e === c || e.slice(0, c.length + 1) === c + "-")); + }; + }, + CHILD: function (a, b, c, d, e) { + var f = "nth" !== a.slice(0, 3), + g = "last" !== a.slice(-4), + h = "of-type" === b; + return 1 === d && 0 === e + ? function (a) { + return !!a.parentNode; + } + : function (b, c, i) { + var j, + k, + l, + m, + n, + o, + p = f !== g ? "nextSibling" : "previousSibling", + q = b.parentNode, + r = h && b.nodeName.toLowerCase(), + s = !i && !h, + t = !1; + if (q) { + if (f) { + while (p) { + m = b; + while ((m = m[p])) + if (h ? m.nodeName.toLowerCase() === r : 1 === m.nodeType) return !1; + o = p = "only" === a && !o && "nextSibling"; + } + return !0; + } + if (((o = [g ? q.firstChild : q.lastChild]), g && s)) { + (m = q), + (l = m[u] || (m[u] = {})), + (k = l[m.uniqueID] || (l[m.uniqueID] = {})), + (j = k[a] || []), + (n = j[0] === w && j[1]), + (t = n && j[2]), + (m = n && q.childNodes[n]); + while ((m = (++n && m && m[p]) || (t = n = 0) || o.pop())) + if (1 === m.nodeType && ++t && m === b) { + k[a] = [w, n, t]; + break; + } + } else if ( + (s && + ((m = b), + (l = m[u] || (m[u] = {})), + (k = l[m.uniqueID] || (l[m.uniqueID] = {})), + (j = k[a] || []), + (n = j[0] === w && j[1]), + (t = n)), + t === !1) + ) + while ((m = (++n && m && m[p]) || (t = n = 0) || o.pop())) + if ( + (h ? m.nodeName.toLowerCase() === r : 1 === m.nodeType) && + ++t && + (s && + ((l = m[u] || (m[u] = {})), + (k = l[m.uniqueID] || (l[m.uniqueID] = {})), + (k[a] = [w, t])), + m === b) + ) + break; + return (t -= e), t === d || (t % d === 0 && t / d >= 0); + } + }; + }, + PSEUDO: function (a, b) { + var c, + e = + d.pseudos[a] || + d.setFilters[a.toLowerCase()] || + ga.error("unsupported pseudo: " + a); + return e[u] + ? e(b) + : e.length > 1 + ? ((c = [a, a, "", b]), + d.setFilters.hasOwnProperty(a.toLowerCase()) + ? ia(function (a, c) { + var d, + f = e(a, b), + g = f.length; + while (g--) (d = I(a, f[g])), (a[d] = !(c[d] = f[g])); + }) + : function (a) { + return e(a, 0, c); + }) + : e; + }, + }, + pseudos: { + not: ia(function (a) { + var b = [], + c = [], + d = h(a.replace(P, "$1")); + return d[u] + ? ia(function (a, b, c, e) { + var f, + g = d(a, null, e, []), + h = a.length; + while (h--) (f = g[h]) && (a[h] = !(b[h] = f)); + }) + : function (a, e, f) { + return (b[0] = a), d(b, null, f, c), (b[0] = null), !c.pop(); + }; + }), + has: ia(function (a) { + return function (b) { + return ga(a, b).length > 0; + }; + }), + contains: ia(function (a) { + return ( + (a = a.replace(_, aa)), + function (b) { + return (b.textContent || b.innerText || e(b)).indexOf(a) > -1; + } + ); + }), + lang: ia(function (a) { + return ( + U.test(a || "") || ga.error("unsupported lang: " + a), + (a = a.replace(_, aa).toLowerCase()), + function (b) { + var c; + do + if ((c = p ? b.lang : b.getAttribute("xml:lang") || b.getAttribute("lang"))) + return (c = c.toLowerCase()), c === a || 0 === c.indexOf(a + "-"); + while ((b = b.parentNode) && 1 === b.nodeType); + return !1; + } + ); + }), + target: function (b) { + var c = a.location && a.location.hash; + return c && c.slice(1) === b.id; + }, + root: function (a) { + return a === o; + }, + focus: function (a) { + return ( + a === n.activeElement && + (!n.hasFocus || n.hasFocus()) && + !!(a.type || a.href || ~a.tabIndex) + ); + }, + enabled: oa(!1), + disabled: oa(!0), + checked: function (a) { + var b = a.nodeName.toLowerCase(); + return ("input" === b && !!a.checked) || ("option" === b && !!a.selected); + }, + selected: function (a) { + return a.parentNode && a.parentNode.selectedIndex, a.selected === !0; + }, + empty: function (a) { + for (a = a.firstChild; a; a = a.nextSibling) if (a.nodeType < 6) return !1; + return !0; + }, + parent: function (a) { + return !d.pseudos.empty(a); + }, + header: function (a) { + return X.test(a.nodeName); + }, + input: function (a) { + return W.test(a.nodeName); + }, + button: function (a) { + var b = a.nodeName.toLowerCase(); + return ("input" === b && "button" === a.type) || "button" === b; + }, + text: function (a) { + var b; + return ( + "input" === a.nodeName.toLowerCase() && + "text" === a.type && + (null == (b = a.getAttribute("type")) || "text" === b.toLowerCase()) + ); + }, + first: pa(function () { + return [0]; + }), + last: pa(function (a, b) { + return [b - 1]; + }), + eq: pa(function (a, b, c) { + return [c < 0 ? c + b : c]; + }), + even: pa(function (a, b) { + for (var c = 0; c < b; c += 2) a.push(c); + return a; + }), + odd: pa(function (a, b) { + for (var c = 1; c < b; c += 2) a.push(c); + return a; + }), + lt: pa(function (a, b, c) { + for (var d = c < 0 ? c + b : c; --d >= 0; ) a.push(d); + return a; + }), + gt: pa(function (a, b, c) { + for (var d = c < 0 ? c + b : c; ++d < b; ) a.push(d); + return a; + }), + }, + }), + (d.pseudos.nth = d.pseudos.eq); + for (b in {radio: !0, checkbox: !0, file: !0, password: !0, image: !0}) d.pseudos[b] = ma(b); + for (b in {submit: !0, reset: !0}) d.pseudos[b] = na(b); + function ra() {} + (ra.prototype = d.filters = d.pseudos), + (d.setFilters = new ra()), + (g = ga.tokenize = + function (a, b) { + var c, + e, + f, + g, + h, + i, + j, + k = z[a + " "]; + if (k) return b ? 0 : k.slice(0); + (h = a), (i = []), (j = d.preFilter); + while (h) { + (c && !(e = Q.exec(h))) || (e && (h = h.slice(e[0].length) || h), i.push((f = []))), + (c = !1), + (e = R.exec(h)) && + ((c = e.shift()), + f.push({value: c, type: e[0].replace(P, " ")}), + (h = h.slice(c.length))); + for (g in d.filter) + !(e = V[g].exec(h)) || + (j[g] && !(e = j[g](e))) || + ((c = e.shift()), f.push({value: c, type: g, matches: e}), (h = h.slice(c.length))); + if (!c) break; + } + return b ? h.length : h ? ga.error(a) : z(a, i).slice(0); + }); + function sa(a) { + for (var b = 0, c = a.length, d = ""; b < c; b++) d += a[b].value; + return d; + } + function ta(a, b, c) { + var d = b.dir, + e = b.next, + f = e || d, + g = c && "parentNode" === f, + h = x++; + return b.first + ? function (b, c, e) { + while ((b = b[d])) if (1 === b.nodeType || g) return a(b, c, e); + return !1; + } + : function (b, c, i) { + var j, + k, + l, + m = [w, h]; + if (i) { + while ((b = b[d])) if ((1 === b.nodeType || g) && a(b, c, i)) return !0; + } else + while ((b = b[d])) + if (1 === b.nodeType || g) + if ( + ((l = b[u] || (b[u] = {})), + (k = l[b.uniqueID] || (l[b.uniqueID] = {})), + e && e === b.nodeName.toLowerCase()) + ) + b = b[d] || b; + else { + if ((j = k[f]) && j[0] === w && j[1] === h) return (m[2] = j[2]); + if (((k[f] = m), (m[2] = a(b, c, i)))) return !0; + } + return !1; + }; + } + function ua(a) { + return a.length > 1 + ? function (b, c, d) { + var e = a.length; + while (e--) if (!a[e](b, c, d)) return !1; + return !0; + } + : a[0]; + } + function va(a, b, c) { + for (var d = 0, e = b.length; d < e; d++) ga(a, b[d], c); + return c; + } + function wa(a, b, c, d, e) { + for (var f, g = [], h = 0, i = a.length, j = null != b; h < i; h++) + (f = a[h]) && ((c && !c(f, d, e)) || (g.push(f), j && b.push(h))); + return g; + } + function xa(a, b, c, d, e, f) { + return ( + d && !d[u] && (d = xa(d)), + e && !e[u] && (e = xa(e, f)), + ia(function (f, g, h, i) { + var j, + k, + l, + m = [], + n = [], + o = g.length, + p = f || va(b || "*", h.nodeType ? [h] : h, []), + q = !a || (!f && b) ? p : wa(p, m, a, h, i), + r = c ? (e || (f ? a : o || d) ? [] : g) : q; + if ((c && c(q, r, h, i), d)) { + (j = wa(r, n)), d(j, [], h, i), (k = j.length); + while (k--) (l = j[k]) && (r[n[k]] = !(q[n[k]] = l)); + } + if (f) { + if (e || a) { + if (e) { + (j = []), (k = r.length); + while (k--) (l = r[k]) && j.push((q[k] = l)); + e(null, (r = []), j, i); + } + k = r.length; + while (k--) (l = r[k]) && (j = e ? I(f, l) : m[k]) > -1 && (f[j] = !(g[j] = l)); + } + } else (r = wa(r === g ? r.splice(o, r.length) : r)), e ? e(null, g, r, i) : G.apply(g, r); + }) + ); + } + function ya(a) { + for ( + var b, + c, + e, + f = a.length, + g = d.relative[a[0].type], + h = g || d.relative[" "], + i = g ? 1 : 0, + k = ta( + function (a) { + return a === b; + }, + h, + !0 + ), + l = ta( + function (a) { + return I(b, a) > -1; + }, + h, + !0 + ), + m = [ + function (a, c, d) { + var e = (!g && (d || c !== j)) || ((b = c).nodeType ? k(a, c, d) : l(a, c, d)); + return (b = null), e; + }, + ]; + i < f; + i++ + ) + if ((c = d.relative[a[i].type])) m = [ta(ua(m), c)]; + else { + if (((c = d.filter[a[i].type].apply(null, a[i].matches)), c[u])) { + for (e = ++i; e < f; e++) if (d.relative[a[e].type]) break; + return xa( + i > 1 && ua(m), + i > 1 && + sa(a.slice(0, i - 1).concat({value: " " === a[i - 2].type ? "*" : ""})).replace( + P, + "$1" + ), + c, + i < e && ya(a.slice(i, e)), + e < f && ya((a = a.slice(e))), + e < f && sa(a) + ); + } + m.push(c); + } + return ua(m); + } + function za(a, b) { + var c = b.length > 0, + e = a.length > 0, + f = function (f, g, h, i, k) { + var l, + o, + q, + r = 0, + s = "0", + t = f && [], + u = [], + v = j, + x = f || (e && d.find.TAG("*", k)), + y = (w += null == v ? 1 : Math.random() || 0.1), + z = x.length; + for (k && (j = g === n || g || k); s !== z && null != (l = x[s]); s++) { + if (e && l) { + (o = 0), g || l.ownerDocument === n || (m(l), (h = !p)); + while ((q = a[o++])) + if (q(l, g || n, h)) { + i.push(l); + break; + } + k && (w = y); + } + c && ((l = !q && l) && r--, f && t.push(l)); + } + if (((r += s), c && s !== r)) { + o = 0; + while ((q = b[o++])) q(t, u, g, h); + if (f) { + if (r > 0) while (s--) t[s] || u[s] || (u[s] = E.call(i)); + u = wa(u); + } + G.apply(i, u), k && !f && u.length > 0 && r + b.length > 1 && ga.uniqueSort(i); + } + return k && ((w = y), (j = v)), t; + }; + return c ? ia(f) : f; + } + return ( + (h = ga.compile = + function (a, b) { + var c, + d = [], + e = [], + f = A[a + " "]; + if (!f) { + b || (b = g(a)), (c = b.length); + while (c--) (f = ya(b[c])), f[u] ? d.push(f) : e.push(f); + (f = A(a, za(e, d))), (f.selector = a); + } + return f; + }), + (i = ga.select = + function (a, b, c, e) { + var f, + i, + j, + k, + l, + m = "function" == typeof a && a, + n = !e && g((a = m.selector || a)); + if (((c = c || []), 1 === n.length)) { + if ( + ((i = n[0] = n[0].slice(0)), + i.length > 2 && + "ID" === (j = i[0]).type && + 9 === b.nodeType && + p && + d.relative[i[1].type]) + ) { + if (((b = (d.find.ID(j.matches[0].replace(_, aa), b) || [])[0]), !b)) return c; + m && (b = b.parentNode), (a = a.slice(i.shift().value.length)); + } + f = V.needsContext.test(a) ? 0 : i.length; + while (f--) { + if (((j = i[f]), d.relative[(k = j.type)])) break; + if ( + (l = d.find[k]) && + (e = l(j.matches[0].replace(_, aa), ($.test(i[0].type) && qa(b.parentNode)) || b)) + ) { + if ((i.splice(f, 1), (a = e.length && sa(i)), !a)) return G.apply(c, e), c; + break; + } + } + } + return (m || h(a, n))(e, b, !p, c, !b || ($.test(a) && qa(b.parentNode)) || b), c; + }), + (c.sortStable = u.split("").sort(B).join("") === u), + (c.detectDuplicates = !!l), + m(), + (c.sortDetached = ja(function (a) { + return 1 & a.compareDocumentPosition(n.createElement("fieldset")); + })), + ja(function (a) { + return (a.innerHTML = ""), "#" === a.firstChild.getAttribute("href"); + }) || + ka("type|href|height|width", function (a, b, c) { + if (!c) return a.getAttribute(b, "type" === b.toLowerCase() ? 1 : 2); + }), + (c.attributes && + ja(function (a) { + return ( + (a.innerHTML = ""), + a.firstChild.setAttribute("value", ""), + "" === a.firstChild.getAttribute("value") + ); + })) || + ka("value", function (a, b, c) { + if (!c && "input" === a.nodeName.toLowerCase()) return a.defaultValue; + }), + ja(function (a) { + return null == a.getAttribute("disabled"); + }) || + ka(J, function (a, b, c) { + var d; + if (!c) + return a[b] === !0 + ? b.toLowerCase() + : (d = a.getAttributeNode(b)) && d.specified + ? d.value + : null; + }), + ga + ); + })(a); + (r.find = x), + (r.expr = x.selectors), + (r.expr[":"] = r.expr.pseudos), + (r.uniqueSort = r.unique = x.uniqueSort), + (r.text = x.getText), + (r.isXMLDoc = x.isXML), + (r.contains = x.contains), + (r.escapeSelector = x.escape); + var y = function (a, b, c) { + var d = [], + e = void 0 !== c; + while ((a = a[b]) && 9 !== a.nodeType) + if (1 === a.nodeType) { + if (e && r(a).is(c)) break; + d.push(a); + } + return d; + }, + z = function (a, b) { + for (var c = []; a; a = a.nextSibling) 1 === a.nodeType && a !== b && c.push(a); + return c; + }, + A = r.expr.match.needsContext; + function B(a, b) { + return a.nodeName && a.nodeName.toLowerCase() === b.toLowerCase(); + } + var C = /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i, + D = /^.[^:#\[\.,]*$/; + function E(a, b, c) { + return r.isFunction(b) + ? r.grep(a, function (a, d) { + return !!b.call(a, d, a) !== c; + }) + : b.nodeType + ? r.grep(a, function (a) { + return (a === b) !== c; + }) + : "string" != typeof b + ? r.grep(a, function (a) { + return i.call(b, a) > -1 !== c; + }) + : D.test(b) + ? r.filter(b, a, c) + : ((b = r.filter(b, a)), + r.grep(a, function (a) { + return i.call(b, a) > -1 !== c && 1 === a.nodeType; + })); + } + (r.filter = function (a, b, c) { + var d = b[0]; + return ( + c && (a = ":not(" + a + ")"), + 1 === b.length && 1 === d.nodeType + ? r.find.matchesSelector(d, a) + ? [d] + : [] + : r.find.matches( + a, + r.grep(b, function (a) { + return 1 === a.nodeType; + }) + ) + ); + }), + r.fn.extend({ + find: function (a) { + var b, + c, + d = this.length, + e = this; + if ("string" != typeof a) + return this.pushStack( + r(a).filter(function () { + for (b = 0; b < d; b++) if (r.contains(e[b], this)) return !0; + }) + ); + for (c = this.pushStack([]), b = 0; b < d; b++) r.find(a, e[b], c); + return d > 1 ? r.uniqueSort(c) : c; + }, + filter: function (a) { + return this.pushStack(E(this, a || [], !1)); + }, + not: function (a) { + return this.pushStack(E(this, a || [], !0)); + }, + is: function (a) { + return !!E(this, "string" == typeof a && A.test(a) ? r(a) : a || [], !1).length; + }, + }); + var F, + G = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, + H = (r.fn.init = function (a, b, c) { + var e, f; + if (!a) return this; + if (((c = c || F), "string" == typeof a)) { + if ( + ((e = + "<" === a[0] && ">" === a[a.length - 1] && a.length >= 3 ? [null, a, null] : G.exec(a)), + !e || (!e[1] && b)) + ) + return !b || b.jquery ? (b || c).find(a) : this.constructor(b).find(a); + if (e[1]) { + if ( + ((b = b instanceof r ? b[0] : b), + r.merge(this, r.parseHTML(e[1], b && b.nodeType ? b.ownerDocument || b : d, !0)), + C.test(e[1]) && r.isPlainObject(b)) + ) + for (e in b) r.isFunction(this[e]) ? this[e](b[e]) : this.attr(e, b[e]); + return this; + } + return (f = d.getElementById(e[2])), f && ((this[0] = f), (this.length = 1)), this; + } + return a.nodeType + ? ((this[0] = a), (this.length = 1), this) + : r.isFunction(a) + ? void 0 !== c.ready + ? c.ready(a) + : a(r) + : r.makeArray(a, this); + }); + (H.prototype = r.fn), (F = r(d)); + var I = /^(?:parents|prev(?:Until|All))/, + J = {children: !0, contents: !0, next: !0, prev: !0}; + r.fn.extend({ + has: function (a) { + var b = r(a, this), + c = b.length; + return this.filter(function () { + for (var a = 0; a < c; a++) if (r.contains(this, b[a])) return !0; + }); + }, + closest: function (a, b) { + var c, + d = 0, + e = this.length, + f = [], + g = "string" != typeof a && r(a); + if (!A.test(a)) + for (; d < e; d++) + for (c = this[d]; c && c !== b; c = c.parentNode) + if ( + c.nodeType < 11 && + (g ? g.index(c) > -1 : 1 === c.nodeType && r.find.matchesSelector(c, a)) + ) { + f.push(c); + break; + } + return this.pushStack(f.length > 1 ? r.uniqueSort(f) : f); + }, + index: function (a) { + return a + ? "string" == typeof a + ? i.call(r(a), this[0]) + : i.call(this, a.jquery ? a[0] : a) + : this[0] && this[0].parentNode + ? this.first().prevAll().length + : -1; + }, + add: function (a, b) { + return this.pushStack(r.uniqueSort(r.merge(this.get(), r(a, b)))); + }, + addBack: function (a) { + return this.add(null == a ? this.prevObject : this.prevObject.filter(a)); + }, + }); + function K(a, b) { + while ((a = a[b]) && 1 !== a.nodeType); + return a; + } + r.each( + { + parent: function (a) { + var b = a.parentNode; + return b && 11 !== b.nodeType ? b : null; + }, + parents: function (a) { + return y(a, "parentNode"); + }, + parentsUntil: function (a, b, c) { + return y(a, "parentNode", c); + }, + next: function (a) { + return K(a, "nextSibling"); + }, + prev: function (a) { + return K(a, "previousSibling"); + }, + nextAll: function (a) { + return y(a, "nextSibling"); + }, + prevAll: function (a) { + return y(a, "previousSibling"); + }, + nextUntil: function (a, b, c) { + return y(a, "nextSibling", c); + }, + prevUntil: function (a, b, c) { + return y(a, "previousSibling", c); + }, + siblings: function (a) { + return z((a.parentNode || {}).firstChild, a); + }, + children: function (a) { + return z(a.firstChild); + }, + contents: function (a) { + return B(a, "iframe") + ? a.contentDocument + : (B(a, "template") && (a = a.content || a), r.merge([], a.childNodes)); + }, + }, + function (a, b) { + r.fn[a] = function (c, d) { + var e = r.map(this, b, c); + return ( + "Until" !== a.slice(-5) && (d = c), + d && "string" == typeof d && (e = r.filter(d, e)), + this.length > 1 && (J[a] || r.uniqueSort(e), I.test(a) && e.reverse()), + this.pushStack(e) + ); + }; + } + ); + var L = /[^\x20\t\r\n\f]+/g; + function M(a) { + var b = {}; + return ( + r.each(a.match(L) || [], function (a, c) { + b[c] = !0; + }), + b + ); + } + r.Callbacks = function (a) { + a = "string" == typeof a ? M(a) : r.extend({}, a); + var b, + c, + d, + e, + f = [], + g = [], + h = -1, + i = function () { + for (e = e || a.once, d = b = !0; g.length; h = -1) { + c = g.shift(); + while (++h < f.length) + f[h].apply(c[0], c[1]) === !1 && a.stopOnFalse && ((h = f.length), (c = !1)); + } + a.memory || (c = !1), (b = !1), e && (f = c ? [] : ""); + }, + j = { + add: function () { + return ( + f && + (c && !b && ((h = f.length - 1), g.push(c)), + (function d(b) { + r.each(b, function (b, c) { + r.isFunction(c) + ? (a.unique && j.has(c)) || f.push(c) + : c && c.length && "string" !== r.type(c) && d(c); + }); + })(arguments), + c && !b && i()), + this + ); + }, + remove: function () { + return ( + r.each(arguments, function (a, b) { + var c; + while ((c = r.inArray(b, f, c)) > -1) f.splice(c, 1), c <= h && h--; + }), + this + ); + }, + has: function (a) { + return a ? r.inArray(a, f) > -1 : f.length > 0; + }, + empty: function () { + return f && (f = []), this; + }, + disable: function () { + return (e = g = []), (f = c = ""), this; + }, + disabled: function () { + return !f; + }, + lock: function () { + return (e = g = []), c || b || (f = c = ""), this; + }, + locked: function () { + return !!e; + }, + fireWith: function (a, c) { + return ( + e || ((c = c || []), (c = [a, c.slice ? c.slice() : c]), g.push(c), b || i()), this + ); + }, + fire: function () { + return j.fireWith(this, arguments), this; + }, + fired: function () { + return !!d; + }, + }; + return j; + }; + function N(a) { + return a; + } + function O(a) { + throw a; + } + function P(a, b, c, d) { + var e; + try { + a && r.isFunction((e = a.promise)) + ? e.call(a).done(b).fail(c) + : a && r.isFunction((e = a.then)) + ? e.call(a, b, c) + : b.apply(void 0, [a].slice(d)); + } catch (a) { + c.apply(void 0, [a]); + } + } + r.extend({ + Deferred: function (b) { + var c = [ + ["notify", "progress", r.Callbacks("memory"), r.Callbacks("memory"), 2], + [ + "resolve", + "done", + r.Callbacks("once memory"), + r.Callbacks("once memory"), + 0, + "resolved", + ], + ["reject", "fail", r.Callbacks("once memory"), r.Callbacks("once memory"), 1, "rejected"], + ], + d = "pending", + e = { + state: function () { + return d; + }, + always: function () { + return f.done(arguments).fail(arguments), this; + }, + catch: function (a) { + return e.then(null, a); + }, + pipe: function () { + var a = arguments; + return r + .Deferred(function (b) { + r.each(c, function (c, d) { + var e = r.isFunction(a[d[4]]) && a[d[4]]; + f[d[1]](function () { + var a = e && e.apply(this, arguments); + a && r.isFunction(a.promise) + ? a.promise().progress(b.notify).done(b.resolve).fail(b.reject) + : b[d[0] + "With"](this, e ? [a] : arguments); + }); + }), + (a = null); + }) + .promise(); + }, + then: function (b, d, e) { + var f = 0; + function g(b, c, d, e) { + return function () { + var h = this, + i = arguments, + j = function () { + var a, j; + if (!(b < f)) { + if (((a = d.apply(h, i)), a === c.promise())) + throw new TypeError("Thenable self-resolution"); + (j = a && ("object" == typeof a || "function" == typeof a) && a.then), + r.isFunction(j) + ? e + ? j.call(a, g(f, c, N, e), g(f, c, O, e)) + : (f++, + j.call(a, g(f, c, N, e), g(f, c, O, e), g(f, c, N, c.notifyWith))) + : (d !== N && ((h = void 0), (i = [a])), (e || c.resolveWith)(h, i)); + } + }, + k = e + ? j + : function () { + try { + j(); + } catch (a) { + r.Deferred.exceptionHook && r.Deferred.exceptionHook(a, k.stackTrace), + b + 1 >= f && + (d !== O && ((h = void 0), (i = [a])), c.rejectWith(h, i)); + } + }; + b + ? k() + : (r.Deferred.getStackHook && (k.stackTrace = r.Deferred.getStackHook()), + a.setTimeout(k)); + }; + } + return r + .Deferred(function (a) { + c[0][3].add(g(0, a, r.isFunction(e) ? e : N, a.notifyWith)), + c[1][3].add(g(0, a, r.isFunction(b) ? b : N)), + c[2][3].add(g(0, a, r.isFunction(d) ? d : O)); + }) + .promise(); + }, + promise: function (a) { + return null != a ? r.extend(a, e) : e; + }, + }, + f = {}; + return ( + r.each(c, function (a, b) { + var g = b[2], + h = b[5]; + (e[b[1]] = g.add), + h && + g.add( + function () { + d = h; + }, + c[3 - a][2].disable, + c[0][2].lock + ), + g.add(b[3].fire), + (f[b[0]] = function () { + return f[b[0] + "With"](this === f ? void 0 : this, arguments), this; + }), + (f[b[0] + "With"] = g.fireWith); + }), + e.promise(f), + b && b.call(f, f), + f + ); + }, + when: function (a) { + var b = arguments.length, + c = b, + d = Array(c), + e = f.call(arguments), + g = r.Deferred(), + h = function (a) { + return function (c) { + (d[a] = this), + (e[a] = arguments.length > 1 ? f.call(arguments) : c), + --b || g.resolveWith(d, e); + }; + }; + if ( + b <= 1 && + (P(a, g.done(h(c)).resolve, g.reject, !b), + "pending" === g.state() || r.isFunction(e[c] && e[c].then)) + ) + return g.then(); + while (c--) P(e[c], h(c), g.reject); + return g.promise(); + }, + }); + var Q = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; + (r.Deferred.exceptionHook = function (b, c) { + a.console && + a.console.warn && + b && + Q.test(b.name) && + a.console.warn("jQuery.Deferred exception: " + b.message, b.stack, c); + }), + (r.readyException = function (b) { + a.setTimeout(function () { + throw b; + }); + }); + var R = r.Deferred(); + (r.fn.ready = function (a) { + return ( + R.then(a)["catch"](function (a) { + r.readyException(a); + }), + this + ); + }), + r.extend({ + isReady: !1, + readyWait: 1, + ready: function (a) { + (a === !0 ? --r.readyWait : r.isReady) || + ((r.isReady = !0), (a !== !0 && --r.readyWait > 0) || R.resolveWith(d, [r])); + }, + }), + (r.ready.then = R.then); + function S() { + d.removeEventListener("DOMContentLoaded", S), a.removeEventListener("load", S), r.ready(); + } + "complete" === d.readyState || ("loading" !== d.readyState && !d.documentElement.doScroll) + ? a.setTimeout(r.ready) + : (d.addEventListener("DOMContentLoaded", S), a.addEventListener("load", S)); + var T = function (a, b, c, d, e, f, g) { + var h = 0, + i = a.length, + j = null == c; + if ("object" === r.type(c)) { + e = !0; + for (h in c) T(a, b, h, c[h], !0, f, g); + } else if ( + void 0 !== d && + ((e = !0), + r.isFunction(d) || (g = !0), + j && + (g + ? (b.call(a, d), (b = null)) + : ((j = b), + (b = function (a, b, c) { + return j.call(r(a), c); + }))), + b) + ) + for (; h < i; h++) b(a[h], c, g ? d : d.call(a[h], h, b(a[h], c))); + return e ? a : j ? b.call(a) : i ? b(a[0], c) : f; + }, + U = function (a) { + return 1 === a.nodeType || 9 === a.nodeType || !+a.nodeType; + }; + function V() { + this.expando = r.expando + V.uid++; + } + (V.uid = 1), + (V.prototype = { + cache: function (a) { + var b = a[this.expando]; + return ( + b || + ((b = {}), + U(a) && + (a.nodeType + ? (a[this.expando] = b) + : Object.defineProperty(a, this.expando, {value: b, configurable: !0}))), + b + ); + }, + set: function (a, b, c) { + var d, + e = this.cache(a); + if ("string" == typeof b) e[r.camelCase(b)] = c; + else for (d in b) e[r.camelCase(d)] = b[d]; + return e; + }, + get: function (a, b) { + return void 0 === b ? this.cache(a) : a[this.expando] && a[this.expando][r.camelCase(b)]; + }, + access: function (a, b, c) { + return void 0 === b || (b && "string" == typeof b && void 0 === c) + ? this.get(a, b) + : (this.set(a, b, c), void 0 !== c ? c : b); + }, + remove: function (a, b) { + var c, + d = a[this.expando]; + if (void 0 !== d) { + if (void 0 !== b) { + Array.isArray(b) + ? (b = b.map(r.camelCase)) + : ((b = r.camelCase(b)), (b = b in d ? [b] : b.match(L) || [])), + (c = b.length); + while (c--) delete d[b[c]]; + } + (void 0 === b || r.isEmptyObject(d)) && + (a.nodeType ? (a[this.expando] = void 0) : delete a[this.expando]); + } + }, + hasData: function (a) { + var b = a[this.expando]; + return void 0 !== b && !r.isEmptyObject(b); + }, + }); + var W = new V(), + X = new V(), + Y = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, + Z = /[A-Z]/g; + function $(a) { + return ( + "true" === a || + ("false" !== a && ("null" === a ? null : a === +a + "" ? +a : Y.test(a) ? JSON.parse(a) : a)) + ); + } + function _(a, b, c) { + var d; + if (void 0 === c && 1 === a.nodeType) + if ( + ((d = "data-" + b.replace(Z, "-$&").toLowerCase()), + (c = a.getAttribute(d)), + "string" == typeof c) + ) { + try { + c = $(c); + } catch (e) {} + X.set(a, b, c); + } else c = void 0; + return c; + } + r.extend({ + hasData: function (a) { + return X.hasData(a) || W.hasData(a); + }, + data: function (a, b, c) { + return X.access(a, b, c); + }, + removeData: function (a, b) { + X.remove(a, b); + }, + _data: function (a, b, c) { + return W.access(a, b, c); + }, + _removeData: function (a, b) { + W.remove(a, b); + }, + }), + r.fn.extend({ + data: function (a, b) { + var c, + d, + e, + f = this[0], + g = f && f.attributes; + if (void 0 === a) { + if (this.length && ((e = X.get(f)), 1 === f.nodeType && !W.get(f, "hasDataAttrs"))) { + c = g.length; + while (c--) + g[c] && + ((d = g[c].name), + 0 === d.indexOf("data-") && ((d = r.camelCase(d.slice(5))), _(f, d, e[d]))); + W.set(f, "hasDataAttrs", !0); + } + return e; + } + return "object" == typeof a + ? this.each(function () { + X.set(this, a); + }) + : T( + this, + function (b) { + var c; + if (f && void 0 === b) { + if (((c = X.get(f, a)), void 0 !== c)) return c; + if (((c = _(f, a)), void 0 !== c)) return c; + } else + this.each(function () { + X.set(this, a, b); + }); + }, + null, + b, + arguments.length > 1, + null, + !0 + ); + }, + removeData: function (a) { + return this.each(function () { + X.remove(this, a); + }); + }, + }), + r.extend({ + queue: function (a, b, c) { + var d; + if (a) + return ( + (b = (b || "fx") + "queue"), + (d = W.get(a, b)), + c && (!d || Array.isArray(c) ? (d = W.access(a, b, r.makeArray(c))) : d.push(c)), + d || [] + ); + }, + dequeue: function (a, b) { + b = b || "fx"; + var c = r.queue(a, b), + d = c.length, + e = c.shift(), + f = r._queueHooks(a, b), + g = function () { + r.dequeue(a, b); + }; + "inprogress" === e && ((e = c.shift()), d--), + e && ("fx" === b && c.unshift("inprogress"), delete f.stop, e.call(a, g, f)), + !d && f && f.empty.fire(); + }, + _queueHooks: function (a, b) { + var c = b + "queueHooks"; + return ( + W.get(a, c) || + W.access(a, c, { + empty: r.Callbacks("once memory").add(function () { + W.remove(a, [b + "queue", c]); + }), + }) + ); + }, + }), + r.fn.extend({ + queue: function (a, b) { + var c = 2; + return ( + "string" != typeof a && ((b = a), (a = "fx"), c--), + arguments.length < c + ? r.queue(this[0], a) + : void 0 === b + ? this + : this.each(function () { + var c = r.queue(this, a, b); + r._queueHooks(this, a), "fx" === a && "inprogress" !== c[0] && r.dequeue(this, a); + }) + ); + }, + dequeue: function (a) { + return this.each(function () { + r.dequeue(this, a); + }); + }, + clearQueue: function (a) { + return this.queue(a || "fx", []); + }, + promise: function (a, b) { + var c, + d = 1, + e = r.Deferred(), + f = this, + g = this.length, + h = function () { + --d || e.resolveWith(f, [f]); + }; + "string" != typeof a && ((b = a), (a = void 0)), (a = a || "fx"); + while (g--) (c = W.get(f[g], a + "queueHooks")), c && c.empty && (d++, c.empty.add(h)); + return h(), e.promise(b); + }, + }); + var aa = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source, + ba = new RegExp("^(?:([+-])=|)(" + aa + ")([a-z%]*)$", "i"), + ca = ["Top", "Right", "Bottom", "Left"], + da = function (a, b) { + return ( + (a = b || a), + "none" === a.style.display || + ("" === a.style.display && + r.contains(a.ownerDocument, a) && + "none" === r.css(a, "display")) + ); + }, + ea = function (a, b, c, d) { + var e, + f, + g = {}; + for (f in b) (g[f] = a.style[f]), (a.style[f] = b[f]); + e = c.apply(a, d || []); + for (f in b) a.style[f] = g[f]; + return e; + }; + function fa(a, b, c, d) { + var e, + f = 1, + g = 20, + h = d + ? function () { + return d.cur(); + } + : function () { + return r.css(a, b, ""); + }, + i = h(), + j = (c && c[3]) || (r.cssNumber[b] ? "" : "px"), + k = (r.cssNumber[b] || ("px" !== j && +i)) && ba.exec(r.css(a, b)); + if (k && k[3] !== j) { + (j = j || k[3]), (c = c || []), (k = +i || 1); + do (f = f || ".5"), (k /= f), r.style(a, b, k + j); + while (f !== (f = h() / i) && 1 !== f && --g); + } + return ( + c && + ((k = +k || +i || 0), + (e = c[1] ? k + (c[1] + 1) * c[2] : +c[2]), + d && ((d.unit = j), (d.start = k), (d.end = e))), + e + ); + } + var ga = {}; + function ha(a) { + var b, + c = a.ownerDocument, + d = a.nodeName, + e = ga[d]; + return e + ? e + : ((b = c.body.appendChild(c.createElement(d))), + (e = r.css(b, "display")), + b.parentNode.removeChild(b), + "none" === e && (e = "block"), + (ga[d] = e), + e); + } + function ia(a, b) { + for (var c, d, e = [], f = 0, g = a.length; f < g; f++) + (d = a[f]), + d.style && + ((c = d.style.display), + b + ? ("none" === c && + ((e[f] = W.get(d, "display") || null), e[f] || (d.style.display = "")), + "" === d.style.display && da(d) && (e[f] = ha(d))) + : "none" !== c && ((e[f] = "none"), W.set(d, "display", c))); + for (f = 0; f < g; f++) null != e[f] && (a[f].style.display = e[f]); + return a; + } + r.fn.extend({ + show: function () { + return ia(this, !0); + }, + hide: function () { + return ia(this); + }, + toggle: function (a) { + return "boolean" == typeof a + ? a + ? this.show() + : this.hide() + : this.each(function () { + da(this) ? r(this).show() : r(this).hide(); + }); + }, + }); + var ja = /^(?:checkbox|radio)$/i, + ka = /<([a-z][^\/\0>\x20\t\r\n\f]+)/i, + la = /^$|\/(?:java|ecma)script/i, + ma = { + option: [1, ""], + thead: [1, "", "
"], + col: [2, "", "
"], + tr: [2, "", "
"], + td: [3, "", "
"], + _default: [0, "", ""], + }; + (ma.optgroup = ma.option), + (ma.tbody = ma.tfoot = ma.colgroup = ma.caption = ma.thead), + (ma.th = ma.td); + function na(a, b) { + var c; + return ( + (c = + "undefined" != typeof a.getElementsByTagName + ? a.getElementsByTagName(b || "*") + : "undefined" != typeof a.querySelectorAll + ? a.querySelectorAll(b || "*") + : []), + void 0 === b || (b && B(a, b)) ? r.merge([a], c) : c + ); + } + function oa(a, b) { + for (var c = 0, d = a.length; c < d; c++) + W.set(a[c], "globalEval", !b || W.get(b[c], "globalEval")); + } + var pa = /<|&#?\w+;/; + function qa(a, b, c, d, e) { + for ( + var f, g, h, i, j, k, l = b.createDocumentFragment(), m = [], n = 0, o = a.length; + n < o; + n++ + ) + if (((f = a[n]), f || 0 === f)) + if ("object" === r.type(f)) r.merge(m, f.nodeType ? [f] : f); + else if (pa.test(f)) { + (g = g || l.appendChild(b.createElement("div"))), + (h = (ka.exec(f) || ["", ""])[1].toLowerCase()), + (i = ma[h] || ma._default), + (g.innerHTML = i[1] + r.htmlPrefilter(f) + i[2]), + (k = i[0]); + while (k--) g = g.lastChild; + r.merge(m, g.childNodes), (g = l.firstChild), (g.textContent = ""); + } else m.push(b.createTextNode(f)); + (l.textContent = ""), (n = 0); + while ((f = m[n++])) + if (d && r.inArray(f, d) > -1) e && e.push(f); + else if ( + ((j = r.contains(f.ownerDocument, f)), (g = na(l.appendChild(f), "script")), j && oa(g), c) + ) { + k = 0; + while ((f = g[k++])) la.test(f.type || "") && c.push(f); + } + return l; + } + !(function () { + var a = d.createDocumentFragment(), + b = a.appendChild(d.createElement("div")), + c = d.createElement("input"); + c.setAttribute("type", "radio"), + c.setAttribute("checked", "checked"), + c.setAttribute("name", "t"), + b.appendChild(c), + (o.checkClone = b.cloneNode(!0).cloneNode(!0).lastChild.checked), + (b.innerHTML = ""), + (o.noCloneChecked = !!b.cloneNode(!0).lastChild.defaultValue); + })(); + var ra = d.documentElement, + sa = /^key/, + ta = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, + ua = /^([^.]*)(?:\.(.+)|)/; + function va() { + return !0; + } + function wa() { + return !1; + } + function xa() { + try { + return d.activeElement; + } catch (a) {} + } + function ya(a, b, c, d, e, f) { + var g, h; + if ("object" == typeof b) { + "string" != typeof c && ((d = d || c), (c = void 0)); + for (h in b) ya(a, h, c, d, b[h], f); + return a; + } + if ( + (null == d && null == e + ? ((e = c), (d = c = void 0)) + : null == e && + ("string" == typeof c ? ((e = d), (d = void 0)) : ((e = d), (d = c), (c = void 0))), + e === !1) + ) + e = wa; + else if (!e) return a; + return ( + 1 === f && + ((g = e), + (e = function (a) { + return r().off(a), g.apply(this, arguments); + }), + (e.guid = g.guid || (g.guid = r.guid++))), + a.each(function () { + r.event.add(this, b, e, d, c); + }) + ); + } + (r.event = { + global: {}, + add: function (a, b, c, d, e) { + var f, + g, + h, + i, + j, + k, + l, + m, + n, + o, + p, + q = W.get(a); + if (q) { + c.handler && ((f = c), (c = f.handler), (e = f.selector)), + e && r.find.matchesSelector(ra, e), + c.guid || (c.guid = r.guid++), + (i = q.events) || (i = q.events = {}), + (g = q.handle) || + (g = q.handle = + function (b) { + return "undefined" != typeof r && r.event.triggered !== b.type + ? r.event.dispatch.apply(a, arguments) + : void 0; + }), + (b = (b || "").match(L) || [""]), + (j = b.length); + while (j--) + (h = ua.exec(b[j]) || []), + (n = p = h[1]), + (o = (h[2] || "").split(".").sort()), + n && + ((l = r.event.special[n] || {}), + (n = (e ? l.delegateType : l.bindType) || n), + (l = r.event.special[n] || {}), + (k = r.extend( + { + type: n, + origType: p, + data: d, + handler: c, + guid: c.guid, + selector: e, + needsContext: e && r.expr.match.needsContext.test(e), + namespace: o.join("."), + }, + f + )), + (m = i[n]) || + ((m = i[n] = []), + (m.delegateCount = 0), + (l.setup && l.setup.call(a, d, o, g) !== !1) || + (a.addEventListener && a.addEventListener(n, g))), + l.add && (l.add.call(a, k), k.handler.guid || (k.handler.guid = c.guid)), + e ? m.splice(m.delegateCount++, 0, k) : m.push(k), + (r.event.global[n] = !0)); + } + }, + remove: function (a, b, c, d, e) { + var f, + g, + h, + i, + j, + k, + l, + m, + n, + o, + p, + q = W.hasData(a) && W.get(a); + if (q && (i = q.events)) { + (b = (b || "").match(L) || [""]), (j = b.length); + while (j--) + if ( + ((h = ua.exec(b[j]) || []), (n = p = h[1]), (o = (h[2] || "").split(".").sort()), n) + ) { + (l = r.event.special[n] || {}), + (n = (d ? l.delegateType : l.bindType) || n), + (m = i[n] || []), + (h = h[2] && new RegExp("(^|\\.)" + o.join("\\.(?:.*\\.|)") + "(\\.|$)")), + (g = f = m.length); + while (f--) + (k = m[f]), + (!e && p !== k.origType) || + (c && c.guid !== k.guid) || + (h && !h.test(k.namespace)) || + (d && d !== k.selector && ("**" !== d || !k.selector)) || + (m.splice(f, 1), + k.selector && m.delegateCount--, + l.remove && l.remove.call(a, k)); + g && + !m.length && + ((l.teardown && l.teardown.call(a, o, q.handle) !== !1) || + r.removeEvent(a, n, q.handle), + delete i[n]); + } else for (n in i) r.event.remove(a, n + b[j], c, d, !0); + r.isEmptyObject(i) && W.remove(a, "handle events"); + } + }, + dispatch: function (a) { + var b = r.event.fix(a), + c, + d, + e, + f, + g, + h, + i = new Array(arguments.length), + j = (W.get(this, "events") || {})[b.type] || [], + k = r.event.special[b.type] || {}; + for (i[0] = b, c = 1; c < arguments.length; c++) i[c] = arguments[c]; + if (((b.delegateTarget = this), !k.preDispatch || k.preDispatch.call(this, b) !== !1)) { + (h = r.event.handlers.call(this, b, j)), (c = 0); + while ((f = h[c++]) && !b.isPropagationStopped()) { + (b.currentTarget = f.elem), (d = 0); + while ((g = f.handlers[d++]) && !b.isImmediatePropagationStopped()) + (b.rnamespace && !b.rnamespace.test(g.namespace)) || + ((b.handleObj = g), + (b.data = g.data), + (e = ((r.event.special[g.origType] || {}).handle || g.handler).apply(f.elem, i)), + void 0 !== e && (b.result = e) === !1 && (b.preventDefault(), b.stopPropagation())); + } + return k.postDispatch && k.postDispatch.call(this, b), b.result; + } + }, + handlers: function (a, b) { + var c, + d, + e, + f, + g, + h = [], + i = b.delegateCount, + j = a.target; + if (i && j.nodeType && !("click" === a.type && a.button >= 1)) + for (; j !== this; j = j.parentNode || this) + if (1 === j.nodeType && ("click" !== a.type || j.disabled !== !0)) { + for (f = [], g = {}, c = 0; c < i; c++) + (d = b[c]), + (e = d.selector + " "), + void 0 === g[e] && + (g[e] = d.needsContext + ? r(e, this).index(j) > -1 + : r.find(e, this, null, [j]).length), + g[e] && f.push(d); + f.length && h.push({elem: j, handlers: f}); + } + return (j = this), i < b.length && h.push({elem: j, handlers: b.slice(i)}), h; + }, + addProp: function (a, b) { + Object.defineProperty(r.Event.prototype, a, { + enumerable: !0, + configurable: !0, + get: r.isFunction(b) + ? function () { + if (this.originalEvent) return b(this.originalEvent); + } + : function () { + if (this.originalEvent) return this.originalEvent[a]; + }, + set: function (b) { + Object.defineProperty(this, a, { + enumerable: !0, + configurable: !0, + writable: !0, + value: b, + }); + }, + }); + }, + fix: function (a) { + return a[r.expando] ? a : new r.Event(a); + }, + special: { + load: {noBubble: !0}, + focus: { + trigger: function () { + if (this !== xa() && this.focus) return this.focus(), !1; + }, + delegateType: "focusin", + }, + blur: { + trigger: function () { + if (this === xa() && this.blur) return this.blur(), !1; + }, + delegateType: "focusout", + }, + click: { + trigger: function () { + if ("checkbox" === this.type && this.click && B(this, "input")) return this.click(), !1; + }, + _default: function (a) { + return B(a.target, "a"); + }, + }, + beforeunload: { + postDispatch: function (a) { + void 0 !== a.result && a.originalEvent && (a.originalEvent.returnValue = a.result); + }, + }, + }, + }), + (r.removeEvent = function (a, b, c) { + a.removeEventListener && a.removeEventListener(b, c); + }), + (r.Event = function (a, b) { + return this instanceof r.Event + ? (a && a.type + ? ((this.originalEvent = a), + (this.type = a.type), + (this.isDefaultPrevented = + a.defaultPrevented || (void 0 === a.defaultPrevented && a.returnValue === !1) + ? va + : wa), + (this.target = a.target && 3 === a.target.nodeType ? a.target.parentNode : a.target), + (this.currentTarget = a.currentTarget), + (this.relatedTarget = a.relatedTarget)) + : (this.type = a), + b && r.extend(this, b), + (this.timeStamp = (a && a.timeStamp) || r.now()), + void (this[r.expando] = !0)) + : new r.Event(a, b); + }), + (r.Event.prototype = { + constructor: r.Event, + isDefaultPrevented: wa, + isPropagationStopped: wa, + isImmediatePropagationStopped: wa, + isSimulated: !1, + preventDefault: function () { + var a = this.originalEvent; + (this.isDefaultPrevented = va), a && !this.isSimulated && a.preventDefault(); + }, + stopPropagation: function () { + var a = this.originalEvent; + (this.isPropagationStopped = va), a && !this.isSimulated && a.stopPropagation(); + }, + stopImmediatePropagation: function () { + var a = this.originalEvent; + (this.isImmediatePropagationStopped = va), + a && !this.isSimulated && a.stopImmediatePropagation(), + this.stopPropagation(); + }, + }), + r.each( + { + altKey: !0, + bubbles: !0, + cancelable: !0, + changedTouches: !0, + ctrlKey: !0, + detail: !0, + eventPhase: !0, + metaKey: !0, + pageX: !0, + pageY: !0, + shiftKey: !0, + view: !0, + char: !0, + charCode: !0, + key: !0, + keyCode: !0, + button: !0, + buttons: !0, + clientX: !0, + clientY: !0, + offsetX: !0, + offsetY: !0, + pointerId: !0, + pointerType: !0, + screenX: !0, + screenY: !0, + targetTouches: !0, + toElement: !0, + touches: !0, + which: function (a) { + var b = a.button; + return null == a.which && sa.test(a.type) + ? null != a.charCode + ? a.charCode + : a.keyCode + : !a.which && void 0 !== b && ta.test(a.type) + ? 1 & b + ? 1 + : 2 & b + ? 3 + : 4 & b + ? 2 + : 0 + : a.which; + }, + }, + r.event.addProp + ), + r.each( + { + mouseenter: "mouseover", + mouseleave: "mouseout", + pointerenter: "pointerover", + pointerleave: "pointerout", + }, + function (a, b) { + r.event.special[a] = { + delegateType: b, + bindType: b, + handle: function (a) { + var c, + d = this, + e = a.relatedTarget, + f = a.handleObj; + return ( + (e && (e === d || r.contains(d, e))) || + ((a.type = f.origType), (c = f.handler.apply(this, arguments)), (a.type = b)), + c + ); + }, + }; + } + ), + r.fn.extend({ + on: function (a, b, c, d) { + return ya(this, a, b, c, d); + }, + one: function (a, b, c, d) { + return ya(this, a, b, c, d, 1); + }, + off: function (a, b, c) { + var d, e; + if (a && a.preventDefault && a.handleObj) + return ( + (d = a.handleObj), + r(a.delegateTarget).off( + d.namespace ? d.origType + "." + d.namespace : d.origType, + d.selector, + d.handler + ), + this + ); + if ("object" == typeof a) { + for (e in a) this.off(e, b, a[e]); + return this; + } + return ( + (b !== !1 && "function" != typeof b) || ((c = b), (b = void 0)), + c === !1 && (c = wa), + this.each(function () { + r.event.remove(this, a, c, b); + }) + ); + }, + }); + var za = + /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi, + Aa = /\s*$/g; + function Ea(a, b) { + return B(a, "table") && B(11 !== b.nodeType ? b : b.firstChild, "tr") + ? r(">tbody", a)[0] || a + : a; + } + function Fa(a) { + return (a.type = (null !== a.getAttribute("type")) + "/" + a.type), a; + } + function Ga(a) { + var b = Ca.exec(a.type); + return b ? (a.type = b[1]) : a.removeAttribute("type"), a; + } + function Ha(a, b) { + var c, d, e, f, g, h, i, j; + if (1 === b.nodeType) { + if (W.hasData(a) && ((f = W.access(a)), (g = W.set(b, f)), (j = f.events))) { + delete g.handle, (g.events = {}); + for (e in j) for (c = 0, d = j[e].length; c < d; c++) r.event.add(b, e, j[e][c]); + } + X.hasData(a) && ((h = X.access(a)), (i = r.extend({}, h)), X.set(b, i)); + } + } + function Ia(a, b) { + var c = b.nodeName.toLowerCase(); + "input" === c && ja.test(a.type) + ? (b.checked = a.checked) + : ("input" !== c && "textarea" !== c) || (b.defaultValue = a.defaultValue); + } + function Ja(a, b, c, d) { + b = g.apply([], b); + var e, + f, + h, + i, + j, + k, + l = 0, + m = a.length, + n = m - 1, + q = b[0], + s = r.isFunction(q); + if (s || (m > 1 && "string" == typeof q && !o.checkClone && Ba.test(q))) + return a.each(function (e) { + var f = a.eq(e); + s && (b[0] = q.call(this, e, f.html())), Ja(f, b, c, d); + }); + if ( + m && + ((e = qa(b, a[0].ownerDocument, !1, a, d)), + (f = e.firstChild), + 1 === e.childNodes.length && (e = f), + f || d) + ) { + for (h = r.map(na(e, "script"), Fa), i = h.length; l < m; l++) + (j = e), + l !== n && ((j = r.clone(j, !0, !0)), i && r.merge(h, na(j, "script"))), + c.call(a[l], j, l); + if (i) + for (k = h[h.length - 1].ownerDocument, r.map(h, Ga), l = 0; l < i; l++) + (j = h[l]), + la.test(j.type || "") && + !W.access(j, "globalEval") && + r.contains(k, j) && + (j.src ? r._evalUrl && r._evalUrl(j.src) : p(j.textContent.replace(Da, ""), k)); + } + return a; + } + function Ka(a, b, c) { + for (var d, e = b ? r.filter(b, a) : a, f = 0; null != (d = e[f]); f++) + c || 1 !== d.nodeType || r.cleanData(na(d)), + d.parentNode && + (c && r.contains(d.ownerDocument, d) && oa(na(d, "script")), d.parentNode.removeChild(d)); + return a; + } + r.extend({ + htmlPrefilter: function (a) { + return a.replace(za, "<$1>"); + }, + clone: function (a, b, c) { + var d, + e, + f, + g, + h = a.cloneNode(!0), + i = r.contains(a.ownerDocument, a); + if (!(o.noCloneChecked || (1 !== a.nodeType && 11 !== a.nodeType) || r.isXMLDoc(a))) + for (g = na(h), f = na(a), d = 0, e = f.length; d < e; d++) Ia(f[d], g[d]); + if (b) + if (c) for (f = f || na(a), g = g || na(h), d = 0, e = f.length; d < e; d++) Ha(f[d], g[d]); + else Ha(a, h); + return (g = na(h, "script")), g.length > 0 && oa(g, !i && na(a, "script")), h; + }, + cleanData: function (a) { + for (var b, c, d, e = r.event.special, f = 0; void 0 !== (c = a[f]); f++) + if (U(c)) { + if ((b = c[W.expando])) { + if (b.events) + for (d in b.events) e[d] ? r.event.remove(c, d) : r.removeEvent(c, d, b.handle); + c[W.expando] = void 0; + } + c[X.expando] && (c[X.expando] = void 0); + } + }, + }), + r.fn.extend({ + detach: function (a) { + return Ka(this, a, !0); + }, + remove: function (a) { + return Ka(this, a); + }, + text: function (a) { + return T( + this, + function (a) { + return void 0 === a + ? r.text(this) + : this.empty().each(function () { + (1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType) || + (this.textContent = a); + }); + }, + null, + a, + arguments.length + ); + }, + append: function () { + return Ja(this, arguments, function (a) { + if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) { + var b = Ea(this, a); + b.appendChild(a); + } + }); + }, + prepend: function () { + return Ja(this, arguments, function (a) { + if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) { + var b = Ea(this, a); + b.insertBefore(a, b.firstChild); + } + }); + }, + before: function () { + return Ja(this, arguments, function (a) { + this.parentNode && this.parentNode.insertBefore(a, this); + }); + }, + after: function () { + return Ja(this, arguments, function (a) { + this.parentNode && this.parentNode.insertBefore(a, this.nextSibling); + }); + }, + empty: function () { + for (var a, b = 0; null != (a = this[b]); b++) + 1 === a.nodeType && (r.cleanData(na(a, !1)), (a.textContent = "")); + return this; + }, + clone: function (a, b) { + return ( + (a = null != a && a), + (b = null == b ? a : b), + this.map(function () { + return r.clone(this, a, b); + }) + ); + }, + html: function (a) { + return T( + this, + function (a) { + var b = this[0] || {}, + c = 0, + d = this.length; + if (void 0 === a && 1 === b.nodeType) return b.innerHTML; + if ( + "string" == typeof a && + !Aa.test(a) && + !ma[(ka.exec(a) || ["", ""])[1].toLowerCase()] + ) { + a = r.htmlPrefilter(a); + try { + for (; c < d; c++) + (b = this[c] || {}), + 1 === b.nodeType && (r.cleanData(na(b, !1)), (b.innerHTML = a)); + b = 0; + } catch (e) {} + } + b && this.empty().append(a); + }, + null, + a, + arguments.length + ); + }, + replaceWith: function () { + var a = []; + return Ja( + this, + arguments, + function (b) { + var c = this.parentNode; + r.inArray(this, a) < 0 && (r.cleanData(na(this)), c && c.replaceChild(b, this)); + }, + a + ); + }, + }), + r.each( + { + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith", + }, + function (a, b) { + r.fn[a] = function (a) { + for (var c, d = [], e = r(a), f = e.length - 1, g = 0; g <= f; g++) + (c = g === f ? this : this.clone(!0)), r(e[g])[b](c), h.apply(d, c.get()); + return this.pushStack(d); + }; + } + ); + var La = /^margin/, + Ma = new RegExp("^(" + aa + ")(?!px)[a-z%]+$", "i"), + Na = function (b) { + var c = b.ownerDocument.defaultView; + return (c && c.opener) || (c = a), c.getComputedStyle(b); + }; + !(function () { + function b() { + if (i) { + (i.style.cssText = + "box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%"), + (i.innerHTML = ""), + ra.appendChild(h); + var b = a.getComputedStyle(i); + (c = "1%" !== b.top), + (g = "2px" === b.marginLeft), + (e = "4px" === b.width), + (i.style.marginRight = "50%"), + (f = "4px" === b.marginRight), + ra.removeChild(h), + (i = null); + } + } + var c, + e, + f, + g, + h = d.createElement("div"), + i = d.createElement("div"); + i.style && + ((i.style.backgroundClip = "content-box"), + (i.cloneNode(!0).style.backgroundClip = ""), + (o.clearCloneStyle = "content-box" === i.style.backgroundClip), + (h.style.cssText = + "border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute"), + h.appendChild(i), + r.extend(o, { + pixelPosition: function () { + return b(), c; + }, + boxSizingReliable: function () { + return b(), e; + }, + pixelMarginRight: function () { + return b(), f; + }, + reliableMarginLeft: function () { + return b(), g; + }, + })); + })(); + function Oa(a, b, c) { + var d, + e, + f, + g, + h = a.style; + return ( + (c = c || Na(a)), + c && + ((g = c.getPropertyValue(b) || c[b]), + "" !== g || r.contains(a.ownerDocument, a) || (g = r.style(a, b)), + !o.pixelMarginRight() && + Ma.test(g) && + La.test(b) && + ((d = h.width), + (e = h.minWidth), + (f = h.maxWidth), + (h.minWidth = h.maxWidth = h.width = g), + (g = c.width), + (h.width = d), + (h.minWidth = e), + (h.maxWidth = f))), + void 0 !== g ? g + "" : g + ); + } + function Pa(a, b) { + return { + get: function () { + return a() ? void delete this.get : (this.get = b).apply(this, arguments); + }, + }; + } + var Qa = /^(none|table(?!-c[ea]).+)/, + Ra = /^--/, + Sa = {position: "absolute", visibility: "hidden", display: "block"}, + Ta = {letterSpacing: "0", fontWeight: "400"}, + Ua = ["Webkit", "Moz", "ms"], + Va = d.createElement("div").style; + function Wa(a) { + if (a in Va) return a; + var b = a[0].toUpperCase() + a.slice(1), + c = Ua.length; + while (c--) if (((a = Ua[c] + b), a in Va)) return a; + } + function Xa(a) { + var b = r.cssProps[a]; + return b || (b = r.cssProps[a] = Wa(a) || a), b; + } + function Ya(a, b, c) { + var d = ba.exec(b); + return d ? Math.max(0, d[2] - (c || 0)) + (d[3] || "px") : b; + } + function Za(a, b, c, d, e) { + var f, + g = 0; + for (f = c === (d ? "border" : "content") ? 4 : "width" === b ? 1 : 0; f < 4; f += 2) + "margin" === c && (g += r.css(a, c + ca[f], !0, e)), + d + ? ("content" === c && (g -= r.css(a, "padding" + ca[f], !0, e)), + "margin" !== c && (g -= r.css(a, "border" + ca[f] + "Width", !0, e))) + : ((g += r.css(a, "padding" + ca[f], !0, e)), + "padding" !== c && (g += r.css(a, "border" + ca[f] + "Width", !0, e))); + return g; + } + function $a(a, b, c) { + var d, + e = Na(a), + f = Oa(a, b, e), + g = "border-box" === r.css(a, "boxSizing", !1, e); + return Ma.test(f) + ? f + : ((d = g && (o.boxSizingReliable() || f === a.style[b])), + "auto" === f && (f = a["offset" + b[0].toUpperCase() + b.slice(1)]), + (f = parseFloat(f) || 0), + f + Za(a, b, c || (g ? "border" : "content"), d, e) + "px"); + } + r.extend({ + cssHooks: { + opacity: { + get: function (a, b) { + if (b) { + var c = Oa(a, "opacity"); + return "" === c ? "1" : c; + } + }, + }, + }, + cssNumber: { + animationIterationCount: !0, + columnCount: !0, + fillOpacity: !0, + flexGrow: !0, + flexShrink: !0, + fontWeight: !0, + lineHeight: !0, + opacity: !0, + order: !0, + orphans: !0, + widows: !0, + zIndex: !0, + zoom: !0, + }, + cssProps: {float: "cssFloat"}, + style: function (a, b, c, d) { + if (a && 3 !== a.nodeType && 8 !== a.nodeType && a.style) { + var e, + f, + g, + h = r.camelCase(b), + i = Ra.test(b), + j = a.style; + return ( + i || (b = Xa(h)), + (g = r.cssHooks[b] || r.cssHooks[h]), + void 0 === c + ? g && "get" in g && void 0 !== (e = g.get(a, !1, d)) + ? e + : j[b] + : ((f = typeof c), + "string" === f && (e = ba.exec(c)) && e[1] && ((c = fa(a, b, e)), (f = "number")), + null != c && + c === c && + ("number" === f && (c += (e && e[3]) || (r.cssNumber[h] ? "" : "px")), + o.clearCloneStyle || + "" !== c || + 0 !== b.indexOf("background") || + (j[b] = "inherit"), + (g && "set" in g && void 0 === (c = g.set(a, c, d))) || + (i ? j.setProperty(b, c) : (j[b] = c))), + void 0) + ); + } + }, + css: function (a, b, c, d) { + var e, + f, + g, + h = r.camelCase(b), + i = Ra.test(b); + return ( + i || (b = Xa(h)), + (g = r.cssHooks[b] || r.cssHooks[h]), + g && "get" in g && (e = g.get(a, !0, c)), + void 0 === e && (e = Oa(a, b, d)), + "normal" === e && b in Ta && (e = Ta[b]), + "" === c || c ? ((f = parseFloat(e)), c === !0 || isFinite(f) ? f || 0 : e) : e + ); + }, + }), + r.each(["height", "width"], function (a, b) { + r.cssHooks[b] = { + get: function (a, c, d) { + if (c) + return !Qa.test(r.css(a, "display")) || + (a.getClientRects().length && a.getBoundingClientRect().width) + ? $a(a, b, d) + : ea(a, Sa, function () { + return $a(a, b, d); + }); + }, + set: function (a, c, d) { + var e, + f = d && Na(a), + g = d && Za(a, b, d, "border-box" === r.css(a, "boxSizing", !1, f), f); + return ( + g && + (e = ba.exec(c)) && + "px" !== (e[3] || "px") && + ((a.style[b] = c), (c = r.css(a, b))), + Ya(a, c, g) + ); + }, + }; + }), + (r.cssHooks.marginLeft = Pa(o.reliableMarginLeft, function (a, b) { + if (b) + return ( + (parseFloat(Oa(a, "marginLeft")) || + a.getBoundingClientRect().left - + ea(a, {marginLeft: 0}, function () { + return a.getBoundingClientRect().left; + })) + "px" + ); + })), + r.each({margin: "", padding: "", border: "Width"}, function (a, b) { + (r.cssHooks[a + b] = { + expand: function (c) { + for (var d = 0, e = {}, f = "string" == typeof c ? c.split(" ") : [c]; d < 4; d++) + e[a + ca[d] + b] = f[d] || f[d - 2] || f[0]; + return e; + }, + }), + La.test(a) || (r.cssHooks[a + b].set = Ya); + }), + r.fn.extend({ + css: function (a, b) { + return T( + this, + function (a, b, c) { + var d, + e, + f = {}, + g = 0; + if (Array.isArray(b)) { + for (d = Na(a), e = b.length; g < e; g++) f[b[g]] = r.css(a, b[g], !1, d); + return f; + } + return void 0 !== c ? r.style(a, b, c) : r.css(a, b); + }, + a, + b, + arguments.length > 1 + ); + }, + }), + (r.fn.delay = function (b, c) { + return ( + (b = r.fx ? r.fx.speeds[b] || b : b), + (c = c || "fx"), + this.queue(c, function (c, d) { + var e = a.setTimeout(c, b); + d.stop = function () { + a.clearTimeout(e); + }; + }) + ); + }), + (function () { + var a = d.createElement("input"), + b = d.createElement("select"), + c = b.appendChild(d.createElement("option")); + (a.type = "checkbox"), + (o.checkOn = "" !== a.value), + (o.optSelected = c.selected), + (a = d.createElement("input")), + (a.value = "t"), + (a.type = "radio"), + (o.radioValue = "t" === a.value); + })(); + var _a, + ab = r.expr.attrHandle; + r.fn.extend({ + attr: function (a, b) { + return T(this, r.attr, a, b, arguments.length > 1); + }, + removeAttr: function (a) { + return this.each(function () { + r.removeAttr(this, a); + }); + }, + }), + r.extend({ + attr: function (a, b, c) { + var d, + e, + f = a.nodeType; + if (3 !== f && 8 !== f && 2 !== f) + return "undefined" == typeof a.getAttribute + ? r.prop(a, b, c) + : ((1 === f && r.isXMLDoc(a)) || + (e = r.attrHooks[b.toLowerCase()] || (r.expr.match.bool.test(b) ? _a : void 0)), + void 0 !== c + ? null === c + ? void r.removeAttr(a, b) + : e && "set" in e && void 0 !== (d = e.set(a, c, b)) + ? d + : (a.setAttribute(b, c + ""), c) + : e && "get" in e && null !== (d = e.get(a, b)) + ? d + : ((d = r.find.attr(a, b)), null == d ? void 0 : d)); + }, + attrHooks: { + type: { + set: function (a, b) { + if (!o.radioValue && "radio" === b && B(a, "input")) { + var c = a.value; + return a.setAttribute("type", b), c && (a.value = c), b; + } + }, + }, + }, + removeAttr: function (a, b) { + var c, + d = 0, + e = b && b.match(L); + if (e && 1 === a.nodeType) while ((c = e[d++])) a.removeAttribute(c); + }, + }), + (_a = { + set: function (a, b, c) { + return b === !1 ? r.removeAttr(a, c) : a.setAttribute(c, c), c; + }, + }), + r.each(r.expr.match.bool.source.match(/\w+/g), function (a, b) { + var c = ab[b] || r.find.attr; + ab[b] = function (a, b, d) { + var e, + f, + g = b.toLowerCase(); + return d || ((f = ab[g]), (ab[g] = e), (e = null != c(a, b, d) ? g : null), (ab[g] = f)), e; + }; + }); + var bb = /^(?:input|select|textarea|button)$/i, + cb = /^(?:a|area)$/i; + r.fn.extend({ + prop: function (a, b) { + return T(this, r.prop, a, b, arguments.length > 1); + }, + removeProp: function (a) { + return this.each(function () { + delete this[r.propFix[a] || a]; + }); + }, + }), + r.extend({ + prop: function (a, b, c) { + var d, + e, + f = a.nodeType; + if (3 !== f && 8 !== f && 2 !== f) + return ( + (1 === f && r.isXMLDoc(a)) || ((b = r.propFix[b] || b), (e = r.propHooks[b])), + void 0 !== c + ? e && "set" in e && void 0 !== (d = e.set(a, c, b)) + ? d + : (a[b] = c) + : e && "get" in e && null !== (d = e.get(a, b)) + ? d + : a[b] + ); + }, + propHooks: { + tabIndex: { + get: function (a) { + var b = r.find.attr(a, "tabindex"); + return b + ? parseInt(b, 10) + : bb.test(a.nodeName) || (cb.test(a.nodeName) && a.href) + ? 0 + : -1; + }, + }, + }, + propFix: {for: "htmlFor", class: "className"}, + }), + o.optSelected || + (r.propHooks.selected = { + get: function (a) { + var b = a.parentNode; + return b && b.parentNode && b.parentNode.selectedIndex, null; + }, + set: function (a) { + var b = a.parentNode; + b && (b.selectedIndex, b.parentNode && b.parentNode.selectedIndex); + }, + }), + r.each( + [ + "tabIndex", + "readOnly", + "maxLength", + "cellSpacing", + "cellPadding", + "rowSpan", + "colSpan", + "useMap", + "frameBorder", + "contentEditable", + ], + function () { + r.propFix[this.toLowerCase()] = this; + } + ); + function db(a) { + var b = a.match(L) || []; + return b.join(" "); + } + function eb(a) { + return (a.getAttribute && a.getAttribute("class")) || ""; + } + r.fn.extend({ + addClass: function (a) { + var b, + c, + d, + e, + f, + g, + h, + i = 0; + if (r.isFunction(a)) + return this.each(function (b) { + r(this).addClass(a.call(this, b, eb(this))); + }); + if ("string" == typeof a && a) { + b = a.match(L) || []; + while ((c = this[i++])) + if (((e = eb(c)), (d = 1 === c.nodeType && " " + db(e) + " "))) { + g = 0; + while ((f = b[g++])) d.indexOf(" " + f + " ") < 0 && (d += f + " "); + (h = db(d)), e !== h && c.setAttribute("class", h); + } + } + return this; + }, + removeClass: function (a) { + var b, + c, + d, + e, + f, + g, + h, + i = 0; + if (r.isFunction(a)) + return this.each(function (b) { + r(this).removeClass(a.call(this, b, eb(this))); + }); + if (!arguments.length) return this.attr("class", ""); + if ("string" == typeof a && a) { + b = a.match(L) || []; + while ((c = this[i++])) + if (((e = eb(c)), (d = 1 === c.nodeType && " " + db(e) + " "))) { + g = 0; + while ((f = b[g++])) + while (d.indexOf(" " + f + " ") > -1) d = d.replace(" " + f + " ", " "); + (h = db(d)), e !== h && c.setAttribute("class", h); + } + } + return this; + }, + toggleClass: function (a, b) { + var c = typeof a; + return "boolean" == typeof b && "string" === c + ? b + ? this.addClass(a) + : this.removeClass(a) + : r.isFunction(a) + ? this.each(function (c) { + r(this).toggleClass(a.call(this, c, eb(this), b), b); + }) + : this.each(function () { + var b, d, e, f; + if ("string" === c) { + (d = 0), (e = r(this)), (f = a.match(L) || []); + while ((b = f[d++])) e.hasClass(b) ? e.removeClass(b) : e.addClass(b); + } else (void 0 !== a && "boolean" !== c) || ((b = eb(this)), b && W.set(this, "__className__", b), this.setAttribute && this.setAttribute("class", b || a === !1 ? "" : W.get(this, "__className__") || "")); + }); + }, + hasClass: function (a) { + var b, + c, + d = 0; + b = " " + a + " "; + while ((c = this[d++])) + if (1 === c.nodeType && (" " + db(eb(c)) + " ").indexOf(b) > -1) return !0; + return !1; + }, + }); + var fb = /\r/g; + r.fn.extend({ + val: function (a) { + var b, + c, + d, + e = this[0]; + { + if (arguments.length) + return ( + (d = r.isFunction(a)), + this.each(function (c) { + var e; + 1 === this.nodeType && + ((e = d ? a.call(this, c, r(this).val()) : a), + null == e + ? (e = "") + : "number" == typeof e + ? (e += "") + : Array.isArray(e) && + (e = r.map(e, function (a) { + return null == a ? "" : a + ""; + })), + (b = r.valHooks[this.type] || r.valHooks[this.nodeName.toLowerCase()]), + (b && "set" in b && void 0 !== b.set(this, e, "value")) || (this.value = e)); + }) + ); + if (e) + return ( + (b = r.valHooks[e.type] || r.valHooks[e.nodeName.toLowerCase()]), + b && "get" in b && void 0 !== (c = b.get(e, "value")) + ? c + : ((c = e.value), "string" == typeof c ? c.replace(fb, "") : null == c ? "" : c) + ); + } + }, + }), + r.extend({ + valHooks: { + option: { + get: function (a) { + var b = r.find.attr(a, "value"); + return null != b ? b : db(r.text(a)); + }, + }, + select: { + get: function (a) { + var b, + c, + d, + e = a.options, + f = a.selectedIndex, + g = "select-one" === a.type, + h = g ? null : [], + i = g ? f + 1 : e.length; + for (d = f < 0 ? i : g ? f : 0; d < i; d++) + if ( + ((c = e[d]), + (c.selected || d === f) && + !c.disabled && + (!c.parentNode.disabled || !B(c.parentNode, "optgroup"))) + ) { + if (((b = r(c).val()), g)) return b; + h.push(b); + } + return h; + }, + set: function (a, b) { + var c, + d, + e = a.options, + f = r.makeArray(b), + g = e.length; + while (g--) + (d = e[g]), (d.selected = r.inArray(r.valHooks.option.get(d), f) > -1) && (c = !0); + return c || (a.selectedIndex = -1), f; + }, + }, + }, + }), + r.each(["radio", "checkbox"], function () { + (r.valHooks[this] = { + set: function (a, b) { + if (Array.isArray(b)) return (a.checked = r.inArray(r(a).val(), b) > -1); + }, + }), + o.checkOn || + (r.valHooks[this].get = function (a) { + return null === a.getAttribute("value") ? "on" : a.value; + }); + }); + var gb = /^(?:focusinfocus|focusoutblur)$/; + r.extend(r.event, { + trigger: function (b, c, e, f) { + var g, + h, + i, + j, + k, + m, + n, + o = [e || d], + p = l.call(b, "type") ? b.type : b, + q = l.call(b, "namespace") ? b.namespace.split(".") : []; + if ( + ((h = i = e = e || d), + 3 !== e.nodeType && + 8 !== e.nodeType && + !gb.test(p + r.event.triggered) && + (p.indexOf(".") > -1 && ((q = p.split(".")), (p = q.shift()), q.sort()), + (k = p.indexOf(":") < 0 && "on" + p), + (b = b[r.expando] ? b : new r.Event(p, "object" == typeof b && b)), + (b.isTrigger = f ? 2 : 3), + (b.namespace = q.join(".")), + (b.rnamespace = b.namespace + ? new RegExp("(^|\\.)" + q.join("\\.(?:.*\\.|)") + "(\\.|$)") + : null), + (b.result = void 0), + b.target || (b.target = e), + (c = null == c ? [b] : r.makeArray(c, [b])), + (n = r.event.special[p] || {}), + f || !n.trigger || n.trigger.apply(e, c) !== !1)) + ) { + if (!f && !n.noBubble && !r.isWindow(e)) { + for (j = n.delegateType || p, gb.test(j + p) || (h = h.parentNode); h; h = h.parentNode) + o.push(h), (i = h); + i === (e.ownerDocument || d) && o.push(i.defaultView || i.parentWindow || a); + } + g = 0; + while ((h = o[g++]) && !b.isPropagationStopped()) + (b.type = g > 1 ? j : n.bindType || p), + (m = (W.get(h, "events") || {})[b.type] && W.get(h, "handle")), + m && m.apply(h, c), + (m = k && h[k]), + m && + m.apply && + U(h) && + ((b.result = m.apply(h, c)), b.result === !1 && b.preventDefault()); + return ( + (b.type = p), + f || + b.isDefaultPrevented() || + (n._default && n._default.apply(o.pop(), c) !== !1) || + !U(e) || + (k && + r.isFunction(e[p]) && + !r.isWindow(e) && + ((i = e[k]), + i && (e[k] = null), + (r.event.triggered = p), + e[p](), + (r.event.triggered = void 0), + i && (e[k] = i))), + b.result + ); + } + }, + simulate: function (a, b, c) { + var d = r.extend(new r.Event(), c, {type: a, isSimulated: !0}); + r.event.trigger(d, null, b); + }, + }), + r.fn.extend({ + trigger: function (a, b) { + return this.each(function () { + r.event.trigger(a, b, this); + }); + }, + triggerHandler: function (a, b) { + var c = this[0]; + if (c) return r.event.trigger(a, b, c, !0); + }, + }), + r.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 (a, b) { + r.fn[b] = function (a, c) { + return arguments.length > 0 ? this.on(b, null, a, c) : this.trigger(b); + }; + } + ), + r.fn.extend({ + hover: function (a, b) { + return this.mouseenter(a).mouseleave(b || a); + }, + }), + (o.focusin = "onfocusin" in a), + o.focusin || + r.each({focus: "focusin", blur: "focusout"}, function (a, b) { + var c = function (a) { + r.event.simulate(b, a.target, r.event.fix(a)); + }; + r.event.special[b] = { + setup: function () { + var d = this.ownerDocument || this, + e = W.access(d, b); + e || d.addEventListener(a, c, !0), W.access(d, b, (e || 0) + 1); + }, + teardown: function () { + var d = this.ownerDocument || this, + e = W.access(d, b) - 1; + e ? W.access(d, b, e) : (d.removeEventListener(a, c, !0), W.remove(d, b)); + }, + }; + }); + var hb = /\[\]$/, + ib = /\r?\n/g, + jb = /^(?:submit|button|image|reset|file)$/i, + kb = /^(?:input|select|textarea|keygen)/i; + function lb(a, b, c, d) { + var e; + if (Array.isArray(b)) + r.each(b, function (b, e) { + c || hb.test(a) + ? d(a, e) + : lb(a + "[" + ("object" == typeof e && null != e ? b : "") + "]", e, c, d); + }); + else if (c || "object" !== r.type(b)) d(a, b); + else for (e in b) lb(a + "[" + e + "]", b[e], c, d); + } + (r.param = function (a, b) { + var c, + d = [], + e = function (a, b) { + var c = r.isFunction(b) ? b() : b; + d[d.length] = encodeURIComponent(a) + "=" + encodeURIComponent(null == c ? "" : c); + }; + if (Array.isArray(a) || (a.jquery && !r.isPlainObject(a))) + r.each(a, function () { + e(this.name, this.value); + }); + else for (c in a) lb(c, a[c], b, e); + return d.join("&"); + }), + r.fn.extend({ + serialize: function () { + return r.param(this.serializeArray()); + }, + serializeArray: function () { + return this.map(function () { + var a = r.prop(this, "elements"); + return a ? r.makeArray(a) : this; + }) + .filter(function () { + var a = this.type; + return ( + this.name && + !r(this).is(":disabled") && + kb.test(this.nodeName) && + !jb.test(a) && + (this.checked || !ja.test(a)) + ); + }) + .map(function (a, b) { + var c = r(this).val(); + return null == c + ? null + : Array.isArray(c) + ? r.map(c, function (a) { + return {name: b.name, value: a.replace(ib, "\r\n")}; + }) + : {name: b.name, value: c.replace(ib, "\r\n")}; + }) + .get(); + }, + }), + r.fn.extend({ + wrapAll: function (a) { + var b; + return ( + this[0] && + (r.isFunction(a) && (a = a.call(this[0])), + (b = r(a, this[0].ownerDocument).eq(0).clone(!0)), + this[0].parentNode && b.insertBefore(this[0]), + b + .map(function () { + var a = this; + while (a.firstElementChild) a = a.firstElementChild; + return a; + }) + .append(this)), + this + ); + }, + wrapInner: function (a) { + return r.isFunction(a) + ? this.each(function (b) { + r(this).wrapInner(a.call(this, b)); + }) + : this.each(function () { + var b = r(this), + c = b.contents(); + c.length ? c.wrapAll(a) : b.append(a); + }); + }, + wrap: function (a) { + var b = r.isFunction(a); + return this.each(function (c) { + r(this).wrapAll(b ? a.call(this, c) : a); + }); + }, + unwrap: function (a) { + return ( + this.parent(a) + .not("body") + .each(function () { + r(this).replaceWith(this.childNodes); + }), + this + ); + }, + }), + (r.expr.pseudos.hidden = function (a) { + return !r.expr.pseudos.visible(a); + }), + (r.expr.pseudos.visible = function (a) { + return !!(a.offsetWidth || a.offsetHeight || a.getClientRects().length); + }), + (o.createHTMLDocument = (function () { + var a = d.implementation.createHTMLDocument("").body; + return (a.innerHTML = "
"), 2 === a.childNodes.length; + })()), + (r.parseHTML = function (a, b, c) { + if ("string" != typeof a) return []; + "boolean" == typeof b && ((c = b), (b = !1)); + var e, f, g; + return ( + b || + (o.createHTMLDocument + ? ((b = d.implementation.createHTMLDocument("")), + (e = b.createElement("base")), + (e.href = d.location.href), + b.head.appendChild(e)) + : (b = d)), + (f = C.exec(a)), + (g = !c && []), + f + ? [b.createElement(f[1])] + : ((f = qa([a], b, g)), g && g.length && r(g).remove(), r.merge([], f.childNodes)) + ); + }), + (r.offset = { + setOffset: function (a, b, c) { + var d, + e, + f, + g, + h, + i, + j, + k = r.css(a, "position"), + l = r(a), + m = {}; + "static" === k && (a.style.position = "relative"), + (h = l.offset()), + (f = r.css(a, "top")), + (i = r.css(a, "left")), + (j = ("absolute" === k || "fixed" === k) && (f + i).indexOf("auto") > -1), + j + ? ((d = l.position()), (g = d.top), (e = d.left)) + : ((g = parseFloat(f) || 0), (e = parseFloat(i) || 0)), + r.isFunction(b) && (b = b.call(a, c, r.extend({}, h))), + null != b.top && (m.top = b.top - h.top + g), + null != b.left && (m.left = b.left - h.left + e), + "using" in b ? b.using.call(a, m) : l.css(m); + }, + }), + r.fn.extend({ + offset: function (a) { + if (arguments.length) + return void 0 === a + ? this + : this.each(function (b) { + r.offset.setOffset(this, a, b); + }); + var b, + c, + d, + e, + f = this[0]; + if (f) + return f.getClientRects().length + ? ((d = f.getBoundingClientRect()), + (b = f.ownerDocument), + (c = b.documentElement), + (e = b.defaultView), + { + top: d.top + e.pageYOffset - c.clientTop, + left: d.left + e.pageXOffset - c.clientLeft, + }) + : {top: 0, left: 0}; + }, + position: function () { + if (this[0]) { + var a, + b, + c = this[0], + d = {top: 0, left: 0}; + return ( + "fixed" === r.css(c, "position") + ? (b = c.getBoundingClientRect()) + : ((a = this.offsetParent()), + (b = this.offset()), + B(a[0], "html") || (d = a.offset()), + (d = { + top: d.top + r.css(a[0], "borderTopWidth", !0), + left: d.left + r.css(a[0], "borderLeftWidth", !0), + })), + { + top: b.top - d.top - r.css(c, "marginTop", !0), + left: b.left - d.left - r.css(c, "marginLeft", !0), + } + ); + } + }, + offsetParent: function () { + return this.map(function () { + var a = this.offsetParent; + while (a && "static" === r.css(a, "position")) a = a.offsetParent; + return a || ra; + }); + }, + }), + r.each({scrollLeft: "pageXOffset", scrollTop: "pageYOffset"}, function (a, b) { + var c = "pageYOffset" === b; + r.fn[a] = function (d) { + return T( + this, + function (a, d, e) { + var f; + return ( + r.isWindow(a) ? (f = a) : 9 === a.nodeType && (f = a.defaultView), + void 0 === e + ? f + ? f[b] + : a[d] + : void (f ? f.scrollTo(c ? f.pageXOffset : e, c ? e : f.pageYOffset) : (a[d] = e)) + ); + }, + a, + d, + arguments.length + ); + }; + }), + r.each(["top", "left"], function (a, b) { + r.cssHooks[b] = Pa(o.pixelPosition, function (a, c) { + if (c) return (c = Oa(a, b)), Ma.test(c) ? r(a).position()[b] + "px" : c; + }); + }), + r.each({Height: "height", Width: "width"}, function (a, b) { + r.each({padding: "inner" + a, content: b, "": "outer" + a}, function (c, d) { + r.fn[d] = function (e, f) { + var g = arguments.length && (c || "boolean" != typeof e), + h = c || (e === !0 || f === !0 ? "margin" : "border"); + return T( + this, + function (b, c, e) { + var f; + return r.isWindow(b) + ? 0 === d.indexOf("outer") + ? b["inner" + a] + : b.document.documentElement["client" + a] + : 9 === b.nodeType + ? ((f = b.documentElement), + Math.max( + b.body["scroll" + a], + f["scroll" + a], + b.body["offset" + a], + f["offset" + a], + f["client" + a] + )) + : void 0 === e + ? r.css(b, c, h) + : r.style(b, c, e, h); + }, + b, + g ? e : void 0, + g + ); + }; + }); + }), + r.fn.extend({ + bind: function (a, b, c) { + return this.on(a, null, b, c); + }, + unbind: function (a, b) { + return this.off(a, null, b); + }, + delegate: function (a, b, c, d) { + return this.on(b, a, c, d); + }, + undelegate: function (a, b, c) { + return 1 === arguments.length ? this.off(a, "**") : this.off(b, a || "**", c); + }, + }), + (r.holdReady = function (a) { + a ? r.readyWait++ : r.ready(!0); + }), + (r.isArray = Array.isArray), + (r.parseJSON = JSON.parse), + (r.nodeName = B), + "function" == typeof define && + define.amd && + define("jquery", [], function () { + return r; + }); + var mb = a.jQuery, + nb = a.$; + return ( + (r.noConflict = function (b) { + return a.$ === r && (a.$ = nb), b && a.jQuery === r && (a.jQuery = mb), r; + }), + b || (a.jQuery = a.$ = r), + r + ); +}); diff --git a/emergency/homepage/popper.js b/emergency/homepage/popper.js index 0f20d2a89..6967b70bf 100644 --- a/emergency/homepage/popper.js +++ b/emergency/homepage/popper.js @@ -1,5 +1,1010 @@ /* Copyright (C) Federico Zivolo 2017 Distributed under the MIT License (license terms are at http://opensource.org/licenses/MIT). - */(function(e,t){'object'==typeof exports&&'undefined'!=typeof module?module.exports=t():'function'==typeof define&&define.amd?define(t):e.Popper=t()})(this,function(){'use strict';function e(e){return e&&'[object Function]'==={}.toString.call(e)}function t(e,t){if(1!==e.nodeType)return[];var o=getComputedStyle(e,null);return t?o[t]:o}function o(e){return'HTML'===e.nodeName?e:e.parentNode||e.host}function n(e){if(!e)return document.body;switch(e.nodeName){case'HTML':case'BODY':return e.ownerDocument.body;case'#document':return e.body;}var i=t(e),r=i.overflow,p=i.overflowX,s=i.overflowY;return /(auto|scroll)/.test(r+s+p)?e:n(o(e))}function r(e){var o=e&&e.offsetParent,i=o&&o.nodeName;return i&&'BODY'!==i&&'HTML'!==i?-1!==['TD','TABLE'].indexOf(o.nodeName)&&'static'===t(o,'position')?r(o):o:e?e.ownerDocument.documentElement:document.documentElement}function p(e){var t=e.nodeName;return'BODY'!==t&&('HTML'===t||r(e.firstElementChild)===e)}function s(e){return null===e.parentNode?e:s(e.parentNode)}function d(e,t){if(!e||!e.nodeType||!t||!t.nodeType)return document.documentElement;var o=e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_FOLLOWING,i=o?e:t,n=o?t:e,a=document.createRange();a.setStart(i,0),a.setEnd(n,0);var l=a.commonAncestorContainer;if(e!==l&&t!==l||i.contains(n))return p(l)?l:r(l);var f=s(e);return f.host?d(f.host,t):d(e,s(t).host)}function a(e){var t=1=o.clientWidth&&i>=o.clientHeight}),l=0i[e]&&!t.escapeWithReference&&(n=_(p[o],i[e]-('right'===e?p.width:p.height))),pe({},o,n)}};return n.forEach(function(e){var t=-1===['left','top'].indexOf(e)?'secondary':'primary';p=se({},p,s[t](e))}),e.offsets.popper=p,e},priority:['left','right','top','bottom'],padding:5,boundariesElement:'scrollParent'},keepTogether:{order:400,enabled:!0,fn:function(e){var t=e.offsets,o=t.popper,i=t.reference,n=e.placement.split('-')[0],r=X,p=-1!==['top','bottom'].indexOf(n),s=p?'right':'bottom',d=p?'left':'top',a=p?'width':'height';return o[s]r(i[s])&&(e.offsets.popper[d]=r(i[s])),e}},arrow:{order:500,enabled:!0,fn:function(e,o){var i;if(!F(e.instance.modifiers,'arrow','keepTogether'))return e;var n=o.element;if('string'==typeof n){if(n=e.instance.popper.querySelector(n),!n)return e;}else if(!e.instance.popper.contains(n))return console.warn('WARNING: `arrow.element` must be child of its popper element!'),e;var r=e.placement.split('-')[0],p=e.offsets,s=p.popper,d=p.reference,a=-1!==['left','right'].indexOf(r),l=a?'height':'width',f=a?'Top':'Left',m=f.toLowerCase(),h=a?'left':'top',g=a?'bottom':'right',u=L(n)[l];d[g]-us[g]&&(e.offsets.popper[m]+=d[m]+u-s[g]),e.offsets.popper=c(e.offsets.popper);var b=d[m]+d[l]/2-u/2,w=t(e.instance.popper),y=parseFloat(w['margin'+f],10),E=parseFloat(w['border'+f+'Width'],10),v=b-e.offsets.popper[m]-y-E;return v=J(_(s[l]-u,v),0),e.arrowElement=n,e.offsets.arrow=(i={},pe(i,m,Math.round(v)),pe(i,h,''),i),e},element:'[x-arrow]'},flip:{order:600,enabled:!0,fn:function(e,t){if(k(e.instance.modifiers,'inner'))return e;if(e.flipped&&e.placement===e.originalPlacement)return e;var o=y(e.instance.popper,e.instance.reference,t.padding,t.boundariesElement),i=e.placement.split('-')[0],n=x(i),r=e.placement.split('-')[1]||'',p=[];switch(t.behavior){case le.FLIP:p=[i,n];break;case le.CLOCKWISE:p=q(i);break;case le.COUNTERCLOCKWISE:p=q(i,!0);break;default:p=t.behavior;}return p.forEach(function(s,d){if(i!==s||p.length===d+1)return e;i=e.placement.split('-')[0],n=x(i);var a=e.offsets.popper,l=e.offsets.reference,f=X,m='left'===i&&f(a.right)>f(l.left)||'right'===i&&f(a.left)f(l.top)||'bottom'===i&&f(a.top)f(o.right),g=f(a.top)f(o.bottom),b='left'===i&&h||'right'===i&&c||'top'===i&&g||'bottom'===i&&u,w=-1!==['top','bottom'].indexOf(i),y=!!t.flipVariations&&(w&&'start'===r&&h||w&&'end'===r&&c||!w&&'start'===r&&g||!w&&'end'===r&&u);(m||b||y)&&(e.flipped=!0,(m||b)&&(i=p[d+1]),y&&(r=K(r)),e.placement=i+(r?'-'+r:''),e.offsets.popper=se({},e.offsets.popper,S(e.instance.popper,e.offsets.reference,e.placement)),e=C(e.instance.modifiers,e,'flip'))}),e},behavior:'flip',padding:5,boundariesElement:'viewport'},inner:{order:700,enabled:!1,fn:function(e){var t=e.placement,o=t.split('-')[0],i=e.offsets,n=i.popper,r=i.reference,p=-1!==['left','right'].indexOf(o),s=-1===['top','left'].indexOf(o);return n[p?'left':'top']=r[o]-(s?n[p?'width':'height']:0),e.placement=x(t),e.offsets.popper=c(n),e}},hide:{order:800,enabled:!0,fn:function(e){if(!F(e.instance.modifiers,'hide','preventOverflow'))return e;var t=e.offsets.reference,o=T(e.instance.modifiers,function(e){return'preventOverflow'===e.name}).boundaries;if(t.bottomo.right||t.top>o.bottom||t.right= o.clientWidth && i >= o.clientHeight; + }), + l = 0 < a.length ? a[0].key : d[0].key, + f = e.split("-")[1]; + return l + (f ? "-" + f : ""); + } + function O(e, t, o) { + var i = d(t, o); + return u(o, i); + } + function L(e) { + var t = getComputedStyle(e), + o = parseFloat(t.marginTop) + parseFloat(t.marginBottom), + i = parseFloat(t.marginLeft) + parseFloat(t.marginRight), + n = {width: e.offsetWidth + i, height: e.offsetHeight + o}; + return n; + } + function x(e) { + var t = {left: "right", right: "left", bottom: "top", top: "bottom"}; + return e.replace(/left|right|bottom|top/g, function (e) { + return t[e]; + }); + } + function S(e, t, o) { + o = o.split("-")[0]; + var i = L(e), + n = {width: i.width, height: i.height}, + r = -1 !== ["right", "left"].indexOf(o), + p = r ? "top" : "left", + s = r ? "left" : "top", + d = r ? "height" : "width", + a = r ? "width" : "height"; + return (n[p] = t[p] + t[d] / 2 - i[d] / 2), (n[s] = o === s ? t[s] - i[a] : t[x(s)]), n; + } + function T(e, t) { + return Array.prototype.find ? e.find(t) : e.filter(t)[0]; + } + function D(e, t, o) { + if (Array.prototype.findIndex) + return e.findIndex(function (e) { + return e[t] === o; + }); + var i = T(e, function (e) { + return e[t] === o; + }); + return e.indexOf(i); + } + function C(t, o, i) { + var n = void 0 === i ? t : t.slice(0, D(t, "name", i)); + return ( + n.forEach(function (t) { + t["function"] && console.warn("`modifier.function` is deprecated, use `modifier.fn`!"); + var i = t["function"] || t.fn; + t.enabled && + e(i) && + ((o.offsets.popper = c(o.offsets.popper)), + (o.offsets.reference = c(o.offsets.reference)), + (o = i(o, t))); + }), + o + ); + } + function N() { + if (!this.state.isDestroyed) { + var e = { + instance: this, + styles: {}, + arrowStyles: {}, + attributes: {}, + flipped: !1, + offsets: {}, + }; + (e.offsets.reference = O(this.state, this.popper, this.reference)), + (e.placement = v( + this.options.placement, + e.offsets.reference, + this.popper, + this.reference, + this.options.modifiers.flip.boundariesElement, + this.options.modifiers.flip.padding + )), + (e.originalPlacement = e.placement), + (e.offsets.popper = S(this.popper, e.offsets.reference, e.placement)), + (e.offsets.popper.position = "absolute"), + (e = C(this.modifiers, e)), + this.state.isCreated + ? this.options.onUpdate(e) + : ((this.state.isCreated = !0), this.options.onCreate(e)); + } + } + function k(e, t) { + return e.some(function (e) { + var o = e.name, + i = e.enabled; + return i && o === t; + }); + } + function W(e) { + for ( + var t = [!1, "ms", "Webkit", "Moz", "O"], o = e.charAt(0).toUpperCase() + e.slice(1), n = 0; + n < t.length - 1; + n++ + ) { + var i = t[n], + r = i ? "" + i + o : e; + if ("undefined" != typeof document.body.style[r]) return r; + } + return null; + } + function P() { + return ( + (this.state.isDestroyed = !0), + k(this.modifiers, "applyStyle") && + (this.popper.removeAttribute("x-placement"), + (this.popper.style.left = ""), + (this.popper.style.position = ""), + (this.popper.style.top = ""), + (this.popper.style[W("transform")] = "")), + this.disableEventListeners(), + this.options.removeOnDestroy && this.popper.parentNode.removeChild(this.popper), + this + ); + } + function B(e) { + var t = e.ownerDocument; + return t ? t.defaultView : window; + } + function H(e, t, o, i) { + var r = "BODY" === e.nodeName, + p = r ? e.ownerDocument.defaultView : e; + p.addEventListener(t, o, {passive: !0}), r || H(n(p.parentNode), t, o, i), i.push(p); + } + function A(e, t, o, i) { + (o.updateBound = i), B(e).addEventListener("resize", o.updateBound, {passive: !0}); + var r = n(e); + return ( + H(r, "scroll", o.updateBound, o.scrollParents), + (o.scrollElement = r), + (o.eventsEnabled = !0), + o + ); + } + function I() { + this.state.eventsEnabled || + (this.state = A(this.reference, this.options, this.state, this.scheduleUpdate)); + } + function M(e, t) { + return ( + B(e).removeEventListener("resize", t.updateBound), + t.scrollParents.forEach(function (e) { + e.removeEventListener("scroll", t.updateBound); + }), + (t.updateBound = null), + (t.scrollParents = []), + (t.scrollElement = null), + (t.eventsEnabled = !1), + t + ); + } + function R() { + this.state.eventsEnabled && + (cancelAnimationFrame(this.scheduleUpdate), (this.state = M(this.reference, this.state))); + } + function U(e) { + return "" !== e && !isNaN(parseFloat(e)) && isFinite(e); + } + function Y(e, t) { + Object.keys(t).forEach(function (o) { + var i = ""; + -1 !== ["width", "height", "top", "right", "bottom", "left"].indexOf(o) && + U(t[o]) && + (i = "px"), + (e.style[o] = t[o] + i); + }); + } + function j(e, t) { + Object.keys(t).forEach(function (o) { + var i = t[o]; + !1 === i ? e.removeAttribute(o) : e.setAttribute(o, t[o]); + }); + } + function F(e, t, o) { + var i = T(e, function (e) { + var o = e.name; + return o === t; + }), + n = + !!i && + e.some(function (e) { + return e.name === o && e.enabled && e.order < i.order; + }); + if (!n) { + var r = "`" + t + "`"; + console.warn( + "`" + + o + + "`" + + " modifier is required by " + + r + + " modifier in order to work, be sure to include it before " + + r + + "!" + ); + } + return n; + } + function K(e) { + return "end" === e ? "start" : "start" === e ? "end" : e; + } + function q(e) { + var t = 1 < arguments.length && void 0 !== arguments[1] && arguments[1], + o = ae.indexOf(e), + i = ae.slice(o + 1).concat(ae.slice(0, o)); + return t ? i.reverse() : i; + } + function V(e, t, o, i) { + var n = e.match(/((?:\-|\+)?\d*\.?\d*)(.*)/), + r = +n[1], + p = n[2]; + if (!r) return e; + if (0 === p.indexOf("%")) { + var s; + switch (p) { + case "%p": + s = o; + break; + case "%": + case "%r": + default: + s = i; + } + var d = c(s); + return (d[t] / 100) * r; + } + if ("vh" === p || "vw" === p) { + var a; + return ( + (a = + "vh" === p + ? J(document.documentElement.clientHeight, window.innerHeight || 0) + : J(document.documentElement.clientWidth, window.innerWidth || 0)), + (a / 100) * r + ); + } + return r; + } + function z(e, t, o, i) { + var n = [0, 0], + r = -1 !== ["right", "left"].indexOf(i), + p = e.split(/(\+|\-)/).map(function (e) { + return e.trim(); + }), + s = p.indexOf( + T(p, function (e) { + return -1 !== e.search(/,|\s/); + }) + ); + p[s] && + -1 === p[s].indexOf(",") && + console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead."); + var d = /\s*,\s*|\s+/, + a = + -1 === s + ? [p] + : [p.slice(0, s).concat([p[s].split(d)[0]]), [p[s].split(d)[1]].concat(p.slice(s + 1))]; + return ( + (a = a.map(function (e, i) { + var n = (1 === i ? !r : r) ? "height" : "width", + p = !1; + return e + .reduce(function (e, t) { + return "" === e[e.length - 1] && -1 !== ["+", "-"].indexOf(t) + ? ((e[e.length - 1] = t), (p = !0), e) + : p + ? ((e[e.length - 1] += t), (p = !1), e) + : e.concat(t); + }, []) + .map(function (e) { + return V(e, n, t, o); + }); + })), + a.forEach(function (e, t) { + e.forEach(function (o, i) { + U(o) && (n[t] += o * ("-" === e[i - 1] ? -1 : 1)); + }); + }), + n + ); + } + function G(e, t) { + var o, + i = t.offset, + n = e.placement, + r = e.offsets, + p = r.popper, + s = r.reference, + d = n.split("-")[0]; + return ( + (o = U(+i) ? [+i, 0] : z(i, p, s, d)), + "left" === d + ? ((p.top += o[0]), (p.left -= o[1])) + : "right" === d + ? ((p.top += o[0]), (p.left += o[1])) + : "top" === d + ? ((p.left += o[0]), (p.top -= o[1])) + : "bottom" === d && ((p.left += o[0]), (p.top += o[1])), + (e.popper = p), + e + ); + } + for ( + var _ = Math.min, + X = Math.floor, + J = Math.max, + Q = "undefined" != typeof window && "undefined" != typeof document, + Z = ["Edge", "Trident", "Firefox"], + $ = 0, + ee = 0; + ee < Z.length; + ee += 1 + ) + if (Q && 0 <= navigator.userAgent.indexOf(Z[ee])) { + $ = 1; + break; + } + var i, + te = Q && window.Promise, + oe = te + ? function (e) { + var t = !1; + return function () { + t || + ((t = !0), + window.Promise.resolve().then(function () { + (t = !1), e(); + })); + }; + } + : function (e) { + var t = !1; + return function () { + t || + ((t = !0), + setTimeout(function () { + (t = !1), e(); + }, $)); + }; + }, + ie = function () { + return void 0 == i && (i = -1 !== navigator.appVersion.indexOf("MSIE 10")), i; + }, + ne = function (e, t) { + if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function"); + }, + re = (function () { + function e(e, t) { + for (var o, n = 0; n < t.length; n++) + (o = t[n]), + (o.enumerable = o.enumerable || !1), + (o.configurable = !0), + "value" in o && (o.writable = !0), + Object.defineProperty(e, o.key, o); + } + return function (t, o, i) { + return o && e(t.prototype, o), i && e(t, i), t; + }; + })(), + pe = function (e, t, o) { + return ( + t in e + ? Object.defineProperty(e, t, {value: o, enumerable: !0, configurable: !0, writable: !0}) + : (e[t] = o), + e + ); + }, + se = + Object.assign || + function (e) { + for (var t, o = 1; o < arguments.length; o++) + for (var i in ((t = arguments[o]), t)) + Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]); + return e; + }, + de = [ + "auto-start", + "auto", + "auto-end", + "top-start", + "top", + "top-end", + "right-start", + "right", + "right-end", + "bottom-end", + "bottom", + "bottom-start", + "left-end", + "left", + "left-start", + ], + ae = de.slice(3), + le = {FLIP: "flip", CLOCKWISE: "clockwise", COUNTERCLOCKWISE: "counterclockwise"}, + fe = (function () { + function t(o, i) { + var n = this, + r = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : {}; + ne(this, t), + (this.scheduleUpdate = function () { + return requestAnimationFrame(n.update); + }), + (this.update = oe(this.update.bind(this))), + (this.options = se({}, t.Defaults, r)), + (this.state = {isDestroyed: !1, isCreated: !1, scrollParents: []}), + (this.reference = o && o.jquery ? o[0] : o), + (this.popper = i && i.jquery ? i[0] : i), + (this.options.modifiers = {}), + Object.keys(se({}, t.Defaults.modifiers, r.modifiers)).forEach(function (e) { + n.options.modifiers[e] = se( + {}, + t.Defaults.modifiers[e] || {}, + r.modifiers ? r.modifiers[e] : {} + ); + }), + (this.modifiers = Object.keys(this.options.modifiers) + .map(function (e) { + return se({name: e}, n.options.modifiers[e]); + }) + .sort(function (e, t) { + return e.order - t.order; + })), + this.modifiers.forEach(function (t) { + t.enabled && e(t.onLoad) && t.onLoad(n.reference, n.popper, n.options, t, n.state); + }), + this.update(); + var p = this.options.eventsEnabled; + p && this.enableEventListeners(), (this.state.eventsEnabled = p); + } + return ( + re(t, [ + { + key: "update", + value: function () { + return N.call(this); + }, + }, + { + key: "destroy", + value: function () { + return P.call(this); + }, + }, + { + key: "enableEventListeners", + value: function () { + return I.call(this); + }, + }, + { + key: "disableEventListeners", + value: function () { + return R.call(this); + }, + }, + ]), + t + ); + })(); + return ( + (fe.Utils = ("undefined" == typeof window ? global : window).PopperUtils), + (fe.placements = de), + (fe.Defaults = { + placement: "bottom", + eventsEnabled: !0, + removeOnDestroy: !1, + onCreate: function () {}, + onUpdate: function () {}, + modifiers: { + shift: { + order: 100, + enabled: !0, + fn: function (e) { + var t = e.placement, + o = t.split("-")[0], + i = t.split("-")[1]; + if (i) { + var n = e.offsets, + r = n.reference, + p = n.popper, + s = -1 !== ["bottom", "top"].indexOf(o), + d = s ? "left" : "top", + a = s ? "width" : "height", + l = {start: pe({}, d, r[d]), end: pe({}, d, r[d] + r[a] - p[a])}; + e.offsets.popper = se({}, p, l[i]); + } + return e; + }, + }, + offset: {order: 200, enabled: !0, fn: G, offset: 0}, + preventOverflow: { + order: 300, + enabled: !0, + fn: function (e, t) { + var o = t.boundariesElement || r(e.instance.popper); + e.instance.reference === o && (o = r(o)); + var i = y(e.instance.popper, e.instance.reference, t.padding, o); + t.boundaries = i; + var n = t.priority, + p = e.offsets.popper, + s = { + primary: function (e) { + var o = p[e]; + return p[e] < i[e] && !t.escapeWithReference && (o = J(p[e], i[e])), pe({}, e, o); + }, + secondary: function (e) { + var o = "right" === e ? "left" : "top", + n = p[o]; + return ( + p[e] > i[e] && + !t.escapeWithReference && + (n = _(p[o], i[e] - ("right" === e ? p.width : p.height))), + pe({}, o, n) + ); + }, + }; + return ( + n.forEach(function (e) { + var t = -1 === ["left", "top"].indexOf(e) ? "secondary" : "primary"; + p = se({}, p, s[t](e)); + }), + (e.offsets.popper = p), + e + ); + }, + priority: ["left", "right", "top", "bottom"], + padding: 5, + boundariesElement: "scrollParent", + }, + keepTogether: { + order: 400, + enabled: !0, + fn: function (e) { + var t = e.offsets, + o = t.popper, + i = t.reference, + n = e.placement.split("-")[0], + r = X, + p = -1 !== ["top", "bottom"].indexOf(n), + s = p ? "right" : "bottom", + d = p ? "left" : "top", + a = p ? "width" : "height"; + return ( + o[s] < r(i[d]) && (e.offsets.popper[d] = r(i[d]) - o[a]), + o[d] > r(i[s]) && (e.offsets.popper[d] = r(i[s])), + e + ); + }, + }, + arrow: { + order: 500, + enabled: !0, + fn: function (e, o) { + var i; + if (!F(e.instance.modifiers, "arrow", "keepTogether")) return e; + var n = o.element; + if ("string" == typeof n) { + if (((n = e.instance.popper.querySelector(n)), !n)) return e; + } else if (!e.instance.popper.contains(n)) + return ( + console.warn("WARNING: `arrow.element` must be child of its popper element!"), e + ); + var r = e.placement.split("-")[0], + p = e.offsets, + s = p.popper, + d = p.reference, + a = -1 !== ["left", "right"].indexOf(r), + l = a ? "height" : "width", + f = a ? "Top" : "Left", + m = f.toLowerCase(), + h = a ? "left" : "top", + g = a ? "bottom" : "right", + u = L(n)[l]; + d[g] - u < s[m] && (e.offsets.popper[m] -= s[m] - (d[g] - u)), + d[m] + u > s[g] && (e.offsets.popper[m] += d[m] + u - s[g]), + (e.offsets.popper = c(e.offsets.popper)); + var b = d[m] + d[l] / 2 - u / 2, + w = t(e.instance.popper), + y = parseFloat(w["margin" + f], 10), + E = parseFloat(w["border" + f + "Width"], 10), + v = b - e.offsets.popper[m] - y - E; + return ( + (v = J(_(s[l] - u, v), 0)), + (e.arrowElement = n), + (e.offsets.arrow = ((i = {}), pe(i, m, Math.round(v)), pe(i, h, ""), i)), + e + ); + }, + element: "[x-arrow]", + }, + flip: { + order: 600, + enabled: !0, + fn: function (e, t) { + if (k(e.instance.modifiers, "inner")) return e; + if (e.flipped && e.placement === e.originalPlacement) return e; + var o = y(e.instance.popper, e.instance.reference, t.padding, t.boundariesElement), + i = e.placement.split("-")[0], + n = x(i), + r = e.placement.split("-")[1] || "", + p = []; + switch (t.behavior) { + case le.FLIP: + p = [i, n]; + break; + case le.CLOCKWISE: + p = q(i); + break; + case le.COUNTERCLOCKWISE: + p = q(i, !0); + break; + default: + p = t.behavior; + } + return ( + p.forEach(function (s, d) { + if (i !== s || p.length === d + 1) return e; + (i = e.placement.split("-")[0]), (n = x(i)); + var a = e.offsets.popper, + l = e.offsets.reference, + f = X, + m = + ("left" === i && f(a.right) > f(l.left)) || + ("right" === i && f(a.left) < f(l.right)) || + ("top" === i && f(a.bottom) > f(l.top)) || + ("bottom" === i && f(a.top) < f(l.bottom)), + h = f(a.left) < f(o.left), + c = f(a.right) > f(o.right), + g = f(a.top) < f(o.top), + u = f(a.bottom) > f(o.bottom), + b = + ("left" === i && h) || + ("right" === i && c) || + ("top" === i && g) || + ("bottom" === i && u), + w = -1 !== ["top", "bottom"].indexOf(i), + y = + !!t.flipVariations && + ((w && "start" === r && h) || + (w && "end" === r && c) || + (!w && "start" === r && g) || + (!w && "end" === r && u)); + (m || b || y) && + ((e.flipped = !0), + (m || b) && (i = p[d + 1]), + y && (r = K(r)), + (e.placement = i + (r ? "-" + r : "")), + (e.offsets.popper = se( + {}, + e.offsets.popper, + S(e.instance.popper, e.offsets.reference, e.placement) + )), + (e = C(e.instance.modifiers, e, "flip"))); + }), + e + ); + }, + behavior: "flip", + padding: 5, + boundariesElement: "viewport", + }, + inner: { + order: 700, + enabled: !1, + fn: function (e) { + var t = e.placement, + o = t.split("-")[0], + i = e.offsets, + n = i.popper, + r = i.reference, + p = -1 !== ["left", "right"].indexOf(o), + s = -1 === ["top", "left"].indexOf(o); + return ( + (n[p ? "left" : "top"] = r[o] - (s ? n[p ? "width" : "height"] : 0)), + (e.placement = x(t)), + (e.offsets.popper = c(n)), + e + ); + }, + }, + hide: { + order: 800, + enabled: !0, + fn: function (e) { + if (!F(e.instance.modifiers, "hide", "preventOverflow")) return e; + var t = e.offsets.reference, + o = T(e.instance.modifiers, function (e) { + return "preventOverflow" === e.name; + }).boundaries; + if (t.bottom < o.top || t.left > o.right || t.top > o.bottom || t.right < o.left) { + if (!0 === e.hide) return e; + (e.hide = !0), (e.attributes["x-out-of-boundaries"] = ""); + } else { + if (!1 === e.hide) return e; + (e.hide = !1), (e.attributes["x-out-of-boundaries"] = !1); + } + return e; + }, + }, + computeStyle: { + order: 850, + enabled: !0, + fn: function (e, t) { + var o = t.x, + i = t.y, + n = e.offsets.popper, + p = T(e.instance.modifiers, function (e) { + return "applyStyle" === e.name; + }).gpuAcceleration; + void 0 !== p && + console.warn( + "WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!" + ); + var s, + d, + a = void 0 === p ? t.gpuAcceleration : p, + l = r(e.instance.popper), + f = g(l), + m = {position: n.position}, + h = {left: X(n.left), top: X(n.top), bottom: X(n.bottom), right: X(n.right)}, + c = "bottom" === o ? "top" : "bottom", + u = "right" === i ? "left" : "right", + b = W("transform"); + if ( + ((d = "bottom" == c ? -f.height + h.bottom : h.top), + (s = "right" == u ? -f.width + h.right : h.left), + a && b) + ) + (m[b] = "translate3d(" + s + "px, " + d + "px, 0)"), + (m[c] = 0), + (m[u] = 0), + (m.willChange = "transform"); + else { + var w = "bottom" == c ? -1 : 1, + y = "right" == u ? -1 : 1; + (m[c] = d * w), (m[u] = s * y), (m.willChange = c + ", " + u); + } + var E = {"x-placement": e.placement}; + return ( + (e.attributes = se({}, E, e.attributes)), + (e.styles = se({}, m, e.styles)), + (e.arrowStyles = se({}, e.offsets.arrow, e.arrowStyles)), + e + ); + }, + gpuAcceleration: !0, + x: "bottom", + y: "right", + }, + applyStyle: { + order: 900, + enabled: !0, + fn: function (e) { + return ( + Y(e.instance.popper, e.styles), + j(e.instance.popper, e.attributes), + e.arrowElement && + Object.keys(e.arrowStyles).length && + Y(e.arrowElement, e.arrowStyles), + e + ); + }, + onLoad: function (e, t, o, i, n) { + var r = O(n, t, e), + p = v( + o.placement, + r, + t, + e, + o.modifiers.flip.boundariesElement, + o.modifiers.flip.padding + ); + return t.setAttribute("x-placement", p), Y(t, {position: "absolute"}), o; + }, + gpuAcceleration: void 0, + }, + }, + }), + fe + ); +}); //# sourceMappingURL=popper.min.js.map diff --git a/emergency/registry.yml b/emergency/registry.yml index 84951c9af..f1b3fb5fb 100644 --- a/emergency/registry.yml +++ b/emergency/registry.yml @@ -1,56 +1,58 @@ # step 0: clear database? any configs needed? - - name: install pip - apt: - name: python-pip - become: yes - - - name: install django - pip: - name: "{{ item }}" - with_items: - - django - - django-ipware +- name: install pip + apt: + name: python-pip + become: yes + +- name: install django + pip: + name: "{{ item }}" + with_items: + - django + - django-ipware # step 1: dynamically populate registry.service (IF NEEDED?!?) - - name: dynamically write registry.service - lineinfile: - path: "{{ emergency_dir }}/registry/registry.service" - regexp: "{{ item.field }}" - line: "{{ item.line }}" - owner: "{{ username }}" - group: "{{ username }}" - with_items: - - {field: "ExecStart", line: "ExecStart=/bin/bash -c \"python {{ emergency_dir }}/registry/manage.py runserver 9083 >> /var/log/colte/emergencell_registry.log 2>&1\""} - - {field: "User", line: "User={{ username }}"} - - {field: "Group", line: "Group={{ username }}"} - - {field: "WorkingDirectory", line: "WorkingDirectory={{ emergency_dir }}/registry"} - - - name: copy registry.service to /etc/systemd/system - copy: - src: "{{ emergency_dir }}/registry/registry.service" - dest: "/etc/systemd/system/emergencell_registry.service" - mode: 0644 - become: yes - - - name: start registry via systemd - systemd: state=started name=emergencell_registry - become: yes - - - name: copy website configuration file - copy: - src: "{{ emergency_dir }}/registry.conf" - dest: "/etc/nginx/sites-available/registry" - become: yes - - - name: symlink website into sites-enabled - file: - src: "/etc/nginx/sites-available/registry" - dest: "/etc/nginx/sites-enabled/registry" - state: link - become: yes - - - name: restart nginx - service: name=nginx state=restarted - become: yes - +- name: dynamically write registry.service + lineinfile: + path: "{{ emergency_dir }}/registry/registry.service" + regexp: "{{ item.field }}" + line: "{{ item.line }}" + owner: "{{ username }}" + group: "{{ username }}" + with_items: + - { + field: "ExecStart", + line: 'ExecStart=/bin/bash -c "python {{ emergency_dir }}/registry/manage.py runserver 9083 >> /var/log/colte/emergencell_registry.log 2>&1"', + } + - {field: "User", line: "User={{ username }}"} + - {field: "Group", line: "Group={{ username }}"} + - {field: "WorkingDirectory", line: "WorkingDirectory={{ emergency_dir }}/registry"} + +- name: copy registry.service to /etc/systemd/system + copy: + src: "{{ emergency_dir }}/registry/registry.service" + dest: "/etc/systemd/system/emergencell_registry.service" + mode: 0644 + become: yes + +- name: start registry via systemd + systemd: state=started name=emergencell_registry + become: yes + +- name: copy website configuration file + copy: + src: "{{ emergency_dir }}/registry.conf" + dest: "/etc/nginx/sites-available/registry" + become: yes + +- name: symlink website into sites-enabled + file: + src: "/etc/nginx/sites-available/registry" + dest: "/etc/nginx/sites-enabled/registry" + state: link + become: yes + +- name: restart nginx + service: name=nginx state=restarted + become: yes diff --git a/emergency/registry/polls/static/js/bootstrap.js b/emergency/registry/polls/static/js/bootstrap.js index 6d9549d99..ab22183e5 100755 --- a/emergency/registry/polls/static/js/bootstrap.js +++ b/emergency/registry/polls/static/js/bootstrap.js @@ -1,3894 +1,4119 @@ /*! - * Bootstrap v4.0.0 (https://getbootstrap.com) - * Copyright 2011-2018 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('jquery'), require('popper.js')) : - typeof define === 'function' && define.amd ? define(['exports', 'jquery', 'popper.js'], factory) : - (factory((global.bootstrap = {}),global.jQuery,global.Popper)); -}(this, (function (exports,$,Popper) { 'use strict'; - -$ = $ && $.hasOwnProperty('default') ? $['default'] : $; -Popper = Popper && Popper.hasOwnProperty('default') ? Popper['default'] : Popper; - -function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } -} - -function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; -} - -function _extends() { - _extends = Object.assign || function (target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i]; - - for (var key in source) { - if (Object.prototype.hasOwnProperty.call(source, key)) { - target[key] = source[key]; - } - } - } - - return target; - }; - - return _extends.apply(this, arguments); -} - -function _inheritsLoose(subClass, superClass) { - subClass.prototype = Object.create(superClass.prototype); - subClass.prototype.constructor = subClass; - subClass.__proto__ = superClass; -} - -/** - * -------------------------------------------------------------------------- - * Bootstrap (v4.0.0): util.js + * Bootstrap v4.0.0 (https://getbootstrap.com) + * Copyright 2011-2018 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * -------------------------------------------------------------------------- */ - -var Util = function ($$$1) { - /** - * ------------------------------------------------------------------------ - * Private TransitionEnd Helpers - * ------------------------------------------------------------------------ - */ - var transition = false; - var MAX_UID = 1000000; // Shoutout AngusCroll (https://goo.gl/pxwQGp) - - function toType(obj) { - return {}.toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase(); +(function (global, factory) { + typeof exports === "object" && typeof module !== "undefined" + ? factory(exports, require("jquery"), require("popper.js")) + : typeof define === "function" && define.amd + ? define(["exports", "jquery", "popper.js"], factory) + : factory((global.bootstrap = {}), global.jQuery, global.Popper); +})(this, function (exports, $, Popper) { + "use strict"; + + $ = $ && $.hasOwnProperty("default") ? $["default"] : $; + Popper = Popper && Popper.hasOwnProperty("default") ? Popper["default"] : Popper; + + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } } - function getSpecialTransitionEndEvent() { - return { - bindType: transition.end, - delegateType: transition.end, - handle: function handle(event) { - if ($$$1(event.target).is(this)) { - return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params - } - - return undefined; // eslint-disable-line no-undefined - } - }; + function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) _defineProperties(Constructor.prototype, protoProps); + if (staticProps) _defineProperties(Constructor, staticProps); + return Constructor; } - function transitionEndTest() { - if (typeof window !== 'undefined' && window.QUnit) { - return false; - } + function _extends() { + _extends = + Object.assign || + function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; - return { - end: 'transitionend' - }; - } + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } - function transitionEndEmulator(duration) { - var _this = this; + return target; + }; - var called = false; - $$$1(this).one(Util.TRANSITION_END, function () { - called = true; - }); - setTimeout(function () { - if (!called) { - Util.triggerTransitionEnd(_this); - } - }, duration); - return this; + return _extends.apply(this, arguments); } - function setTransitionEndSupport() { - transition = transitionEndTest(); - $$$1.fn.emulateTransitionEnd = transitionEndEmulator; - - if (Util.supportsTransitionEnd()) { - $$$1.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent(); - } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; } - function escapeId(selector) { - // We escape IDs in case of special selectors (selector = '#myId:something') - // $.escapeSelector does not exist in jQuery < 3 - selector = typeof $$$1.escapeSelector === 'function' ? $$$1.escapeSelector(selector).substr(1) : selector.replace(/(:|\.|\[|\]|,|=|@)/g, '\\$1'); - return selector; - } /** * -------------------------------------------------------------------------- - * Public Util Api + * Bootstrap (v4.0.0): util.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * -------------------------------------------------------------------------- */ + var Util = (function ($$$1) { + /** + * ------------------------------------------------------------------------ + * Private TransitionEnd Helpers + * ------------------------------------------------------------------------ + */ + var transition = false; + var MAX_UID = 1000000; // Shoutout AngusCroll (https://goo.gl/pxwQGp) + + function toType(obj) { + return {}.toString + .call(obj) + .match(/\s([a-zA-Z]+)/)[1] + .toLowerCase(); + } + + function getSpecialTransitionEndEvent() { + return { + bindType: transition.end, + delegateType: transition.end, + handle: function handle(event) { + if ($$$1(event.target).is(this)) { + return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params + } - var Util = { - TRANSITION_END: 'bsTransitionEnd', - getUID: function getUID(prefix) { - do { - // eslint-disable-next-line no-bitwise - prefix += ~~(Math.random() * MAX_UID); // "~~" acts like a faster Math.floor() here - } while (document.getElementById(prefix)); + return undefined; // eslint-disable-line no-undefined + }, + }; + } - return prefix; - }, - getSelectorFromElement: function getSelectorFromElement(element) { - var selector = element.getAttribute('data-target'); + function transitionEndTest() { + if (typeof window !== "undefined" && window.QUnit) { + return false; + } - if (!selector || selector === '#') { - selector = element.getAttribute('href') || ''; - } // If it's an ID + return { + end: "transitionend", + }; + } + function transitionEndEmulator(duration) { + var _this = this; - if (selector.charAt(0) === '#') { - selector = escapeId(selector); - } + var called = false; + $$$1(this).one(Util.TRANSITION_END, function () { + called = true; + }); + setTimeout(function () { + if (!called) { + Util.triggerTransitionEnd(_this); + } + }, duration); + return this; + } - try { - var $selector = $$$1(document).find(selector); - return $selector.length > 0 ? selector : null; - } catch (err) { - return null; + function setTransitionEndSupport() { + transition = transitionEndTest(); + $$$1.fn.emulateTransitionEnd = transitionEndEmulator; + + if (Util.supportsTransitionEnd()) { + $$$1.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent(); } - }, - reflow: function reflow(element) { - return element.offsetHeight; - }, - triggerTransitionEnd: function triggerTransitionEnd(element) { - $$$1(element).trigger(transition.end); - }, - supportsTransitionEnd: function supportsTransitionEnd() { - return Boolean(transition); - }, - isElement: function isElement(obj) { - return (obj[0] || obj).nodeType; - }, - typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) { - for (var property in configTypes) { - if (Object.prototype.hasOwnProperty.call(configTypes, property)) { - var expectedTypes = configTypes[property]; - var value = config[property]; - var valueType = value && Util.isElement(value) ? 'element' : toType(value); - - if (!new RegExp(expectedTypes).test(valueType)) { - throw new Error(componentName.toUpperCase() + ": " + ("Option \"" + property + "\" provided type \"" + valueType + "\" ") + ("but expected type \"" + expectedTypes + "\".")); + } + + function escapeId(selector) { + // We escape IDs in case of special selectors (selector = '#myId:something') + // $.escapeSelector does not exist in jQuery < 3 + selector = + typeof $$$1.escapeSelector === "function" + ? $$$1.escapeSelector(selector).substr(1) + : selector.replace(/(:|\.|\[|\]|,|=|@)/g, "\\$1"); + return selector; + } + /** + * -------------------------------------------------------------------------- + * Public Util Api + * -------------------------------------------------------------------------- + */ + + var Util = { + TRANSITION_END: "bsTransitionEnd", + getUID: function getUID(prefix) { + do { + // eslint-disable-next-line no-bitwise + prefix += ~~(Math.random() * MAX_UID); // "~~" acts like a faster Math.floor() here + } while (document.getElementById(prefix)); + + return prefix; + }, + getSelectorFromElement: function getSelectorFromElement(element) { + var selector = element.getAttribute("data-target"); + + if (!selector || selector === "#") { + selector = element.getAttribute("href") || ""; + } // If it's an ID + + if (selector.charAt(0) === "#") { + selector = escapeId(selector); + } + + try { + var $selector = $$$1(document).find(selector); + return $selector.length > 0 ? selector : null; + } catch (err) { + return null; + } + }, + reflow: function reflow(element) { + return element.offsetHeight; + }, + triggerTransitionEnd: function triggerTransitionEnd(element) { + $$$1(element).trigger(transition.end); + }, + supportsTransitionEnd: function supportsTransitionEnd() { + return Boolean(transition); + }, + isElement: function isElement(obj) { + return (obj[0] || obj).nodeType; + }, + typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) { + for (var property in configTypes) { + if (Object.prototype.hasOwnProperty.call(configTypes, property)) { + var expectedTypes = configTypes[property]; + var value = config[property]; + var valueType = value && Util.isElement(value) ? "element" : toType(value); + + if (!new RegExp(expectedTypes).test(valueType)) { + throw new Error( + componentName.toUpperCase() + + ": " + + ('Option "' + property + '" provided type "' + valueType + '" ') + + ('but expected type "' + expectedTypes + '".') + ); + } } } - } - } - }; - setTransitionEndSupport(); - return Util; -}($); - -/** - * -------------------------------------------------------------------------- - * Bootstrap (v4.0.0): alert.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * -------------------------------------------------------------------------- - */ + }, + }; + setTransitionEndSupport(); + return Util; + })($); -var Alert = function ($$$1) { /** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): alert.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- */ - var NAME = 'alert'; - var VERSION = '4.0.0'; - var DATA_KEY = 'bs.alert'; - var EVENT_KEY = "." + DATA_KEY; - var DATA_API_KEY = '.data-api'; - var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; - var TRANSITION_DURATION = 150; - var Selector = { - DISMISS: '[data-dismiss="alert"]' - }; - var Event = { - CLOSE: "close" + EVENT_KEY, - CLOSED: "closed" + EVENT_KEY, - CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY - }; - var ClassName = { - ALERT: 'alert', - FADE: 'fade', - SHOW: 'show' + + var Alert = (function ($$$1) { /** * ------------------------------------------------------------------------ - * Class Definition + * Constants * ------------------------------------------------------------------------ */ + var NAME = "alert"; + var VERSION = "4.0.0"; + var DATA_KEY = "bs.alert"; + var EVENT_KEY = "." + DATA_KEY; + var DATA_API_KEY = ".data-api"; + var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; + var TRANSITION_DURATION = 150; + var Selector = { + DISMISS: '[data-dismiss="alert"]', + }; + var Event = { + CLOSE: "close" + EVENT_KEY, + CLOSED: "closed" + EVENT_KEY, + CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY, + }; + var ClassName = { + ALERT: "alert", + FADE: "fade", + SHOW: "show", + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + }; - }; + var Alert = + /*#__PURE__*/ + (function () { + function Alert(element) { + this._element = element; + } // Getters - var Alert = - /*#__PURE__*/ - function () { - function Alert(element) { - this._element = element; - } // Getters + var _proto = Alert.prototype; + // Public + _proto.close = function close(element) { + element = element || this._element; - var _proto = Alert.prototype; + var rootElement = this._getRootElement(element); - // Public - _proto.close = function close(element) { - element = element || this._element; + var customEvent = this._triggerCloseEvent(rootElement); - var rootElement = this._getRootElement(element); + if (customEvent.isDefaultPrevented()) { + return; + } - var customEvent = this._triggerCloseEvent(rootElement); + this._removeElement(rootElement); + }; - if (customEvent.isDefaultPrevented()) { - return; - } + _proto.dispose = function dispose() { + $$$1.removeData(this._element, DATA_KEY); + this._element = null; + }; // Private - this._removeElement(rootElement); - }; + _proto._getRootElement = function _getRootElement(element) { + var selector = Util.getSelectorFromElement(element); + var parent = false; - _proto.dispose = function dispose() { - $$$1.removeData(this._element, DATA_KEY); - this._element = null; - }; // Private + if (selector) { + parent = $$$1(selector)[0]; + } + if (!parent) { + parent = $$$1(element).closest("." + ClassName.ALERT)[0]; + } - _proto._getRootElement = function _getRootElement(element) { - var selector = Util.getSelectorFromElement(element); - var parent = false; + return parent; + }; - if (selector) { - parent = $$$1(selector)[0]; - } + _proto._triggerCloseEvent = function _triggerCloseEvent(element) { + var closeEvent = $$$1.Event(Event.CLOSE); + $$$1(element).trigger(closeEvent); + return closeEvent; + }; - if (!parent) { - parent = $$$1(element).closest("." + ClassName.ALERT)[0]; - } + _proto._removeElement = function _removeElement(element) { + var _this = this; - return parent; - }; + $$$1(element).removeClass(ClassName.SHOW); - _proto._triggerCloseEvent = function _triggerCloseEvent(element) { - var closeEvent = $$$1.Event(Event.CLOSE); - $$$1(element).trigger(closeEvent); - return closeEvent; - }; + if (!Util.supportsTransitionEnd() || !$$$1(element).hasClass(ClassName.FADE)) { + this._destroyElement(element); - _proto._removeElement = function _removeElement(element) { - var _this = this; + return; + } - $$$1(element).removeClass(ClassName.SHOW); + $$$1(element) + .one(Util.TRANSITION_END, function (event) { + return _this._destroyElement(element, event); + }) + .emulateTransitionEnd(TRANSITION_DURATION); + }; - if (!Util.supportsTransitionEnd() || !$$$1(element).hasClass(ClassName.FADE)) { - this._destroyElement(element); + _proto._destroyElement = function _destroyElement(element) { + $$$1(element).detach().trigger(Event.CLOSED).remove(); + }; // Static - return; - } + Alert._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var $element = $$$1(this); + var data = $element.data(DATA_KEY); - $$$1(element).one(Util.TRANSITION_END, function (event) { - return _this._destroyElement(element, event); - }).emulateTransitionEnd(TRANSITION_DURATION); - }; + if (!data) { + data = new Alert(this); + $element.data(DATA_KEY, data); + } - _proto._destroyElement = function _destroyElement(element) { - $$$1(element).detach().trigger(Event.CLOSED).remove(); - }; // Static + if (config === "close") { + data[config](this); + } + }); + }; + Alert._handleDismiss = function _handleDismiss(alertInstance) { + return function (event) { + if (event) { + event.preventDefault(); + } - Alert._jQueryInterface = function _jQueryInterface(config) { - return this.each(function () { - var $element = $$$1(this); - var data = $element.data(DATA_KEY); + alertInstance.close(this); + }; + }; - if (!data) { - data = new Alert(this); - $element.data(DATA_KEY, data); - } + _createClass(Alert, null, [ + { + key: "VERSION", + get: function get() { + return VERSION; + }, + }, + ]); + return Alert; + })(); + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ - if (config === 'close') { - data[config](this); - } - }); - }; + $$$1(document).on(Event.CLICK_DATA_API, Selector.DISMISS, Alert._handleDismiss(new Alert())); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ - Alert._handleDismiss = function _handleDismiss(alertInstance) { - return function (event) { - if (event) { - event.preventDefault(); - } + $$$1.fn[NAME] = Alert._jQueryInterface; + $$$1.fn[NAME].Constructor = Alert; - alertInstance.close(this); - }; + $$$1.fn[NAME].noConflict = function () { + $$$1.fn[NAME] = JQUERY_NO_CONFLICT; + return Alert._jQueryInterface; }; - _createClass(Alert, null, [{ - key: "VERSION", - get: function get() { - return VERSION; - } - }]); return Alert; - }(); - /** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ + })($); - - $$$1(document).on(Event.CLICK_DATA_API, Selector.DISMISS, Alert._handleDismiss(new Alert())); /** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): button.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- */ - $$$1.fn[NAME] = Alert._jQueryInterface; - $$$1.fn[NAME].Constructor = Alert; - - $$$1.fn[NAME].noConflict = function () { - $$$1.fn[NAME] = JQUERY_NO_CONFLICT; - return Alert._jQueryInterface; - }; - - return Alert; -}($); - -/** - * -------------------------------------------------------------------------- - * Bootstrap (v4.0.0): button.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * -------------------------------------------------------------------------- - */ - -var Button = function ($$$1) { - /** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - var NAME = 'button'; - var VERSION = '4.0.0'; - var DATA_KEY = 'bs.button'; - var EVENT_KEY = "." + DATA_KEY; - var DATA_API_KEY = '.data-api'; - var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; - var ClassName = { - ACTIVE: 'active', - BUTTON: 'btn', - FOCUS: 'focus' - }; - var Selector = { - DATA_TOGGLE_CARROT: '[data-toggle^="button"]', - DATA_TOGGLE: '[data-toggle="buttons"]', - INPUT: 'input', - ACTIVE: '.active', - BUTTON: '.btn' - }; - var Event = { - CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY, - FOCUS_BLUR_DATA_API: "focus" + EVENT_KEY + DATA_API_KEY + " " + ("blur" + EVENT_KEY + DATA_API_KEY) + var Button = (function ($$$1) { /** * ------------------------------------------------------------------------ - * Class Definition + * Constants * ------------------------------------------------------------------------ */ + var NAME = "button"; + var VERSION = "4.0.0"; + var DATA_KEY = "bs.button"; + var EVENT_KEY = "." + DATA_KEY; + var DATA_API_KEY = ".data-api"; + var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; + var ClassName = { + ACTIVE: "active", + BUTTON: "btn", + FOCUS: "focus", + }; + var Selector = { + DATA_TOGGLE_CARROT: '[data-toggle^="button"]', + DATA_TOGGLE: '[data-toggle="buttons"]', + INPUT: "input", + ACTIVE: ".active", + BUTTON: ".btn", + }; + var Event = { + CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY, + FOCUS_BLUR_DATA_API: + "focus" + EVENT_KEY + DATA_API_KEY + " " + ("blur" + EVENT_KEY + DATA_API_KEY), + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + }; - }; - - var Button = - /*#__PURE__*/ - function () { - function Button(element) { - this._element = element; - } // Getters - - - var _proto = Button.prototype; - - // Public - _proto.toggle = function toggle() { - var triggerChangeEvent = true; - var addAriaPressed = true; - var rootElement = $$$1(this._element).closest(Selector.DATA_TOGGLE)[0]; - - if (rootElement) { - var input = $$$1(this._element).find(Selector.INPUT)[0]; - - if (input) { - if (input.type === 'radio') { - if (input.checked && $$$1(this._element).hasClass(ClassName.ACTIVE)) { - triggerChangeEvent = false; - } else { - var activeElement = $$$1(rootElement).find(Selector.ACTIVE)[0]; + var Button = + /*#__PURE__*/ + (function () { + function Button(element) { + this._element = element; + } // Getters + + var _proto = Button.prototype; + + // Public + _proto.toggle = function toggle() { + var triggerChangeEvent = true; + var addAriaPressed = true; + var rootElement = $$$1(this._element).closest(Selector.DATA_TOGGLE)[0]; + + if (rootElement) { + var input = $$$1(this._element).find(Selector.INPUT)[0]; + + if (input) { + if (input.type === "radio") { + if (input.checked && $$$1(this._element).hasClass(ClassName.ACTIVE)) { + triggerChangeEvent = false; + } else { + var activeElement = $$$1(rootElement).find(Selector.ACTIVE)[0]; + + if (activeElement) { + $$$1(activeElement).removeClass(ClassName.ACTIVE); + } + } + } - if (activeElement) { - $$$1(activeElement).removeClass(ClassName.ACTIVE); + if (triggerChangeEvent) { + if ( + input.hasAttribute("disabled") || + rootElement.hasAttribute("disabled") || + input.classList.contains("disabled") || + rootElement.classList.contains("disabled") + ) { + return; + } + + input.checked = !$$$1(this._element).hasClass(ClassName.ACTIVE); + $$$1(input).trigger("change"); } + + input.focus(); + addAriaPressed = false; } } - if (triggerChangeEvent) { - if (input.hasAttribute('disabled') || rootElement.hasAttribute('disabled') || input.classList.contains('disabled') || rootElement.classList.contains('disabled')) { - return; - } + if (addAriaPressed) { + this._element.setAttribute( + "aria-pressed", + !$$$1(this._element).hasClass(ClassName.ACTIVE) + ); + } - input.checked = !$$$1(this._element).hasClass(ClassName.ACTIVE); - $$$1(input).trigger('change'); + if (triggerChangeEvent) { + $$$1(this._element).toggleClass(ClassName.ACTIVE); } + }; - input.focus(); - addAriaPressed = false; - } - } + _proto.dispose = function dispose() { + $$$1.removeData(this._element, DATA_KEY); + this._element = null; + }; // Static - if (addAriaPressed) { - this._element.setAttribute('aria-pressed', !$$$1(this._element).hasClass(ClassName.ACTIVE)); - } + Button._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var data = $$$1(this).data(DATA_KEY); - if (triggerChangeEvent) { - $$$1(this._element).toggleClass(ClassName.ACTIVE); - } - }; + if (!data) { + data = new Button(this); + $$$1(this).data(DATA_KEY, data); + } - _proto.dispose = function dispose() { - $$$1.removeData(this._element, DATA_KEY); - this._element = null; - }; // Static + if (config === "toggle") { + data[config](); + } + }); + }; + _createClass(Button, null, [ + { + key: "VERSION", + get: function get() { + return VERSION; + }, + }, + ]); + return Button; + })(); + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ - Button._jQueryInterface = function _jQueryInterface(config) { - return this.each(function () { - var data = $$$1(this).data(DATA_KEY); + $$$1(document) + .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) { + event.preventDefault(); + var button = event.target; - if (!data) { - data = new Button(this); - $$$1(this).data(DATA_KEY, data); + if (!$$$1(button).hasClass(ClassName.BUTTON)) { + button = $$$1(button).closest(Selector.BUTTON); } - if (config === 'toggle') { - data[config](); - } + Button._jQueryInterface.call($$$1(button), "toggle"); + }) + .on(Event.FOCUS_BLUR_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) { + var button = $$$1(event.target).closest(Selector.BUTTON)[0]; + $$$1(button).toggleClass(ClassName.FOCUS, /^focus(in)?$/.test(event.type)); }); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $$$1.fn[NAME] = Button._jQueryInterface; + $$$1.fn[NAME].Constructor = Button; + + $$$1.fn[NAME].noConflict = function () { + $$$1.fn[NAME] = JQUERY_NO_CONFLICT; + return Button._jQueryInterface; }; - _createClass(Button, null, [{ - key: "VERSION", - get: function get() { - return VERSION; - } - }]); return Button; - }(); + })($); + /** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): carousel.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- */ + var Carousel = (function ($$$1) { + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + var NAME = "carousel"; + var VERSION = "4.0.0"; + var DATA_KEY = "bs.carousel"; + var EVENT_KEY = "." + DATA_KEY; + var DATA_API_KEY = ".data-api"; + var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; + var TRANSITION_DURATION = 600; + var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key + + var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key + + var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch + + var Default = { + interval: 5000, + keyboard: true, + slide: false, + pause: "hover", + wrap: true, + }; + var DefaultType = { + interval: "(number|boolean)", + keyboard: "boolean", + slide: "(boolean|string)", + pause: "(string|boolean)", + wrap: "boolean", + }; + var Direction = { + NEXT: "next", + PREV: "prev", + LEFT: "left", + RIGHT: "right", + }; + var Event = { + SLIDE: "slide" + EVENT_KEY, + SLID: "slid" + EVENT_KEY, + KEYDOWN: "keydown" + EVENT_KEY, + MOUSEENTER: "mouseenter" + EVENT_KEY, + MOUSELEAVE: "mouseleave" + EVENT_KEY, + TOUCHEND: "touchend" + EVENT_KEY, + LOAD_DATA_API: "load" + EVENT_KEY + DATA_API_KEY, + CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY, + }; + var ClassName = { + CAROUSEL: "carousel", + ACTIVE: "active", + SLIDE: "slide", + RIGHT: "carousel-item-right", + LEFT: "carousel-item-left", + NEXT: "carousel-item-next", + PREV: "carousel-item-prev", + ITEM: "carousel-item", + }; + var Selector = { + ACTIVE: ".active", + ACTIVE_ITEM: ".active.carousel-item", + ITEM: ".carousel-item", + NEXT_PREV: ".carousel-item-next, .carousel-item-prev", + INDICATORS: ".carousel-indicators", + DATA_SLIDE: "[data-slide], [data-slide-to]", + DATA_RIDE: '[data-ride="carousel"]', + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + }; - $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) { - event.preventDefault(); - var button = event.target; + var Carousel = + /*#__PURE__*/ + (function () { + function Carousel(element, config) { + this._items = null; + this._interval = null; + this._activeElement = null; + this._isPaused = false; + this._isSliding = false; + this.touchTimeout = null; + this._config = this._getConfig(config); + this._element = $$$1(element)[0]; + this._indicatorsElement = $$$1(this._element).find(Selector.INDICATORS)[0]; + + this._addEventListeners(); + } // Getters + + var _proto = Carousel.prototype; + + // Public + _proto.next = function next() { + if (!this._isSliding) { + this._slide(Direction.NEXT); + } + }; - if (!$$$1(button).hasClass(ClassName.BUTTON)) { - button = $$$1(button).closest(Selector.BUTTON); - } + _proto.nextWhenVisible = function nextWhenVisible() { + // Don't call next when the page isn't visible + // or the carousel or its parent isn't visible + if ( + !document.hidden && + $$$1(this._element).is(":visible") && + $$$1(this._element).css("visibility") !== "hidden" + ) { + this.next(); + } + }; - Button._jQueryInterface.call($$$1(button), 'toggle'); - }).on(Event.FOCUS_BLUR_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) { - var button = $$$1(event.target).closest(Selector.BUTTON)[0]; - $$$1(button).toggleClass(ClassName.FOCUS, /^focus(in)?$/.test(event.type)); - }); - /** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - */ + _proto.prev = function prev() { + if (!this._isSliding) { + this._slide(Direction.PREV); + } + }; - $$$1.fn[NAME] = Button._jQueryInterface; - $$$1.fn[NAME].Constructor = Button; + _proto.pause = function pause(event) { + if (!event) { + this._isPaused = true; + } - $$$1.fn[NAME].noConflict = function () { - $$$1.fn[NAME] = JQUERY_NO_CONFLICT; - return Button._jQueryInterface; - }; + if ($$$1(this._element).find(Selector.NEXT_PREV)[0] && Util.supportsTransitionEnd()) { + Util.triggerTransitionEnd(this._element); + this.cycle(true); + } - return Button; -}($); + clearInterval(this._interval); + this._interval = null; + }; -/** - * -------------------------------------------------------------------------- - * Bootstrap (v4.0.0): carousel.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * -------------------------------------------------------------------------- - */ + _proto.cycle = function cycle(event) { + if (!event) { + this._isPaused = false; + } -var Carousel = function ($$$1) { - /** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - var NAME = 'carousel'; - var VERSION = '4.0.0'; - var DATA_KEY = 'bs.carousel'; - var EVENT_KEY = "." + DATA_KEY; - var DATA_API_KEY = '.data-api'; - var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; - var TRANSITION_DURATION = 600; - var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key - - var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key - - var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch - - var Default = { - interval: 5000, - keyboard: true, - slide: false, - pause: 'hover', - wrap: true - }; - var DefaultType = { - interval: '(number|boolean)', - keyboard: 'boolean', - slide: '(boolean|string)', - pause: '(string|boolean)', - wrap: 'boolean' - }; - var Direction = { - NEXT: 'next', - PREV: 'prev', - LEFT: 'left', - RIGHT: 'right' - }; - var Event = { - SLIDE: "slide" + EVENT_KEY, - SLID: "slid" + EVENT_KEY, - KEYDOWN: "keydown" + EVENT_KEY, - MOUSEENTER: "mouseenter" + EVENT_KEY, - MOUSELEAVE: "mouseleave" + EVENT_KEY, - TOUCHEND: "touchend" + EVENT_KEY, - LOAD_DATA_API: "load" + EVENT_KEY + DATA_API_KEY, - CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY - }; - var ClassName = { - CAROUSEL: 'carousel', - ACTIVE: 'active', - SLIDE: 'slide', - RIGHT: 'carousel-item-right', - LEFT: 'carousel-item-left', - NEXT: 'carousel-item-next', - PREV: 'carousel-item-prev', - ITEM: 'carousel-item' - }; - var Selector = { - ACTIVE: '.active', - ACTIVE_ITEM: '.active.carousel-item', - ITEM: '.carousel-item', - NEXT_PREV: '.carousel-item-next, .carousel-item-prev', - INDICATORS: '.carousel-indicators', - DATA_SLIDE: '[data-slide], [data-slide-to]', - DATA_RIDE: '[data-ride="carousel"]' - /** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ + if (this._interval) { + clearInterval(this._interval); + this._interval = null; + } - }; + if (this._config.interval && !this._isPaused) { + this._interval = setInterval( + (document.visibilityState ? this.nextWhenVisible : this.next).bind(this), + this._config.interval + ); + } + }; - var Carousel = - /*#__PURE__*/ - function () { - function Carousel(element, config) { - this._items = null; - this._interval = null; - this._activeElement = null; - this._isPaused = false; - this._isSliding = false; - this.touchTimeout = null; - this._config = this._getConfig(config); - this._element = $$$1(element)[0]; - this._indicatorsElement = $$$1(this._element).find(Selector.INDICATORS)[0]; + _proto.to = function to(index) { + var _this = this; - this._addEventListeners(); - } // Getters + this._activeElement = $$$1(this._element).find(Selector.ACTIVE_ITEM)[0]; + var activeIndex = this._getItemIndex(this._activeElement); - var _proto = Carousel.prototype; + if (index > this._items.length - 1 || index < 0) { + return; + } - // Public - _proto.next = function next() { - if (!this._isSliding) { - this._slide(Direction.NEXT); - } - }; + if (this._isSliding) { + $$$1(this._element).one(Event.SLID, function () { + return _this.to(index); + }); + return; + } - _proto.nextWhenVisible = function nextWhenVisible() { - // Don't call next when the page isn't visible - // or the carousel or its parent isn't visible - if (!document.hidden && $$$1(this._element).is(':visible') && $$$1(this._element).css('visibility') !== 'hidden') { - this.next(); - } - }; + if (activeIndex === index) { + this.pause(); + this.cycle(); + return; + } - _proto.prev = function prev() { - if (!this._isSliding) { - this._slide(Direction.PREV); - } - }; + var direction = index > activeIndex ? Direction.NEXT : Direction.PREV; - _proto.pause = function pause(event) { - if (!event) { - this._isPaused = true; - } + this._slide(direction, this._items[index]); + }; - if ($$$1(this._element).find(Selector.NEXT_PREV)[0] && Util.supportsTransitionEnd()) { - Util.triggerTransitionEnd(this._element); - this.cycle(true); - } + _proto.dispose = function dispose() { + $$$1(this._element).off(EVENT_KEY); + $$$1.removeData(this._element, DATA_KEY); + this._items = null; + this._config = null; + this._element = null; + this._interval = null; + this._isPaused = null; + this._isSliding = null; + this._activeElement = null; + this._indicatorsElement = null; + }; // Private + + _proto._getConfig = function _getConfig(config) { + config = _extends({}, Default, config); + Util.typeCheckConfig(NAME, config, DefaultType); + return config; + }; - clearInterval(this._interval); - this._interval = null; - }; + _proto._addEventListeners = function _addEventListeners() { + var _this2 = this; - _proto.cycle = function cycle(event) { - if (!event) { - this._isPaused = false; - } + if (this._config.keyboard) { + $$$1(this._element).on(Event.KEYDOWN, function (event) { + return _this2._keydown(event); + }); + } - if (this._interval) { - clearInterval(this._interval); - this._interval = null; - } + if (this._config.pause === "hover") { + $$$1(this._element) + .on(Event.MOUSEENTER, function (event) { + return _this2.pause(event); + }) + .on(Event.MOUSELEAVE, function (event) { + return _this2.cycle(event); + }); + + if ("ontouchstart" in document.documentElement) { + // If it's a touch-enabled device, mouseenter/leave are fired as + // part of the mouse compatibility events on first tap - the carousel + // would stop cycling until user tapped out of it; + // here, we listen for touchend, explicitly pause the carousel + // (as if it's the second time we tap on it, mouseenter compat event + // is NOT fired) and after a timeout (to allow for mouse compatibility + // events to fire) we explicitly restart cycling + $$$1(this._element).on(Event.TOUCHEND, function () { + _this2.pause(); + + if (_this2.touchTimeout) { + clearTimeout(_this2.touchTimeout); + } + + _this2.touchTimeout = setTimeout(function (event) { + return _this2.cycle(event); + }, TOUCHEVENT_COMPAT_WAIT + _this2._config.interval); + }); + } + } + }; - if (this._config.interval && !this._isPaused) { - this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval); - } - }; + _proto._keydown = function _keydown(event) { + if (/input|textarea/i.test(event.target.tagName)) { + return; + } - _proto.to = function to(index) { - var _this = this; + switch (event.which) { + case ARROW_LEFT_KEYCODE: + event.preventDefault(); + this.prev(); + break; - this._activeElement = $$$1(this._element).find(Selector.ACTIVE_ITEM)[0]; + case ARROW_RIGHT_KEYCODE: + event.preventDefault(); + this.next(); + break; - var activeIndex = this._getItemIndex(this._activeElement); + default: + } + }; - if (index > this._items.length - 1 || index < 0) { - return; - } + _proto._getItemIndex = function _getItemIndex(element) { + this._items = $$$1.makeArray($$$1(element).parent().find(Selector.ITEM)); + return this._items.indexOf(element); + }; - if (this._isSliding) { - $$$1(this._element).one(Event.SLID, function () { - return _this.to(index); - }); - return; - } + _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) { + var isNextDirection = direction === Direction.NEXT; + var isPrevDirection = direction === Direction.PREV; - if (activeIndex === index) { - this.pause(); - this.cycle(); - return; - } + var activeIndex = this._getItemIndex(activeElement); - var direction = index > activeIndex ? Direction.NEXT : Direction.PREV; + var lastItemIndex = this._items.length - 1; + var isGoingToWrap = + (isPrevDirection && activeIndex === 0) || + (isNextDirection && activeIndex === lastItemIndex); - this._slide(direction, this._items[index]); - }; + if (isGoingToWrap && !this._config.wrap) { + return activeElement; + } - _proto.dispose = function dispose() { - $$$1(this._element).off(EVENT_KEY); - $$$1.removeData(this._element, DATA_KEY); - this._items = null; - this._config = null; - this._element = null; - this._interval = null; - this._isPaused = null; - this._isSliding = null; - this._activeElement = null; - this._indicatorsElement = null; - }; // Private - - - _proto._getConfig = function _getConfig(config) { - config = _extends({}, Default, config); - Util.typeCheckConfig(NAME, config, DefaultType); - return config; - }; + var delta = direction === Direction.PREV ? -1 : 1; + var itemIndex = (activeIndex + delta) % this._items.length; + return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex]; + }; - _proto._addEventListeners = function _addEventListeners() { - var _this2 = this; + _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) { + var targetIndex = this._getItemIndex(relatedTarget); - if (this._config.keyboard) { - $$$1(this._element).on(Event.KEYDOWN, function (event) { - return _this2._keydown(event); - }); - } + var fromIndex = this._getItemIndex($$$1(this._element).find(Selector.ACTIVE_ITEM)[0]); - if (this._config.pause === 'hover') { - $$$1(this._element).on(Event.MOUSEENTER, function (event) { - return _this2.pause(event); - }).on(Event.MOUSELEAVE, function (event) { - return _this2.cycle(event); - }); + var slideEvent = $$$1.Event(Event.SLIDE, { + relatedTarget: relatedTarget, + direction: eventDirectionName, + from: fromIndex, + to: targetIndex, + }); + $$$1(this._element).trigger(slideEvent); + return slideEvent; + }; - if ('ontouchstart' in document.documentElement) { - // If it's a touch-enabled device, mouseenter/leave are fired as - // part of the mouse compatibility events on first tap - the carousel - // would stop cycling until user tapped out of it; - // here, we listen for touchend, explicitly pause the carousel - // (as if it's the second time we tap on it, mouseenter compat event - // is NOT fired) and after a timeout (to allow for mouse compatibility - // events to fire) we explicitly restart cycling - $$$1(this._element).on(Event.TOUCHEND, function () { - _this2.pause(); + _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) { + if (this._indicatorsElement) { + $$$1(this._indicatorsElement).find(Selector.ACTIVE).removeClass(ClassName.ACTIVE); - if (_this2.touchTimeout) { - clearTimeout(_this2.touchTimeout); - } + var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)]; - _this2.touchTimeout = setTimeout(function (event) { - return _this2.cycle(event); - }, TOUCHEVENT_COMPAT_WAIT + _this2._config.interval); - }); - } - } - }; + if (nextIndicator) { + $$$1(nextIndicator).addClass(ClassName.ACTIVE); + } + } + }; - _proto._keydown = function _keydown(event) { - if (/input|textarea/i.test(event.target.tagName)) { - return; - } + _proto._slide = function _slide(direction, element) { + var _this3 = this; - switch (event.which) { - case ARROW_LEFT_KEYCODE: - event.preventDefault(); - this.prev(); - break; + var activeElement = $$$1(this._element).find(Selector.ACTIVE_ITEM)[0]; - case ARROW_RIGHT_KEYCODE: - event.preventDefault(); - this.next(); - break; + var activeElementIndex = this._getItemIndex(activeElement); - default: - } - }; + var nextElement = + element || (activeElement && this._getItemByDirection(direction, activeElement)); - _proto._getItemIndex = function _getItemIndex(element) { - this._items = $$$1.makeArray($$$1(element).parent().find(Selector.ITEM)); - return this._items.indexOf(element); - }; + var nextElementIndex = this._getItemIndex(nextElement); - _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) { - var isNextDirection = direction === Direction.NEXT; - var isPrevDirection = direction === Direction.PREV; + var isCycling = Boolean(this._interval); + var directionalClassName; + var orderClassName; + var eventDirectionName; - var activeIndex = this._getItemIndex(activeElement); + if (direction === Direction.NEXT) { + directionalClassName = ClassName.LEFT; + orderClassName = ClassName.NEXT; + eventDirectionName = Direction.LEFT; + } else { + directionalClassName = ClassName.RIGHT; + orderClassName = ClassName.PREV; + eventDirectionName = Direction.RIGHT; + } - var lastItemIndex = this._items.length - 1; - var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex; + if (nextElement && $$$1(nextElement).hasClass(ClassName.ACTIVE)) { + this._isSliding = false; + return; + } - if (isGoingToWrap && !this._config.wrap) { - return activeElement; - } + var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName); - var delta = direction === Direction.PREV ? -1 : 1; - var itemIndex = (activeIndex + delta) % this._items.length; - return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex]; - }; + if (slideEvent.isDefaultPrevented()) { + return; + } - _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) { - var targetIndex = this._getItemIndex(relatedTarget); + if (!activeElement || !nextElement) { + // Some weirdness is happening, so we bail + return; + } - var fromIndex = this._getItemIndex($$$1(this._element).find(Selector.ACTIVE_ITEM)[0]); + this._isSliding = true; - var slideEvent = $$$1.Event(Event.SLIDE, { - relatedTarget: relatedTarget, - direction: eventDirectionName, - from: fromIndex, - to: targetIndex - }); - $$$1(this._element).trigger(slideEvent); - return slideEvent; - }; + if (isCycling) { + this.pause(); + } - _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) { - if (this._indicatorsElement) { - $$$1(this._indicatorsElement).find(Selector.ACTIVE).removeClass(ClassName.ACTIVE); + this._setActiveIndicatorElement(nextElement); - var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)]; + var slidEvent = $$$1.Event(Event.SLID, { + relatedTarget: nextElement, + direction: eventDirectionName, + from: activeElementIndex, + to: nextElementIndex, + }); - if (nextIndicator) { - $$$1(nextIndicator).addClass(ClassName.ACTIVE); - } - } - }; + if (Util.supportsTransitionEnd() && $$$1(this._element).hasClass(ClassName.SLIDE)) { + $$$1(nextElement).addClass(orderClassName); + Util.reflow(nextElement); + $$$1(activeElement).addClass(directionalClassName); + $$$1(nextElement).addClass(directionalClassName); + $$$1(activeElement) + .one(Util.TRANSITION_END, function () { + $$$1(nextElement) + .removeClass(directionalClassName + " " + orderClassName) + .addClass(ClassName.ACTIVE); + $$$1(activeElement).removeClass( + ClassName.ACTIVE + " " + orderClassName + " " + directionalClassName + ); + _this3._isSliding = false; + setTimeout(function () { + return $$$1(_this3._element).trigger(slidEvent); + }, 0); + }) + .emulateTransitionEnd(TRANSITION_DURATION); + } else { + $$$1(activeElement).removeClass(ClassName.ACTIVE); + $$$1(nextElement).addClass(ClassName.ACTIVE); + this._isSliding = false; + $$$1(this._element).trigger(slidEvent); + } - _proto._slide = function _slide(direction, element) { - var _this3 = this; + if (isCycling) { + this.cycle(); + } + }; // Static - var activeElement = $$$1(this._element).find(Selector.ACTIVE_ITEM)[0]; + Carousel._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var data = $$$1(this).data(DATA_KEY); - var activeElementIndex = this._getItemIndex(activeElement); + var _config = _extends({}, Default, $$$1(this).data()); - var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement); + if (typeof config === "object") { + _config = _extends({}, _config, config); + } - var nextElementIndex = this._getItemIndex(nextElement); + var action = typeof config === "string" ? config : _config.slide; - var isCycling = Boolean(this._interval); - var directionalClassName; - var orderClassName; - var eventDirectionName; + if (!data) { + data = new Carousel(this, _config); + $$$1(this).data(DATA_KEY, data); + } - if (direction === Direction.NEXT) { - directionalClassName = ClassName.LEFT; - orderClassName = ClassName.NEXT; - eventDirectionName = Direction.LEFT; - } else { - directionalClassName = ClassName.RIGHT; - orderClassName = ClassName.PREV; - eventDirectionName = Direction.RIGHT; - } + if (typeof config === "number") { + data.to(config); + } else if (typeof action === "string") { + if (typeof data[action] === "undefined") { + throw new TypeError('No method named "' + action + '"'); + } - if (nextElement && $$$1(nextElement).hasClass(ClassName.ACTIVE)) { - this._isSliding = false; - return; - } + data[action](); + } else if (_config.interval) { + data.pause(); + data.cycle(); + } + }); + }; - var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName); + Carousel._dataApiClickHandler = function _dataApiClickHandler(event) { + var selector = Util.getSelectorFromElement(this); - if (slideEvent.isDefaultPrevented()) { - return; - } + if (!selector) { + return; + } - if (!activeElement || !nextElement) { - // Some weirdness is happening, so we bail - return; - } + var target = $$$1(selector)[0]; - this._isSliding = true; + if (!target || !$$$1(target).hasClass(ClassName.CAROUSEL)) { + return; + } - if (isCycling) { - this.pause(); - } + var config = _extends({}, $$$1(target).data(), $$$1(this).data()); + var slideIndex = this.getAttribute("data-slide-to"); - this._setActiveIndicatorElement(nextElement); + if (slideIndex) { + config.interval = false; + } - var slidEvent = $$$1.Event(Event.SLID, { - relatedTarget: nextElement, - direction: eventDirectionName, - from: activeElementIndex, - to: nextElementIndex - }); + Carousel._jQueryInterface.call($$$1(target), config); - if (Util.supportsTransitionEnd() && $$$1(this._element).hasClass(ClassName.SLIDE)) { - $$$1(nextElement).addClass(orderClassName); - Util.reflow(nextElement); - $$$1(activeElement).addClass(directionalClassName); - $$$1(nextElement).addClass(directionalClassName); - $$$1(activeElement).one(Util.TRANSITION_END, function () { - $$$1(nextElement).removeClass(directionalClassName + " " + orderClassName).addClass(ClassName.ACTIVE); - $$$1(activeElement).removeClass(ClassName.ACTIVE + " " + orderClassName + " " + directionalClassName); - _this3._isSliding = false; - setTimeout(function () { - return $$$1(_this3._element).trigger(slidEvent); - }, 0); - }).emulateTransitionEnd(TRANSITION_DURATION); - } else { - $$$1(activeElement).removeClass(ClassName.ACTIVE); - $$$1(nextElement).addClass(ClassName.ACTIVE); - this._isSliding = false; - $$$1(this._element).trigger(slidEvent); - } + if (slideIndex) { + $$$1(target).data(DATA_KEY).to(slideIndex); + } - if (isCycling) { - this.cycle(); - } - }; // Static + event.preventDefault(); + }; + _createClass(Carousel, null, [ + { + key: "VERSION", + get: function get() { + return VERSION; + }, + }, + { + key: "Default", + get: function get() { + return Default; + }, + }, + ]); + return Carousel; + })(); + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ - Carousel._jQueryInterface = function _jQueryInterface(config) { - return this.each(function () { - var data = $$$1(this).data(DATA_KEY); + $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler); + $$$1(window).on(Event.LOAD_DATA_API, function () { + $$$1(Selector.DATA_RIDE).each(function () { + var $carousel = $$$1(this); - var _config = _extends({}, Default, $$$1(this).data()); + Carousel._jQueryInterface.call($carousel, $carousel.data()); + }); + }); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ - if (typeof config === 'object') { - _config = _extends({}, _config, config); - } + $$$1.fn[NAME] = Carousel._jQueryInterface; + $$$1.fn[NAME].Constructor = Carousel; - var action = typeof config === 'string' ? config : _config.slide; + $$$1.fn[NAME].noConflict = function () { + $$$1.fn[NAME] = JQUERY_NO_CONFLICT; + return Carousel._jQueryInterface; + }; - if (!data) { - data = new Carousel(this, _config); - $$$1(this).data(DATA_KEY, data); - } + return Carousel; + })($); - if (typeof config === 'number') { - data.to(config); - } else if (typeof action === 'string') { - if (typeof data[action] === 'undefined') { - throw new TypeError("No method named \"" + action + "\""); - } + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): collapse.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ - data[action](); - } else if (_config.interval) { - data.pause(); - data.cycle(); - } - }); + var Collapse = (function ($$$1) { + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + var NAME = "collapse"; + var VERSION = "4.0.0"; + var DATA_KEY = "bs.collapse"; + var EVENT_KEY = "." + DATA_KEY; + var DATA_API_KEY = ".data-api"; + var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; + var TRANSITION_DURATION = 600; + var Default = { + toggle: true, + parent: "", + }; + var DefaultType = { + toggle: "boolean", + parent: "(string|element)", + }; + var Event = { + SHOW: "show" + EVENT_KEY, + SHOWN: "shown" + EVENT_KEY, + HIDE: "hide" + EVENT_KEY, + HIDDEN: "hidden" + EVENT_KEY, + CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY, + }; + var ClassName = { + SHOW: "show", + COLLAPSE: "collapse", + COLLAPSING: "collapsing", + COLLAPSED: "collapsed", + }; + var Dimension = { + WIDTH: "width", + HEIGHT: "height", + }; + var Selector = { + ACTIVES: ".show, .collapsing", + DATA_TOGGLE: '[data-toggle="collapse"]', + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ }; - Carousel._dataApiClickHandler = function _dataApiClickHandler(event) { - var selector = Util.getSelectorFromElement(this); - - if (!selector) { - return; - } + var Collapse = + /*#__PURE__*/ + (function () { + function Collapse(element, config) { + this._isTransitioning = false; + this._element = element; + this._config = this._getConfig(config); + this._triggerArray = $$$1.makeArray( + $$$1( + '[data-toggle="collapse"][href="#' + + element.id + + '"],' + + ('[data-toggle="collapse"][data-target="#' + element.id + '"]') + ) + ); + var tabToggles = $$$1(Selector.DATA_TOGGLE); + + for (var i = 0; i < tabToggles.length; i++) { + var elem = tabToggles[i]; + var selector = Util.getSelectorFromElement(elem); + + if (selector !== null && $$$1(selector).filter(element).length > 0) { + this._selector = selector; + + this._triggerArray.push(elem); + } + } - var target = $$$1(selector)[0]; + this._parent = this._config.parent ? this._getParent() : null; - if (!target || !$$$1(target).hasClass(ClassName.CAROUSEL)) { - return; - } + if (!this._config.parent) { + this._addAriaAndCollapsedClass(this._element, this._triggerArray); + } - var config = _extends({}, $$$1(target).data(), $$$1(this).data()); - var slideIndex = this.getAttribute('data-slide-to'); + if (this._config.toggle) { + this.toggle(); + } + } // Getters - if (slideIndex) { - config.interval = false; - } + var _proto = Collapse.prototype; - Carousel._jQueryInterface.call($$$1(target), config); + // Public + _proto.toggle = function toggle() { + if ($$$1(this._element).hasClass(ClassName.SHOW)) { + this.hide(); + } else { + this.show(); + } + }; - if (slideIndex) { - $$$1(target).data(DATA_KEY).to(slideIndex); - } + _proto.show = function show() { + var _this = this; - event.preventDefault(); - }; + if (this._isTransitioning || $$$1(this._element).hasClass(ClassName.SHOW)) { + return; + } - _createClass(Carousel, null, [{ - key: "VERSION", - get: function get() { - return VERSION; - } - }, { - key: "Default", - get: function get() { - return Default; - } - }]); - return Carousel; - }(); - /** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ + var actives; + var activesData; + if (this._parent) { + actives = $$$1.makeArray( + $$$1(this._parent) + .find(Selector.ACTIVES) + .filter('[data-parent="' + this._config.parent + '"]') + ); - $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler); - $$$1(window).on(Event.LOAD_DATA_API, function () { - $$$1(Selector.DATA_RIDE).each(function () { - var $carousel = $$$1(this); + if (actives.length === 0) { + actives = null; + } + } - Carousel._jQueryInterface.call($carousel, $carousel.data()); - }); - }); - /** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - */ + if (actives) { + activesData = $$$1(actives).not(this._selector).data(DATA_KEY); - $$$1.fn[NAME] = Carousel._jQueryInterface; - $$$1.fn[NAME].Constructor = Carousel; + if (activesData && activesData._isTransitioning) { + return; + } + } - $$$1.fn[NAME].noConflict = function () { - $$$1.fn[NAME] = JQUERY_NO_CONFLICT; - return Carousel._jQueryInterface; - }; + var startEvent = $$$1.Event(Event.SHOW); + $$$1(this._element).trigger(startEvent); - return Carousel; -}($); + if (startEvent.isDefaultPrevented()) { + return; + } -/** - * -------------------------------------------------------------------------- - * Bootstrap (v4.0.0): collapse.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * -------------------------------------------------------------------------- - */ + if (actives) { + Collapse._jQueryInterface.call($$$1(actives).not(this._selector), "hide"); -var Collapse = function ($$$1) { - /** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - var NAME = 'collapse'; - var VERSION = '4.0.0'; - var DATA_KEY = 'bs.collapse'; - var EVENT_KEY = "." + DATA_KEY; - var DATA_API_KEY = '.data-api'; - var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; - var TRANSITION_DURATION = 600; - var Default = { - toggle: true, - parent: '' - }; - var DefaultType = { - toggle: 'boolean', - parent: '(string|element)' - }; - var Event = { - SHOW: "show" + EVENT_KEY, - SHOWN: "shown" + EVENT_KEY, - HIDE: "hide" + EVENT_KEY, - HIDDEN: "hidden" + EVENT_KEY, - CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY - }; - var ClassName = { - SHOW: 'show', - COLLAPSE: 'collapse', - COLLAPSING: 'collapsing', - COLLAPSED: 'collapsed' - }; - var Dimension = { - WIDTH: 'width', - HEIGHT: 'height' - }; - var Selector = { - ACTIVES: '.show, .collapsing', - DATA_TOGGLE: '[data-toggle="collapse"]' - /** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ + if (!activesData) { + $$$1(actives).data(DATA_KEY, null); + } + } - }; + var dimension = this._getDimension(); - var Collapse = - /*#__PURE__*/ - function () { - function Collapse(element, config) { - this._isTransitioning = false; - this._element = element; - this._config = this._getConfig(config); - this._triggerArray = $$$1.makeArray($$$1("[data-toggle=\"collapse\"][href=\"#" + element.id + "\"]," + ("[data-toggle=\"collapse\"][data-target=\"#" + element.id + "\"]"))); - var tabToggles = $$$1(Selector.DATA_TOGGLE); + $$$1(this._element).removeClass(ClassName.COLLAPSE).addClass(ClassName.COLLAPSING); + this._element.style[dimension] = 0; - for (var i = 0; i < tabToggles.length; i++) { - var elem = tabToggles[i]; - var selector = Util.getSelectorFromElement(elem); + if (this._triggerArray.length > 0) { + $$$1(this._triggerArray).removeClass(ClassName.COLLAPSED).attr("aria-expanded", true); + } - if (selector !== null && $$$1(selector).filter(element).length > 0) { - this._selector = selector; + this.setTransitioning(true); - this._triggerArray.push(elem); - } - } + var complete = function complete() { + $$$1(_this._element) + .removeClass(ClassName.COLLAPSING) + .addClass(ClassName.COLLAPSE) + .addClass(ClassName.SHOW); + _this._element.style[dimension] = ""; - this._parent = this._config.parent ? this._getParent() : null; + _this.setTransitioning(false); - if (!this._config.parent) { - this._addAriaAndCollapsedClass(this._element, this._triggerArray); - } + $$$1(_this._element).trigger(Event.SHOWN); + }; - if (this._config.toggle) { - this.toggle(); - } - } // Getters + if (!Util.supportsTransitionEnd()) { + complete(); + return; + } + var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1); + var scrollSize = "scroll" + capitalizedDimension; + $$$1(this._element) + .one(Util.TRANSITION_END, complete) + .emulateTransitionEnd(TRANSITION_DURATION); + this._element.style[dimension] = this._element[scrollSize] + "px"; + }; - var _proto = Collapse.prototype; + _proto.hide = function hide() { + var _this2 = this; - // Public - _proto.toggle = function toggle() { - if ($$$1(this._element).hasClass(ClassName.SHOW)) { - this.hide(); - } else { - this.show(); - } - }; + if (this._isTransitioning || !$$$1(this._element).hasClass(ClassName.SHOW)) { + return; + } - _proto.show = function show() { - var _this = this; + var startEvent = $$$1.Event(Event.HIDE); + $$$1(this._element).trigger(startEvent); - if (this._isTransitioning || $$$1(this._element).hasClass(ClassName.SHOW)) { - return; - } + if (startEvent.isDefaultPrevented()) { + return; + } - var actives; - var activesData; + var dimension = this._getDimension(); - if (this._parent) { - actives = $$$1.makeArray($$$1(this._parent).find(Selector.ACTIVES).filter("[data-parent=\"" + this._config.parent + "\"]")); + this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + "px"; + Util.reflow(this._element); + $$$1(this._element) + .addClass(ClassName.COLLAPSING) + .removeClass(ClassName.COLLAPSE) + .removeClass(ClassName.SHOW); - if (actives.length === 0) { - actives = null; - } - } + if (this._triggerArray.length > 0) { + for (var i = 0; i < this._triggerArray.length; i++) { + var trigger = this._triggerArray[i]; + var selector = Util.getSelectorFromElement(trigger); - if (actives) { - activesData = $$$1(actives).not(this._selector).data(DATA_KEY); + if (selector !== null) { + var $elem = $$$1(selector); - if (activesData && activesData._isTransitioning) { - return; - } - } + if (!$elem.hasClass(ClassName.SHOW)) { + $$$1(trigger).addClass(ClassName.COLLAPSED).attr("aria-expanded", false); + } + } + } + } - var startEvent = $$$1.Event(Event.SHOW); - $$$1(this._element).trigger(startEvent); + this.setTransitioning(true); - if (startEvent.isDefaultPrevented()) { - return; - } + var complete = function complete() { + _this2.setTransitioning(false); - if (actives) { - Collapse._jQueryInterface.call($$$1(actives).not(this._selector), 'hide'); + $$$1(_this2._element) + .removeClass(ClassName.COLLAPSING) + .addClass(ClassName.COLLAPSE) + .trigger(Event.HIDDEN); + }; - if (!activesData) { - $$$1(actives).data(DATA_KEY, null); - } - } + this._element.style[dimension] = ""; - var dimension = this._getDimension(); + if (!Util.supportsTransitionEnd()) { + complete(); + return; + } - $$$1(this._element).removeClass(ClassName.COLLAPSE).addClass(ClassName.COLLAPSING); - this._element.style[dimension] = 0; + $$$1(this._element) + .one(Util.TRANSITION_END, complete) + .emulateTransitionEnd(TRANSITION_DURATION); + }; - if (this._triggerArray.length > 0) { - $$$1(this._triggerArray).removeClass(ClassName.COLLAPSED).attr('aria-expanded', true); - } + _proto.setTransitioning = function setTransitioning(isTransitioning) { + this._isTransitioning = isTransitioning; + }; - this.setTransitioning(true); + _proto.dispose = function dispose() { + $$$1.removeData(this._element, DATA_KEY); + this._config = null; + this._parent = null; + this._element = null; + this._triggerArray = null; + this._isTransitioning = null; + }; // Private + + _proto._getConfig = function _getConfig(config) { + config = _extends({}, Default, config); + config.toggle = Boolean(config.toggle); // Coerce string values + + Util.typeCheckConfig(NAME, config, DefaultType); + return config; + }; - var complete = function complete() { - $$$1(_this._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).addClass(ClassName.SHOW); - _this._element.style[dimension] = ''; + _proto._getDimension = function _getDimension() { + var hasWidth = $$$1(this._element).hasClass(Dimension.WIDTH); + return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT; + }; - _this.setTransitioning(false); + _proto._getParent = function _getParent() { + var _this3 = this; - $$$1(_this._element).trigger(Event.SHOWN); - }; + var parent = null; - if (!Util.supportsTransitionEnd()) { - complete(); - return; - } + if (Util.isElement(this._config.parent)) { + parent = this._config.parent; // It's a jQuery object - var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1); - var scrollSize = "scroll" + capitalizedDimension; - $$$1(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); - this._element.style[dimension] = this._element[scrollSize] + "px"; - }; + if (typeof this._config.parent.jquery !== "undefined") { + parent = this._config.parent[0]; + } + } else { + parent = $$$1(this._config.parent)[0]; + } - _proto.hide = function hide() { - var _this2 = this; + var selector = '[data-toggle="collapse"][data-parent="' + this._config.parent + '"]'; + $$$1(parent) + .find(selector) + .each(function (i, element) { + _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]); + }); + return parent; + }; - if (this._isTransitioning || !$$$1(this._element).hasClass(ClassName.SHOW)) { - return; - } + _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass( + element, + triggerArray + ) { + if (element) { + var isOpen = $$$1(element).hasClass(ClassName.SHOW); + + if (triggerArray.length > 0) { + $$$1(triggerArray) + .toggleClass(ClassName.COLLAPSED, !isOpen) + .attr("aria-expanded", isOpen); + } + } + }; // Static - var startEvent = $$$1.Event(Event.HIDE); - $$$1(this._element).trigger(startEvent); + Collapse._getTargetFromElement = function _getTargetFromElement(element) { + var selector = Util.getSelectorFromElement(element); + return selector ? $$$1(selector)[0] : null; + }; - if (startEvent.isDefaultPrevented()) { - return; - } + Collapse._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var $this = $$$1(this); + var data = $this.data(DATA_KEY); - var dimension = this._getDimension(); + var _config = _extends({}, Default, $this.data(), typeof config === "object" && config); - this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + "px"; - Util.reflow(this._element); - $$$1(this._element).addClass(ClassName.COLLAPSING).removeClass(ClassName.COLLAPSE).removeClass(ClassName.SHOW); + if (!data && _config.toggle && /show|hide/.test(config)) { + _config.toggle = false; + } - if (this._triggerArray.length > 0) { - for (var i = 0; i < this._triggerArray.length; i++) { - var trigger = this._triggerArray[i]; - var selector = Util.getSelectorFromElement(trigger); + if (!data) { + data = new Collapse(this, _config); + $this.data(DATA_KEY, data); + } - if (selector !== null) { - var $elem = $$$1(selector); + if (typeof config === "string") { + if (typeof data[config] === "undefined") { + throw new TypeError('No method named "' + config + '"'); + } - if (!$elem.hasClass(ClassName.SHOW)) { - $$$1(trigger).addClass(ClassName.COLLAPSED).attr('aria-expanded', false); + data[config](); } - } - } - } - - this.setTransitioning(true); + }); + }; - var complete = function complete() { - _this2.setTransitioning(false); + _createClass(Collapse, null, [ + { + key: "VERSION", + get: function get() { + return VERSION; + }, + }, + { + key: "Default", + get: function get() { + return Default; + }, + }, + ]); + return Collapse; + })(); + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ - $$$1(_this2._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).trigger(Event.HIDDEN); - }; + $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { + // preventDefault only for elements (which change the URL) not inside the collapsible element + if (event.currentTarget.tagName === "A") { + event.preventDefault(); + } - this._element.style[dimension] = ''; + var $trigger = $$$1(this); + var selector = Util.getSelectorFromElement(this); + $$$1(selector).each(function () { + var $target = $$$1(this); + var data = $target.data(DATA_KEY); + var config = data ? "toggle" : $trigger.data(); - if (!Util.supportsTransitionEnd()) { - complete(); - return; - } + Collapse._jQueryInterface.call($target, config); + }); + }); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ - $$$1(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); - }; + $$$1.fn[NAME] = Collapse._jQueryInterface; + $$$1.fn[NAME].Constructor = Collapse; - _proto.setTransitioning = function setTransitioning(isTransitioning) { - this._isTransitioning = isTransitioning; + $$$1.fn[NAME].noConflict = function () { + $$$1.fn[NAME] = JQUERY_NO_CONFLICT; + return Collapse._jQueryInterface; }; - _proto.dispose = function dispose() { - $$$1.removeData(this._element, DATA_KEY); - this._config = null; - this._parent = null; - this._element = null; - this._triggerArray = null; - this._isTransitioning = null; - }; // Private - + return Collapse; + })($); - _proto._getConfig = function _getConfig(config) { - config = _extends({}, Default, config); - config.toggle = Boolean(config.toggle); // Coerce string values + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): dropdown.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ - Util.typeCheckConfig(NAME, config, DefaultType); - return config; + var Dropdown = (function ($$$1) { + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + var NAME = "dropdown"; + var VERSION = "4.0.0"; + var DATA_KEY = "bs.dropdown"; + var EVENT_KEY = "." + DATA_KEY; + var DATA_API_KEY = ".data-api"; + var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; + var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key + + var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key + + var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key + + var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key + + var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key + + var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse) + + var REGEXP_KEYDOWN = new RegExp( + ARROW_UP_KEYCODE + "|" + ARROW_DOWN_KEYCODE + "|" + ESCAPE_KEYCODE + ); + var Event = { + HIDE: "hide" + EVENT_KEY, + HIDDEN: "hidden" + EVENT_KEY, + SHOW: "show" + EVENT_KEY, + SHOWN: "shown" + EVENT_KEY, + CLICK: "click" + EVENT_KEY, + CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY, + KEYDOWN_DATA_API: "keydown" + EVENT_KEY + DATA_API_KEY, + KEYUP_DATA_API: "keyup" + EVENT_KEY + DATA_API_KEY, }; - - _proto._getDimension = function _getDimension() { - var hasWidth = $$$1(this._element).hasClass(Dimension.WIDTH); - return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT; + var ClassName = { + DISABLED: "disabled", + SHOW: "show", + DROPUP: "dropup", + DROPRIGHT: "dropright", + DROPLEFT: "dropleft", + MENURIGHT: "dropdown-menu-right", + MENULEFT: "dropdown-menu-left", + POSITION_STATIC: "position-static", + }; + var Selector = { + DATA_TOGGLE: '[data-toggle="dropdown"]', + FORM_CHILD: ".dropdown form", + MENU: ".dropdown-menu", + NAVBAR_NAV: ".navbar-nav", + VISIBLE_ITEMS: ".dropdown-menu .dropdown-item:not(.disabled)", + }; + var AttachmentMap = { + TOP: "top-start", + TOPEND: "top-end", + BOTTOM: "bottom-start", + BOTTOMEND: "bottom-end", + RIGHT: "right-start", + RIGHTEND: "right-end", + LEFT: "left-start", + LEFTEND: "left-end", + }; + var Default = { + offset: 0, + flip: true, + boundary: "scrollParent", + }; + var DefaultType = { + offset: "(number|string|function)", + flip: "boolean", + boundary: "(string|element)", + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ }; - _proto._getParent = function _getParent() { - var _this3 = this; + var Dropdown = + /*#__PURE__*/ + (function () { + function Dropdown(element, config) { + this._element = element; + this._popper = null; + this._config = this._getConfig(config); + this._menu = this._getMenuElement(); + this._inNavbar = this._detectNavbar(); - var parent = null; + this._addEventListeners(); + } // Getters - if (Util.isElement(this._config.parent)) { - parent = this._config.parent; // It's a jQuery object + var _proto = Dropdown.prototype; - if (typeof this._config.parent.jquery !== 'undefined') { - parent = this._config.parent[0]; - } - } else { - parent = $$$1(this._config.parent)[0]; - } + // Public + _proto.toggle = function toggle() { + if (this._element.disabled || $$$1(this._element).hasClass(ClassName.DISABLED)) { + return; + } - var selector = "[data-toggle=\"collapse\"][data-parent=\"" + this._config.parent + "\"]"; - $$$1(parent).find(selector).each(function (i, element) { - _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]); - }); - return parent; - }; + var parent = Dropdown._getParentFromElement(this._element); - _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) { - if (element) { - var isOpen = $$$1(element).hasClass(ClassName.SHOW); + var isActive = $$$1(this._menu).hasClass(ClassName.SHOW); - if (triggerArray.length > 0) { - $$$1(triggerArray).toggleClass(ClassName.COLLAPSED, !isOpen).attr('aria-expanded', isOpen); - } - } - }; // Static + Dropdown._clearMenus(); + if (isActive) { + return; + } - Collapse._getTargetFromElement = function _getTargetFromElement(element) { - var selector = Util.getSelectorFromElement(element); - return selector ? $$$1(selector)[0] : null; - }; + var relatedTarget = { + relatedTarget: this._element, + }; + var showEvent = $$$1.Event(Event.SHOW, relatedTarget); + $$$1(parent).trigger(showEvent); - Collapse._jQueryInterface = function _jQueryInterface(config) { - return this.each(function () { - var $this = $$$1(this); - var data = $this.data(DATA_KEY); + if (showEvent.isDefaultPrevented()) { + return; + } // Disable totally Popper.js for Dropdown in Navbar + + if (!this._inNavbar) { + /** + * Check for Popper dependency + * Popper - https://popper.js.org + */ + if (typeof Popper === "undefined") { + throw new TypeError("Bootstrap dropdown require Popper.js (https://popper.js.org)"); + } - var _config = _extends({}, Default, $this.data(), typeof config === 'object' && config); + var element = this._element; // For dropup with alignment we use the parent as popper container - if (!data && _config.toggle && /show|hide/.test(config)) { - _config.toggle = false; - } + if ($$$1(parent).hasClass(ClassName.DROPUP)) { + if ( + $$$1(this._menu).hasClass(ClassName.MENULEFT) || + $$$1(this._menu).hasClass(ClassName.MENURIGHT) + ) { + element = parent; + } + } // If boundary is not `scrollParent`, then set position to `static` + // to allow the menu to "escape" the scroll parent's boundaries + // https://github.com/twbs/bootstrap/issues/24251 - if (!data) { - data = new Collapse(this, _config); - $this.data(DATA_KEY, data); - } + if (this._config.boundary !== "scrollParent") { + $$$1(parent).addClass(ClassName.POSITION_STATIC); + } - if (typeof config === 'string') { - if (typeof data[config] === 'undefined') { - throw new TypeError("No method named \"" + config + "\""); + this._popper = new Popper(element, this._menu, this._getPopperConfig()); + } // If this is a touch-enabled device we add extra + // empty mouseover listeners to the body's immediate children; + // only needed because of broken event delegation on iOS + // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html + + if ( + "ontouchstart" in document.documentElement && + $$$1(parent).closest(Selector.NAVBAR_NAV).length === 0 + ) { + $$$1("body").children().on("mouseover", null, $$$1.noop); } - data[config](); - } - }); - }; + this._element.focus(); - _createClass(Collapse, null, [{ - key: "VERSION", - get: function get() { - return VERSION; - } - }, { - key: "Default", - get: function get() { - return Default; - } - }]); - return Collapse; - }(); - /** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ + this._element.setAttribute("aria-expanded", true); + $$$1(this._menu).toggleClass(ClassName.SHOW); + $$$1(parent).toggleClass(ClassName.SHOW).trigger($$$1.Event(Event.SHOWN, relatedTarget)); + }; - $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { - // preventDefault only for elements (which change the URL) not inside the collapsible element - if (event.currentTarget.tagName === 'A') { - event.preventDefault(); - } + _proto.dispose = function dispose() { + $$$1.removeData(this._element, DATA_KEY); + $$$1(this._element).off(EVENT_KEY); + this._element = null; + this._menu = null; - var $trigger = $$$1(this); - var selector = Util.getSelectorFromElement(this); - $$$1(selector).each(function () { - var $target = $$$1(this); - var data = $target.data(DATA_KEY); - var config = data ? 'toggle' : $trigger.data(); + if (this._popper !== null) { + this._popper.destroy(); - Collapse._jQueryInterface.call($target, config); - }); - }); - /** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - */ - - $$$1.fn[NAME] = Collapse._jQueryInterface; - $$$1.fn[NAME].Constructor = Collapse; + this._popper = null; + } + }; - $$$1.fn[NAME].noConflict = function () { - $$$1.fn[NAME] = JQUERY_NO_CONFLICT; - return Collapse._jQueryInterface; - }; + _proto.update = function update() { + this._inNavbar = this._detectNavbar(); - return Collapse; -}($); + if (this._popper !== null) { + this._popper.scheduleUpdate(); + } + }; // Private -/** - * -------------------------------------------------------------------------- - * Bootstrap (v4.0.0): dropdown.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * -------------------------------------------------------------------------- - */ + _proto._addEventListeners = function _addEventListeners() { + var _this = this; -var Dropdown = function ($$$1) { - /** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - var NAME = 'dropdown'; - var VERSION = '4.0.0'; - var DATA_KEY = 'bs.dropdown'; - var EVENT_KEY = "." + DATA_KEY; - var DATA_API_KEY = '.data-api'; - var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; - var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key - - var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key - - var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key - - var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key - - var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key - - var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse) - - var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + "|" + ARROW_DOWN_KEYCODE + "|" + ESCAPE_KEYCODE); - var Event = { - HIDE: "hide" + EVENT_KEY, - HIDDEN: "hidden" + EVENT_KEY, - SHOW: "show" + EVENT_KEY, - SHOWN: "shown" + EVENT_KEY, - CLICK: "click" + EVENT_KEY, - CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY, - KEYDOWN_DATA_API: "keydown" + EVENT_KEY + DATA_API_KEY, - KEYUP_DATA_API: "keyup" + EVENT_KEY + DATA_API_KEY - }; - var ClassName = { - DISABLED: 'disabled', - SHOW: 'show', - DROPUP: 'dropup', - DROPRIGHT: 'dropright', - DROPLEFT: 'dropleft', - MENURIGHT: 'dropdown-menu-right', - MENULEFT: 'dropdown-menu-left', - POSITION_STATIC: 'position-static' - }; - var Selector = { - DATA_TOGGLE: '[data-toggle="dropdown"]', - FORM_CHILD: '.dropdown form', - MENU: '.dropdown-menu', - NAVBAR_NAV: '.navbar-nav', - VISIBLE_ITEMS: '.dropdown-menu .dropdown-item:not(.disabled)' - }; - var AttachmentMap = { - TOP: 'top-start', - TOPEND: 'top-end', - BOTTOM: 'bottom-start', - BOTTOMEND: 'bottom-end', - RIGHT: 'right-start', - RIGHTEND: 'right-end', - LEFT: 'left-start', - LEFTEND: 'left-end' - }; - var Default = { - offset: 0, - flip: true, - boundary: 'scrollParent' - }; - var DefaultType = { - offset: '(number|string|function)', - flip: 'boolean', - boundary: '(string|element)' - /** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ + $$$1(this._element).on(Event.CLICK, function (event) { + event.preventDefault(); + event.stopPropagation(); - }; + _this.toggle(); + }); + }; - var Dropdown = - /*#__PURE__*/ - function () { - function Dropdown(element, config) { - this._element = element; - this._popper = null; - this._config = this._getConfig(config); - this._menu = this._getMenuElement(); - this._inNavbar = this._detectNavbar(); + _proto._getConfig = function _getConfig(config) { + config = _extends({}, this.constructor.Default, $$$1(this._element).data(), config); + Util.typeCheckConfig(NAME, config, this.constructor.DefaultType); + return config; + }; - this._addEventListeners(); - } // Getters + _proto._getMenuElement = function _getMenuElement() { + if (!this._menu) { + var parent = Dropdown._getParentFromElement(this._element); + this._menu = $$$1(parent).find(Selector.MENU)[0]; + } - var _proto = Dropdown.prototype; + return this._menu; + }; - // Public - _proto.toggle = function toggle() { - if (this._element.disabled || $$$1(this._element).hasClass(ClassName.DISABLED)) { - return; - } + _proto._getPlacement = function _getPlacement() { + var $parentDropdown = $$$1(this._element).parent(); + var placement = AttachmentMap.BOTTOM; // Handle dropup - var parent = Dropdown._getParentFromElement(this._element); + if ($parentDropdown.hasClass(ClassName.DROPUP)) { + placement = AttachmentMap.TOP; - var isActive = $$$1(this._menu).hasClass(ClassName.SHOW); + if ($$$1(this._menu).hasClass(ClassName.MENURIGHT)) { + placement = AttachmentMap.TOPEND; + } + } else if ($parentDropdown.hasClass(ClassName.DROPRIGHT)) { + placement = AttachmentMap.RIGHT; + } else if ($parentDropdown.hasClass(ClassName.DROPLEFT)) { + placement = AttachmentMap.LEFT; + } else if ($$$1(this._menu).hasClass(ClassName.MENURIGHT)) { + placement = AttachmentMap.BOTTOMEND; + } - Dropdown._clearMenus(); + return placement; + }; - if (isActive) { - return; - } + _proto._detectNavbar = function _detectNavbar() { + return $$$1(this._element).closest(".navbar").length > 0; + }; - var relatedTarget = { - relatedTarget: this._element - }; - var showEvent = $$$1.Event(Event.SHOW, relatedTarget); - $$$1(parent).trigger(showEvent); + _proto._getPopperConfig = function _getPopperConfig() { + var _this2 = this; - if (showEvent.isDefaultPrevented()) { - return; - } // Disable totally Popper.js for Dropdown in Navbar + var offsetConf = {}; + if (typeof this._config.offset === "function") { + offsetConf.fn = function (data) { + data.offsets = _extends({}, data.offsets, _this2._config.offset(data.offsets) || {}); + return data; + }; + } else { + offsetConf.offset = this._config.offset; + } - if (!this._inNavbar) { - /** - * Check for Popper dependency - * Popper - https://popper.js.org - */ - if (typeof Popper === 'undefined') { - throw new TypeError('Bootstrap dropdown require Popper.js (https://popper.js.org)'); - } + var popperConfig = { + placement: this._getPlacement(), + modifiers: { + offset: offsetConf, + flip: { + enabled: this._config.flip, + }, + preventOverflow: { + boundariesElement: this._config.boundary, + }, + }, + }; + return popperConfig; + }; // Static - var element = this._element; // For dropup with alignment we use the parent as popper container + Dropdown._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var data = $$$1(this).data(DATA_KEY); - if ($$$1(parent).hasClass(ClassName.DROPUP)) { - if ($$$1(this._menu).hasClass(ClassName.MENULEFT) || $$$1(this._menu).hasClass(ClassName.MENURIGHT)) { - element = parent; - } - } // If boundary is not `scrollParent`, then set position to `static` - // to allow the menu to "escape" the scroll parent's boundaries - // https://github.com/twbs/bootstrap/issues/24251 + var _config = typeof config === "object" ? config : null; + if (!data) { + data = new Dropdown(this, _config); + $$$1(this).data(DATA_KEY, data); + } - if (this._config.boundary !== 'scrollParent') { - $$$1(parent).addClass(ClassName.POSITION_STATIC); - } + if (typeof config === "string") { + if (typeof data[config] === "undefined") { + throw new TypeError('No method named "' + config + '"'); + } - this._popper = new Popper(element, this._menu, this._getPopperConfig()); - } // If this is a touch-enabled device we add extra - // empty mouseover listeners to the body's immediate children; - // only needed because of broken event delegation on iOS - // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html + data[config](); + } + }); + }; + Dropdown._clearMenus = function _clearMenus(event) { + if ( + event && + (event.which === RIGHT_MOUSE_BUTTON_WHICH || + (event.type === "keyup" && event.which !== TAB_KEYCODE)) + ) { + return; + } - if ('ontouchstart' in document.documentElement && $$$1(parent).closest(Selector.NAVBAR_NAV).length === 0) { - $$$1('body').children().on('mouseover', null, $$$1.noop); - } + var toggles = $$$1.makeArray($$$1(Selector.DATA_TOGGLE)); - this._element.focus(); + for (var i = 0; i < toggles.length; i++) { + var parent = Dropdown._getParentFromElement(toggles[i]); - this._element.setAttribute('aria-expanded', true); + var context = $$$1(toggles[i]).data(DATA_KEY); + var relatedTarget = { + relatedTarget: toggles[i], + }; - $$$1(this._menu).toggleClass(ClassName.SHOW); - $$$1(parent).toggleClass(ClassName.SHOW).trigger($$$1.Event(Event.SHOWN, relatedTarget)); - }; + if (!context) { + continue; + } - _proto.dispose = function dispose() { - $$$1.removeData(this._element, DATA_KEY); - $$$1(this._element).off(EVENT_KEY); - this._element = null; - this._menu = null; + var dropdownMenu = context._menu; - if (this._popper !== null) { - this._popper.destroy(); + if (!$$$1(parent).hasClass(ClassName.SHOW)) { + continue; + } - this._popper = null; - } - }; + if ( + event && + ((event.type === "click" && /input|textarea/i.test(event.target.tagName)) || + (event.type === "keyup" && event.which === TAB_KEYCODE)) && + $$$1.contains(parent, event.target) + ) { + continue; + } - _proto.update = function update() { - this._inNavbar = this._detectNavbar(); + var hideEvent = $$$1.Event(Event.HIDE, relatedTarget); + $$$1(parent).trigger(hideEvent); - if (this._popper !== null) { - this._popper.scheduleUpdate(); - } - }; // Private + if (hideEvent.isDefaultPrevented()) { + continue; + } // If this is a touch-enabled device we remove the extra + // empty mouseover listeners we added for iOS support + if ("ontouchstart" in document.documentElement) { + $$$1("body").children().off("mouseover", null, $$$1.noop); + } - _proto._addEventListeners = function _addEventListeners() { - var _this = this; + toggles[i].setAttribute("aria-expanded", "false"); + $$$1(dropdownMenu).removeClass(ClassName.SHOW); + $$$1(parent) + .removeClass(ClassName.SHOW) + .trigger($$$1.Event(Event.HIDDEN, relatedTarget)); + } + }; - $$$1(this._element).on(Event.CLICK, function (event) { - event.preventDefault(); - event.stopPropagation(); + Dropdown._getParentFromElement = function _getParentFromElement(element) { + var parent; + var selector = Util.getSelectorFromElement(element); - _this.toggle(); - }); - }; + if (selector) { + parent = $$$1(selector)[0]; + } - _proto._getConfig = function _getConfig(config) { - config = _extends({}, this.constructor.Default, $$$1(this._element).data(), config); - Util.typeCheckConfig(NAME, config, this.constructor.DefaultType); - return config; - }; + return parent || element.parentNode; + }; // eslint-disable-next-line complexity + + Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) { + // If not input/textarea: + // - And not a key in REGEXP_KEYDOWN => not a dropdown command + // If input/textarea: + // - If space key => not a dropdown command + // - If key is other than escape + // - If key is not up or down => not a dropdown command + // - If trigger inside the menu => not a dropdown command + if ( + /input|textarea/i.test(event.target.tagName) + ? event.which === SPACE_KEYCODE || + (event.which !== ESCAPE_KEYCODE && + ((event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE) || + $$$1(event.target).closest(Selector.MENU).length)) + : !REGEXP_KEYDOWN.test(event.which) + ) { + return; + } - _proto._getMenuElement = function _getMenuElement() { - if (!this._menu) { - var parent = Dropdown._getParentFromElement(this._element); + event.preventDefault(); + event.stopPropagation(); - this._menu = $$$1(parent).find(Selector.MENU)[0]; - } + if (this.disabled || $$$1(this).hasClass(ClassName.DISABLED)) { + return; + } - return this._menu; - }; + var parent = Dropdown._getParentFromElement(this); - _proto._getPlacement = function _getPlacement() { - var $parentDropdown = $$$1(this._element).parent(); - var placement = AttachmentMap.BOTTOM; // Handle dropup + var isActive = $$$1(parent).hasClass(ClassName.SHOW); - if ($parentDropdown.hasClass(ClassName.DROPUP)) { - placement = AttachmentMap.TOP; + if ( + (!isActive && (event.which !== ESCAPE_KEYCODE || event.which !== SPACE_KEYCODE)) || + (isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) + ) { + if (event.which === ESCAPE_KEYCODE) { + var toggle = $$$1(parent).find(Selector.DATA_TOGGLE)[0]; + $$$1(toggle).trigger("focus"); + } - if ($$$1(this._menu).hasClass(ClassName.MENURIGHT)) { - placement = AttachmentMap.TOPEND; - } - } else if ($parentDropdown.hasClass(ClassName.DROPRIGHT)) { - placement = AttachmentMap.RIGHT; - } else if ($parentDropdown.hasClass(ClassName.DROPLEFT)) { - placement = AttachmentMap.LEFT; - } else if ($$$1(this._menu).hasClass(ClassName.MENURIGHT)) { - placement = AttachmentMap.BOTTOMEND; - } + $$$1(this).trigger("click"); + return; + } - return placement; - }; + var items = $$$1(parent).find(Selector.VISIBLE_ITEMS).get(); - _proto._detectNavbar = function _detectNavbar() { - return $$$1(this._element).closest('.navbar').length > 0; - }; + if (items.length === 0) { + return; + } - _proto._getPopperConfig = function _getPopperConfig() { - var _this2 = this; + var index = items.indexOf(event.target); - var offsetConf = {}; + if (event.which === ARROW_UP_KEYCODE && index > 0) { + // Up + index--; + } - if (typeof this._config.offset === 'function') { - offsetConf.fn = function (data) { - data.offsets = _extends({}, data.offsets, _this2._config.offset(data.offsets) || {}); - return data; - }; - } else { - offsetConf.offset = this._config.offset; - } + if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) { + // Down + index++; + } - var popperConfig = { - placement: this._getPlacement(), - modifiers: { - offset: offsetConf, - flip: { - enabled: this._config.flip - }, - preventOverflow: { - boundariesElement: this._config.boundary + if (index < 0) { + index = 0; } - } - }; - return popperConfig; - }; // Static + items[index].focus(); + }; - Dropdown._jQueryInterface = function _jQueryInterface(config) { - return this.each(function () { - var data = $$$1(this).data(DATA_KEY); + _createClass(Dropdown, null, [ + { + key: "VERSION", + get: function get() { + return VERSION; + }, + }, + { + key: "Default", + get: function get() { + return Default; + }, + }, + { + key: "DefaultType", + get: function get() { + return DefaultType; + }, + }, + ]); + return Dropdown; + })(); + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ - var _config = typeof config === 'object' ? config : null; + $$$1(document) + .on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler) + .on(Event.KEYDOWN_DATA_API, Selector.MENU, Dropdown._dataApiKeydownHandler) + .on(Event.CLICK_DATA_API + " " + Event.KEYUP_DATA_API, Dropdown._clearMenus) + .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { + event.preventDefault(); + event.stopPropagation(); - if (!data) { - data = new Dropdown(this, _config); - $$$1(this).data(DATA_KEY, data); - } + Dropdown._jQueryInterface.call($$$1(this), "toggle"); + }) + .on(Event.CLICK_DATA_API, Selector.FORM_CHILD, function (e) { + e.stopPropagation(); + }); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ - if (typeof config === 'string') { - if (typeof data[config] === 'undefined') { - throw new TypeError("No method named \"" + config + "\""); - } + $$$1.fn[NAME] = Dropdown._jQueryInterface; + $$$1.fn[NAME].Constructor = Dropdown; - data[config](); - } - }); + $$$1.fn[NAME].noConflict = function () { + $$$1.fn[NAME] = JQUERY_NO_CONFLICT; + return Dropdown._jQueryInterface; }; - Dropdown._clearMenus = function _clearMenus(event) { - if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) { - return; - } + return Dropdown; + })($, Popper); - var toggles = $$$1.makeArray($$$1(Selector.DATA_TOGGLE)); + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): modal.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ - for (var i = 0; i < toggles.length; i++) { - var parent = Dropdown._getParentFromElement(toggles[i]); + var Modal = (function ($$$1) { + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + var NAME = "modal"; + var VERSION = "4.0.0"; + var DATA_KEY = "bs.modal"; + var EVENT_KEY = "." + DATA_KEY; + var DATA_API_KEY = ".data-api"; + var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; + var TRANSITION_DURATION = 300; + var BACKDROP_TRANSITION_DURATION = 150; + var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key + + var Default = { + backdrop: true, + keyboard: true, + focus: true, + show: true, + }; + var DefaultType = { + backdrop: "(boolean|string)", + keyboard: "boolean", + focus: "boolean", + show: "boolean", + }; + var Event = { + HIDE: "hide" + EVENT_KEY, + HIDDEN: "hidden" + EVENT_KEY, + SHOW: "show" + EVENT_KEY, + SHOWN: "shown" + EVENT_KEY, + FOCUSIN: "focusin" + EVENT_KEY, + RESIZE: "resize" + EVENT_KEY, + CLICK_DISMISS: "click.dismiss" + EVENT_KEY, + KEYDOWN_DISMISS: "keydown.dismiss" + EVENT_KEY, + MOUSEUP_DISMISS: "mouseup.dismiss" + EVENT_KEY, + MOUSEDOWN_DISMISS: "mousedown.dismiss" + EVENT_KEY, + CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY, + }; + var ClassName = { + SCROLLBAR_MEASURER: "modal-scrollbar-measure", + BACKDROP: "modal-backdrop", + OPEN: "modal-open", + FADE: "fade", + SHOW: "show", + }; + var Selector = { + DIALOG: ".modal-dialog", + DATA_TOGGLE: '[data-toggle="modal"]', + DATA_DISMISS: '[data-dismiss="modal"]', + FIXED_CONTENT: ".fixed-top, .fixed-bottom, .is-fixed, .sticky-top", + STICKY_CONTENT: ".sticky-top", + NAVBAR_TOGGLER: ".navbar-toggler", + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + }; - var context = $$$1(toggles[i]).data(DATA_KEY); - var relatedTarget = { - relatedTarget: toggles[i] + var Modal = + /*#__PURE__*/ + (function () { + function Modal(element, config) { + this._config = this._getConfig(config); + this._element = element; + this._dialog = $$$1(element).find(Selector.DIALOG)[0]; + this._backdrop = null; + this._isShown = false; + this._isBodyOverflowing = false; + this._ignoreBackdropClick = false; + this._originalBodyPadding = 0; + this._scrollbarWidth = 0; + } // Getters + + var _proto = Modal.prototype; + + // Public + _proto.toggle = function toggle(relatedTarget) { + return this._isShown ? this.hide() : this.show(relatedTarget); }; - if (!context) { - continue; - } - - var dropdownMenu = context._menu; + _proto.show = function show(relatedTarget) { + var _this = this; - if (!$$$1(parent).hasClass(ClassName.SHOW)) { - continue; - } + if (this._isTransitioning || this._isShown) { + return; + } - if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $$$1.contains(parent, event.target)) { - continue; - } + if (Util.supportsTransitionEnd() && $$$1(this._element).hasClass(ClassName.FADE)) { + this._isTransitioning = true; + } - var hideEvent = $$$1.Event(Event.HIDE, relatedTarget); - $$$1(parent).trigger(hideEvent); + var showEvent = $$$1.Event(Event.SHOW, { + relatedTarget: relatedTarget, + }); + $$$1(this._element).trigger(showEvent); - if (hideEvent.isDefaultPrevented()) { - continue; - } // If this is a touch-enabled device we remove the extra - // empty mouseover listeners we added for iOS support + if (this._isShown || showEvent.isDefaultPrevented()) { + return; + } + this._isShown = true; - if ('ontouchstart' in document.documentElement) { - $$$1('body').children().off('mouseover', null, $$$1.noop); - } + this._checkScrollbar(); - toggles[i].setAttribute('aria-expanded', 'false'); - $$$1(dropdownMenu).removeClass(ClassName.SHOW); - $$$1(parent).removeClass(ClassName.SHOW).trigger($$$1.Event(Event.HIDDEN, relatedTarget)); - } - }; + this._setScrollbar(); - Dropdown._getParentFromElement = function _getParentFromElement(element) { - var parent; - var selector = Util.getSelectorFromElement(element); + this._adjustDialog(); - if (selector) { - parent = $$$1(selector)[0]; - } + $$$1(document.body).addClass(ClassName.OPEN); - return parent || element.parentNode; - }; // eslint-disable-next-line complexity + this._setEscapeEvent(); + this._setResizeEvent(); - Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) { - // If not input/textarea: - // - And not a key in REGEXP_KEYDOWN => not a dropdown command - // If input/textarea: - // - If space key => not a dropdown command - // - If key is other than escape - // - If key is not up or down => not a dropdown command - // - If trigger inside the menu => not a dropdown command - if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $$$1(event.target).closest(Selector.MENU).length) : !REGEXP_KEYDOWN.test(event.which)) { - return; - } + $$$1(this._element).on(Event.CLICK_DISMISS, Selector.DATA_DISMISS, function (event) { + return _this.hide(event); + }); + $$$1(this._dialog).on(Event.MOUSEDOWN_DISMISS, function () { + $$$1(_this._element).one(Event.MOUSEUP_DISMISS, function (event) { + if ($$$1(event.target).is(_this._element)) { + _this._ignoreBackdropClick = true; + } + }); + }); - event.preventDefault(); - event.stopPropagation(); + this._showBackdrop(function () { + return _this._showElement(relatedTarget); + }); + }; - if (this.disabled || $$$1(this).hasClass(ClassName.DISABLED)) { - return; - } + _proto.hide = function hide(event) { + var _this2 = this; - var parent = Dropdown._getParentFromElement(this); + if (event) { + event.preventDefault(); + } - var isActive = $$$1(parent).hasClass(ClassName.SHOW); + if (this._isTransitioning || !this._isShown) { + return; + } - if (!isActive && (event.which !== ESCAPE_KEYCODE || event.which !== SPACE_KEYCODE) || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) { - if (event.which === ESCAPE_KEYCODE) { - var toggle = $$$1(parent).find(Selector.DATA_TOGGLE)[0]; - $$$1(toggle).trigger('focus'); - } + var hideEvent = $$$1.Event(Event.HIDE); + $$$1(this._element).trigger(hideEvent); - $$$1(this).trigger('click'); - return; - } + if (!this._isShown || hideEvent.isDefaultPrevented()) { + return; + } - var items = $$$1(parent).find(Selector.VISIBLE_ITEMS).get(); + this._isShown = false; + var transition = + Util.supportsTransitionEnd() && $$$1(this._element).hasClass(ClassName.FADE); - if (items.length === 0) { - return; - } + if (transition) { + this._isTransitioning = true; + } - var index = items.indexOf(event.target); + this._setEscapeEvent(); - if (event.which === ARROW_UP_KEYCODE && index > 0) { - // Up - index--; - } + this._setResizeEvent(); - if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) { - // Down - index++; - } + $$$1(document).off(Event.FOCUSIN); + $$$1(this._element).removeClass(ClassName.SHOW); + $$$1(this._element).off(Event.CLICK_DISMISS); + $$$1(this._dialog).off(Event.MOUSEDOWN_DISMISS); - if (index < 0) { - index = 0; - } + if (transition) { + $$$1(this._element) + .one(Util.TRANSITION_END, function (event) { + return _this2._hideModal(event); + }) + .emulateTransitionEnd(TRANSITION_DURATION); + } else { + this._hideModal(); + } + }; - items[index].focus(); - }; + _proto.dispose = function dispose() { + $$$1.removeData(this._element, DATA_KEY); + $$$1(window, document, this._element, this._backdrop).off(EVENT_KEY); + this._config = null; + this._element = null; + this._dialog = null; + this._backdrop = null; + this._isShown = null; + this._isBodyOverflowing = null; + this._ignoreBackdropClick = null; + this._scrollbarWidth = null; + }; - _createClass(Dropdown, null, [{ - key: "VERSION", - get: function get() { - return VERSION; - } - }, { - key: "Default", - get: function get() { - return Default; - } - }, { - key: "DefaultType", - get: function get() { - return DefaultType; - } - }]); - return Dropdown; - }(); - /** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ + _proto.handleUpdate = function handleUpdate() { + this._adjustDialog(); + }; // Private + _proto._getConfig = function _getConfig(config) { + config = _extends({}, Default, config); + Util.typeCheckConfig(NAME, config, DefaultType); + return config; + }; - $$$1(document).on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_API, Selector.MENU, Dropdown._dataApiKeydownHandler).on(Event.CLICK_DATA_API + " " + Event.KEYUP_DATA_API, Dropdown._clearMenus).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { - event.preventDefault(); - event.stopPropagation(); + _proto._showElement = function _showElement(relatedTarget) { + var _this3 = this; - Dropdown._jQueryInterface.call($$$1(this), 'toggle'); - }).on(Event.CLICK_DATA_API, Selector.FORM_CHILD, function (e) { - e.stopPropagation(); - }); - /** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - */ + var transition = + Util.supportsTransitionEnd() && $$$1(this._element).hasClass(ClassName.FADE); - $$$1.fn[NAME] = Dropdown._jQueryInterface; - $$$1.fn[NAME].Constructor = Dropdown; + if ( + !this._element.parentNode || + this._element.parentNode.nodeType !== Node.ELEMENT_NODE + ) { + // Don't move modal's DOM position + document.body.appendChild(this._element); + } - $$$1.fn[NAME].noConflict = function () { - $$$1.fn[NAME] = JQUERY_NO_CONFLICT; - return Dropdown._jQueryInterface; - }; + this._element.style.display = "block"; - return Dropdown; -}($, Popper); + this._element.removeAttribute("aria-hidden"); -/** - * -------------------------------------------------------------------------- - * Bootstrap (v4.0.0): modal.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * -------------------------------------------------------------------------- - */ + this._element.scrollTop = 0; -var Modal = function ($$$1) { - /** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - var NAME = 'modal'; - var VERSION = '4.0.0'; - var DATA_KEY = 'bs.modal'; - var EVENT_KEY = "." + DATA_KEY; - var DATA_API_KEY = '.data-api'; - var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; - var TRANSITION_DURATION = 300; - var BACKDROP_TRANSITION_DURATION = 150; - var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key - - var Default = { - backdrop: true, - keyboard: true, - focus: true, - show: true - }; - var DefaultType = { - backdrop: '(boolean|string)', - keyboard: 'boolean', - focus: 'boolean', - show: 'boolean' - }; - var Event = { - HIDE: "hide" + EVENT_KEY, - HIDDEN: "hidden" + EVENT_KEY, - SHOW: "show" + EVENT_KEY, - SHOWN: "shown" + EVENT_KEY, - FOCUSIN: "focusin" + EVENT_KEY, - RESIZE: "resize" + EVENT_KEY, - CLICK_DISMISS: "click.dismiss" + EVENT_KEY, - KEYDOWN_DISMISS: "keydown.dismiss" + EVENT_KEY, - MOUSEUP_DISMISS: "mouseup.dismiss" + EVENT_KEY, - MOUSEDOWN_DISMISS: "mousedown.dismiss" + EVENT_KEY, - CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY - }; - var ClassName = { - SCROLLBAR_MEASURER: 'modal-scrollbar-measure', - BACKDROP: 'modal-backdrop', - OPEN: 'modal-open', - FADE: 'fade', - SHOW: 'show' - }; - var Selector = { - DIALOG: '.modal-dialog', - DATA_TOGGLE: '[data-toggle="modal"]', - DATA_DISMISS: '[data-dismiss="modal"]', - FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top', - STICKY_CONTENT: '.sticky-top', - NAVBAR_TOGGLER: '.navbar-toggler' - /** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ + if (transition) { + Util.reflow(this._element); + } - }; - - var Modal = - /*#__PURE__*/ - function () { - function Modal(element, config) { - this._config = this._getConfig(config); - this._element = element; - this._dialog = $$$1(element).find(Selector.DIALOG)[0]; - this._backdrop = null; - this._isShown = false; - this._isBodyOverflowing = false; - this._ignoreBackdropClick = false; - this._originalBodyPadding = 0; - this._scrollbarWidth = 0; - } // Getters - - - var _proto = Modal.prototype; - - // Public - _proto.toggle = function toggle(relatedTarget) { - return this._isShown ? this.hide() : this.show(relatedTarget); - }; + $$$1(this._element).addClass(ClassName.SHOW); - _proto.show = function show(relatedTarget) { - var _this = this; + if (this._config.focus) { + this._enforceFocus(); + } - if (this._isTransitioning || this._isShown) { - return; - } + var shownEvent = $$$1.Event(Event.SHOWN, { + relatedTarget: relatedTarget, + }); - if (Util.supportsTransitionEnd() && $$$1(this._element).hasClass(ClassName.FADE)) { - this._isTransitioning = true; - } + var transitionComplete = function transitionComplete() { + if (_this3._config.focus) { + _this3._element.focus(); + } - var showEvent = $$$1.Event(Event.SHOW, { - relatedTarget: relatedTarget - }); - $$$1(this._element).trigger(showEvent); + _this3._isTransitioning = false; + $$$1(_this3._element).trigger(shownEvent); + }; - if (this._isShown || showEvent.isDefaultPrevented()) { - return; - } + if (transition) { + $$$1(this._dialog) + .one(Util.TRANSITION_END, transitionComplete) + .emulateTransitionEnd(TRANSITION_DURATION); + } else { + transitionComplete(); + } + }; - this._isShown = true; + _proto._enforceFocus = function _enforceFocus() { + var _this4 = this; + + $$$1(document) + .off(Event.FOCUSIN) // Guard against infinite focus loop + .on(Event.FOCUSIN, function (event) { + if ( + document !== event.target && + _this4._element !== event.target && + $$$1(_this4._element).has(event.target).length === 0 + ) { + _this4._element.focus(); + } + }); + }; - this._checkScrollbar(); + _proto._setEscapeEvent = function _setEscapeEvent() { + var _this5 = this; - this._setScrollbar(); + if (this._isShown && this._config.keyboard) { + $$$1(this._element).on(Event.KEYDOWN_DISMISS, function (event) { + if (event.which === ESCAPE_KEYCODE) { + event.preventDefault(); - this._adjustDialog(); + _this5.hide(); + } + }); + } else if (!this._isShown) { + $$$1(this._element).off(Event.KEYDOWN_DISMISS); + } + }; - $$$1(document.body).addClass(ClassName.OPEN); + _proto._setResizeEvent = function _setResizeEvent() { + var _this6 = this; - this._setEscapeEvent(); + if (this._isShown) { + $$$1(window).on(Event.RESIZE, function (event) { + return _this6.handleUpdate(event); + }); + } else { + $$$1(window).off(Event.RESIZE); + } + }; - this._setResizeEvent(); + _proto._hideModal = function _hideModal() { + var _this7 = this; - $$$1(this._element).on(Event.CLICK_DISMISS, Selector.DATA_DISMISS, function (event) { - return _this.hide(event); - }); - $$$1(this._dialog).on(Event.MOUSEDOWN_DISMISS, function () { - $$$1(_this._element).one(Event.MOUSEUP_DISMISS, function (event) { - if ($$$1(event.target).is(_this._element)) { - _this._ignoreBackdropClick = true; - } - }); - }); + this._element.style.display = "none"; - this._showBackdrop(function () { - return _this._showElement(relatedTarget); - }); - }; + this._element.setAttribute("aria-hidden", true); - _proto.hide = function hide(event) { - var _this2 = this; + this._isTransitioning = false; - if (event) { - event.preventDefault(); - } + this._showBackdrop(function () { + $$$1(document.body).removeClass(ClassName.OPEN); - if (this._isTransitioning || !this._isShown) { - return; - } + _this7._resetAdjustments(); - var hideEvent = $$$1.Event(Event.HIDE); - $$$1(this._element).trigger(hideEvent); + _this7._resetScrollbar(); - if (!this._isShown || hideEvent.isDefaultPrevented()) { - return; - } + $$$1(_this7._element).trigger(Event.HIDDEN); + }); + }; - this._isShown = false; - var transition = Util.supportsTransitionEnd() && $$$1(this._element).hasClass(ClassName.FADE); + _proto._removeBackdrop = function _removeBackdrop() { + if (this._backdrop) { + $$$1(this._backdrop).remove(); + this._backdrop = null; + } + }; - if (transition) { - this._isTransitioning = true; - } + _proto._showBackdrop = function _showBackdrop(callback) { + var _this8 = this; - this._setEscapeEvent(); + var animate = $$$1(this._element).hasClass(ClassName.FADE) ? ClassName.FADE : ""; - this._setResizeEvent(); + if (this._isShown && this._config.backdrop) { + var doAnimate = Util.supportsTransitionEnd() && animate; + this._backdrop = document.createElement("div"); + this._backdrop.className = ClassName.BACKDROP; - $$$1(document).off(Event.FOCUSIN); - $$$1(this._element).removeClass(ClassName.SHOW); - $$$1(this._element).off(Event.CLICK_DISMISS); - $$$1(this._dialog).off(Event.MOUSEDOWN_DISMISS); + if (animate) { + $$$1(this._backdrop).addClass(animate); + } - if (transition) { - $$$1(this._element).one(Util.TRANSITION_END, function (event) { - return _this2._hideModal(event); - }).emulateTransitionEnd(TRANSITION_DURATION); - } else { - this._hideModal(); - } - }; + $$$1(this._backdrop).appendTo(document.body); + $$$1(this._element).on(Event.CLICK_DISMISS, function (event) { + if (_this8._ignoreBackdropClick) { + _this8._ignoreBackdropClick = false; + return; + } - _proto.dispose = function dispose() { - $$$1.removeData(this._element, DATA_KEY); - $$$1(window, document, this._element, this._backdrop).off(EVENT_KEY); - this._config = null; - this._element = null; - this._dialog = null; - this._backdrop = null; - this._isShown = null; - this._isBodyOverflowing = null; - this._ignoreBackdropClick = null; - this._scrollbarWidth = null; - }; + if (event.target !== event.currentTarget) { + return; + } - _proto.handleUpdate = function handleUpdate() { - this._adjustDialog(); - }; // Private + if (_this8._config.backdrop === "static") { + _this8._element.focus(); + } else { + _this8.hide(); + } + }); + if (doAnimate) { + Util.reflow(this._backdrop); + } - _proto._getConfig = function _getConfig(config) { - config = _extends({}, Default, config); - Util.typeCheckConfig(NAME, config, DefaultType); - return config; - }; + $$$1(this._backdrop).addClass(ClassName.SHOW); - _proto._showElement = function _showElement(relatedTarget) { - var _this3 = this; + if (!callback) { + return; + } - var transition = Util.supportsTransitionEnd() && $$$1(this._element).hasClass(ClassName.FADE); + if (!doAnimate) { + callback(); + return; + } - if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) { - // Don't move modal's DOM position - document.body.appendChild(this._element); - } + $$$1(this._backdrop) + .one(Util.TRANSITION_END, callback) + .emulateTransitionEnd(BACKDROP_TRANSITION_DURATION); + } else if (!this._isShown && this._backdrop) { + $$$1(this._backdrop).removeClass(ClassName.SHOW); - this._element.style.display = 'block'; + var callbackRemove = function callbackRemove() { + _this8._removeBackdrop(); - this._element.removeAttribute('aria-hidden'); + if (callback) { + callback(); + } + }; - this._element.scrollTop = 0; + if (Util.supportsTransitionEnd() && $$$1(this._element).hasClass(ClassName.FADE)) { + $$$1(this._backdrop) + .one(Util.TRANSITION_END, callbackRemove) + .emulateTransitionEnd(BACKDROP_TRANSITION_DURATION); + } else { + callbackRemove(); + } + } else if (callback) { + callback(); + } + }; // ---------------------------------------------------------------------- + // the following methods are used to handle overflowing modals + // todo (fat): these should probably be refactored out of modal.js + // ---------------------------------------------------------------------- - if (transition) { - Util.reflow(this._element); - } + _proto._adjustDialog = function _adjustDialog() { + var isModalOverflowing = + this._element.scrollHeight > document.documentElement.clientHeight; - $$$1(this._element).addClass(ClassName.SHOW); + if (!this._isBodyOverflowing && isModalOverflowing) { + this._element.style.paddingLeft = this._scrollbarWidth + "px"; + } - if (this._config.focus) { - this._enforceFocus(); - } + if (this._isBodyOverflowing && !isModalOverflowing) { + this._element.style.paddingRight = this._scrollbarWidth + "px"; + } + }; - var shownEvent = $$$1.Event(Event.SHOWN, { - relatedTarget: relatedTarget - }); + _proto._resetAdjustments = function _resetAdjustments() { + this._element.style.paddingLeft = ""; + this._element.style.paddingRight = ""; + }; - var transitionComplete = function transitionComplete() { - if (_this3._config.focus) { - _this3._element.focus(); - } + _proto._checkScrollbar = function _checkScrollbar() { + var rect = document.body.getBoundingClientRect(); + this._isBodyOverflowing = rect.left + rect.right < window.innerWidth; + this._scrollbarWidth = this._getScrollbarWidth(); + }; - _this3._isTransitioning = false; - $$$1(_this3._element).trigger(shownEvent); - }; + _proto._setScrollbar = function _setScrollbar() { + var _this9 = this; + + if (this._isBodyOverflowing) { + // Note: DOMNode.style.paddingRight returns the actual value or '' if not set + // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set + // Adjust fixed content padding + $$$1(Selector.FIXED_CONTENT).each(function (index, element) { + var actualPadding = $$$1(element)[0].style.paddingRight; + var calculatedPadding = $$$1(element).css("padding-right"); + $$$1(element) + .data("padding-right", actualPadding) + .css( + "padding-right", + parseFloat(calculatedPadding) + _this9._scrollbarWidth + "px" + ); + }); // Adjust sticky content margin + + $$$1(Selector.STICKY_CONTENT).each(function (index, element) { + var actualMargin = $$$1(element)[0].style.marginRight; + var calculatedMargin = $$$1(element).css("margin-right"); + $$$1(element) + .data("margin-right", actualMargin) + .css("margin-right", parseFloat(calculatedMargin) - _this9._scrollbarWidth + "px"); + }); // Adjust navbar-toggler margin + + $$$1(Selector.NAVBAR_TOGGLER).each(function (index, element) { + var actualMargin = $$$1(element)[0].style.marginRight; + var calculatedMargin = $$$1(element).css("margin-right"); + $$$1(element) + .data("margin-right", actualMargin) + .css("margin-right", parseFloat(calculatedMargin) + _this9._scrollbarWidth + "px"); + }); // Adjust body padding + + var actualPadding = document.body.style.paddingRight; + var calculatedPadding = $$$1("body").css("padding-right"); + $$$1("body") + .data("padding-right", actualPadding) + .css("padding-right", parseFloat(calculatedPadding) + this._scrollbarWidth + "px"); + } + }; - if (transition) { - $$$1(this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(TRANSITION_DURATION); - } else { - transitionComplete(); - } - }; + _proto._resetScrollbar = function _resetScrollbar() { + // Restore fixed content padding + $$$1(Selector.FIXED_CONTENT).each(function (index, element) { + var padding = $$$1(element).data("padding-right"); - _proto._enforceFocus = function _enforceFocus() { - var _this4 = this; + if (typeof padding !== "undefined") { + $$$1(element).css("padding-right", padding).removeData("padding-right"); + } + }); // Restore sticky content and navbar-toggler margin - $$$1(document).off(Event.FOCUSIN) // Guard against infinite focus loop - .on(Event.FOCUSIN, function (event) { - if (document !== event.target && _this4._element !== event.target && $$$1(_this4._element).has(event.target).length === 0) { - _this4._element.focus(); - } - }); - }; + $$$1(Selector.STICKY_CONTENT + ", " + Selector.NAVBAR_TOGGLER).each(function ( + index, + element + ) { + var margin = $$$1(element).data("margin-right"); - _proto._setEscapeEvent = function _setEscapeEvent() { - var _this5 = this; + if (typeof margin !== "undefined") { + $$$1(element).css("margin-right", margin).removeData("margin-right"); + } + }); // Restore body padding - if (this._isShown && this._config.keyboard) { - $$$1(this._element).on(Event.KEYDOWN_DISMISS, function (event) { - if (event.which === ESCAPE_KEYCODE) { - event.preventDefault(); + var padding = $$$1("body").data("padding-right"); - _this5.hide(); + if (typeof padding !== "undefined") { + $$$1("body").css("padding-right", padding).removeData("padding-right"); } - }); - } else if (!this._isShown) { - $$$1(this._element).off(Event.KEYDOWN_DISMISS); - } - }; - - _proto._setResizeEvent = function _setResizeEvent() { - var _this6 = this; - - if (this._isShown) { - $$$1(window).on(Event.RESIZE, function (event) { - return _this6.handleUpdate(event); - }); - } else { - $$$1(window).off(Event.RESIZE); - } - }; - - _proto._hideModal = function _hideModal() { - var _this7 = this; - - this._element.style.display = 'none'; + }; - this._element.setAttribute('aria-hidden', true); + _proto._getScrollbarWidth = function _getScrollbarWidth() { + // thx d.walsh + var scrollDiv = document.createElement("div"); + scrollDiv.className = ClassName.SCROLLBAR_MEASURER; + document.body.appendChild(scrollDiv); + var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth; + document.body.removeChild(scrollDiv); + return scrollbarWidth; + }; // Static + + Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) { + return this.each(function () { + var data = $$$1(this).data(DATA_KEY); + + var _config = _extends( + {}, + Modal.Default, + $$$1(this).data(), + typeof config === "object" && config + ); + + if (!data) { + data = new Modal(this, _config); + $$$1(this).data(DATA_KEY, data); + } - this._isTransitioning = false; + if (typeof config === "string") { + if (typeof data[config] === "undefined") { + throw new TypeError('No method named "' + config + '"'); + } - this._showBackdrop(function () { - $$$1(document.body).removeClass(ClassName.OPEN); + data[config](relatedTarget); + } else if (_config.show) { + data.show(relatedTarget); + } + }); + }; - _this7._resetAdjustments(); + _createClass(Modal, null, [ + { + key: "VERSION", + get: function get() { + return VERSION; + }, + }, + { + key: "Default", + get: function get() { + return Default; + }, + }, + ]); + return Modal; + })(); + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ - _this7._resetScrollbar(); + $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { + var _this10 = this; - $$$1(_this7._element).trigger(Event.HIDDEN); - }); - }; + var target; + var selector = Util.getSelectorFromElement(this); - _proto._removeBackdrop = function _removeBackdrop() { - if (this._backdrop) { - $$$1(this._backdrop).remove(); - this._backdrop = null; + if (selector) { + target = $$$1(selector)[0]; } - }; - _proto._showBackdrop = function _showBackdrop(callback) { - var _this8 = this; + var config = $$$1(target).data(DATA_KEY) + ? "toggle" + : _extends({}, $$$1(target).data(), $$$1(this).data()); - var animate = $$$1(this._element).hasClass(ClassName.FADE) ? ClassName.FADE : ''; - - if (this._isShown && this._config.backdrop) { - var doAnimate = Util.supportsTransitionEnd() && animate; - this._backdrop = document.createElement('div'); - this._backdrop.className = ClassName.BACKDROP; + if (this.tagName === "A" || this.tagName === "AREA") { + event.preventDefault(); + } - if (animate) { - $$$1(this._backdrop).addClass(animate); + var $target = $$$1(target).one(Event.SHOW, function (showEvent) { + if (showEvent.isDefaultPrevented()) { + // Only register focus restorer if modal will actually get shown + return; } - $$$1(this._backdrop).appendTo(document.body); - $$$1(this._element).on(Event.CLICK_DISMISS, function (event) { - if (_this8._ignoreBackdropClick) { - _this8._ignoreBackdropClick = false; - return; - } - - if (event.target !== event.currentTarget) { - return; - } - - if (_this8._config.backdrop === 'static') { - _this8._element.focus(); - } else { - _this8.hide(); + $target.one(Event.HIDDEN, function () { + if ($$$1(_this10).is(":visible")) { + _this10.focus(); } }); + }); - if (doAnimate) { - Util.reflow(this._backdrop); - } - - $$$1(this._backdrop).addClass(ClassName.SHOW); - - if (!callback) { - return; - } - - if (!doAnimate) { - callback(); - return; - } - - $$$1(this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION); - } else if (!this._isShown && this._backdrop) { - $$$1(this._backdrop).removeClass(ClassName.SHOW); - - var callbackRemove = function callbackRemove() { - _this8._removeBackdrop(); - - if (callback) { - callback(); - } - }; + Modal._jQueryInterface.call($$$1(target), config, this); + }); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ - if (Util.supportsTransitionEnd() && $$$1(this._element).hasClass(ClassName.FADE)) { - $$$1(this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION); - } else { - callbackRemove(); - } - } else if (callback) { - callback(); - } - }; // ---------------------------------------------------------------------- - // the following methods are used to handle overflowing modals - // todo (fat): these should probably be refactored out of modal.js - // ---------------------------------------------------------------------- + $$$1.fn[NAME] = Modal._jQueryInterface; + $$$1.fn[NAME].Constructor = Modal; + $$$1.fn[NAME].noConflict = function () { + $$$1.fn[NAME] = JQUERY_NO_CONFLICT; + return Modal._jQueryInterface; + }; - _proto._adjustDialog = function _adjustDialog() { - var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; + return Modal; + })($); - if (!this._isBodyOverflowing && isModalOverflowing) { - this._element.style.paddingLeft = this._scrollbarWidth + "px"; - } + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): tooltip.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ - if (this._isBodyOverflowing && !isModalOverflowing) { - this._element.style.paddingRight = this._scrollbarWidth + "px"; - } + var Tooltip = (function ($$$1) { + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + var NAME = "tooltip"; + var VERSION = "4.0.0"; + var DATA_KEY = "bs.tooltip"; + var EVENT_KEY = "." + DATA_KEY; + var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; + var TRANSITION_DURATION = 150; + var CLASS_PREFIX = "bs-tooltip"; + var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", "g"); + var DefaultType = { + animation: "boolean", + template: "string", + title: "(string|element|function)", + trigger: "string", + delay: "(number|object)", + html: "boolean", + selector: "(string|boolean)", + placement: "(string|function)", + offset: "(number|string)", + container: "(string|element|boolean)", + fallbackPlacement: "(string|array)", + boundary: "(string|element)", }; - - _proto._resetAdjustments = function _resetAdjustments() { - this._element.style.paddingLeft = ''; - this._element.style.paddingRight = ''; + var AttachmentMap = { + AUTO: "auto", + TOP: "top", + RIGHT: "right", + BOTTOM: "bottom", + LEFT: "left", }; - - _proto._checkScrollbar = function _checkScrollbar() { - var rect = document.body.getBoundingClientRect(); - this._isBodyOverflowing = rect.left + rect.right < window.innerWidth; - this._scrollbarWidth = this._getScrollbarWidth(); + var Default = { + animation: true, + template: + '', + trigger: "hover focus", + title: "", + delay: 0, + html: false, + selector: false, + placement: "top", + offset: 0, + container: false, + fallbackPlacement: "flip", + boundary: "scrollParent", }; - - _proto._setScrollbar = function _setScrollbar() { - var _this9 = this; - - if (this._isBodyOverflowing) { - // Note: DOMNode.style.paddingRight returns the actual value or '' if not set - // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set - // Adjust fixed content padding - $$$1(Selector.FIXED_CONTENT).each(function (index, element) { - var actualPadding = $$$1(element)[0].style.paddingRight; - var calculatedPadding = $$$1(element).css('padding-right'); - $$$1(element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this9._scrollbarWidth + "px"); - }); // Adjust sticky content margin - - $$$1(Selector.STICKY_CONTENT).each(function (index, element) { - var actualMargin = $$$1(element)[0].style.marginRight; - var calculatedMargin = $$$1(element).css('margin-right'); - $$$1(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this9._scrollbarWidth + "px"); - }); // Adjust navbar-toggler margin - - $$$1(Selector.NAVBAR_TOGGLER).each(function (index, element) { - var actualMargin = $$$1(element)[0].style.marginRight; - var calculatedMargin = $$$1(element).css('margin-right'); - $$$1(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) + _this9._scrollbarWidth + "px"); - }); // Adjust body padding - - var actualPadding = document.body.style.paddingRight; - var calculatedPadding = $$$1('body').css('padding-right'); - $$$1('body').data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + "px"); - } + var HoverState = { + SHOW: "show", + OUT: "out", + }; + var Event = { + HIDE: "hide" + EVENT_KEY, + HIDDEN: "hidden" + EVENT_KEY, + SHOW: "show" + EVENT_KEY, + SHOWN: "shown" + EVENT_KEY, + INSERTED: "inserted" + EVENT_KEY, + CLICK: "click" + EVENT_KEY, + FOCUSIN: "focusin" + EVENT_KEY, + FOCUSOUT: "focusout" + EVENT_KEY, + MOUSEENTER: "mouseenter" + EVENT_KEY, + MOUSELEAVE: "mouseleave" + EVENT_KEY, + }; + var ClassName = { + FADE: "fade", + SHOW: "show", + }; + var Selector = { + TOOLTIP: ".tooltip", + TOOLTIP_INNER: ".tooltip-inner", + ARROW: ".arrow", + }; + var Trigger = { + HOVER: "hover", + FOCUS: "focus", + CLICK: "click", + MANUAL: "manual", + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ }; - _proto._resetScrollbar = function _resetScrollbar() { - // Restore fixed content padding - $$$1(Selector.FIXED_CONTENT).each(function (index, element) { - var padding = $$$1(element).data('padding-right'); + var Tooltip = + /*#__PURE__*/ + (function () { + function Tooltip(element, config) { + /** + * Check for Popper dependency + * Popper - https://popper.js.org + */ + if (typeof Popper === "undefined") { + throw new TypeError("Bootstrap tooltips require Popper.js (https://popper.js.org)"); + } // private + + this._isEnabled = true; + this._timeout = 0; + this._hoverState = ""; + this._activeTrigger = {}; + this._popper = null; // Protected + + this.element = element; + this.config = this._getConfig(config); + this.tip = null; + + this._setListeners(); + } // Getters + + var _proto = Tooltip.prototype; + + // Public + _proto.enable = function enable() { + this._isEnabled = true; + }; - if (typeof padding !== 'undefined') { - $$$1(element).css('padding-right', padding).removeData('padding-right'); - } - }); // Restore sticky content and navbar-toggler margin + _proto.disable = function disable() { + this._isEnabled = false; + }; - $$$1(Selector.STICKY_CONTENT + ", " + Selector.NAVBAR_TOGGLER).each(function (index, element) { - var margin = $$$1(element).data('margin-right'); + _proto.toggleEnabled = function toggleEnabled() { + this._isEnabled = !this._isEnabled; + }; - if (typeof margin !== 'undefined') { - $$$1(element).css('margin-right', margin).removeData('margin-right'); - } - }); // Restore body padding + _proto.toggle = function toggle(event) { + if (!this._isEnabled) { + return; + } - var padding = $$$1('body').data('padding-right'); + if (event) { + var dataKey = this.constructor.DATA_KEY; + var context = $$$1(event.currentTarget).data(dataKey); - if (typeof padding !== 'undefined') { - $$$1('body').css('padding-right', padding).removeData('padding-right'); - } - }; + if (!context) { + context = new this.constructor(event.currentTarget, this._getDelegateConfig()); + $$$1(event.currentTarget).data(dataKey, context); + } - _proto._getScrollbarWidth = function _getScrollbarWidth() { - // thx d.walsh - var scrollDiv = document.createElement('div'); - scrollDiv.className = ClassName.SCROLLBAR_MEASURER; - document.body.appendChild(scrollDiv); - var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth; - document.body.removeChild(scrollDiv); - return scrollbarWidth; - }; // Static + context._activeTrigger.click = !context._activeTrigger.click; + if (context._isWithActiveTrigger()) { + context._enter(null, context); + } else { + context._leave(null, context); + } + } else { + if ($$$1(this.getTipElement()).hasClass(ClassName.SHOW)) { + this._leave(null, this); - Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) { - return this.each(function () { - var data = $$$1(this).data(DATA_KEY); + return; + } - var _config = _extends({}, Modal.Default, $$$1(this).data(), typeof config === 'object' && config); + this._enter(null, this); + } + }; - if (!data) { - data = new Modal(this, _config); - $$$1(this).data(DATA_KEY, data); - } + _proto.dispose = function dispose() { + clearTimeout(this._timeout); + $$$1.removeData(this.element, this.constructor.DATA_KEY); + $$$1(this.element).off(this.constructor.EVENT_KEY); + $$$1(this.element).closest(".modal").off("hide.bs.modal"); - if (typeof config === 'string') { - if (typeof data[config] === 'undefined') { - throw new TypeError("No method named \"" + config + "\""); + if (this.tip) { + $$$1(this.tip).remove(); } - data[config](relatedTarget); - } else if (_config.show) { - data.show(relatedTarget); - } - }); - }; + this._isEnabled = null; + this._timeout = null; + this._hoverState = null; + this._activeTrigger = null; - _createClass(Modal, null, [{ - key: "VERSION", - get: function get() { - return VERSION; - } - }, { - key: "Default", - get: function get() { - return Default; - } - }]); - return Modal; - }(); - /** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ + if (this._popper !== null) { + this._popper.destroy(); + } + this._popper = null; + this.element = null; + this.config = null; + this.tip = null; + }; - $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { - var _this10 = this; + _proto.show = function show() { + var _this = this; - var target; - var selector = Util.getSelectorFromElement(this); + if ($$$1(this.element).css("display") === "none") { + throw new Error("Please use show on visible elements"); + } - if (selector) { - target = $$$1(selector)[0]; - } + var showEvent = $$$1.Event(this.constructor.Event.SHOW); - var config = $$$1(target).data(DATA_KEY) ? 'toggle' : _extends({}, $$$1(target).data(), $$$1(this).data()); + if (this.isWithContent() && this._isEnabled) { + $$$1(this.element).trigger(showEvent); + var isInTheDom = $$$1.contains( + this.element.ownerDocument.documentElement, + this.element + ); - if (this.tagName === 'A' || this.tagName === 'AREA') { - event.preventDefault(); - } + if (showEvent.isDefaultPrevented() || !isInTheDom) { + return; + } - var $target = $$$1(target).one(Event.SHOW, function (showEvent) { - if (showEvent.isDefaultPrevented()) { - // Only register focus restorer if modal will actually get shown - return; - } + var tip = this.getTipElement(); + var tipId = Util.getUID(this.constructor.NAME); + tip.setAttribute("id", tipId); + this.element.setAttribute("aria-describedby", tipId); + this.setContent(); - $target.one(Event.HIDDEN, function () { - if ($$$1(_this10).is(':visible')) { - _this10.focus(); - } - }); - }); + if (this.config.animation) { + $$$1(tip).addClass(ClassName.FADE); + } - Modal._jQueryInterface.call($$$1(target), config, this); - }); - /** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - */ + var placement = + typeof this.config.placement === "function" + ? this.config.placement.call(this, tip, this.element) + : this.config.placement; - $$$1.fn[NAME] = Modal._jQueryInterface; - $$$1.fn[NAME].Constructor = Modal; + var attachment = this._getAttachment(placement); - $$$1.fn[NAME].noConflict = function () { - $$$1.fn[NAME] = JQUERY_NO_CONFLICT; - return Modal._jQueryInterface; - }; + this.addAttachmentClass(attachment); + var container = + this.config.container === false ? document.body : $$$1(this.config.container); + $$$1(tip).data(this.constructor.DATA_KEY, this); - return Modal; -}($); + if (!$$$1.contains(this.element.ownerDocument.documentElement, this.tip)) { + $$$1(tip).appendTo(container); + } -/** - * -------------------------------------------------------------------------- - * Bootstrap (v4.0.0): tooltip.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * -------------------------------------------------------------------------- - */ + $$$1(this.element).trigger(this.constructor.Event.INSERTED); + this._popper = new Popper(this.element, tip, { + placement: attachment, + modifiers: { + offset: { + offset: this.config.offset, + }, + flip: { + behavior: this.config.fallbackPlacement, + }, + arrow: { + element: Selector.ARROW, + }, + preventOverflow: { + boundariesElement: this.config.boundary, + }, + }, + onCreate: function onCreate(data) { + if (data.originalPlacement !== data.placement) { + _this._handlePopperPlacementChange(data); + } + }, + onUpdate: function onUpdate(data) { + _this._handlePopperPlacementChange(data); + }, + }); + $$$1(tip).addClass(ClassName.SHOW); // If this is a touch-enabled device we add extra + // empty mouseover listeners to the body's immediate children; + // only needed because of broken event delegation on iOS + // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html + + if ("ontouchstart" in document.documentElement) { + $$$1("body").children().on("mouseover", null, $$$1.noop); + } -var Tooltip = function ($$$1) { - /** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - var NAME = 'tooltip'; - var VERSION = '4.0.0'; - var DATA_KEY = 'bs.tooltip'; - var EVENT_KEY = "." + DATA_KEY; - var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; - var TRANSITION_DURATION = 150; - var CLASS_PREFIX = 'bs-tooltip'; - var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g'); - var DefaultType = { - animation: 'boolean', - template: 'string', - title: '(string|element|function)', - trigger: 'string', - delay: '(number|object)', - html: 'boolean', - selector: '(string|boolean)', - placement: '(string|function)', - offset: '(number|string)', - container: '(string|element|boolean)', - fallbackPlacement: '(string|array)', - boundary: '(string|element)' - }; - var AttachmentMap = { - AUTO: 'auto', - TOP: 'top', - RIGHT: 'right', - BOTTOM: 'bottom', - LEFT: 'left' - }; - var Default = { - animation: true, - template: '', - trigger: 'hover focus', - title: '', - delay: 0, - html: false, - selector: false, - placement: 'top', - offset: 0, - container: false, - fallbackPlacement: 'flip', - boundary: 'scrollParent' - }; - var HoverState = { - SHOW: 'show', - OUT: 'out' - }; - var Event = { - HIDE: "hide" + EVENT_KEY, - HIDDEN: "hidden" + EVENT_KEY, - SHOW: "show" + EVENT_KEY, - SHOWN: "shown" + EVENT_KEY, - INSERTED: "inserted" + EVENT_KEY, - CLICK: "click" + EVENT_KEY, - FOCUSIN: "focusin" + EVENT_KEY, - FOCUSOUT: "focusout" + EVENT_KEY, - MOUSEENTER: "mouseenter" + EVENT_KEY, - MOUSELEAVE: "mouseleave" + EVENT_KEY - }; - var ClassName = { - FADE: 'fade', - SHOW: 'show' - }; - var Selector = { - TOOLTIP: '.tooltip', - TOOLTIP_INNER: '.tooltip-inner', - ARROW: '.arrow' - }; - var Trigger = { - HOVER: 'hover', - FOCUS: 'focus', - CLICK: 'click', - MANUAL: 'manual' - /** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ + var complete = function complete() { + if (_this.config.animation) { + _this._fixTransition(); + } - }; + var prevHoverState = _this._hoverState; + _this._hoverState = null; + $$$1(_this.element).trigger(_this.constructor.Event.SHOWN); - var Tooltip = - /*#__PURE__*/ - function () { - function Tooltip(element, config) { - /** - * Check for Popper dependency - * Popper - https://popper.js.org - */ - if (typeof Popper === 'undefined') { - throw new TypeError('Bootstrap tooltips require Popper.js (https://popper.js.org)'); - } // private + if (prevHoverState === HoverState.OUT) { + _this._leave(null, _this); + } + }; + if (Util.supportsTransitionEnd() && $$$1(this.tip).hasClass(ClassName.FADE)) { + $$$1(this.tip) + .one(Util.TRANSITION_END, complete) + .emulateTransitionEnd(Tooltip._TRANSITION_DURATION); + } else { + complete(); + } + } + }; - this._isEnabled = true; - this._timeout = 0; - this._hoverState = ''; - this._activeTrigger = {}; - this._popper = null; // Protected + _proto.hide = function hide(callback) { + var _this2 = this; - this.element = element; - this.config = this._getConfig(config); - this.tip = null; + var tip = this.getTipElement(); + var hideEvent = $$$1.Event(this.constructor.Event.HIDE); - this._setListeners(); - } // Getters + var complete = function complete() { + if (_this2._hoverState !== HoverState.SHOW && tip.parentNode) { + tip.parentNode.removeChild(tip); + } + _this2._cleanTipClass(); - var _proto = Tooltip.prototype; + _this2.element.removeAttribute("aria-describedby"); - // Public - _proto.enable = function enable() { - this._isEnabled = true; - }; + $$$1(_this2.element).trigger(_this2.constructor.Event.HIDDEN); - _proto.disable = function disable() { - this._isEnabled = false; - }; + if (_this2._popper !== null) { + _this2._popper.destroy(); + } - _proto.toggleEnabled = function toggleEnabled() { - this._isEnabled = !this._isEnabled; - }; + if (callback) { + callback(); + } + }; - _proto.toggle = function toggle(event) { - if (!this._isEnabled) { - return; - } + $$$1(this.element).trigger(hideEvent); - if (event) { - var dataKey = this.constructor.DATA_KEY; - var context = $$$1(event.currentTarget).data(dataKey); + if (hideEvent.isDefaultPrevented()) { + return; + } - if (!context) { - context = new this.constructor(event.currentTarget, this._getDelegateConfig()); - $$$1(event.currentTarget).data(dataKey, context); - } + $$$1(tip).removeClass(ClassName.SHOW); // If this is a touch-enabled device we remove the extra + // empty mouseover listeners we added for iOS support - context._activeTrigger.click = !context._activeTrigger.click; + if ("ontouchstart" in document.documentElement) { + $$$1("body").children().off("mouseover", null, $$$1.noop); + } - if (context._isWithActiveTrigger()) { - context._enter(null, context); - } else { - context._leave(null, context); - } - } else { - if ($$$1(this.getTipElement()).hasClass(ClassName.SHOW)) { - this._leave(null, this); + this._activeTrigger[Trigger.CLICK] = false; + this._activeTrigger[Trigger.FOCUS] = false; + this._activeTrigger[Trigger.HOVER] = false; - return; - } + if (Util.supportsTransitionEnd() && $$$1(this.tip).hasClass(ClassName.FADE)) { + $$$1(tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); + } else { + complete(); + } - this._enter(null, this); - } - }; + this._hoverState = ""; + }; - _proto.dispose = function dispose() { - clearTimeout(this._timeout); - $$$1.removeData(this.element, this.constructor.DATA_KEY); - $$$1(this.element).off(this.constructor.EVENT_KEY); - $$$1(this.element).closest('.modal').off('hide.bs.modal'); + _proto.update = function update() { + if (this._popper !== null) { + this._popper.scheduleUpdate(); + } + }; // Protected - if (this.tip) { - $$$1(this.tip).remove(); - } + _proto.isWithContent = function isWithContent() { + return Boolean(this.getTitle()); + }; - this._isEnabled = null; - this._timeout = null; - this._hoverState = null; - this._activeTrigger = null; + _proto.addAttachmentClass = function addAttachmentClass(attachment) { + $$$1(this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment); + }; - if (this._popper !== null) { - this._popper.destroy(); - } + _proto.getTipElement = function getTipElement() { + this.tip = this.tip || $$$1(this.config.template)[0]; + return this.tip; + }; - this._popper = null; - this.element = null; - this.config = null; - this.tip = null; - }; + _proto.setContent = function setContent() { + var $tip = $$$1(this.getTipElement()); + this.setElementContent($tip.find(Selector.TOOLTIP_INNER), this.getTitle()); + $tip.removeClass(ClassName.FADE + " " + ClassName.SHOW); + }; - _proto.show = function show() { - var _this = this; + _proto.setElementContent = function setElementContent($element, content) { + var html = this.config.html; - if ($$$1(this.element).css('display') === 'none') { - throw new Error('Please use show on visible elements'); - } + if (typeof content === "object" && (content.nodeType || content.jquery)) { + // Content is a DOM node or a jQuery + if (html) { + if (!$$$1(content).parent().is($element)) { + $element.empty().append(content); + } + } else { + $element.text($$$1(content).text()); + } + } else { + $element[html ? "html" : "text"](content); + } + }; - var showEvent = $$$1.Event(this.constructor.Event.SHOW); + _proto.getTitle = function getTitle() { + var title = this.element.getAttribute("data-original-title"); - if (this.isWithContent() && this._isEnabled) { - $$$1(this.element).trigger(showEvent); - var isInTheDom = $$$1.contains(this.element.ownerDocument.documentElement, this.element); + if (!title) { + title = + typeof this.config.title === "function" + ? this.config.title.call(this.element) + : this.config.title; + } - if (showEvent.isDefaultPrevented() || !isInTheDom) { - return; - } + return title; + }; // Private - var tip = this.getTipElement(); - var tipId = Util.getUID(this.constructor.NAME); - tip.setAttribute('id', tipId); - this.element.setAttribute('aria-describedby', tipId); - this.setContent(); + _proto._getAttachment = function _getAttachment(placement) { + return AttachmentMap[placement.toUpperCase()]; + }; - if (this.config.animation) { - $$$1(tip).addClass(ClassName.FADE); - } + _proto._setListeners = function _setListeners() { + var _this3 = this; + + var triggers = this.config.trigger.split(" "); + triggers.forEach(function (trigger) { + if (trigger === "click") { + $$$1(_this3.element).on( + _this3.constructor.Event.CLICK, + _this3.config.selector, + function (event) { + return _this3.toggle(event); + } + ); + } else if (trigger !== Trigger.MANUAL) { + var eventIn = + trigger === Trigger.HOVER + ? _this3.constructor.Event.MOUSEENTER + : _this3.constructor.Event.FOCUSIN; + var eventOut = + trigger === Trigger.HOVER + ? _this3.constructor.Event.MOUSELEAVE + : _this3.constructor.Event.FOCUSOUT; + $$$1(_this3.element) + .on(eventIn, _this3.config.selector, function (event) { + return _this3._enter(event); + }) + .on(eventOut, _this3.config.selector, function (event) { + return _this3._leave(event); + }); + } - var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement; + $$$1(_this3.element) + .closest(".modal") + .on("hide.bs.modal", function () { + return _this3.hide(); + }); + }); - var attachment = this._getAttachment(placement); + if (this.config.selector) { + this.config = _extends({}, this.config, { + trigger: "manual", + selector: "", + }); + } else { + this._fixTitle(); + } + }; - this.addAttachmentClass(attachment); - var container = this.config.container === false ? document.body : $$$1(this.config.container); - $$$1(tip).data(this.constructor.DATA_KEY, this); + _proto._fixTitle = function _fixTitle() { + var titleType = typeof this.element.getAttribute("data-original-title"); - if (!$$$1.contains(this.element.ownerDocument.documentElement, this.tip)) { - $$$1(tip).appendTo(container); - } + if (this.element.getAttribute("title") || titleType !== "string") { + this.element.setAttribute( + "data-original-title", + this.element.getAttribute("title") || "" + ); + this.element.setAttribute("title", ""); + } + }; - $$$1(this.element).trigger(this.constructor.Event.INSERTED); - this._popper = new Popper(this.element, tip, { - placement: attachment, - modifiers: { - offset: { - offset: this.config.offset - }, - flip: { - behavior: this.config.fallbackPlacement - }, - arrow: { - element: Selector.ARROW - }, - preventOverflow: { - boundariesElement: this.config.boundary - } - }, - onCreate: function onCreate(data) { - if (data.originalPlacement !== data.placement) { - _this._handlePopperPlacementChange(data); - } - }, - onUpdate: function onUpdate(data) { - _this._handlePopperPlacementChange(data); + _proto._enter = function _enter(event, context) { + var dataKey = this.constructor.DATA_KEY; + context = context || $$$1(event.currentTarget).data(dataKey); + + if (!context) { + context = new this.constructor(event.currentTarget, this._getDelegateConfig()); + $$$1(event.currentTarget).data(dataKey, context); } - }); - $$$1(tip).addClass(ClassName.SHOW); // If this is a touch-enabled device we add extra - // empty mouseover listeners to the body's immediate children; - // only needed because of broken event delegation on iOS - // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html - if ('ontouchstart' in document.documentElement) { - $$$1('body').children().on('mouseover', null, $$$1.noop); - } + if (event) { + context._activeTrigger[event.type === "focusin" ? Trigger.FOCUS : Trigger.HOVER] = true; + } - var complete = function complete() { - if (_this.config.animation) { - _this._fixTransition(); + if ( + $$$1(context.getTipElement()).hasClass(ClassName.SHOW) || + context._hoverState === HoverState.SHOW + ) { + context._hoverState = HoverState.SHOW; + return; } - var prevHoverState = _this._hoverState; - _this._hoverState = null; - $$$1(_this.element).trigger(_this.constructor.Event.SHOWN); + clearTimeout(context._timeout); + context._hoverState = HoverState.SHOW; - if (prevHoverState === HoverState.OUT) { - _this._leave(null, _this); + if (!context.config.delay || !context.config.delay.show) { + context.show(); + return; } - }; - if (Util.supportsTransitionEnd() && $$$1(this.tip).hasClass(ClassName.FADE)) { - $$$1(this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(Tooltip._TRANSITION_DURATION); - } else { - complete(); - } - } - }; + context._timeout = setTimeout(function () { + if (context._hoverState === HoverState.SHOW) { + context.show(); + } + }, context.config.delay.show); + }; - _proto.hide = function hide(callback) { - var _this2 = this; + _proto._leave = function _leave(event, context) { + var dataKey = this.constructor.DATA_KEY; + context = context || $$$1(event.currentTarget).data(dataKey); - var tip = this.getTipElement(); - var hideEvent = $$$1.Event(this.constructor.Event.HIDE); + if (!context) { + context = new this.constructor(event.currentTarget, this._getDelegateConfig()); + $$$1(event.currentTarget).data(dataKey, context); + } - var complete = function complete() { - if (_this2._hoverState !== HoverState.SHOW && tip.parentNode) { - tip.parentNode.removeChild(tip); - } + if (event) { + context._activeTrigger[ + event.type === "focusout" ? Trigger.FOCUS : Trigger.HOVER + ] = false; + } - _this2._cleanTipClass(); + if (context._isWithActiveTrigger()) { + return; + } - _this2.element.removeAttribute('aria-describedby'); + clearTimeout(context._timeout); + context._hoverState = HoverState.OUT; - $$$1(_this2.element).trigger(_this2.constructor.Event.HIDDEN); + if (!context.config.delay || !context.config.delay.hide) { + context.hide(); + return; + } - if (_this2._popper !== null) { - _this2._popper.destroy(); - } + context._timeout = setTimeout(function () { + if (context._hoverState === HoverState.OUT) { + context.hide(); + } + }, context.config.delay.hide); + }; - if (callback) { - callback(); - } - }; + _proto._isWithActiveTrigger = function _isWithActiveTrigger() { + for (var trigger in this._activeTrigger) { + if (this._activeTrigger[trigger]) { + return true; + } + } - $$$1(this.element).trigger(hideEvent); + return false; + }; - if (hideEvent.isDefaultPrevented()) { - return; - } + _proto._getConfig = function _getConfig(config) { + config = _extends({}, this.constructor.Default, $$$1(this.element).data(), config); - $$$1(tip).removeClass(ClassName.SHOW); // If this is a touch-enabled device we remove the extra - // empty mouseover listeners we added for iOS support + if (typeof config.delay === "number") { + config.delay = { + show: config.delay, + hide: config.delay, + }; + } - if ('ontouchstart' in document.documentElement) { - $$$1('body').children().off('mouseover', null, $$$1.noop); - } + if (typeof config.title === "number") { + config.title = config.title.toString(); + } - this._activeTrigger[Trigger.CLICK] = false; - this._activeTrigger[Trigger.FOCUS] = false; - this._activeTrigger[Trigger.HOVER] = false; + if (typeof config.content === "number") { + config.content = config.content.toString(); + } - if (Util.supportsTransitionEnd() && $$$1(this.tip).hasClass(ClassName.FADE)) { - $$$1(tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); - } else { - complete(); - } + Util.typeCheckConfig(NAME, config, this.constructor.DefaultType); + return config; + }; - this._hoverState = ''; - }; + _proto._getDelegateConfig = function _getDelegateConfig() { + var config = {}; - _proto.update = function update() { - if (this._popper !== null) { - this._popper.scheduleUpdate(); - } - }; // Protected + if (this.config) { + for (var key in this.config) { + if (this.constructor.Default[key] !== this.config[key]) { + config[key] = this.config[key]; + } + } + } + return config; + }; - _proto.isWithContent = function isWithContent() { - return Boolean(this.getTitle()); - }; + _proto._cleanTipClass = function _cleanTipClass() { + var $tip = $$$1(this.getTipElement()); + var tabClass = $tip.attr("class").match(BSCLS_PREFIX_REGEX); - _proto.addAttachmentClass = function addAttachmentClass(attachment) { - $$$1(this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment); - }; + if (tabClass !== null && tabClass.length > 0) { + $tip.removeClass(tabClass.join("")); + } + }; - _proto.getTipElement = function getTipElement() { - this.tip = this.tip || $$$1(this.config.template)[0]; - return this.tip; - }; + _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(data) { + this._cleanTipClass(); - _proto.setContent = function setContent() { - var $tip = $$$1(this.getTipElement()); - this.setElementContent($tip.find(Selector.TOOLTIP_INNER), this.getTitle()); - $tip.removeClass(ClassName.FADE + " " + ClassName.SHOW); - }; + this.addAttachmentClass(this._getAttachment(data.placement)); + }; - _proto.setElementContent = function setElementContent($element, content) { - var html = this.config.html; + _proto._fixTransition = function _fixTransition() { + var tip = this.getTipElement(); + var initConfigAnimation = this.config.animation; - if (typeof content === 'object' && (content.nodeType || content.jquery)) { - // Content is a DOM node or a jQuery - if (html) { - if (!$$$1(content).parent().is($element)) { - $element.empty().append(content); + if (tip.getAttribute("x-placement") !== null) { + return; } - } else { - $element.text($$$1(content).text()); - } - } else { - $element[html ? 'html' : 'text'](content); - } - }; - _proto.getTitle = function getTitle() { - var title = this.element.getAttribute('data-original-title'); + $$$1(tip).removeClass(ClassName.FADE); + this.config.animation = false; + this.hide(); + this.show(); + this.config.animation = initConfigAnimation; + }; // Static - if (!title) { - title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title; - } + Tooltip._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var data = $$$1(this).data(DATA_KEY); - return title; - }; // Private + var _config = typeof config === "object" && config; + if (!data && /dispose|hide/.test(config)) { + return; + } - _proto._getAttachment = function _getAttachment(placement) { - return AttachmentMap[placement.toUpperCase()]; - }; + if (!data) { + data = new Tooltip(this, _config); + $$$1(this).data(DATA_KEY, data); + } - _proto._setListeners = function _setListeners() { - var _this3 = this; + if (typeof config === "string") { + if (typeof data[config] === "undefined") { + throw new TypeError('No method named "' + config + '"'); + } - var triggers = this.config.trigger.split(' '); - triggers.forEach(function (trigger) { - if (trigger === 'click') { - $$$1(_this3.element).on(_this3.constructor.Event.CLICK, _this3.config.selector, function (event) { - return _this3.toggle(event); + data[config](); + } }); - } else if (trigger !== Trigger.MANUAL) { - var eventIn = trigger === Trigger.HOVER ? _this3.constructor.Event.MOUSEENTER : _this3.constructor.Event.FOCUSIN; - var eventOut = trigger === Trigger.HOVER ? _this3.constructor.Event.MOUSELEAVE : _this3.constructor.Event.FOCUSOUT; - $$$1(_this3.element).on(eventIn, _this3.config.selector, function (event) { - return _this3._enter(event); - }).on(eventOut, _this3.config.selector, function (event) { - return _this3._leave(event); - }); - } - - $$$1(_this3.element).closest('.modal').on('hide.bs.modal', function () { - return _this3.hide(); - }); - }); - - if (this.config.selector) { - this.config = _extends({}, this.config, { - trigger: 'manual', - selector: '' - }); - } else { - this._fixTitle(); - } - }; - - _proto._fixTitle = function _fixTitle() { - var titleType = typeof this.element.getAttribute('data-original-title'); - - if (this.element.getAttribute('title') || titleType !== 'string') { - this.element.setAttribute('data-original-title', this.element.getAttribute('title') || ''); - this.element.setAttribute('title', ''); - } - }; - - _proto._enter = function _enter(event, context) { - var dataKey = this.constructor.DATA_KEY; - context = context || $$$1(event.currentTarget).data(dataKey); - - if (!context) { - context = new this.constructor(event.currentTarget, this._getDelegateConfig()); - $$$1(event.currentTarget).data(dataKey, context); - } - - if (event) { - context._activeTrigger[event.type === 'focusin' ? Trigger.FOCUS : Trigger.HOVER] = true; - } - - if ($$$1(context.getTipElement()).hasClass(ClassName.SHOW) || context._hoverState === HoverState.SHOW) { - context._hoverState = HoverState.SHOW; - return; - } + }; - clearTimeout(context._timeout); - context._hoverState = HoverState.SHOW; + _createClass(Tooltip, null, [ + { + key: "VERSION", + get: function get() { + return VERSION; + }, + }, + { + key: "Default", + get: function get() { + return Default; + }, + }, + { + key: "NAME", + get: function get() { + return NAME; + }, + }, + { + key: "DATA_KEY", + get: function get() { + return DATA_KEY; + }, + }, + { + key: "Event", + get: function get() { + return Event; + }, + }, + { + key: "EVENT_KEY", + get: function get() { + return EVENT_KEY; + }, + }, + { + key: "DefaultType", + get: function get() { + return DefaultType; + }, + }, + ]); + return Tooltip; + })(); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ - if (!context.config.delay || !context.config.delay.show) { - context.show(); - return; - } + $$$1.fn[NAME] = Tooltip._jQueryInterface; + $$$1.fn[NAME].Constructor = Tooltip; - context._timeout = setTimeout(function () { - if (context._hoverState === HoverState.SHOW) { - context.show(); - } - }, context.config.delay.show); + $$$1.fn[NAME].noConflict = function () { + $$$1.fn[NAME] = JQUERY_NO_CONFLICT; + return Tooltip._jQueryInterface; }; - _proto._leave = function _leave(event, context) { - var dataKey = this.constructor.DATA_KEY; - context = context || $$$1(event.currentTarget).data(dataKey); - - if (!context) { - context = new this.constructor(event.currentTarget, this._getDelegateConfig()); - $$$1(event.currentTarget).data(dataKey, context); - } - - if (event) { - context._activeTrigger[event.type === 'focusout' ? Trigger.FOCUS : Trigger.HOVER] = false; - } - - if (context._isWithActiveTrigger()) { - return; - } - - clearTimeout(context._timeout); - context._hoverState = HoverState.OUT; + return Tooltip; + })($, Popper); - if (!context.config.delay || !context.config.delay.hide) { - context.hide(); - return; - } + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): popover.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ - context._timeout = setTimeout(function () { - if (context._hoverState === HoverState.OUT) { - context.hide(); - } - }, context.config.delay.hide); + var Popover = (function ($$$1) { + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + var NAME = "popover"; + var VERSION = "4.0.0"; + var DATA_KEY = "bs.popover"; + var EVENT_KEY = "." + DATA_KEY; + var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; + var CLASS_PREFIX = "bs-popover"; + var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", "g"); + var Default = _extends({}, Tooltip.Default, { + placement: "right", + trigger: "click", + content: "", + template: + '', + }); + var DefaultType = _extends({}, Tooltip.DefaultType, { + content: "(string|element|function)", + }); + var ClassName = { + FADE: "fade", + SHOW: "show", }; - - _proto._isWithActiveTrigger = function _isWithActiveTrigger() { - for (var trigger in this._activeTrigger) { - if (this._activeTrigger[trigger]) { - return true; - } - } - - return false; + var Selector = { + TITLE: ".popover-header", + CONTENT: ".popover-body", }; - - _proto._getConfig = function _getConfig(config) { - config = _extends({}, this.constructor.Default, $$$1(this.element).data(), config); - - if (typeof config.delay === 'number') { - config.delay = { - show: config.delay, - hide: config.delay - }; - } - - if (typeof config.title === 'number') { - config.title = config.title.toString(); - } - - if (typeof config.content === 'number') { - config.content = config.content.toString(); - } - - Util.typeCheckConfig(NAME, config, this.constructor.DefaultType); - return config; + var Event = { + HIDE: "hide" + EVENT_KEY, + HIDDEN: "hidden" + EVENT_KEY, + SHOW: "show" + EVENT_KEY, + SHOWN: "shown" + EVENT_KEY, + INSERTED: "inserted" + EVENT_KEY, + CLICK: "click" + EVENT_KEY, + FOCUSIN: "focusin" + EVENT_KEY, + FOCUSOUT: "focusout" + EVENT_KEY, + MOUSEENTER: "mouseenter" + EVENT_KEY, + MOUSELEAVE: "mouseleave" + EVENT_KEY, + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ }; - _proto._getDelegateConfig = function _getDelegateConfig() { - var config = {}; + var Popover = + /*#__PURE__*/ + (function (_Tooltip) { + _inheritsLoose(Popover, _Tooltip); - if (this.config) { - for (var key in this.config) { - if (this.constructor.Default[key] !== this.config[key]) { - config[key] = this.config[key]; - } + function Popover() { + return _Tooltip.apply(this, arguments) || this; } - } - - return config; - }; - - _proto._cleanTipClass = function _cleanTipClass() { - var $tip = $$$1(this.getTipElement()); - var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX); - if (tabClass !== null && tabClass.length > 0) { - $tip.removeClass(tabClass.join('')); - } - }; + var _proto = Popover.prototype; - _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(data) { - this._cleanTipClass(); + // Overrides + _proto.isWithContent = function isWithContent() { + return this.getTitle() || this._getContent(); + }; - this.addAttachmentClass(this._getAttachment(data.placement)); - }; + _proto.addAttachmentClass = function addAttachmentClass(attachment) { + $$$1(this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment); + }; - _proto._fixTransition = function _fixTransition() { - var tip = this.getTipElement(); - var initConfigAnimation = this.config.animation; + _proto.getTipElement = function getTipElement() { + this.tip = this.tip || $$$1(this.config.template)[0]; + return this.tip; + }; - if (tip.getAttribute('x-placement') !== null) { - return; - } + _proto.setContent = function setContent() { + var $tip = $$$1(this.getTipElement()); // We use append for html objects to maintain js events - $$$1(tip).removeClass(ClassName.FADE); - this.config.animation = false; - this.hide(); - this.show(); - this.config.animation = initConfigAnimation; - }; // Static + this.setElementContent($tip.find(Selector.TITLE), this.getTitle()); + var content = this._getContent(); - Tooltip._jQueryInterface = function _jQueryInterface(config) { - return this.each(function () { - var data = $$$1(this).data(DATA_KEY); + if (typeof content === "function") { + content = content.call(this.element); + } - var _config = typeof config === 'object' && config; + this.setElementContent($tip.find(Selector.CONTENT), content); + $tip.removeClass(ClassName.FADE + " " + ClassName.SHOW); + }; // Private - if (!data && /dispose|hide/.test(config)) { - return; - } + _proto._getContent = function _getContent() { + return this.element.getAttribute("data-content") || this.config.content; + }; - if (!data) { - data = new Tooltip(this, _config); - $$$1(this).data(DATA_KEY, data); - } + _proto._cleanTipClass = function _cleanTipClass() { + var $tip = $$$1(this.getTipElement()); + var tabClass = $tip.attr("class").match(BSCLS_PREFIX_REGEX); - if (typeof config === 'string') { - if (typeof data[config] === 'undefined') { - throw new TypeError("No method named \"" + config + "\""); + if (tabClass !== null && tabClass.length > 0) { + $tip.removeClass(tabClass.join("")); } + }; // Static - data[config](); - } - }); - }; - - _createClass(Tooltip, null, [{ - key: "VERSION", - get: function get() { - return VERSION; - } - }, { - key: "Default", - get: function get() { - return Default; - } - }, { - key: "NAME", - get: function get() { - return NAME; - } - }, { - key: "DATA_KEY", - get: function get() { - return DATA_KEY; - } - }, { - key: "Event", - get: function get() { - return Event; - } - }, { - key: "EVENT_KEY", - get: function get() { - return EVENT_KEY; - } - }, { - key: "DefaultType", - get: function get() { - return DefaultType; - } - }]); - return Tooltip; - }(); - /** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - */ + Popover._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var data = $$$1(this).data(DATA_KEY); + var _config = typeof config === "object" ? config : null; - $$$1.fn[NAME] = Tooltip._jQueryInterface; - $$$1.fn[NAME].Constructor = Tooltip; + if (!data && /destroy|hide/.test(config)) { + return; + } - $$$1.fn[NAME].noConflict = function () { - $$$1.fn[NAME] = JQUERY_NO_CONFLICT; - return Tooltip._jQueryInterface; - }; + if (!data) { + data = new Popover(this, _config); + $$$1(this).data(DATA_KEY, data); + } - return Tooltip; -}($, Popper); + if (typeof config === "string") { + if (typeof data[config] === "undefined") { + throw new TypeError('No method named "' + config + '"'); + } -/** - * -------------------------------------------------------------------------- - * Bootstrap (v4.0.0): popover.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * -------------------------------------------------------------------------- - */ + data[config](); + } + }); + }; -var Popover = function ($$$1) { - /** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - var NAME = 'popover'; - var VERSION = '4.0.0'; - var DATA_KEY = 'bs.popover'; - var EVENT_KEY = "." + DATA_KEY; - var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; - var CLASS_PREFIX = 'bs-popover'; - var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g'); - var Default = _extends({}, Tooltip.Default, { - placement: 'right', - trigger: 'click', - content: '', - template: '' - }); - var DefaultType = _extends({}, Tooltip.DefaultType, { - content: '(string|element|function)' - }); - var ClassName = { - FADE: 'fade', - SHOW: 'show' - }; - var Selector = { - TITLE: '.popover-header', - CONTENT: '.popover-body' - }; - var Event = { - HIDE: "hide" + EVENT_KEY, - HIDDEN: "hidden" + EVENT_KEY, - SHOW: "show" + EVENT_KEY, - SHOWN: "shown" + EVENT_KEY, - INSERTED: "inserted" + EVENT_KEY, - CLICK: "click" + EVENT_KEY, - FOCUSIN: "focusin" + EVENT_KEY, - FOCUSOUT: "focusout" + EVENT_KEY, - MOUSEENTER: "mouseenter" + EVENT_KEY, - MOUSELEAVE: "mouseleave" + EVENT_KEY + _createClass(Popover, null, [ + { + key: "VERSION", + // Getters + get: function get() { + return VERSION; + }, + }, + { + key: "Default", + get: function get() { + return Default; + }, + }, + { + key: "NAME", + get: function get() { + return NAME; + }, + }, + { + key: "DATA_KEY", + get: function get() { + return DATA_KEY; + }, + }, + { + key: "Event", + get: function get() { + return Event; + }, + }, + { + key: "EVENT_KEY", + get: function get() { + return EVENT_KEY; + }, + }, + { + key: "DefaultType", + get: function get() { + return DefaultType; + }, + }, + ]); + return Popover; + })(Tooltip); /** * ------------------------------------------------------------------------ - * Class Definition + * jQuery * ------------------------------------------------------------------------ */ - }; - - var Popover = - /*#__PURE__*/ - function (_Tooltip) { - _inheritsLoose(Popover, _Tooltip); - - function Popover() { - return _Tooltip.apply(this, arguments) || this; - } - - var _proto = Popover.prototype; - - // Overrides - _proto.isWithContent = function isWithContent() { - return this.getTitle() || this._getContent(); - }; - - _proto.addAttachmentClass = function addAttachmentClass(attachment) { - $$$1(this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment); - }; + $$$1.fn[NAME] = Popover._jQueryInterface; + $$$1.fn[NAME].Constructor = Popover; - _proto.getTipElement = function getTipElement() { - this.tip = this.tip || $$$1(this.config.template)[0]; - return this.tip; + $$$1.fn[NAME].noConflict = function () { + $$$1.fn[NAME] = JQUERY_NO_CONFLICT; + return Popover._jQueryInterface; }; - _proto.setContent = function setContent() { - var $tip = $$$1(this.getTipElement()); // We use append for html objects to maintain js events - - this.setElementContent($tip.find(Selector.TITLE), this.getTitle()); - - var content = this._getContent(); - - if (typeof content === 'function') { - content = content.call(this.element); - } - - this.setElementContent($tip.find(Selector.CONTENT), content); - $tip.removeClass(ClassName.FADE + " " + ClassName.SHOW); - }; // Private - - - _proto._getContent = function _getContent() { - return this.element.getAttribute('data-content') || this.config.content; - }; - - _proto._cleanTipClass = function _cleanTipClass() { - var $tip = $$$1(this.getTipElement()); - var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX); - - if (tabClass !== null && tabClass.length > 0) { - $tip.removeClass(tabClass.join('')); - } - }; // Static - - - Popover._jQueryInterface = function _jQueryInterface(config) { - return this.each(function () { - var data = $$$1(this).data(DATA_KEY); - - var _config = typeof config === 'object' ? config : null; - - if (!data && /destroy|hide/.test(config)) { - return; - } - - if (!data) { - data = new Popover(this, _config); - $$$1(this).data(DATA_KEY, data); - } - - if (typeof config === 'string') { - if (typeof data[config] === 'undefined') { - throw new TypeError("No method named \"" + config + "\""); - } - - data[config](); - } - }); - }; - - _createClass(Popover, null, [{ - key: "VERSION", - // Getters - get: function get() { - return VERSION; - } - }, { - key: "Default", - get: function get() { - return Default; - } - }, { - key: "NAME", - get: function get() { - return NAME; - } - }, { - key: "DATA_KEY", - get: function get() { - return DATA_KEY; - } - }, { - key: "Event", - get: function get() { - return Event; - } - }, { - key: "EVENT_KEY", - get: function get() { - return EVENT_KEY; - } - }, { - key: "DefaultType", - get: function get() { - return DefaultType; - } - }]); return Popover; - }(Tooltip); - /** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - */ - - - $$$1.fn[NAME] = Popover._jQueryInterface; - $$$1.fn[NAME].Constructor = Popover; - - $$$1.fn[NAME].noConflict = function () { - $$$1.fn[NAME] = JQUERY_NO_CONFLICT; - return Popover._jQueryInterface; - }; - - return Popover; -}($); - -/** - * -------------------------------------------------------------------------- - * Bootstrap (v4.0.0): scrollspy.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * -------------------------------------------------------------------------- - */ + })($); -var ScrollSpy = function ($$$1) { /** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): scrollspy.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- */ - var NAME = 'scrollspy'; - var VERSION = '4.0.0'; - var DATA_KEY = 'bs.scrollspy'; - var EVENT_KEY = "." + DATA_KEY; - var DATA_API_KEY = '.data-api'; - var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; - var Default = { - offset: 10, - method: 'auto', - target: '' - }; - var DefaultType = { - offset: 'number', - method: 'string', - target: '(string|element)' - }; - var Event = { - ACTIVATE: "activate" + EVENT_KEY, - SCROLL: "scroll" + EVENT_KEY, - LOAD_DATA_API: "load" + EVENT_KEY + DATA_API_KEY - }; - var ClassName = { - DROPDOWN_ITEM: 'dropdown-item', - DROPDOWN_MENU: 'dropdown-menu', - ACTIVE: 'active' - }; - var Selector = { - DATA_SPY: '[data-spy="scroll"]', - ACTIVE: '.active', - NAV_LIST_GROUP: '.nav, .list-group', - NAV_LINKS: '.nav-link', - NAV_ITEMS: '.nav-item', - LIST_ITEMS: '.list-group-item', - DROPDOWN: '.dropdown', - DROPDOWN_ITEMS: '.dropdown-item', - DROPDOWN_TOGGLE: '.dropdown-toggle' - }; - var OffsetMethod = { - OFFSET: 'offset', - POSITION: 'position' + + var ScrollSpy = (function ($$$1) { /** * ------------------------------------------------------------------------ - * Class Definition + * Constants * ------------------------------------------------------------------------ */ - - }; - - var ScrollSpy = - /*#__PURE__*/ - function () { - function ScrollSpy(element, config) { - var _this = this; - - this._element = element; - this._scrollElement = element.tagName === 'BODY' ? window : element; - this._config = this._getConfig(config); - this._selector = this._config.target + " " + Selector.NAV_LINKS + "," + (this._config.target + " " + Selector.LIST_ITEMS + ",") + (this._config.target + " " + Selector.DROPDOWN_ITEMS); - this._offsets = []; - this._targets = []; - this._activeTarget = null; - this._scrollHeight = 0; - $$$1(this._scrollElement).on(Event.SCROLL, function (event) { - return _this._process(event); - }); - this.refresh(); - - this._process(); - } // Getters - - - var _proto = ScrollSpy.prototype; - - // Public - _proto.refresh = function refresh() { - var _this2 = this; - - var autoMethod = this._scrollElement === this._scrollElement.window ? OffsetMethod.OFFSET : OffsetMethod.POSITION; - var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method; - var offsetBase = offsetMethod === OffsetMethod.POSITION ? this._getScrollTop() : 0; - this._offsets = []; - this._targets = []; - this._scrollHeight = this._getScrollHeight(); - var targets = $$$1.makeArray($$$1(this._selector)); - targets.map(function (element) { - var target; - var targetSelector = Util.getSelectorFromElement(element); - - if (targetSelector) { - target = $$$1(targetSelector)[0]; - } - - if (target) { - var targetBCR = target.getBoundingClientRect(); - - if (targetBCR.width || targetBCR.height) { - // TODO (fat): remove sketch reliance on jQuery position/offset - return [$$$1(target)[offsetMethod]().top + offsetBase, targetSelector]; - } - } - - return null; - }).filter(function (item) { - return item; - }).sort(function (a, b) { - return a[0] - b[0]; - }).forEach(function (item) { - _this2._offsets.push(item[0]); - - _this2._targets.push(item[1]); - }); + var NAME = "scrollspy"; + var VERSION = "4.0.0"; + var DATA_KEY = "bs.scrollspy"; + var EVENT_KEY = "." + DATA_KEY; + var DATA_API_KEY = ".data-api"; + var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; + var Default = { + offset: 10, + method: "auto", + target: "", }; - - _proto.dispose = function dispose() { - $$$1.removeData(this._element, DATA_KEY); - $$$1(this._scrollElement).off(EVENT_KEY); - this._element = null; - this._scrollElement = null; - this._config = null; - this._selector = null; - this._offsets = null; - this._targets = null; - this._activeTarget = null; - this._scrollHeight = null; - }; // Private - - - _proto._getConfig = function _getConfig(config) { - config = _extends({}, Default, config); - - if (typeof config.target !== 'string') { - var id = $$$1(config.target).attr('id'); - - if (!id) { - id = Util.getUID(NAME); - $$$1(config.target).attr('id', id); - } - - config.target = "#" + id; - } - - Util.typeCheckConfig(NAME, config, DefaultType); - return config; + var DefaultType = { + offset: "number", + method: "string", + target: "(string|element)", }; - - _proto._getScrollTop = function _getScrollTop() { - return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop; + var Event = { + ACTIVATE: "activate" + EVENT_KEY, + SCROLL: "scroll" + EVENT_KEY, + LOAD_DATA_API: "load" + EVENT_KEY + DATA_API_KEY, }; - - _proto._getScrollHeight = function _getScrollHeight() { - return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight); + var ClassName = { + DROPDOWN_ITEM: "dropdown-item", + DROPDOWN_MENU: "dropdown-menu", + ACTIVE: "active", }; - - _proto._getOffsetHeight = function _getOffsetHeight() { - return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height; + var Selector = { + DATA_SPY: '[data-spy="scroll"]', + ACTIVE: ".active", + NAV_LIST_GROUP: ".nav, .list-group", + NAV_LINKS: ".nav-link", + NAV_ITEMS: ".nav-item", + LIST_ITEMS: ".list-group-item", + DROPDOWN: ".dropdown", + DROPDOWN_ITEMS: ".dropdown-item", + DROPDOWN_TOGGLE: ".dropdown-toggle", + }; + var OffsetMethod = { + OFFSET: "offset", + POSITION: "position", + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ }; - _proto._process = function _process() { - var scrollTop = this._getScrollTop() + this._config.offset; - - var scrollHeight = this._getScrollHeight(); + var ScrollSpy = + /*#__PURE__*/ + (function () { + function ScrollSpy(element, config) { + var _this = this; + + this._element = element; + this._scrollElement = element.tagName === "BODY" ? window : element; + this._config = this._getConfig(config); + this._selector = + this._config.target + + " " + + Selector.NAV_LINKS + + "," + + (this._config.target + " " + Selector.LIST_ITEMS + ",") + + (this._config.target + " " + Selector.DROPDOWN_ITEMS); + this._offsets = []; + this._targets = []; + this._activeTarget = null; + this._scrollHeight = 0; + $$$1(this._scrollElement).on(Event.SCROLL, function (event) { + return _this._process(event); + }); + this.refresh(); + + this._process(); + } // Getters + + var _proto = ScrollSpy.prototype; + + // Public + _proto.refresh = function refresh() { + var _this2 = this; + + var autoMethod = + this._scrollElement === this._scrollElement.window + ? OffsetMethod.OFFSET + : OffsetMethod.POSITION; + var offsetMethod = this._config.method === "auto" ? autoMethod : this._config.method; + var offsetBase = offsetMethod === OffsetMethod.POSITION ? this._getScrollTop() : 0; + this._offsets = []; + this._targets = []; + this._scrollHeight = this._getScrollHeight(); + var targets = $$$1.makeArray($$$1(this._selector)); + targets + .map(function (element) { + var target; + var targetSelector = Util.getSelectorFromElement(element); + + if (targetSelector) { + target = $$$1(targetSelector)[0]; + } - var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight(); + if (target) { + var targetBCR = target.getBoundingClientRect(); - if (this._scrollHeight !== scrollHeight) { - this.refresh(); - } + if (targetBCR.width || targetBCR.height) { + // TODO (fat): remove sketch reliance on jQuery position/offset + return [$$$1(target)[offsetMethod]().top + offsetBase, targetSelector]; + } + } - if (scrollTop >= maxScroll) { - var target = this._targets[this._targets.length - 1]; + return null; + }) + .filter(function (item) { + return item; + }) + .sort(function (a, b) { + return a[0] - b[0]; + }) + .forEach(function (item) { + _this2._offsets.push(item[0]); + + _this2._targets.push(item[1]); + }); + }; - if (this._activeTarget !== target) { - this._activate(target); - } + _proto.dispose = function dispose() { + $$$1.removeData(this._element, DATA_KEY); + $$$1(this._scrollElement).off(EVENT_KEY); + this._element = null; + this._scrollElement = null; + this._config = null; + this._selector = null; + this._offsets = null; + this._targets = null; + this._activeTarget = null; + this._scrollHeight = null; + }; // Private + + _proto._getConfig = function _getConfig(config) { + config = _extends({}, Default, config); + + if (typeof config.target !== "string") { + var id = $$$1(config.target).attr("id"); + + if (!id) { + id = Util.getUID(NAME); + $$$1(config.target).attr("id", id); + } - return; - } + config.target = "#" + id; + } - if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) { - this._activeTarget = null; + Util.typeCheckConfig(NAME, config, DefaultType); + return config; + }; - this._clear(); + _proto._getScrollTop = function _getScrollTop() { + return this._scrollElement === window + ? this._scrollElement.pageYOffset + : this._scrollElement.scrollTop; + }; - return; - } + _proto._getScrollHeight = function _getScrollHeight() { + return ( + this._scrollElement.scrollHeight || + Math.max(document.body.scrollHeight, document.documentElement.scrollHeight) + ); + }; - for (var i = this._offsets.length; i--;) { - var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]); + _proto._getOffsetHeight = function _getOffsetHeight() { + return this._scrollElement === window + ? window.innerHeight + : this._scrollElement.getBoundingClientRect().height; + }; - if (isActiveTarget) { - this._activate(this._targets[i]); - } - } - }; + _proto._process = function _process() { + var scrollTop = this._getScrollTop() + this._config.offset; - _proto._activate = function _activate(target) { - this._activeTarget = target; + var scrollHeight = this._getScrollHeight(); - this._clear(); + var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight(); - var queries = this._selector.split(','); // eslint-disable-next-line arrow-body-style + if (this._scrollHeight !== scrollHeight) { + this.refresh(); + } + if (scrollTop >= maxScroll) { + var target = this._targets[this._targets.length - 1]; - queries = queries.map(function (selector) { - return selector + "[data-target=\"" + target + "\"]," + (selector + "[href=\"" + target + "\"]"); - }); - var $link = $$$1(queries.join(',')); + if (this._activeTarget !== target) { + this._activate(target); + } - if ($link.hasClass(ClassName.DROPDOWN_ITEM)) { - $link.closest(Selector.DROPDOWN).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE); - $link.addClass(ClassName.ACTIVE); - } else { - // Set triggered link as active - $link.addClass(ClassName.ACTIVE); // Set triggered links parents as active - // With both
    and