[
  {
    "path": ".gitignore",
    "content": "# Compiled source #\n###################\n*.com\n*.class\n*.dll\n*.exe\n*.o\n*.so\n\n# Packages #\n############\n*.7z\n*.dmg\n*.gz\n*.iso\n*.jar\n*.rar\n*.tar\n*.zip\n\n# Cache and logs #\n##################\nApplication/Runtime/Cache/\nApplication/Runtime/Logs/\nApplication/Runtime/Temp/\n*.log\n\n# OS generated files #\n######################\n.DS_Store\n.DS_Store?\n._*\n.Spotlight-V100\n.Trashes\nehthumbs.db\nThumbs.db\n~$*\n.editorconfig\n\n# NodeJS Packages #\n###################\nnode_modules\nyarn.lock*\npackage.lock*\n\n# Bower Packages #\n###################\nbower\nbower_components\n\n# Test and Logs #\n#################\nnpm-debug.log\nyarn-debug.log*\nyarn-error.log*\nselenium-debug.log\ntest/unit/coverage\ntest/e2e/reports\n\n# local env files #\n###################\n.env.local\n.env.*.local\n\n# Editor directories and files #\n################################\n.idea\n.vscode\n*.suo\n*.ntvs*\n*.njsproj\n*.sln\n*.sw?\n\n# Others  #\n###########\ngh-pages\n"
  },
  {
    "path": "CHANGELOG.md",
    "content": "# CHANGELOG\n\n> The Change Log of Vue2 Timepicker `vue2-timepicker`\n\n## v 1.1.6\n\n### New\n\n- Support appending the dropdown menu to the document body with `append-to-body`\n\n### Improvements\n\n- In Manual Input mode, support jumping to the next token slot with a colon (`:`) or space (` `) key.\n- Return full data on `blur` and `close` events as per the `change` event.\n\n## v 1.1.5\n\n### New\n\n- Support changing dropdown direction with the `drop-direction` property. It accepts three string values: `\"up\"`, `\"auto\"` and `\"down\"` _(default)_.\n- Additional `container-id` and `drop-offset-height` as helpers for the **\"auto\"** drop direction. Please check the documentation for more info.\n\n## v 1.1.4\n\n### New\n\n- Support customized clear button and dropdown button with the `clearButton` and `dropdownButton` **v-slot** (Thanks to @jost-s).\n- Added new `icon` **v-slot** for displaying an extra input icon.\n- Added new `fixed-dropdown-button` property, to make the dropdown button always visible.\n\n## v 1.1.3\n\n### Improvements\n\n- Enhanced `hide-dropdown` feature -- When the dropdown is hidden by default, users can choose to open the dropdown by clicking the triangle button \"&dtrif;\" (Thanks to @jost-s).\n- Refined `focus` and `blur` event.\n- Minor fixes for the Advanced Keyboard mode.\n\n## v 1.1.2\n\n### New\n\nMore powerful `format` string parameter. E.g., you can hide the \"hour\" column by setting `format=\"mm:ss\"`, or make AM/PM the first column by `format=\"A hh:ss\"`, no extra CSS hacking needed. Please check the Demo page for more examples.\n\n### Improvements\n\n- Support `shift+tab` to navigate to the previous token slot in the Manual Input mode (Thanks to @jost-s).\n- Other minor keyboard navigation enhancements for Manual Input mode\n\n## v 1.1.1\n\n### Improvements\n\nInstant feedback after manual input. Plus, add a new `manual-input-timeout` property to help set up the timeout for continuous input (Thanks to @jost-s).\n\n#### Notes for Contributors\n\nWe've upgraded to use vue-cli **v4** in this version. Please check the CONTRIBUTING.md for more info.\n\n\n## v 1.1.0\n\n### New\n\n- Support manually input values with the `manual-input` toggle.\n- Enable to hide the dropdown menu with `hide-dropdown` in Manual Input (`manual-input`) mode.\n- Added conditional helper classes `is-empty`, `invalid` and `all-selected` to the `<input>` element.\n- Change the `<input>` border to red color when user input is invalid. E.g., when it contains a disabled hour value. You can mute this auto-styling by adding `\"skip-error-style\"` to `input-class`.\n- Add support to the `autocomplete` attribute.\n- Emit `error` event when the input value becomes invalid.\n- Emit `focus` and `blur` events to help to identify the focus/blur state. Useful when the dropdown is force hidden by `hide-dropdown`.\n\n### Improvements\n\nEnable seamless loop from the start or end of a column in `advanced-keyboard` mode.\n\n## v 1.0.8\n\n### Improvements\n\nKeep the dropdown menu open when mouse drag on the hour/minute/second list's scrollbar handler.\n\n## v 1.0.7\n\n### Fixes\n\nFixes `placeholder` not dynamically updated issue in some cases (Thanks to @ObsidianTech).\n\n### Improvements\n\nVertical alignment refined for the clear button across different browsers.\n\n## v 1.0.6\n\n### New\n\nAdded `auto-scroll` feature.\n\n### Improvements\n\nOn Advanced Keyboard mode, auto-focus on the selected value (if any) in priority.\n\n## v 1.0.5\n\n### Fixes\n\nFixes the Advanced Keyboard tab navigating feature on Firefox\n\n## v 1.0.4\n\n### Improvements\n\n- Adjust the default value of `blur-delay` to 300ms. (Thanks to @rjurado01).\n- Added _Array_ and _Object_ types support to `input-class`.\n\n## v 1.0.3\n\n### New\n\nAdded `lazy` event mode. (Thanks to @VictorCazanave)\n\n## v 1.0.2\n\n### New\n\n- Support customized labels for the hour, minute, second, and APM pickers (Thanks to @maritaria).\n- Support setting customized text to replace the `am`/`pm` (`AM`/`PM`) string in the UI.\n- Added `input-width` property to help to adjust Timepicker's width with ease.\n\n### Improvements\n\nAdded more guiding notes for SSR usage. (Thanks to @oj-recit)\n\n## v 1.0.1\n\n### Fixes\n\nFixes the _String_ form `v-model` support on Edge and Safari\n\n## v 1.0.0\n\n### Breaking Changes\n\n**⚠️ IMPORTANT:** The default **import** source in `v1.0.0+` is different from the `v0.x` versions.\n\nFrom `v1.0.0+`, CSS is excluded from the main source. Please import the CSS file separately.\n\n```javascript\n// v1.0.0+\n//\nimport VueTimepicker from 'vue2-timepicker'\n// -> Imports JS file in UMD form\n\n// CSS\nimport 'vue2-timepicker/dist/VueTimepicker.css'\n```\n\nComparing to:\n\n```javascript\n// While in the v0.x versions\nimport VueTimepicker from 'vue2-timepicker'\n// -> Imports the *.vue Single File Component together with CSS\n```\n\nPlease check the [Documentation](https://github.com/phoenixwong/vue2-timepicker/blob/master/README.md#get-started) for more available import formats.\n\n### New\n\n- Support using _String_ value in `v-model`.\n- New `minute-range` and `second-range` support. Companioned with `hide-disabled-minutes` and `hide-disabled-seconds`.\n- New `hide-disabled-items` property for hiding **all** excluded items (hour, minute and seconds) at a time.\n- New `close-on-complete` for automatically close the dropdown when the user finishes selecting **all** of the required fields.\n- Added `advanced-keyboard` support for Arrow Keys navigation and Space/Enter key selection.\n- New `tabindex` property support, which will be assigned to the `<input type=\"text\">` within the component.\n- Added `debug-mode` to help developers investigating the input -> output process.\n\n### Fixes\n\nAdded ES \"module\" and other version fields in _package.json_ to resolving more loader issues. (Thanks to @Trainmaster)\n\n### Improvements\n\nWhen `hour-range` is set in a 12-hour format Timepicker, recheck the selected hour's validity after user switching \"AM/PM\" from the dropdown.\n\n## v 0.2.2\n\n### Fixes\n\nFixes `v-model` watcher for cases like changing the input value programmatically (non-user behavior).\n\n### Improvements\n\nAdded `displayTime` in the return data of `change` event.\n\n## v 0.2.1\n\n### New\n\n- New `input-class` support. The custom input class will be assigned to the `<input type=\"text\">` within the component. (Thanks to @marufmax)\n- Add support to `placeholder`, just like other regular form elements\n\n### Improvements\n\nRefined `@click.stop` logic\n\n### Fixes\n\nFixes possible loader issue in some Webpack configs (Thanks to @RaphaelJ)\n\n## v 0.2.0\n\n### Breaking Changes\n\n- Upgraded to support more current **vue** (2.6.10) and **vue-cli** (3.9.0) with Webpack 4.\n\n### New\n\n- New `hour-range` support. Added capability to show which hours are available and disabled the rest.\n- New `hide-disabled-hours`. The best companion of `hour-range`, for you to hide unwanted hours in the hour picker.\n- New `disabled` parameter. To disable dropdown picker and clear button in the UI.\n- Emit `open` and `close` events to help tracking the dropdown toggle status. (Thanks to @tprashan)\n\n### Improvements\n\n- Put `12` before `1` in the hour select for 12-hour format (`hh` and `h`). It will be more natural, especially when paired with `hour-range`.\n- Support `name` parameter as regular form inputs. (Thanks to @dilipgurung)\n\n## v 0.1.4\n\n### Fixes\n\nAdded stop propagation `.stop` to click events\n\n## v 0.1.3\n\n### Improvements\n\nAdd support to `<label for=\"...\">` (Thanks to @Reached)\n\n```html\n<!-- Sample -->\n<label for=\"yourID\">Your Label Text</label>\n<vue-timepicker id=\"yourID\"></vue-timepicker>\n```\n\n## v 0.1.2\n\nRelease the `dist` files\n\n## v 0.1.1\n\nThe first notable release of Vue2 Timepicker\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "# Contribution\n\nPlease feel free to fork and help developing.\n\n```bash\n# Install dependencies\nyarn install\n\n# Init development dependencies\nyarn dev:init\n\n# Start developing. Serve with hot reload at localhost:8080\nyarn dev\n```\n\nFor detailed explanation on how things work, checkout the [Vue Cli Guide](https://cli.vuejs.org/guide/).\n\n**BREAKING CHANGES**\n\n- Start from `^0.2.0`, we develop Demo pages with [**Yarn**](\nhttps://yarnpkg.com/), [**Pug**](https://pugjs.org/), and [**Stylus**](http://stylus-lang.com/)\n- Upgraded to **@vue/cli v4** from `^1.1.1`.\n\n**NOTE**\n\nIf you have trouble running `yarn dev` after the _^1.1.1_ upgrade, please try the following process:\n\n1. Remove the existing `node_modules` folder and the `yarn.lock` in this repository's **root** directory.\n2. Next, remove the `node_modules` folder and the `yarn.lock` in the **/demo** directory as well.\n3. Go back to the repository's root, run `yarn install`, and `yarn dev:init` again.\n\n---\n\n### Watchdogs\n\n![Libraries.io dependency status for GitHub repo](https://img.shields.io/librariesio/github/phoenixwong/vue2-timepicker?style=flat-square)\n![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/phoenixwong/vue2-timepicker?style=flat-square)\n![GitHub Release Date](https://img.shields.io/github/release-date/phoenixwong/vue2-timepicker?style=flat-square)\n![npm](https://img.shields.io/npm/dw/vue2-timepicker?style=flat-square)\n"
  },
  {
    "path": "LICENSE.md",
    "content": "MIT License\n\nCopyright (c) 2019 Phoenix Wong\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "MIGRATION.md",
    "content": "# Table of Contents\n\n- [Migrating from Vue 1.x vue-timepicker](https://github.com/phoenixwong/vue2-timepicker/blob/master/MIGRATION.md#migrating-from-vue-1x-vue-timepicker)\n- [Migrating from Bower to Yarn or NPM](https://github.com/phoenixwong/vue2-timepicker/blob/master/MIGRATION.md#migrating-from-bower-to-yarn-or-npm)\n\n# Migrating from Vue 1.x vue-timepicker\n\nThere are bunch of [notable changes in Vue2](http://vuejs.org/guide/migration.html), and quite some of the key features our original `vue-timepicker` has been relying on, got deprecated since 2.0. So here we are, a brand new version compatible with Vue 2.x.\n\n## Crucial changes\n\n### Use `v-model` Instead of `:time-value.sync`\n\nThe `.sync` modifier on `v-bind` has been deprecated ([source](http://vuejs.org/guide/migration.html#once-and-sync-Modifiers-on-v-bind-removed)), hence the original `:time-value.sync` binding is not going to work anymore.\n\nHowever, thanks to the awesome Vue2.0 feature, which now has great support for `v-model` on custom components, you can simply replace those sync properties with `v-model`.\n\n```html\n<!-- Vue 1.x -->\n<vue-timepicker :time-value.sync=\"yourTimeValue\"></vue-timepicker>\n\n<!-- Vue 2.x version -->\n<vue-timepicker v-model=\"yourTimeValue\"></vue-timepicker>\n```\n\n### No More `vue-timepicker-update` Event\n\nThe `$dispatch` event `vue-timepicker-update` been depending on, together with the `events` option, got removed in Vue2 either ([source 1](http://vuejs.org/guide/migration.html#dispatch-and-broadcast-replaced), [source 2](http://vuejs.org/guide/migration.html#events-option-removed)). Please switch to `@change` event handler instead -- check the [Documentation](https://github.com/phoenixwong/vue2-timepicker#method-2-add-change-event-handler) for detail example.\n\n## Minor Changes\n\n### Replace `$arguments` with `$event` in the `change` event handler\n\nIf you're using `change` event handler **with** custom arguments, please replace the old `$arguments` parameter with `$event`\n\n```html\n<!-- Vue 1.x -->\n<vue-timepicker :time-value.sync=\"yourTimeValue\" @change=\"changeHandler($arguments, 'foo', 'bar')\"></vue-timepicker>\n\n<!-- Vue 2.x version -->\n<vue-timepicker :time-value.sync=\"yourTimeValue\" @change=\"changeHandler($event, 'foo', 'bar')\"></vue-timepicker>\n```\n\nWhereas the `change` event handler *without* custom arguments is intact.\n\n### Get Rid of the Array Wrapper `[]` in `change` Event Data\n\nIn the example above, when reading event data from the `changeHandler` in 1.x, the data structure will be --\n\n```javascript\n// Vue 1.x\n[\n  {\n    data: {\n      HH:...,\n      mm:...,\n      ...\n    }\n  }\n]\n```\n\nIn the 2.x version, we can say goodbye to the `[]` wrapper --\n\n```javascript\n// Vue 2.x version\n{\n  data: {\n    HH:...,\n    mm:...,\n    ...\n  }\n}\n```\n\n### The `change` event now returns full values\n\nIn the Vue 1.x version, if you have `time-value` in sync, `change` event will only return values from your predefined tokens. Whereas the new 2.x version will always return a full value package containing all supported tokens.\n\nFor example, if you have a binding value defined in the form of \"HH:mm:ss\"\n\n```javascript\n// predefined data sample\ndata: function () {\n  return {\n    yourTimeValue: {\n      HH: \"10\",\n      mm: \"05\",\n      ss: \"00\"\n    },\n    ...\n  }\n}\n```\n\nWhen the picker is set to \"14:30:15\" later --\n\n```javascript\n// Vue 1.x\n// - only returns predefined tokens ('HH', 'mm' and 'ss')\n{\n  HH: \"14\",\n  mm: \"30\",\n  ss: \"15\"\n}\n\n// Vue 2.x version\n// - returns All supported tokens\n{\n  HH: \"14\",\n  H: \"14\",\n  hh: \"14\",\n  a: \"am\",\n  A: \"AM\",\n  h: \"14\",\n  kk: \"14\",\n  k: \"14\",\n  m: \"30\",\n  mm: \"30\",\n  s: \"15\",\n  ss: \"15\"\n}\n```\n\n## Miscellaneous\n\nThere will be **no** standalone ES5 script in the 2.x version.\n\n---\n\n# Migrating from Bower to Yarn or NPM\n\nBecause [Bower](https://bower.io/) itself stopped maintaining since 2017, VueTimepicker drops support for Bower from version `0.2.0+`.\n\nPlease check Bower's official guidelines for [How to migrate away from Bower?](https://bower.io/blog/2017/how-to-migrate-away-from-bower/)\n"
  },
  {
    "path": "README.md",
    "content": "# Vue2 Timepicker  \n\n![GitHub version](https://img.shields.io/github/package-json/v/phoenixwong/vue2-timepicker?color=success&style=flat-square)\n![npm version](https://img.shields.io/npm/v/vue2-timepicker?style=flat-square)\n![GitHub release](https://img.shields.io/github/release/phoenixwong/vue2-timepicker?label=github&style=flat-square)\n![npm downloads](https://img.shields.io/npm/dm/vue2-timepicker?style=flat-square)\n\n---\n\n💡 Dead repo recharged 🔋\n\n---\n\nA dropdown time picker (hour|minute|second) for **Vue 2.x**, with flexible time format support.\n\n## Demo\n\nYou can see the **Vue2 Timepicker** in action in the [Demo Page](https://phoenixwong.github.io/vue2-timepicker/)\n\n## Migration\n\nPlease check [MIGRATION.md](https://github.com/phoenixwong/vue2-timepicker/blob/master/MIGRATION.md) for basic guidelines if you are about to:\n\n- Migrate from the Vue 1.x version **[vue-time-picker](https://github.com/phoenixwong/vue-timepicker)**\n- Migrate from Bower to Yarn or NPM (Vue2 Timepicker `v0.1.x` -> `v0.2.0+`)\n\n\n## Dependencies\n\n[Vue.js](http://vuejs.org/)&nbsp;&nbsp;&nbsp;![npm peer dependency version](https://img.shields.io/npm/dependency-version/vue2-timepicker/peer/vue?style=flat-square)\n\n## Installation\n\n```bash\nyarn add vue2-timepicker\n```\n\n```bash\nnpm install vue2-timepicker --save\n```\n\n> NOTE: We stop Bower support from `0.2.0+`, please check [MIGRATION.md](https://github.com/phoenixwong/vue2-timepicker/blob/master/MIGRATION.md#migrating-from-bower-to-yarn-or-npm) for migration guidelines.\n\n## Get Started\n\n### **Step 1:** Import VueTimepicker\n\n#### **Option A:** Import component JS and CSS\n\n```javascript\n// Main JS (in UMD format)\nimport VueTimepicker from 'vue2-timepicker'\n\n// CSS\nimport 'vue2-timepicker/dist/VueTimepicker.css'\n```\n\n#### **Option B:** Choose any bundle version base on your needs\n\n**Javascript**\n\n```javascript\n// CommonJS\nimport VueTimepicker from 'vue2-timepicker/dist/VueTimepicker.common.js'\n// UMD\nimport VueTimepicker from 'vue2-timepicker/dist/VueTimepicker.umd.js'\n// UMD Minified\nimport VueTimepicker from 'vue2-timepicker/dist/VueTimepicker.umd.min.js'\n```\n\n**CSS**\n\n```css\n@import 'vue2-timepicker/dist/VueTimepicker.css';\n\n/* Or, with node_module alias path like: */\n@import '~vue2-timepicker/dist/VueTimepicker.css';\n\n/*\n  NOTE: the path alias to `node_modules` differs between bundlers.\n  Please change the `~` to any alias that works with your environment.\n */\n```\n\n**Single File Component**\n\n```javascript\n// The *.vue file with CSS included\nimport VueTimepicker from 'vue2-timepicker/src/vue-timepicker.vue'\n// NOTE: In some cases, it requires additional workarounds in the bundler's config\n```\n\n#### **SSR Usage**\n\n```javascript\n// Import the *.vue file (CSS included)\nimport VueTimepicker from 'vue2-timepicker/sfc'\n// Note the `/sfc` suffix here\n```\n\nIf your server-side renderer cannot recognize the `/sfc` alias, please try --\n\n```javascript\n// Manually point to the `/src` folder\nimport VueTimepicker from 'vue2-timepicker/src'\n// Or, to the specific file name\nimport VueTimepicker from 'vue2-timepicker/src/vue-timepicker.vue'\n```\n\n### **Step 2**: Include VueTimepicker in your component\n\n```javascript\nvar yourComponent = new Vue({\n  components: { VueTimepicker },\n  ...\n})\n```\n\n### **Step 3**: Put `vue-timepicker` in your component's template\n\nThen, you can introduce the `vue-timepicker` tag anywhere you like in your component's template\n\n```html\n<vue-timepicker></vue-timepicker>\n```\n\n\n## Basic Usage\n\n### Base\n\n```html\n<!-- Default to 24-Hour format HH:mm -->\n<vue-timepicker></vue-timepicker>\n```\n\n### Customized Time Format\n\n```html\n<!-- Show seconds picker -->\n<vue-timepicker format=\"HH:mm:ss\"></vue-timepicker>\n\n<!-- 12-hour format, with AM/PM picker -->\n<vue-timepicker format=\"hh:mm A\"></vue-timepicker>\n\n<!-- 12-hour format, with seconds picker and am/pm picker -->\n<vue-timepicker format=\"hh:mm:ss a\"></vue-timepicker>\n```\n\nVueTimepicker recognizes the following tokens in the format string\n\nSection    | Token | Output\n---------- | ----- | ---------------\n**AM/PM**  | A     | AM PM\n&nbsp;     | a     | am pm\n**Hour**   | H     | 0 1 ... 22 23\n&nbsp;     | HH    | 00 01 ... 22 23\n&nbsp;     | h     | 1 2 ... 11 12\n&nbsp;     | hh    | 01 02 ... 11 12\n&nbsp;     | k     | 1 2 ... 23 24\n&nbsp;     | kk    | 01 02 ... 23 24\n**Minute** | m     | 0 1 ... 58 59\n&nbsp;     | mm    | 00 01 ... 58 59\n**Second** | s     | 0 1 ... 58 59\n&nbsp;     | ss    | 00 01 ... 58 59\n\n> If not set, the `format` string is default to \"HH:mm\"\n\n### Customized Picker Interval\n\n```html\n<!-- Show minute picker's value in the form of 0, 5, 10, ... 55, 60 -->\n<vue-timepicker :minute-interval=\"5\"></vue-timepicker>\n\n<!-- Show second picker's value in the form of 0, 10, 20, ... 50, 60 -->\n<vue-timepicker :second-interval=\"10\"></vue-timepicker>\n\n<!-- Bind interval config with your own data variable -->\n<vue-timepicker :minute-interval=\"yourMinuteInterval\"></vue-timepicker>\n```\n\n\n## Data Binding\n\n### Bind Value with `v-model`\n\nFrom `v1.0.0+`, timepicker's `v-model` accepts value in both _Object_ (default) and _String_ format. The `v0.x` versions only support _Object_ form.\n\n#### Set Initial Value\n\nFor example, if you want to set \"10:05:00\" (\"HH:mm:ss\" format) as the initial value of vue-timepicker:\n\n```javascript\nconst yourComponent = new Vue({\n  components: { VueTimepicker },\n  data () {\n    return {\n      // Object form\n      yourTimeValue: {\n        HH: '10',\n        mm: '05',\n        ss: '00'\n      },\n      // String form\n      yourStringTimeValue: '10:05:00',\n      ...\n    }\n  },\n  ...\n})\n```\n\nBoth forms lead to the same result.\n\n```html\n<!-- Object form -->\n<vue-timepicker v-model=\"yourTimeValue\" format=\"HH:mm:ss\"></vue-timepicker>\n\n<!-- String form -->\n<vue-timepicker v-model=\"yourStringTimeValue\" format=\"HH:mm:ss\"></vue-timepicker>\n```\n\n#### Set Empty Initial Value\n\nWhen the initial value is completely unknown:\n\n```javascript\ndata () {\n  return {\n    // Will be rendered as Object form\n    yourEmptyValue: {},\n    emptyValueToo: undefined,\n    emptyValueAsWell: null,\n\n    // Will be taken into String form\n    yourEmptyStringValue: ''\n  }\n}\n```\n\n#### Set Partially-Known Initial Value\n\nFor instance, if you want to set the initial hour value to **8 pm** and leave the rest slots empty:\n\n```javascript\ndata () {\n  return {\n    // OBJECT FORM\n    // Default 24-Hour\n    timeValue: {\n      HH: '20',\n      mm: ''\n    },\n    // 12-Hour with seconds\n    timeValueWithSec: {\n      h: '8',\n      mm: '',\n      ss: '',\n      A: 'PM'\n    },\n\n    // STRING FORM\n    // Default 24-Hour + String value\n    stringTimeValue: '20:mm',\n    // 12-Hour with seconds + String value\n    stringTimeValueWithSec: '8:mm:ss PM'\n  }\n}\n```\n\n```html\n<!-- OBJECT FORM -->\n<!-- Default 24-Hour -->\n<vue-timepicker v-model=\"timeValue\"></vue-timepicker>\n<!-- 12-Hour with seconds -->\n<vue-timepicker v-model=\"timeValueWithSec\" format=\"h:mm:ss A\"></vue-timepicker>\n\n<!-- STRING FORM -->\n<!-- Default 24-Hour + String value -->\n<vue-timepicker v-model=\"stringTimeValue\"></vue-timepicker>\n<!-- 12-Hour with seconds + String value -->\n<vue-timepicker v-model=\"stringTimeValueWithSec\" format=\"h:mm:ss A\"></vue-timepicker>\n```\n\n### Get Time Picker's Current Value\n\n#### Get value from `v-model`\n\nYou can either read the binding `v-model` value anytime or add a handler to deal with the `input` event from vue-timepicker.\n\n```html\n<vue-timepicker v-model=\"yourTimeValue\" format=\"HH:mm:ss\" @input=\"inputHandler\"></vue-timepicker>\n```\n\n```javascript\n{\n  data () {\n    return {\n      yourTimeValue: {\n        HH: '10',\n        mm: '05',\n        ss: '00'\n      },\n      ...\n    }\n  },\n\n  methods: {\n    inputHandler (eventData) {\n      console.log(eventData)\n    }\n  }\n}\n\n```\n\nIn this case, we set the initial value (_yourTimeValue_) to \"10:05:00\". Then, open the dropdown picker and pick a new time, like setting it to \"14:30:15\" for example.\n\n```javascript\n// In `inputHandler`:\n// console.log outputs -> {HH: \"14\", mm: \"30\", ss: \"15\"}\n```\n\n### Read Data From `change` Event\n\n```html\n<!-- A: No argument -->\n<vue-timepicker v-model=\"yourTimeValue\" @change=\"changeHandler\"></vue-timepicker>\n\n<!-- B: Custom arguments -->\n<vue-timepicker v-model=\"yourTimeValue\" @change=\"otherChangeHandler($event, 'foo', 42)\"></vue-timepicker>\n```\n\n```javascript\n// A: No argument\nchangeHandler (eventData) {\n  console.log(eventData)\n  // -> {data: {HH:..., mm:... }, displayTime: \"HH:mm\"}\n}\n\n// B: Custom arguments\notherChangeHandler (eventData, yourArg1, yourArg2) {\n  console.log(eventData)\n  // -> {data: {HH:..., mm:... }, displayTime: \"HH:mm\"}\n  console.log(yourArg1)\n  // -> 'foo'\n  console.log(yourArg2)\n  // -> 42\n}\n```\n\nUnlike `v-model` and `input` event, which only return the defined time tokens you provided in the binding variable, the `change` event delivers **all** supported formats.\n\nIn the example above, after the user set values to \"14:30:15\" in the picker, `change` event returns the following data:\n\n```javascript\n// `@change` event data\n{\n  data: {\n    HH: \"14\",\n    H: \"14\",\n    hh: \"14\",\n    a: \"am\",\n    A: \"AM\",\n    h: \"14\",\n    kk: \"14\",\n    k: \"14\",\n    m: \"30\",\n    mm: \"30\",\n    s: \"15\",\n    ss: \"15\"\n  },\n  // extra `displayTime` added since v0.2.2\n  displayTime: \"14:30:15\"\n}\n```\n\nWhereas the `v-model` / `input` only return the data with defined tokens\n\n```javascript\n// Previously defined variable (`yourTimeValue` in this case) as {HH:..., mm:..., ss:...}\n// Hence, the `v-model` returns:\n{\n  HH: \"14\",\n  mm: \"30\",\n  ss: \"15\"\n}\n```\n\n## Advance Usage\n\n### Hide Clear Button\n\n```html\n<vue-timepicker hide-clear-button></vue-timepicker>\n```\n\nEnable to hide the \"&times;\" clear button on the right-hand side. Users can still pick new values from the dropdown, but they cannot erase any selected data.\n\n### Disable Picker\n\n```html\n<vue-timepicker disabled></vue-timepicker>\n```\n\nFully disable both dropdown picker and the \"&times;\" clear button in the UI, to prevent users from changing any values again.\n\n### Close on Complete\n\nAutomatically close the dropdown when the user finishes selecting **all** of the required fields.\n\n```html\n<vue-timepicker close-on-complete></vue-timepicker>\n```\n\n### Auto-Scroll\n\n```html\n<vue-timepicker auto-scroll></vue-timepicker>\n```\n\nAuto-scroll to selected values on dropdown open. It works with both:\n\n- Programmatically defined value. E.g., the initial value from `v-model`\n- Values manually picked by the user.\n\n### Define Hour Range\n\nSometimes you may want to limit hours picker to a specific range. The `hour-range` parameter is here to help.\n\n```html\n<!-- 24-Hour Format -->\n<vue-timepicker :hour-range=\"[5, [8, 12], [14, 17], 19]\"></vue-timepicker>\n<!-- >> Equals to :hour-range=\"[5, 8, 9, 10, 11, 12, 14, 15, 16, 17, 19]\" -->\n\n<!-- 12-Hour Format -->\n<vue-timepicker :hour-range=\"['7a', '9a', '11a', '1p', ['3p', '5p'], '7p']\" format=\"hh:mm a\">\n<!-- >> Equals to :hour-range=\"['7a', '9a', '11a', '1p', '3p', '4p', '5p', '7p']\" -->\n```\n\n### Set Minute and Second Range\n\nSimilar to `hour-range`, you can determine values in the minutes and seconds dropdown by using `minute-range` and `second-range`.\n\n```html\n<!-- Minute range -->\n<vue-timepicker :minute-range=\"[0, 6, [10, 30], 42, 50]\"></vue-timepicker>\n<!-- >> Active Items: 00, 06, 10, 11, 12, 13, ..., 27, 28, 29, 30, 42, 50 -->\n\n<!-- Second range -->\n<vue-timepicker format=\"H:m:s\" :second-range=\"[0, 6, [10, 30], 42, 50]\"></vue-timepicker>\n<!-- >> Active Items: 0, 6, 10, 11, 12, 13, ..., 27, 28, 29, 30, 42, 50 -->\n```\n\nWhen implemented together with `minute-interval` and `second-interval`, the customized intervals take the priority.\n\n```html\n<!-- Minute range + 5-minute interval -->\n<vue-timepicker :minute-range=\"[0, 6, [10, 30], 42, 50]\" :minute-interval=\"5\"></vue-timepicker>\n<!-- >> Active Items: 00, 10, 15, 20, 25, 30, 50 -->\n\n<!-- Second range + 10-second interval-->\n<vue-timepicker format=\"H:m:s\" :second-range=\"[0, 6, [10, 30], 42, 50]\" :second-interval=\"10\"></vue-timepicker>\n<!-- >> Active Items: 0, 10, 20, 30, 50 -->\n```\n\n### Hide Disabled Items\n\nThere're four kinds of helper properties to let you hide the values excluded by `hour-range`, `minute-range`, and `second-range`.\n\n- **hide-disabled-items**: Hide **all** disabled items - hour, minute, and seconds.\n- **hide-disabled-hours**: Hide disabled **hour** values only.\n- **hide-disabled-minutes**: Hide disabled **minute** values only.\n- **hide-disabled-seconds**: Hide disabled **second** values only.\n\n```html\n<!-- `hide-disabled-hours` sample -->\n<vue-timepicker :hour-range=\"[5, [8, 12], [14, 17], 19]\" hide-disabled-hours></vue-timepicker>\n```\n\nHere we take the `hide-disabled-hours` as an example. It's a pair with the `hour-range` parameter. In this case, the hour picker hides the invalid hours (_0, 1, 2, 3, 4, 6, 7, 13, 18, 20, 21, 22, 23_) and display the valid hours (_5, 8, 9, ..._) only.\n\n### Advanced Keyboard Support\n\nBasic keyboard support includes:\n\n- **Tab**: Focus or blur the Timepicker\n- **Esc**: Close the dropdown\n\nAdvance Keyboard support (enabled with `advanced-keyboard`):\n\n- **Arrow Keys**: Navigate between valid (non-disabled) values and columns\n- **Space** or **Enter**: Select the focusing item\n\n```html\n<vue-timepicker advanced-keyboard></vue-timepicker>\n```\n\nPlease be aware that after putting the `advanced-keyboard` on, hundreds of additional keyboard event listeners are going to be attached to the component. The amount of listeners depends on how many hours, minutes, and seconds value you enabled in the current Timepicker.\n\n### Blur Delay\n\n```html\n<!-- Unit: million second -->\n<vue-timepicker :blur-delay=\"500\"></vue-timepicker>\n```\n\nSets the blur delay time for the dropdown. Defaults to `300` if not set.\n\n### Manual Input Support\n\n```html\n<vue-timepicker manual-input></vue-timepicker>\n```\nLet users add or change values through the `<input>` box besides the dropdown picker.\n\n### Manual Input Timeout\n\n```html\n<!-- Unit: million second -->\n<vue-timepicker :manual-input-timeout=\"1500\"></vue-timepicker>\n```\n\nWorks with **manual-input** mode. It sets the timeout for continuous input. Defaults to `1000` if not set.\n\n**How It Works?**\n\nFor example, when a user focuses on the **hour** slot (`HH`) of a `\"HH:mm\"` formatted Timepicker (with the default value `1000`):\n\n- **Case 1:** User first inputs `1`, and then inputs `2` _500ms_ later -> Timepicker takes `12` as the final value and set it to the `\"HH\"` slot.\n- **Case 2:** User inputs `1`, and then presses the key `2` _1200ms_ later -> Timepicker takes `2` as the final value and set it to `02` for the `\"HH\"` slot.\n\n### Hide Dropdown\n\n> **NOTE:** To use this feature, you MUST ENABLE the `manual-input` mode _(v.1.1.0+)_ in the first place.\n\nIt makes the dropdown picker hidden by default.\n\n```html\n<vue-timepicker manual-input hide-dropdown></vue-timepicker>\n```\n\nUsers can still choose to open the dropdown by clicking the triangle (\"&dtrif;\") button on the right. _(v.1.1.3+)_\n\n### Fixed Dropdown Button\n\n```html\n<vue-timepicker fixed-dropdown-button></vue-timepicker>\n```\n\nMake the dropdown button always visible in the UI. _(v.1.1.4+)_\n\n### Drop Direction\n\nChange dropdown direction when needed _(v.1.1.5+)_. Accepting values:\n\n- **down**: Default value.\n- **up**: Force open the dropdown above the input.\n- **auto**: Auto detects available height and opens the dropdown on top if there are not enough spaces below the input.\n\n```html\n<!-- Force drop up -->\n<vue-timepicker drop-direction=\"up\"></vue-timepicker>\n\n<!-- Auto drop direction  -->\n<vue-timepicker drop-direction=\"auto\"></vue-timepicker>\n```\n\n#### Container ID\n\nWorks with `drop-direction=\"auto\"`. It defines the parent container where the timepicker should calculate the free spaces from. If this value is not set, timepicker will watch `document.body` instead.\n\n```html\n<!-- Parent Container ID: \"auto-dropdown-containter\" -->\n<div id=\"auto-dropdown-containter\">\n  <!-- Defined Container -->\n  <vue-timepicker drop-direction=\"auto\" container-id=\"auto-dropdown-containter\"></vue-timepicker>\n\n  <!-- Default (document body) -->\n  <vue-timepicker drop-direction=\"auto\"></vue-timepicker>\n</div>\n```\n\n#### Drop Offset Height\n\nWorks with `drop-direction=\"auto\"` either. Defaults to `160` (unit: _px_) if the value is not set.\n\n```html\n<!--\n  When the available bottom space is less than 200px,\n  open the dropdown above the input.\n-->\n<vue-timepicker drop-direction=\"auto\" :drop-offset-height=\"200\"></vue-timepicker>\n```\n\n### Lazy Event Mode\n\n```html\n<vue-timepicker lazy></vue-timepicker>\n```\n\nWhen `lazy` event mode is toggled on, only an actual user behavior can trigger the `input` and `change` events. Which are:\n\n- The user opened the dropdown and picked a new value\n- The user clicked the (\"&times;\") clear button\n- The user inputted a new value or clear the existing value in the Manual Input mode\n\nIn other words, on `lazy` mode, Timepicker won't emit `input` and `change` events on mounted, nor after the value got modified programmatically.\n\n\n### Append To Body\n\nAppend the dropdown menu to the end of the document `<body>`. Try this if you have `z-index` or `overflow` layout issue with the dropdown.\n\n```html\n<vue-timepicker append-to-body></vue-timepicker>\n```\n\nThe body-appended dropdown's CSS class is `vue__time-picker-dropdown`. Its default `z-index` is `100`. You can change the value by adding the following style in your app -- \n\n```css\n/* E.g. set the z-index to 5000 */\n.vue__time-picker-dropdown {\n  z-index: 5000;\n}\n```\n\n**NOTE**: If you have to override some of the CSS styles within the dropdown, you will need to update their selectors' class names as well. Simply change any `.vue__time-picker .dropdown` selector to `.vue__time-picker-dropdown`.\n\nFor example, when you have a customized background color set for selected values:\n\n```css\n/* Default override (not using \"append-to-body\") */\n.vue__time-picker .dropdown ul li:not([disabled]).active {\n  background: steelblue;\n}\n\n/* When using \"append-to-body\" */\n.vue__time-picker-dropdown ul li:not([disabled]).active {\n  background: steelblue;\n}\n```\n\n### Enable Debug Mode\n\n```html\n<vue-timepicker debug-mode></vue-timepicker>\n```\n\nIt's aimed to help developers to investigate the input -> output process. When debug mode is toggled **on**, you can see extra `DEBUG: ...` logs coming through the console window as you interact with the vue-timepicker.\n\nLet's create a \"bug\" here as an example --\n\n```html\n<!-- Manual Bug Sample: Define timepicker with format \"h:mm:ss A\" -->\n<vue-timepicker v-model=\"yourStringValue\" format=\"h:mm:ss A\" debug-mode></vue-timepicker>\n```\n\n```javascript\n{\n  data () {\n    return {\n      // Manual Bug Sample:\n      // Should be '3:mm:05 A' but oops.. the finger slipped\n      yourStringValue: 'e:mm:05 A'\n    }\n  }\n}\n```\n\nThen, in the console window, you should see a debug log saying:\n\n```console\nDEBUG: The input string in \"v-model\" does NOT match the \"format\" pattern\nformat: h:mm:ss A\nv-model: e:mm:05 A\n```\n\n## Main Props API Overview\n\nProp                      | Type               | Required | Default Value\n------------------------- | ------------------ | -------- | -------------\n**v-model**               | _Object_, _String_ | no       | _undefined_\n**format**                | _String_           | no       | \"HH:mm\"\n**minute-interval**       | _Number_           | no       | _undefined_\n**second-interval**       | _Number_           | no       | _undefined_\n**hide-clear-button**     | _Boolean_          | no       | false\n**disabled**              | _Boolean_          | no       | false\n**close-on-complete**     | _Boolean_          | no       | false\n**auto-scroll**           | _Boolean_          | no       | false\n**hour-range**            | _Array_            | no       | _undefined_\n**minute-range**          | _Array_            | no       | _undefined_\n**second-range**          | _Array_            | no       | _undefined_\n**hide-disabled-hours**   | _Boolean_          | no       | false\n**hide-disabled-minutes** | _Boolean_          | no       | false\n**hide-disabled-seconds** | _Boolean_          | no       | false\n**hide-disabled-items**   | _Boolean_          | no       | false\n**advanced-keyboard**     | _Boolean_          | no       | false\n**blur-delay**            | _Number_           | no       | 300\n**manual-input**          | _Boolean_          | no       | false\n**manual-input-timeout**  | _Number_           | no       | 1000\n**hide-dropdown**         | _Boolean_          | no       | false\n**fixed-dropdown-button** | _Boolean_          | no       | false\n**drop-direction**        | _String_           | no       | \"down\"\n**container-id**          | _String_           | no       | _undefined_\n**drop-offset-height**    | _Number_           | no       | 160\n**lazy**                  | _Boolean_          | no       | false\n**append-to-body**        | _Boolean_          | no       | false\n**debug-mode**            | _Boolean_          | no       | false\n\n\n## Input Props API\n\nProp              | Type                        | Required | Default Value\n------------------| --------------------------- | -------- | -------------\n**id**            | _String_                    | no       | _undefined_\n**name**          | _String_                    | no       | _undefined_\n**placeholder**   | _String_                    | no       | _undefined_\n**tabindex**      | _Number_                    | no       | 0\n**autocomplete**  | _String_                    | no       | 'off'\n**input-class**   | _String_, _Array_, _Object_ | no       | _undefined_\n**input-width**   | _String_                    | no       | '10em'\n\nTimepicker supports `id`, `name`, `placeholder`, and `tabindex` like common form elements. These values are assigned to the `<input type=\"text\" class=\"display-time\">` within the component.\n\n### Input `id`, `name` and `tabindex`\n\n```html\n<!-- id -->\n<vue-timepicker id=\"myFirstPicker\"></vue-timepicker>\n\n<!-- name -->\n<vue-timepicker name=\"nameInForm\"></vue-timepicker>\n\n<!-- tabindex -->\n<vue-timepicker :tabindex=\"5\"></vue-timepicker>\n```\n\n### Input `placeholder`\n\nWhen `placeholder` is undefined, timepicker takes the determined format string instead.\n\n```html\n<!-- placeholder is set -->\n<vue-timepicker placeholder=\"Start Time\"></vue-timepicker>\n<!-- -> \"Start Time\" -->\n\n<!-- placeholder not set -->\n<vue-timepicker format=\"hh:mm A\"></vue-timepicker>\n<!-- -> \"hh:mm A\" -->\n\n<!-- both placeholder and format are not set -->\n<vue-timepicker></vue-timepicker>\n<!-- -> \"HH:mm\" -->\n```\n\n### Input `autocomplete` Attribute\n\n> **NOTE:** To use this property, you MUST ENABLE the `manual-input` mode _(v.1.1.0+)_ in the first place.\n\n```html\n<!-- In Vue Template -->\n<vue-timepicker name=\"starttime\" autocomplete=\"on\" manual-input></vue-timepicker>\n```\n\n```html\n<!-- HTML result -->\n<span class=\"vue__time-picker time-picker\">\n  <input class=\"display-time\" name=\"starttime\" type=\"text\" autocomplete=\"on\">\n  <!-- ... -->\n</span>\n```\n\nWhen enabled, it accepts any string value supported by the HTML input `autocomplete` attribute. The value is assigned to the embedding text `<input>`, which means it follows form autofill rules and configs set in the browser level. For example, most of the browsers require the input to have a `name` and/or `id` attribute. Some browsers, like Firefox, demand the input to be a descendant of a `<form>` element.\n\nPlease refer to the [HTML documentation](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill) and the developer guideline of each browser for more information (i.e., [MDN docs here](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete)).\n\n\n### The `input-class`\n\nThe `input-class` is assigned to the text input within the component as well.\n\n```html\n<!-- Set your own `input-class` in the Vue template -->\n<vue-timepicker input-class=\"my-awesome-picker\"></vue-timepicker>\n```\n\n```html\n<!-- HTML result -->\n<span class=\"vue__time-picker time-picker\">\n  <input class=\"display-time my-awesome-picker\" type=\"text\" readonly=\"readonly\">\n  <!-- ... -->\n</span>\n```\n\nStart from `v1.0.4`, besides _String_ format, `input-class` accepts value in _Array_ and _Object_ type as well.\n\n```html\n<!-- String type -->\n<vue-timepicker input-class=\"your-awesome-timepicker i-am-vue2-timepicker\"></vue-timepicker>\n\n<!-- Array type -->\n<vue-timepicker :input-class=\"['your-awesome-timepicker', 'i-am-vue2-timepicker']\"></vue-timepicker>\n\n<!-- Object type -->\n<vue-timepicker :input-class=\"{\n  'your-awesome-timepicker': true,\n  'foo': false,\n  'i-am-vue2-timepicker': true,\n  'bar': false\n}\"></vue-timepicker>\n```\n\n```html\n<!-- All of the three samples above return the same result in rendered HTML -->\n<span class=\"vue__time-picker time-picker\">\n  <input class=\"display-time your-awesome-timepicker i-am-vue2-timepicker\" type=\"text\" readonly=\"readonly\">\n  <!-- ... -->\n</span>\n```\n\n### The `input-width`\n\nThe `input-width` helps you to adjust both the `<input>` and the dropdown picker's width without overriding the CSS style on your own. It accepts any valid CSS width values like `8em`, `200px`, etc.\n\n```html\n<!-- In `px` -->\n<vue-timepicker input-width=\"100px\"></vue-timepicker>\n\n<!-- In `em` -->\n<vue-timepicker input-width=\"12em\" format=\"HH:mm:ss\"></vue-timepicker>\n```\n\n\n## Events API\n\nEvent          | Arguments      | Description\n-------------- | -------------- | ----------------------\n**input**      | (_value_)      | Emit after value changes\n**change**     | (_eventData_)  | Emit after value changes\n**open**       | &nbsp;         | Emit when the dropdown opens\n**close**      | (_eventData_)  | Emit when the dropdown closes\n**focus**      | &nbsp;         | Emit when the user start focusing on the `<input>`\n**blur**       | (_eventData_)  | Emit when the user blurs the `<input>`\n**error**      | (_eventData_)  | Emit when the input value becomes invalid\n\n### The `open` and `close` Event of the Dropdown Picker\n\nHelp to identify the current status of the dropdown picker\n\n```javascript\ndata () {\n  return {\n    dropdownStatus: 'closed'\n  }\n}\n```\n\n```html\n<p>Dropdown Status: I'm {{dropdownStatus}}!</p>\n\n<vue-timepicker @open=\"dropdownStatus = 'opened'\" @close=\"dropdownStatus = 'closed'\"></vue-timepicker>\n```\n\n### The `focus` and `blur` Event\n\nIt works with the Manual Input mode, aimed to identify the focus/blur state of the `<input>` box. Specially useful in cases where the dropdown is force hidden by `hide-dropdown`.\n\n```javascript\ndata () {\n  return {\n    focusState: 'blurred'\n  }\n}\n```\n\n```html\n<p>Focus State: {{focusState}}</p>\n\n<vue-timepicker manual-input hide-dropdown @focus=\"focusState = 'focused'\" @blur=\"focusState = 'blurred'\"></vue-timepicker>\n```\n\n### The `error` event\n\nStarts from `v.1.1.0+`, Timepicker will emit an `error` event when the current input value becomes invalid. E.g., when it contains an hour value that is not in the `hour-range` list or a minute value that doesn't fit in the `minute-interval`.\n\n```html\n<!-- Got the `hour-range` and `minute-interval` set -->\n<!-- And add a hanlder to pick up the \"error\" event -->\n<vue-timepicker format=\"H:mm:ss\" v-model=\"erroredInputSample\" :hour-range=\"[8, 9, 10, 11]\" :minute-interval=\"5\" @error=\"errorHanlder\"></vue-timepicker>\n```\n\n```javascript\ndata () {\n  return {\n    erroredInputSample: { H: '5', mm: '03', ss: '00' }\n    // NOTE:\n    // H: '5' -> invalid. Value is not in the `hour-range` list\n    // mm: '03' -> invalid. Value does not fit in the `minute-interval`\n    // ss: '00' -> valid.\n  }\n},\n\nmethods: {\n  errorHanlder (eventData) {\n    console.log(eventData)\n    // console.log outputs -> [\"hour\", \"minute\"]\n  }\n}\n```\n\nThe `error` event returns an _Array_ of invalid fields' names. When it returns an empty array `[]`, it means the current input is valid, and all previous errors are gone\n\n> NOTE: Empty value will **not** be marked as invalid.\n\n\n## Helper CSS Class Names\n\nStarted from `v.1.1.0+`, Vue Timepicker will add additional CSS classes to the `<input>` element base on the state of the current input value.\n\n- **invalid**: One or more fields containing an invalid or disabled value.\n  - Additional CSS Style: The `<input>` border turns red.\n  - If you want to mute this red border style, add `\"skip-error-style\"` to `input-class`\n- **is-empty**: The input value (_v-model_) is empty. No additional style.\n- **all-selected**: All fields (hour/minute/second/apm) required by the `format` string are not empty. No additional style.\n\n```html\n<!-- To mute the red border style of \"invalid\" state -->\n<timepicker input-class=\"skip-error-style\"></timepicker>\n<timepicker :input-class=\"['skip-error-style', 'your-other-class-names']\"></timepicker>\n```\n\n\n## Miscellaneous Props API\n\nProp                    | Type      | Required | Default Value\n----------------------- | --------- | -------- | -------------\n**hour-label**          | _String_  | no       | _undefined_\n**minute-label**        | _String_  | no       | _undefined_\n**second-label**        | _String_  | no       | _undefined_\n**apm-label**           | _String_  | no       | _undefined_\n**am-text**             | _String_  | no       | _undefined_\n**pm-text**             | _String_  | no       | _undefined_\n\n### Customized Picker Labels\n\nYou can define customized labels on top of the hour, minute, second, and APM pickers with the following properties: `hour-label`, `minute-label`, `second-label`, and `apm-label`. \n\nFurthermore, you can replace those _am/pm_ (or _AM/PM_) string by setting the `am-text` and `pm-text` parameters.\n\n> Please note that these two parameters only change the labels expose to the users (the UI level). The `v-model` value and `displayTime` value returned by the `change` event (the data level) still use the standard _am_/_pm_ (_AM_/_PM_) format.\n\n```html\n<!-- 24-hour format with customized hour and minute label -->\n<vue-timepicker hour-label=\"heure\" minute-label=\"minute\"></vue-timepicker>\n\n<!-- 12-hour format with customized am/pm text -->\n<vue-timepicker hour-label=\"時\" minute-label=\"分\" second-label=\"秒\" apm-label=\"午\" am-text=\"上午\" pm-text=\"下午\" format=\"h:mm:ss a\"></vue-timepicker>\n```\n\n\n## Slots\n\nWe introduce three slots in `v.1.1.4` to help you customize the clear button, the dropdown button, and the input icon with your own icon/image.\n\nSlot Name          | Position | Description   \n------------------ | -------- | --------------\n**icon**           | _left_   | On the lefthand side of the `<input>`\n**clearButton**    | _right_  | In the same spot of the default clear button\n**dropdownButton** | _right_  | In the same spot of the default dropdown button\n\n> Please note that Vue v2.6.0+ introduces a significant update of the Named Slots syntax. Check the [official documentation](https://vuejs.org/v2/guide/components-slots.html#Named-Slots) for more information.\n\n```html\n<!-- For Vue 2.6.0+ -->\n\n<!-- Input icon (image) -->\n<vue-timepicker>\n  <template v-slot:icon>\n    <img src=\"$YOUR_ICON_SRC\" />\n  </template>\n</vue-timepicker>\n\n<!-- Customized clear button (image) -->\n<vue-timepicker>\n  <template v-slot:clearButton>\n    <img src=\"$YOUR_CUSTOM_IMAGE_SRC\" />\n  </template>\n</vue-timepicker>\n\n<!-- Customized dropdown button (character entity) -->\n<vue-timepicker manual-input hide-dropdown>\n  <template v-slot:dropdownButton>&#x02263;</template>\n</vue-timepicker>\n```\n\n## Contribution\n\nPlease feel free to fork and help developing. Check [CONTRIBUTING.md](https://github.com/phoenixwong/vue2-timepicker/blob/master/CONTRIBUTING.md) for more details.\n\n## Change Log\n\nDetail changes of each release: [CHANGELOG.md](https://github.com/phoenixwong/vue2-timepicker/blob/master/CHANGELOG.md)\n\n## License\n\n[MIT](https://github.com/phoenixwong/vue2-timepicker/blob/master/LICENSE.md)\n"
  },
  {
    "path": "babel.config.js",
    "content": "module.exports = {\n  presets: [\n    '@vue/cli-plugin-babel/preset'\n  ]\n}\n"
  },
  {
    "path": "demo/.gitignore",
    "content": ".DS_Store\nnode_modules\n/dist\nyarn.lock*\npackage.lock*\n\n# local env files\n.env.local\n.env.*.local\n\n# Log files\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n\n# Editor directories and files\n.idea\n.vscode\n*.suo\n*.ntvs*\n*.njsproj\n*.sln\n*.sw?\n"
  },
  {
    "path": "demo/README.md",
    "content": "# Vue2 Timepicker Demo\n\n## Project setup\n```\nyarn install\n```\n\n### Compiles and hot-reloads for development\n```\nyarn run serve\n```\n\n### Compiles and minifies for production\n```\nyarn run build\n```\n\n### Lints and fixes files\n```\nyarn run lint\n```\n\n### Customize configuration\nSee [Configuration Reference](https://cli.vuejs.org/config/).\n"
  },
  {
    "path": "demo/babel.config.js",
    "content": "module.exports = {\n  presets: [\n    '@vue/cli-plugin-babel/preset'\n  ]\n}\n"
  },
  {
    "path": "demo/package.json",
    "content": "{\n  \"name\": \"vue2-timepicker-demo\",\n  \"version\": \"1.1.6\",\n  \"private\": true,\n  \"scripts\": {\n    \"serve\": \"vue-cli-service serve\",\n    \"build\": \"vue-cli-service build\",\n    \"lint\": \"vue-cli-service lint\"\n  },\n  \"dependencies\": {\n    \"core-js\": \"^3.6.5\",\n    \"highlight.js\": \"^9.18.5\",\n    \"vue\": \"^2.6.11\",\n    \"vue-highlight.js\": \"^3.1.0\"\n  },\n  \"devDependencies\": {\n    \"@vue/cli-plugin-babel\": \"^4.3.1\",\n    \"@vue/cli-plugin-eslint\": \"^4.3.1\",\n    \"@vue/cli-service\": \"^4.3.1\",\n    \"babel-eslint\": \"^10.1.0\",\n    \"eslint\": \"^6.8.0\",\n    \"eslint-plugin-vue\": \"^6.2.2\",\n    \"stylus\": \"^0.54.7\",\n    \"stylus-loader\": \"^3.0.2\",\n    \"vue-cli-plugin-pug\": \"^1.0.7\",\n    \"vue-template-compiler\": \"^2.6.11\"\n  },\n  \"eslintConfig\": {\n    \"root\": false,\n    \"env\": {\n      \"node\": true\n    },\n    \"extends\": [\n      \"plugin:vue/essential\",\n      \"eslint:recommended\"\n    ],\n    \"rules\": {},\n    \"parserOptions\": {\n      \"parser\": \"babel-eslint\"\n    }\n  },\n  \"postcss\": {\n    \"plugins\": {\n      \"autoprefixer\": {}\n    }\n  },\n  \"browserslist\": [\n    \"> 1%\",\n    \"last 2 versions\"\n  ]\n}\n"
  },
  {
    "path": "demo/public/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, user-scalable=no, minimal-ui, maximum-scale=1.0, minimum-scale=1.0\">\n    <link rel=\"icon\" href=\"<%= BASE_URL %>favicon.ico\">\n    <title>Vue2 Timepicker Demo</title>\n  </head>\n  <body>\n    <noscript>\n      <strong>We're sorry but vue2-timepicker-3 doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>\n    </noscript>\n    <div id=\"app\"></div>\n    <!-- built files will be auto injected -->\n    <a href=\"https://github.com/phoenixwong/vue2-timepicker\" target=\"_blank\"><img style=\"position: absolute; top: 0; left: 0; border: 0;\" src=\"https://camo.githubusercontent.com/567c3a48d796e2fc06ea80409cc9dd82bf714434/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f6769746875622f726962626f6e732f666f726b6d655f6c6566745f6461726b626c75655f3132313632312e706e67\" alt=\"Fork me on GitHub\" data-canonical-src=\"https://s3.amazonaws.com/github/ribbons/forkme_left_darkblue_121621.png\"></a>\n  </body>\n</html>\n"
  },
  {
    "path": "demo/src/App.vue",
    "content": "<script>\nimport Samples from './components/Samples'\nimport Playground from './components/Playground'\n\nexport default {\n  name: 'VueTimepickerDemo',\n\n  components: {\n    Samples,\n    Playground\n  },\n\n  data () {\n    return {\n      currentView: 'samples',\n      stickyNav: false,\n\n      scrollTop: 0\n    }\n  },\n\n  methods: {\n    switchView (target) {\n      try {\n        history.replaceState(null, null, ' ')\n      } catch (e) {\n        // Failsafe for outdated browsers. Do nothing here.\n      }\n      this.currentView = target\n      this.$nextTick(() => {\n        if (document.documentElement && document.documentElement.scrollTop) {\n          document.documentElement.scrollTop = 0\n        } else if (document.body.parentNode && document.body.parentNode.scrollTop) {\n          document.body.parentNode.scrollTop = 0\n        } else {\n          document.body.scrollTop = 0\n        }\n      })\n    },\n\n    scrollHandler (evt) {\n      this.scrollTop = (evt.target.scrollingElement || (document.documentElement || document.body.parentNode)).scrollTop || 0\n      if (this.scrollTop > 150) {\n        if (!this.stickyNav) {\n          this.stickyNav = true\n        }\n      } else {\n        if (this.stickyNav) {\n          this.stickyNav = false\n        }\n      }\n    }\n  },\n\n  mounted () {\n    window.addEventListener('scroll', this.scrollHandler)\n  },\n\n  beforeDestroy () {\n    window.removeEventListener('scroll', this.scrollHandler)\n  }\n}\n</script>\n\n<template lang=\"pug\">\n#app.main-wrapper\n\n  header(v-cloak)\n    h1\n      | Vue\n      span.version 2\n      | Timepicker\n\n  nav.top-nav(:class=\"{stick: stickyNav}\")\n    span.title\n      | Vue\n      i 2\n      | &nbsp;Timepicker\n\n    ul\n      li\n        a(:class=\"{active: currentView === 'samples'}\" @click=\"switchView('samples')\") Common Usage\n      li\n        a(:class=\"{active: currentView === 'playground'}\" @click=\"switchView('playground')\") Playground\n      li\n        a(href=\"https://github.com/phoenixwong/vue2-timepicker/blob/master/README.md\" target=\"_blank\") Documentation\n\n    span.version\n      a(href=\"https://www.npmjs.com/package/vue2-timepicker\" target=\"_blank\")\n        img(alt=\"NPM latest version\" src=\"https://img.shields.io/npm/v/vue2-timepicker?style=flat-square\")\n    span.downloads\n      a(href=\"https://www.npmjs.com/package/vue2-timepicker\" target=\"_blank\")\n        img(alt=\"NPM downloads\" src=\"https://img.shields.io/npm/dm/vue2-timepicker?style=flat-square\")\n\n  main.content(:class=\"{'nav-affixed': stickyNav}\")\n    transition(name=\"fade\" mode=\"out-in\")\n      component(:is=\"currentView\")\n\n        //- Footer\n        template(slot=\"footer-links\")\n          h3.title\n            a#more.anchor #\n            | More complex usage\n          .description\n            p\n              | Didn't find what you need? Please check the&nbsp;\n              a(@click=\"switchView('playground')\") Playground\n              | &nbsp;or&nbsp;\n              a(href=\"https://github.com/phoenixwong/vue2-timepicker/blob/master/README.md\" target=\"_blank\" title=\"Vue2-Timepicker Documentation\") Documentation\n              | &nbsp;for more inspiration.\n</template>\n\n<style lang=\"stylus\">\n@import './assets/demo.styl';\n</style>\n"
  },
  {
    "path": "demo/src/assets/_variables.styl",
    "content": "$vue-green = #41B883\n$vue-green-light = lighten($vue-green, 5%)\n$vue-dark = #35495E\n$vue-darker = darken($vue-dark, 25%)\n$body-color = #555\n$dark-grey = #777\n\n-black($alpha)\n  rgba(0, 0, 0, $alpha)\n\n-white($alpha)\n  rgba(255, 255, 255, $alpha)\n"
  },
  {
    "path": "demo/src/assets/demo.styl",
    "content": "@import './_variables.styl'\n\nbody,\nhtml\n  margin: 0\n  padding: 0\n  font-family: sans-serif\n  color: $body-color\n  -webkit-font-smoothing: antialiased\n  -moz-osx-font-smoothing: grayscale\n\nbody\n  font-size: 16px\n\nh2,\nh3,\nh4\n  color: $vue-dark\n\nh2\n  margin: 2em 0 1.5em 0\n\nh3\n  margin: 0 0 1em 0\n\nh4\n  margin-bottom: 0.5em\n\nsection\n  width: 80%\n  max-width: 1000px\n  margin: 0 auto 2em auto\n\na\n  color: $vue-green\n  text-decoration: none\n\nheader\n  background: $vue-darker\n  color: #fff\n  text-align: center\n  height: 150px\n  display: flex\n  flex-flow: column nowrap\n  justify-content: center\n  align-items: center\n  position: relative\n\n  h1\n    margin: 0\n    color: $vue-green-light\n    .version\n      font-weight: 300\n      margin: 0 .2em 0 .1em\n\n  p\n    margin-bottom: 0\n    color: -white(0.3)\n    font-size: 300\n\n    .version\n      font-weight: 100\n      background-color: alpha($vue-dark, 0.7)\n      padding: .1em .5em\n      border-radius: 3px\n\nbutton\n  display: inline-block\n  outline: 0\n  background: $vue-green\n  border: 1px solid $vue-green\n  color: #fff\n  border-radius: 4px\n  font-size: 0.9em\n  vertical-align: baseline\n  padding: 0.3em 0.5em\n  transition: opacity 0.3s\n  cursor: pointer\n  &:hover\n    opacity: 0.7\n\nbutton.common\n  background: #fff\n  border: 1px solid $vue-green\n  color: $vue-green\n\nbutton.secondary\n  background: #fff\n  border: 1px solid $vue-darker\n  color: $vue-darker\n\nbutton.size-small\n  font-size 0.8em;\n  padding: 0.2em 0.4em;\n\nnav.top-nav\n  background: $vue-darker\n  position: relative\n\n  .title\n    display: none\n\n  span.version,\n  span.downloads\n    a\n      border: 0\n      text-decoration: none\n\n  span.version\n    position: absolute\n    z-index: 301\n    right: 1em\n    bottom: .5em\n\n  span.downloads\n    position: absolute\n    z-index: 301\n    left: .8em\n    bottom: .5em\n\n  &.stick\n    position: fixed\n    top: 0\n    left: 0\n    right: 0\n    z-index: 300\n\n    .title\n      display: inline-block\n      color: -white(0.7)\n      position: absolute\n      z-index: 301\n      left: 1em\n      top: .8em\n\n    span.downloads\n      display: none\n\n  ul\n    list-style: none\n    padding: 0\n    margin: 0\n    display: flex\n    flex-flow: row nowrap\n    justify-content: center\n    align-items: stretch\n\n    li\n      margin: 0 1em\n      overflow: hidden\n      a\n        color: -white(0.5)\n        display: block\n        padding: .8em .5em\n        border-radius: 5px\n\n        -webkit-transition: color .3s\n        transition: color .3s\n\n        position: relative\n        overflow: hidden\n        z-index: 1\n\n        &:hover\n          color: alpha($vue-green, 0.7)\n          cursor: pointer\n\n        &.active\n          color: $vue-green-light\n\n          &:after\n            content: ''\n            display: block\n            width: 0\n            height: 0\n            border: 10px solid transparent\n            border-bottom-color: #fff\n            position: absolute\n            bottom: -3px\n            left: calc(50% - 10px)\n            z-index: 3\n\nmain.content\n  &.nav-affixed\n    padding-top: 44px\n\n.fade\n  transition: opacity .5s ease\n\n.fade-enter-active, .fade-leave-active\n  opacity: 0\n\n.description\n  p\n    line-height: 1.5em\n  code\n    color: $vue-dark\n    background: -black(0.03)\n    border-radius: 3px\n    padding: 0.2em 0.5em\n    margin: 0 0.2em\n    vertical-align: baseline\n\n.preview\n  padding: 2em 1.5em\n  border: 1px solid -black(0.07)\n  border-radius: 3px\n  b\n    font-size: 0.9em\n    color: $dark-grey\n  p\n    margin: 0\n    padding: .5em 0 1.5em 0\n    &:last-of-type\n      padding-bottom: 0\n\n.codes\n  pre\n    position: relative\n    font-size: 0.8em\n    code\n      padding: 2em\n      border-radius: 3px\n\n    &:after\n      content: attr(data-title)\n      position: absolute\n      top: 0.3em\n      right: 0.8em\n      font-size: 0.8em\n      color: alpha($vue-dark, 0.6)\n\n.capitailized\n  text-transform: uppercase\n"
  },
  {
    "path": "demo/src/components/ConfigRow.vue",
    "content": "<script>\nexport default {\n  name: 'ConfigRow',\n  props: {\n    label: { type: String },\n    isGroup: { type: Boolean, default: false }\n  }\n}\n</script>\n\n<template lang=\"pug\">\n.config-row(:class=\"{'group': isGroup }\")\n  label.row-label(v-if=\"this.label && this.label.length\") {{ label }}\n  slot\n</template>\n\n<style lang=\"stylus\">\n.config-row\n  padding: 0.5em 0\n  display: flex\n  flex-flow: row wrap\n  justify-content: flex-start\n  align-items: center\n  align-content: flex-start\n\n  .row-label\n    display: inline-block\n    font-weight: bold\n    width: 5em\n    text-align: right\n    margin-right: 0.5em\n\n  label.options\n    min-width: 3em\n    margin-right: 0.5em\n    display: inline-flex\n    flex-flow: row wrap\n    justify-content: flex-start\n    align-items: center\n    position: relative\n    input[type=radio],\n    input[type=checkbox]\n      position: relative\n      top: -0.1em\n\n  .range-wrapper\n    display: inline-flex\n    flex-flow: row nowrap\n    justify-content: flex-start\n    align-items: center\n    input[type=range]\n      margin-right: 0.8em\n\n  &.group\n    padding-left: 1em\n    display: flex\n    flex-flow: row wrap\n    justify-content: flex-start\n    align-items: center\n</style>\n"
  },
  {
    "path": "demo/src/components/OverlayPanel.vue",
    "content": "<script>\nexport default {\n  name: 'OverlayPanel',\n  props: {\n    title: { type: String }\n  },\n  methods: {\n    closePanel () {\n      this.$emit('close')\n    }\n  }\n}\n</script>\n\n<template lang=\"pug\">\n.overlay-panel(@click=\"closePanel\")\n  .panel-body(@click.stop=\"\")\n    .panel-title\n      .title-text(v-if=\"title\" v-text=\"title\")\n      .close-btn(@click=\"closePanel\") &times;\n    .panel-content\n      slot\n    .panel-footer\n      .footer-left\n        slot(name=\"footerLeft\")\n      .footer-right\n        slot(name=\"footerRight\")\n</template>\n\n<style lang=\"stylus\">\n@import '../assets/_variables.styl'\n\n.overlay-panel\n  position: fixed\n  top: 0\n  left: 0\n  bottom: 0\n  right: 0\n  background: -black(0.7)\n  z-index: 5000\n\n  display: flex\n  flex-flow: column nowrap\n  justify-content: center\n  align-items: center\n\n  .panel-body\n    width: 500px\n    max-width: 80vw\n    max-height: 70vh\n    min-height: 200px\n    background: #fff\n    border-radius: 6px\n    box-shadow: 0 .1em 0.5em -black(0.35)\n\n    display: flex\n    flex-flow: column nowrap\n    justify-content: flex-start\n    align-items: stretch\n\n    .panel-title\n      display: flex\n      flex-flow: row nowrap\n      justify-content: flex-end\n      align-items: center\n      padding: 0.6em 0.8em 0.5em 0.8em\n      border-bottom: 1px solid -black(0.1)\n\n      .title-text\n        flex: 1 1 0.00001px\n        color: $vue-dark\n        line-height: 120%\n        font-weight: bold\n        font-size: 1.2em\n      \n      .close-btn\n        margin-left: 1em\n        font-size: 1.2em\n        line-height: 100%\n        position: relative\n        top: -.2em\n        cursor: pointer\n        transition: opacity .3s\n        &:hover\n          opacity: 0.4\n\n    .panel-content\n      flex: 1 1 0.00001px\n      padding: 1em 0.8em\n    \n    .panel-footer\n      border-top: 1px solid -black(0.1)\n      padding: 0.5em 0.6em 0.5em 0.8em\n      display: flex\n      flex-flow: row nowrap\n      justify-content: flex-start\n      align-items: center\n\n      .footer-left\n        flex: 1 1 0.00001px\n        button:not(:first-of-type)\n          margin-left: 0.6em\n</style>\n"
  },
  {
    "path": "demo/src/components/Playground.vue",
    "content": "<script>\nimport VueTimepicker from '../../../src/vue-timepicker'\nimport ConfigRow from './ConfigRow'\nimport OverlayPanel from './OverlayPanel'\n\nexport default {\n  name: 'Playground',\n  components: {\n    VueTimepicker,\n    ConfigRow,\n    OverlayPanel\n  },\n\n  data () {\n    return {\n      tokens: {\n        hour: ['HH', 'H', 'hh', 'h', 'kk', 'k'],\n        minute: ['mm', 'm'],\n        second: ['ss', 's', 'none'],\n        apm: ['A', 'a']\n      },\n\n      type: {\n        hour: 'hh',\n        minute: 'mm',\n        second: 'ss',\n        apm: 'A'\n      },\n\n      selected: {\n        hour: 1,\n        minute: 0,\n        second: 0,\n        apm: 'am'\n      },\n\n      hourBoundary: {\n        min: 1,\n        max: 12\n      },\n\n      interval: {\n        minute: 1,\n        second: 1\n      },\n\n      customInterval: {\n        minute: false,\n        second: false\n      },\n\n      customRange: {\n        hour: false,\n        minute: false,\n        second: false\n      },\n      showRangePanel: false,\n      rangeList: undefined,\n      editingRange: '',\n      selectedRanges: [],\n      rangeTitle: '',\n\n      hourRange: [],\n      minuteRange: [],\n      secondRange: [],\n\n      hideClearBtn: false,\n      disablePicker: false,\n      closeOnComplete: false,\n      advancedKeyboard: false,\n      manualInput: false,\n      hideDropdown: false,\n      fixedDropdownBtn: false,\n      lazyMode: false,\n      autoScroll: false,\n      skipErrorStyle: false,\n      appendToBody: false,\n      debugMode: false,\n\n      customBlurDelay: false,\n      blurDelay: 300,\n\n      customManualInputTimeout: false,\n      manualInputTimeout: 1000,\n\n      playgroundData: {},\n      playgroundFullValue: {},\n      playgroundErroredData: undefined,\n\n      scrollTop: 0,\n\n      muteChange: false\n    }\n  },\n\n  computed: {\n    formatString () {\n      let formatString = `${this.type.hour}:${this.type.minute}`\n      if (this.showSeconds) {\n        formatString += (`:${this.type.second}`)\n      }\n      if (this.type.apm) {\n        formatString += (` ${this.type.apm}`)\n      }\n      return formatString\n    },\n\n    needApm () {\n      return this.type.hour === 'h' || this.type.hour === 'hh'\n    },\n\n    showSeconds () {\n      return this.type.second !== 'none'\n    },\n\n    yourTimeValue () {\n      let code = 'yourTimeValue: {\\n'\n      code += this.listTimeValue()\n      code += '\\n}'\n      return code\n    },\n\n    asideStyle () {\n      const initPaddingTop = 220\n      const minPaddingTop = 50\n      return {\n        paddingTop: (Math.max(initPaddingTop - this.scrollTop, minPaddingTop)) + 'px'\n      }\n    },\n\n    filteredOutValues () {\n      if (!this.showRangePanel || !this.rangeList || !this.selectedRanges.length) { return }\n      const result = []\n      this.selectedRanges.forEach(selected => {\n        if (selected && !this.rangeList.includes(selected)) {\n          result.push(selected)\n        }\n      })\n      return result\n    },\n\n    toHideDropdown () {\n      if (!this.manualInput) { return false }\n      return this.hideDropdown\n    },\n\n    showErroredData () {\n      return Boolean(this.playgroundErroredData && this.playgroundErroredData.length)\n    },\n\n    htmlCodeWithVar () {\n      let start = '<vue-timepicker'\n      let end = '\\n  v-model=\"yourTimeValue\">\\n</vue-timepicker>'\n\n      start += (`\\n  format=\"${this.formatString}\"`)\n\n      if (this.skipErrorStyle) {\n        start += ('\\n  input-class=\"skip-error-style\"')\n      }\n\n      if (this.customInterval.minute) {\n        start += (`\\n  :minute-interval=\"${this.interval.minute}\"`)\n      }\n\n      if (this.showSeconds && this.customInterval.second) {\n        start += (`\\n  :second-interval=\"${this.interval.second}\"`)\n      }\n\n      if (this.customRange.hour && this.hourRange) {\n        const hrRange = this.sortAndStringify(this.hourRange, this.needApm)\n        start += (`\\n  :hour-range=\"${hrRange}\"`)\n      }\n\n      if (this.customRange.minute && this.minuteRange) {\n        const minRange = this.sortAndStringify(this.minuteRange)\n        start += (`\\n  :minute-range=\"${minRange}\"`)\n      }\n\n      if (this.showSeconds && this.customRange.second && this.secondRange) {\n        const secRange = this.sortAndStringify(this.secondRange)\n        start += (`\\n  :second-range=\"${secRange}\"`)\n      }\n\n      if (this.customBlurDelay) {\n        start += (`\\n  :blur-delay=\"${this.blurDelay}\"`)\n      }\n\n      if (this.customManualInputTimeout) {\n        start += (`\\n  :manual-input-timeout=\"${this.manualInputTimeout}\"`)\n      }\n\n      if (this.lazyMode) {\n        start += ('\\n  lazy')\n      }\n\n      if (this.closeOnComplete) {\n        start += ('\\n  close-on-complete')\n      }\n\n      if (this.manualInput) {\n        start += ('\\n  manual-input')\n      }\n\n      if (this.toHideDropdown) {\n        start += ('\\n  hide-dropdown')\n      }\n\n      if (this.advancedKeyboard) {\n        start += ('\\n  advanced-keyboard')\n      }\n\n      if (this.fixedDropdownBtn) {\n        start += ('\\n  fixed-dropdown-button')\n      }\n\n      if (this.hideClearBtn) {\n        start += ('\\n  hide-clear-button')\n      }\n\n      if (this.autoScroll) {\n        start += ('\\n  auto-scroll')\n      }\n\n      if (this.appendToBody) {\n        start += ('\\n  append-to-body')\n      }\n\n      if (this.disablePicker) {\n        start += ('\\n  disabled')\n      }\n\n      if (this.debugMode) {\n        start += ('\\n  debug-mode')\n      }\n\n      const htmlCode = start + end\n\n      return htmlCode\n    }\n  },\n\n  watch: {\n    selected: {\n      deep: true,\n      handler () {\n        this.updatePlaygroundData()\n      }\n    },\n\n    type: {\n      deep: true,\n      handler () {\n        this.updatePlaygroundData()\n      }\n    },\n\n    'type.hour' (newType, oldType) {\n      if (this.customRange.hour && this.hourRange.length) {\n        const newRangeList = this.hourRange.map(item => {\n          return this.transformHourRange(item, oldType, newType)\n        })\n        this.hourRange = newRangeList\n      }\n    },\n\n    'type.minute' (newType) {\n      if (this.customRange.minute && this.minuteRange.length) {\n        const newRangeList = this.minuteRange.map(item => {\n          return this.formatValue(newType, +item)\n        })\n        this.minuteRange = newRangeList\n      }\n    },\n\n    'type.second' (newType) {\n      if (newType !== 'none' && this.customRange.second && this.secondRange.length) {\n        const newRangeList = this.secondRange.map(item => {\n          return this.formatValue(newType, +item)\n        })\n        this.secondRange = newRangeList\n      }\n    },\n\n    needApm (isNeeded) {\n      if (isNeeded) {\n        if (!this.selected.apm) {\n          this.$set(this.type, 'apm', 'A')\n          this.$set(this.selected, 'apm', 'am')\n        }\n      } else {\n        this.$set(this.type, 'apm', '')\n        this.$set(this.selected, 'apm', '')\n      }\n    },\n\n    customInterval: {\n      deep: true,\n      handler (custom) {\n        if (!custom.minute) {\n          this.$set(this.interval, 'minute', 1)\n        }\n        if (!custom.second) {\n          this.$set(this.interval, 'second', 1)\n        }\n      }\n    }\n  },\n\n  methods: {\n    updateHourRange (hourType) {\n      hourType = hourType || this.type.hour\n      let hourBoundary = {}\n      switch (hourType) {\n        case 'h':\n        case 'hh':\n          hourBoundary.min = 1\n          hourBoundary.max = 12\n          break\n        case 'H':\n        case 'HH':\n          hourBoundary.min = 0\n          hourBoundary.max = 23\n          break\n        case 'k':\n        case 'kk':\n          hourBoundary.min = 1\n          hourBoundary.max = 24\n          break\n      }\n      this.hourBoundary = hourBoundary\n      this.handleOutRangeData()\n    },\n\n    handleOutRangeData () {\n      if (this.selected.hour > this.hourBoundary.max) {\n        this.$set(this.selected, 'hour', this.hourBoundary.max)\n      } else if (this.selected.hour < this.hourBoundary.min) {\n        this.$set(this.selected, 'hour', this.hourBoundary.min)\n      }\n    },\n\n    isNumber (value) {\n      return !isNaN(parseFloat(value)) && isFinite(value)\n    },\n\n    formatValue (type, value) {\n      switch (type) {\n        case 'H':\n        case 'h':\n        case 'k':\n        case 'm':\n        case 's':\n          if (type === 'h' && value === 0) {\n            return '12'\n          }\n          return String(value)\n        case 'HH':\n        case 'hh':\n        case 'kk':\n        case 'mm':\n        case 'ss':\n          if (type === 'hh' && value === 0) {\n            return '12'\n          }\n          return value < 10 ? `0${value}` : String(value)\n        default:\n          return ''\n      }\n    },\n\n    translate12hRange (value) {\n      const valueT = value.match(/^(\\d{1,2})(a|p|A|P)$/)\n      if (+valueT[1] === 12) {\n        return +valueT[1] + (valueT[2].toLowerCase() === 'p' ? 0 : 12)\n      }\n      return +valueT[1] + (valueT[2].toLowerCase() === 'p' ? 12 : 0)\n    },\n\n    interpretKtoRangeType (kValue, toType) {\n      if (!toType || toType === 'k') { return String(kValue) }\n      let value\n      switch (toType) {\n        case 'H':\n        case 'HH':\n          value = (kValue === 24) ? 0 : kValue\n          if (toType === 'HH') {\n            return value < 10 ? `0${value}` : String(value)\n          }\n          return String(value)\n        case 'h':\n        case 'hh':\n          if (kValue === 24) {\n            return `12a`\n          } else if (kValue === 12) {\n            return `12p`\n          }\n          value = kValue % 12\n          if (toType === 'hh') {\n            const valueStr = value < 10 ? `0${value}` : String(value)\n            return kValue < 12 ? `${valueStr}a` : `${valueStr}p`\n          }\n          return kValue < 12 ? `${value}a` : `${value}p`\n        case 'kk':\n          return kValue < 10 ? `0${kValue}` : String(kValue)\n      }\n    },\n\n    transformHourRange (value, fromType, toType) {\n      if (!fromType || !toType) { return value }\n      let valueInK\n      if (fromType === 'hh' || fromType === 'h') {\n        valueInK = this.translate12hRange(value)\n      } else if (fromType === 'HH' || fromType === 'H') {\n        valueInK = +value === 0 ? 24 : +value\n      } else {\n        valueInK = +value\n      }\n      return this.interpretKtoRangeType(valueInK, toType)\n    },\n\n    updatePlaygroundData () {\n      let data = {}\n\n      if (this.isNumber(this.selected.hour)) {\n        data[this.type.hour] = this.formatValue(this.type.hour, this.selected.hour)\n      } else {\n        data[this.type.hour] = ''\n      }\n\n      if (this.isNumber(this.selected.minute)) {\n        data[this.type.minute] = this.formatValue(this.type.minute, this.selected.minute)\n      } else {\n        data[this.type.minute] = ''\n      }\n\n      if (this.showSeconds) {\n        if (this.isNumber(this.selected.second)) {\n          data[this.type.second] = this.formatValue(this.type.second, this.selected.second)\n        } else {\n          data[this.type.second] = ''\n        }\n      }\n\n      if (this.type.apm) {\n        if (this.selected.apm) {\n          data[this.type.apm] = this.type.apm === 'A' ? (this.selected.apm).toUpperCase() : this.selected.apm\n        } else {\n          data[this.type.apm] = ''\n        }\n      }\n\n      this.playgroundData = data\n    },\n\n    listTimeValue () {\n      const data = this.playgroundData\n      const len = Object.keys(data).length\n      let string = ''\n      Object.keys(data).forEach((k, i) => {\n        string += `  ${k}: \"${data[k]}\"`\n        if (i < len - 1) {\n          string += '\\n'\n        }\n      })\n      return string\n    },\n\n    updateRangeValue (data) {\n      this.muteChange = true\n      this.$set(this.selected, 'hour', this.isNumber(data[this.type.hour]) ? Number(data[this.type.hour]) : '')\n      this.$set(this.selected, 'minute', this.isNumber(data[this.type.minute]) ? Number(data[this.type.minute]) : '')\n      this.$set(this.selected, 'second', this.isNumber(data[this.type.second]) ? Number(data[this.type.second]) : '')\n      this.$set(this.selected, 'apm', data[this.type.apm] ? (data[this.type.apm] || '').toLowerCase() : '')\n      this.muteChange = false\n    },\n\n    changeHandler (eventData) {\n      this.playgroundFullValue = eventData\n      this.updateRangeValue(eventData.data)\n    },\n\n    errorHandler (eventData) {\n      this.playgroundErroredData = eventData\n    },\n\n    scrollHandler (evt) {\n      this.scrollTop = (evt.target.scrollingElement || (document.documentElement || document.body.parentNode)).scrollTop || 0\n    },\n\n    sortAndStringify (arrayList, is12Hour) {\n      if (!arrayList || !arrayList.length) { return JSON.stringify([]) }\n      let newList = [].concat([], arrayList)\n      if (is12Hour) {\n        newList.sort((l, r) => {\n          const lPart = l.match(/^(\\d{1,2})(a|p)$/)\n          const rPart = r.match(/^(\\d{1,2})(a|p)$/)\n          const lApm = lPart[2]\n          const rApm = rPart[2]\n          if (lApm === 'a' && rApm === 'p') { return -1 }\n          if (lApm === 'p' && rApm === 'a') { return 1 }\n          const lNum = +lPart[1]\n          const rNum = +rPart[1]\n          if (lNum === 12) { return -1 }\n          if (rNum === 12) { return 1 }\n          return lNum < rNum ? -1 : 1\n        })\n        const uniStrList = newList.map(item => {\n          const itemP = item.match(/^(\\d{1,2})(a|p)$/)\n          return `${+itemP[1]}${itemP[2]}`\n        })\n        return JSON.stringify(uniStrList).replace(/\"/g, '\\'')\n      } else {\n        newList.sort((l, r) => (+l < +r) ? -1 : 1)\n        const numericList = newList.map(item => +item)\n        return JSON.stringify(numericList).replace(/\"/g, '')\n      }\n    },\n\n    genHourRangeList () {\n      const result = []\n      for (let i = 0; i < 24; i++) {\n        // 12-Hour format\n        if (this.type.hour === 'h' || this.type.hour === 'hh') {\n          let value = this.formatValue(this.type.hour, i % 12)\n          value = `${value}${i < 12 ? 'a' : 'p'}`\n          result.push(value)\n        } else {\n          if (this.type.hour === 'k' || this.type.hour === 'kk') {\n            result.push(this.formatValue(this.type.hour, i + 1))\n          } else {\n            result.push(this.formatValue(this.type.hour, i))\n          }\n        }\n      }\n      return result\n    },\n\n    genMinuteRangeList () {\n      const result = []\n      const step = +this.interval.minute\n      for (let i = 0; i <= 59; i += step) {\n        result.push(this.formatValue(this.type.minute, i))\n      }\n      return result\n    },\n\n    genSecondRangeList () {\n      const result = []\n      const step = +this.interval.second\n      for (let i = 0; i <= 59; i += step) {\n        result.push(this.formatValue(this.type.second, i))\n      }\n      return result\n    },\n\n    openRangePanel (section) {\n      if (!section) { return }\n\n      this.rangeTitle = `Choose ${section}-range Values`\n      this.editingRange = section\n\n      if (section === 'minute') {\n        this.rangeList = this.genMinuteRangeList()\n        this.selectedRanges = [].concat([], this.minuteRange)\n      } else if (section === 'second') {\n        this.rangeList = this.genSecondRangeList()\n        this.selectedRanges = [].concat([], this.secondRange)\n      } else if (section === 'hour') {\n        this.rangeList = this.genHourRangeList()\n        this.selectedRanges = [].concat([], this.hourRange)\n      }\n\n      this.showRangePanel = true\n    },\n\n    confirmRange () {\n      if (this.editingRange === 'minute') {\n        this.minuteRange = [].concat([], this.selectedRanges || [])\n      } else if (this.editingRange === 'second') {\n        this.secondRange = [].concat([], this.selectedRanges || [])\n      } else if (this.editingRange === 'hour') {\n        this.hourRange = [].concat([], this.selectedRanges || [])\n      }\n      this.$nextTick(() => {\n        this.closeRangePanel()\n      })\n    },\n\n    closeRangePanel () {\n      this.rangeTitle = ''\n      this.editingRange = ''\n      this.rangeList = undefined\n      this.selectedRanges = []\n      this.showRangePanel = false\n    },\n\n    selectAllRangeItems () {\n      this.selectedRanges = [].concat([], this.rangeList || [])\n    },\n\n    unselectAllRangeItems () {\n      this.selectedRanges = []\n    },\n\n    toggleBlurDelay () {\n      this.blurDelay = 300\n    },\n\n    toggleManualInputTimeout () {\n      this.manualInputTimeout = 1000\n    }\n  },\n\n  mounted () {\n    window.addEventListener('scroll', this.scrollHandler)\n\n    this.$nextTick(() => {\n      this.updateHourRange()\n      this.updatePlaygroundData()\n    })\n  },\n\n  beforeDestroy () {\n    window.removeEventListener('scroll', this.scrollHandler)\n  }\n}\n</script>\n\n<template lang=\"pug\">\nsection#playground\n  main\n    h2.section-title Timepicker Playground\n\n    #configPanel\n      #typesSelection.config-block\n        h3.subtitle\n          a.anchor #\n          | Generate&nbsp;\n          code format\n          | &nbsp;string\n        config-row(label=\"Hour:\")\n          label.options(v-for=\"(htype, index) in tokens.hour\", :key=\"index\", :for=\"'hour_type' + index\" @mouseup.stop=\"updateHourRange(htype)\")\n            input(v-model=\"type.hour\", :value=\"htype\", :id=\"'hour_type' + index\" type=\"radio\" name=\"hour_type\")\n            | &nbsp;{{ htype }}\n        config-row(label=\"Minute:\")\n          label.options(v-for=\"(mtype, index) in tokens.minute\", :key=\"index\", :for=\"'minute_type' + index\")\n            input(v-model=\"type.minute\", :value=\"mtype\", :id=\"'minute_type' + index\" type=\"radio\" name=\"minute_type\")\n            | &nbsp;{{ mtype }}\n        config-row(label=\"Second:\")\n          label.options(v-for=\"(stype, index) in tokens.second\", :key=\"index\", :for=\"'second_type' + index\")\n            input(v-model=\"type.second\", :value=\"stype\", :id=\"'second_type' + index\" type=\"radio\" name=\"second_type\")\n            | &nbsp;{{ stype }}\n        config-row(v-if=\"needApm\" label=\"AM/PM:\")\n          label.options(v-for=\"(atype, index) in tokens.apm\", :key=\"index\", :for=\"'apm_type' + index\")\n            input(v-model=\"type.apm\", :value=\"atype\", :id=\"'apm_type' + index\" type=\"radio\" name=\"apm_type\")\n            | &nbsp;{{ atype }}\n\n      #valuesSelection.config-block\n        h3.subtitle\n          a.anchor #\n          | Set&nbsp;\n          code v-model\n          | &nbsp;data\n        config-row(label=\"Hour:\")\n          label.range-wrapper\n            input(v-model=\"selected.hour\" type=\"range\", :min=\"hourBoundary.min\", :max=\"hourBoundary.max\" step=\"1\")\n            span(v-text=\"selected.hour\")\n        config-row(label=\"Minute:\")\n          label.range-wrapper\n            input(v-model=\"selected.minute\" type=\"range\" min=\"0\" max=\"59\", :step=\"interval.minute\")\n            span(v-text=\"selected.minute\")\n        config-row(v-if=\"showSeconds\" label=\"Second:\")\n          label.range-wrapper\n            input(v-model=\"selected.second\" type=\"range\" min=\"0\" max=\"59\", :step=\"interval.second\")\n            span(v-text=\"selected.second\")\n        config-row(v-if=\"needApm\" label=\"AM/PM:\", :class=\"{'capitailized': type.apm === 'A'}\")\n          label.options(for=\"selected_apm_am\")\n            input(v-model=\"selected.apm\" type=\"radio\" id=\"selected_apm_am\" name=\"selected_apm\" value=\"am\")\n            | &nbsp;am\n          label.options(for=\"selected_apm_pm\")\n            input(v-model=\"selected.apm\" type=\"radio\" id=\"selected_apm_pm\" name=\"selected_apm\" value=\"pm\")\n            | &nbsp;pm\n\n      .codes\n        highlight-code(lang=\"javascript\" data-title=\"v-model value\") {{ yourTimeValue }}\n\n      #intervalSelection.config-block\n        h3.subtitle\n          a.anchor #\n          | Customized Intervals\n        config-row(is-group)\n          label.options\n            input(v-model=\"customInterval.minute\" type=\"checkbox\")\n            | &nbsp;Set Minute Interval\n          label.range-wrapper(v-if=\"customInterval.minute\")\n            input(v-model.number=\"interval.minute\" type=\"range\" min=\"0\" max=\"60\" step=\"1\")\n            span(v-text=\"interval.minute\")\n        config-row(is-group v-if=\"showSeconds\")\n          label.options\n            input(v-model=\"customInterval.second\" type=\"checkbox\")\n            | &nbsp;Set Second Interval\n          label.range-wrapper(v-if=\"customInterval.second\")\n            input(v-model.number=\"interval.second\" type=\"range\" min=\"0\" max=\"60\" step=\"1\")\n            span(v-text=\"interval.second\")\n\n      #customRanges.config-block\n        h3.subtitle\n          a.anchor #\n          | Customized Ranges\n        config-row(is-group)\n          label.options\n            input(v-model=\"customRange.hour\" type=\"checkbox\")\n            | &nbsp;Set Hour Range\n          .button-wrapper(v-if=\"customRange.hour\" )\n            button.common.size-small(@click=\"openRangePanel('hour')\") Config\n            span.item-count {{ hourRange.length }} value{{hourRange.length > 1 ? 's' : ''}} selected\n        config-row(is-group)\n          label.options\n            input(v-model=\"customRange.minute\" type=\"checkbox\")\n            | &nbsp;Set Minute Range\n          .button-wrapper(v-if=\"customRange.minute\" )\n            button.common.size-small(@click=\"openRangePanel('minute')\") Config\n            span.item-count {{ minuteRange.length }} value{{minuteRange.length > 1 ? 's' : ''}} selected\n        config-row(is-group v-if=\"showSeconds\")\n          label.options\n            input(v-model=\"customRange.second\" type=\"checkbox\")\n            | &nbsp;Set Second Range\n          .button-wrapper(v-if=\"customRange.second\" )\n            button.common.size-small(@click=\"openRangePanel('second')\") Config\n            span.item-count {{ secondRange.length }} value{{secondRange.length > 1 ? 's' : ''}} selected\n\n      #closeOnComplete.config-block\n        h3.subtitle\n          a.anchor #\n          | Close on Complete\n        config-row(is-group)\n          label.options(for=\"close_on_complete_true\")\n            input(v-model=\"closeOnComplete\" type=\"radio\" id=\"close_on_complete_true\" name=\"close_on_complete\", :value=\"true\")\n            | &nbsp;Enable\n          label.options(for=\"close_on_complete_false\")\n            input(v-model=\"closeOnComplete\" type=\"radio\" id=\"close_on_complete_false\" name=\"close_on_complete\", :value=\"false\")\n            | &nbsp;Disable\n\n      #clearButton.config-block\n        h3.subtitle\n          a.anchor #\n          | Clear Button\n        config-row(is-group)\n          label.options(for=\"hide_clear_btn_false\")\n            input(v-model=\"hideClearBtn\" type=\"radio\" id=\"hide_clear_btn_false\" name=\"hide_clear_btn\", :value=\"false\")\n            | &nbsp;Enable\n          label.options(for=\"hide_clear_btn_true\")\n            input(v-model=\"hideClearBtn\" type=\"radio\" id=\"hide_clear_btn_true\" name=\"hide_clear_btn\", :value=\"true\")\n            | &nbsp;Disable\n\n      #disablePicker.config-block\n        h3.subtitle\n          a.anchor #\n          | Disable Picker\n        config-row(is-group)\n          label.options\n            input(v-model=\"disablePicker\" type=\"checkbox\")\n            | &nbsp;Disable\n\n      #lazyMode.config-block\n        h3.subtitle\n          a.anchor #\n          | Lazy Event Mode\n        config-row(is-group)\n          label.options(for=\"lazy_mode_true\")\n            input(v-model=\"lazyMode\" type=\"radio\" id=\"lazy_mode_true\" name=\"lazy_mode\", :value=\"true\")\n            | &nbsp;Enable\n          label.options(for=\"lazy_mode_false\")\n            input(v-model=\"lazyMode\" type=\"radio\" id=\"lazy_mode_false\" name=\"lazy_mode\", :value=\"false\")\n            | &nbsp;Disable\n\n      #autoScroll.config-block\n        h3.subtitle\n          a.anchor #\n          | Auto Scroll\n        config-row(is-group)\n          label.options(for=\"auto_scroll_true\")\n            input(v-model=\"autoScroll\" type=\"radio\" id=\"auto_scroll_true\" name=\"auto_scroll\", :value=\"true\")\n            | &nbsp;Enable\n          label.options(for=\"auto_scroll_false\")\n            input(v-model=\"autoScroll\" type=\"radio\" id=\"auto_scroll_false\" name=\"auto_scroll\", :value=\"false\")\n            | &nbsp;Disable\n\n      #manualInput.config-block\n        h3.subtitle\n          a.anchor #\n          | Manually Input Support\n        config-row(is-group)\n          label.options(for=\"manual_input_true\")\n            input(v-model=\"manualInput\" type=\"radio\" id=\"manual_input_true\" name=\"manual_input\", :value=\"true\")\n            | &nbsp;Enable\n          label.options(for=\"manual_input_false\")\n            input(v-model=\"manualInput\" type=\"radio\" id=\"manual_input_false\" name=\"manual_input\", :value=\"false\")\n            | &nbsp;Disable\n\n      #hideDropdown.config-block(v-if=\"manualInput\")\n        h3.subtitle\n          a.anchor #\n          | Hide Dropdown\n        config-row(is-group)\n          label.options(for=\"hide_dropdown_true\")\n            input(v-model=\"hideDropdown\" type=\"radio\" id=\"hide_dropdown_true\" name=\"hide_dropdown\", :value=\"true\")\n            | &nbsp;Enable\n          label.options(for=\"hide_dropdown_false\")\n            input(v-model=\"hideDropdown\" type=\"radio\" id=\"hide_dropdown_false\" name=\"hide_dropdown\", :value=\"false\")\n            | &nbsp;Disable\n\n      #manualInputTimeout.config-block(v-if=\"manualInput\")\n        h3.subtitle\n          a.anchor #\n          | Customized Manual Input Timeout\n        config-row(is-group)\n          label.options\n            input(v-model=\"customManualInputTimeout\" type=\"checkbox\" @input=\"toggleManualInputTimeout\")\n            | &nbsp;Set Manual Input Timeout\n          label.range-wrapper(v-if=\"customManualInputTimeout\")\n            input(v-model.number=\"manualInputTimeout\" type=\"range\" min=\"50\" max=\"5000\" step=\"50\")\n            span(v-text=\"manualInputTimeout\")\n\n      #advancedKeyboard.config-block\n        h3.subtitle\n          a.anchor #\n          | Advanced Keyboard Support\n        config-row(is-group)\n          label.options(for=\"advanced_kb_true\")\n            input(v-model=\"advancedKeyboard\" type=\"radio\" id=\"advanced_kb_true\" name=\"advanced_kb\", :value=\"true\")\n            | &nbsp;Enable\n          label.options(for=\"advanced_kb_false\")\n            input(v-model=\"advancedKeyboard\" type=\"radio\" id=\"advanced_kb_false\" name=\"advanced_kb\", :value=\"false\")\n            | &nbsp;Disable\n\n      #blurDelay.config-block\n        h3.subtitle\n          a.anchor #\n          | Customized Blur Delay\n        config-row(is-group)\n          label.options\n            input(v-model=\"customBlurDelay\" type=\"checkbox\" @input=\"toggleBlurDelay\")\n            | &nbsp;Set Blur Delay\n          label.range-wrapper(v-if=\"customBlurDelay\")\n            input(v-model.number=\"blurDelay\" type=\"range\" min=\"50\" max=\"1500\" step=\"50\")\n            span(v-text=\"blurDelay\")\n\n      #fixedDropdownBtn.config-block\n        h3.subtitle\n          a.anchor #\n          | Fixed Dropdown Button\n        config-row(is-group)\n          label.options(for=\"fixed_dd_btn_true\")\n            input(v-model=\"fixedDropdownBtn\" type=\"radio\" id=\"fixed_dd_btn_true\" name=\"fixed_dd_btn\", :value=\"true\")\n            | &nbsp;Enable\n          label.options(for=\"fixed_dd_btn_false\")\n            input(v-model=\"fixedDropdownBtn\" type=\"radio\" id=\"fixed_dd_btn_false\" name=\"fixed_dd_btn\", :value=\"false\")\n            | &nbsp;Disable\n\n      #skipErrorStyle.config-block\n        h3.subtitle\n          a.anchor #\n          | Skip Error Style\n        config-row(is-group)\n          label.options(for=\"skip_error_true\")\n            input(v-model=\"skipErrorStyle\" type=\"radio\" id=\"skip_error_true\" name=\"skip_error\", :value=\"true\")\n            | &nbsp;Enable\n          label.options(for=\"skip_error_false\")\n            input(v-model=\"skipErrorStyle\" type=\"radio\" id=\"skip_error_false\" name=\"skip_error\", :value=\"false\")\n            | &nbsp;Disable\n\n      #appendToBody.config-block\n        h3.subtitle\n          a.anchor #\n          | Append To Body\n        config-row(is-group)\n          label.options(for=\"append_to_body_true\")\n            input(v-model=\"appendToBody\" type=\"radio\" id=\"append_to_body_true\" name=\"append_to_body\", :value=\"true\")\n            | &nbsp;Enable\n          label.options(for=\"append_to_body_false\")\n            input(v-model=\"appendToBody\" type=\"radio\" id=\"append_to_body_false\" name=\"append_to_body\", :value=\"false\")\n            | &nbsp;Disable\n\n      #debugMode.config-block\n        h3.subtitle\n          a.anchor #\n          | Debug Mode\n        config-row(is-group)\n          label.options(for=\"debug_mode_true\")\n            input(v-model=\"debugMode\" type=\"radio\" id=\"debug_mode_true\" name=\"debug_mode\", :value=\"true\")\n            | &nbsp;Enable\n          label.options(for=\"debug_mode_false\")\n            input(v-model=\"debugMode\" type=\"radio\" id=\"debug_mode_false\" name=\"debug_mode\", :value=\"false\")\n            | &nbsp;Disable\n\n  //-\n  //- Live preview on the left panel\n  //-\n  aside.previews(:style=\"asideStyle\")\n    #playgroundPreview.preview\n      label(for=\"vueTimepickerInPlayground\")\n        b Format string:&nbsp;\n        span(v-text=\"formatString\")\n      p\n        vue-timepicker(v-model=\"playgroundData\"\n                       id=\"vueTimepickerInPlayground\"\n                       :format=\"formatString\"\n                       :minute-interval=\"interval.minute\"\n                       :second-interval=\"showSeconds ? interval.second : null\"\n                       :hour-range=\"customRange.hour ? hourRange : null\"\n                       :minute-range=\"customRange.minute ? minuteRange : null\"\n                       :second-range=\"(showSeconds && customRange.second) ? secondRange : null\"\n                       :close-on-complete=\"closeOnComplete\"\n                       :advanced-keyboard=\"advancedKeyboard\"\n                       :manual-input=\"manualInput\"\n                       :hide-dropdown=\"toHideDropdown\"\n                       :blur-delay=\"blurDelay\"\n                       :manual-input-timeout=\"manualInputTimeout\"\n                       :hide-clear-button=\"hideClearBtn\"\n                       :fixed-dropdown-button=\"fixedDropdownBtn\"\n                       :disabled=\"disablePicker\"\n                       :lazy=\"lazyMode\"\n                       :auto-scroll=\"autoScroll\"\n                       :append-to-body=\"appendToBody\"\n                       :debug-mode=\"debugMode\"\n                       :input-class=\"skipErrorStyle ? 'skip-error-style' : null\"\n                       @change=\"changeHandler\"\n                       @error=\"errorHandler\")\n\n    #htmlCodePreview.codes\n      highlight-code(lang=\"html\" data-title=\"HTML\") {{ htmlCodeWithVar }}\n\n    #dispatchedValue.codes\n      highlight-code(lang=\"json\" data-title=\"@change event data\") {{ playgroundFullValue }}\n      highlight-code(v-if=\"showErroredData\" lang=\"json\" data-title=\"@error event data\") {{ playgroundErroredData }}\n\n  //-\n  //- Customized Range Panels\n  //-\n  overlay-panel(v-if=\"showRangePanel\" :title=\"rangeTitle\" @close=\"closeRangePanel\")\n    template(v-slot:footerLeft)\n      button.secondary(@click=\"selectAllRangeItems\") Select All\n      button.secondary(@click=\"unselectAllRangeItems\") Unselect All\n    template(v-slot:footerRight)\n      button(@click=\"confirmRange\") Confirm\n\n    .valid-items\n      label.range-item(v-for=\"(rangeItem, rIndex) in rangeList\")\n        input(type=\"checkbox\" name=\"selected_ranges\" v-model=\"selectedRanges\" :value=\"rangeItem\")\n        | {{ rangeItem }}\n\n    .invalid-items(v-if=\"filteredOutValues && filteredOutValues.length\")\n      b Values selected but filtered out by the&nbsp;\n        template(v-if=\"editingRange !== 'hour'\") {{editingRange}}-interval:\n        template(v-else) current hour type\n      .items-list\n        span.invalid-range(v-for=\"oItem in filteredOutValues\" :key=\"oItem\" v-text=\"oItem\")\n\n</template>\n\n<style lang=\"stylus\">\n@import '../assets/_variables.styl'\n\nsection#playground\n  main\n    padding-left: 420px\n    .codes\n      pre,\n      code\n        overflow-x: auto\n\n  .config-block\n    .subtitle\n      margin: 0\n      padding: 1em 0 0.5em 0\n      position: relative\n\n      a.anchor\n        position: absolute\n        left: -1em\n\n    &:first-of-type\n      .subtitle\n        padding-top: 0\n\n    .button-wrapper\n      display: flex\n      flex-flow: row wrap\n      justify-content: flex-start\n      align-items: center\n      padding: 0.3em 0.5em\n      border-radius: 4px\n      background: -black(0.05)\n\n  aside.previews\n    position: fixed\n    width: 320px\n    left:10%\n    top: 0\n    z-index: 10\n    padding-top: 220px\n\n  #playgroundPreview\n    box-sizing: border-box\n    background: #fff\n    padding: 1em 1.5em\n\n  .range-item,\n  .invalid-range\n    display: inline-block\n    margin-right: 1em\n    margin-bottom: 0.5em\n  \n  .range-item\n    min-width: 3em\n\n  .invalid-range\n    opacity: 0.7\n\n  .invalid-items\n    margin-top: 1em\n    padding: 0.8em 0.8em 0.3em 0.8em\n    background: -black(0.05)\n    border-radius: 6px\n\n    .items-list\n      padding-top: 0.8em\n\n  .item-count\n    font-size: 0.85em\n    padding-left: 0.5em\n    opacity: 0.7\n</style>\n"
  },
  {
    "path": "demo/src/components/SampleBlock.vue",
    "content": "<script>\nexport default {\n  name: 'SampleBlock',\n  props: {\n    id: { type: String }\n  },\n  computed: {\n    blockHerf () {\n      if (this.id && this.id.length) {\n        return `#${this.id}`\n      }\n      return null\n    }\n  }\n}\n</script>\n\n<template lang=\"pug\">\n.sample-block(:id=\"id\")\n  h3.title\n    a.anchor(:href=\"blockHerf\") #\n    slot(name=\"title\")\n  .description\n    slot(name=\"description\")\n  .codes\n    slot(name=\"codes\")\n  .preview\n    slot(name=\"preview\")\n  .codes(v-if=\"$slots.data\")\n    slot(name=\"data\")\n</template>\n\n<style lang=\"stylus\">\n.sample-block\n  padding: 5em 0 0 20%\n  &:first-of-type\n    padding-top: 0\n\n  .title\n    position: relative\n    margin-bottom: 1.5em\n\n    a.anchor\n      position: absolute\n      left: -1em\n\n  .description,\n  .preview,\n  .codes\n    margin-left: 1.5em\n\n  .inline-data-preview\n    display: inline-block\n    margin-left: 1em\n    font-size: 0.9em\n  \n  ul\n    margin: 0 0 1em 0\n    padding: 0 0 0 1.2em\n    li\n      list-style: circle\n      line-height: 150%\n</style>\n"
  },
  {
    "path": "demo/src/components/Samples.vue",
    "content": "<script>\nimport VueTimepicker from '../../../src/vue-timepicker'\nimport SampleBlock from './SampleBlock'\n\nexport default {\n  name: 'Samples',\n  components: {\n    VueTimepicker,\n    SampleBlock\n  },\n  data () {\n    return {\n      yourData: {\n        hh: '03',\n        mm: '05',\n        ss: '00',\n        a: 'am'\n      },\n      yourFormat: 'hh:mm:ss a',\n      yourDaysArray: [\n        {start_time: {HH: '08', mm: '00'}, end_time: {HH: '09', mm: '00'}},\n        {start_time: {HH: '15', mm: '00'}, end_time: {HH: '', mm: ''}},\n        {start_time: {HH: '', mm: ''}, end_time: {HH: '13', mm: '30'}},\n        {start_time: {HH: '', mm: ''}, end_time: {HH: '', mm: ''}}\n      ],\n\n      simpleStringValue: '02:30',\n      yourStringValue: '3:mm:05 A',\n      unsetStringValue: '',\n\n      muteFlowListener: true,\n      latestDataFlow: undefined,\n      demoData1: {HH: '08', mm: '30'},\n      demoData2: {HH: '10', mm: '45'},\n      demoArgs: undefined,\n\n      dropdownStatus: 'closed',\n      \n      focusState: 'blurred',\n      dropdownState: 'closed',\n\n      lazyData: {\n        hh: '06',\n        mm: '50',\n        ss: '00',\n        a: 'am'\n      },\n      lazyChangeData: undefined,\n      lazyInputData: undefined,\n      lazyEventTs: undefined,\n\n      manualStringValue: '8:15 pm',\n\n      customCloseBtnValue: '10:05',\n\n      autoScrollData1: '08:40',\n      autoScrollData2: '5:30:20 pm',\n\n      apmFirst1: 'AM 03:15',\n      apmFirst2: 'pm9時6分',\n\n      sideNav: [\n        { title: 'Default', anchor: 'default' },\n        { title: '12 Hours', anchor: 'format12hours' },\n        { title: 'Seconds Picker', anchor: 'seconds' },\n        { title: 'Customized Interval', anchor: 'interval' },\n        { title: 'Using v-model', anchor: 'vModel' },\n        { title: 'v-model with String Value', anchor: 'vModelWithString' },\n        { title: 'Work with v-for', anchor: 'vForSample' },\n        { title: 'Hour Range', anchor: 'hourRange' },\n        { title: 'Minute and Second Range', anchor: 'minuteAndSecondRange' },\n        { title: 'Hide Disabled Items', anchor: 'hideDisabledItems' },\n        { title: 'Close on Complete', anchor: 'closeOnComplete' },\n        { title: 'Hide Clear Button', anchor: 'hideClearButton' },\n        { title: 'Disable Picker', anchor: 'disablePicker' },\n        { title: 'The @change Event', anchor: 'onChangeSample' },\n        { title: 'Lazy Event Mode', anchor: 'lazyEvents' },\n        { title: 'Keyboard Support', anchor: 'kbSupport' },\n        { title: 'Manual Input', anchor: 'manualInput'},\n        { title: '@open and @close event', anchor: 'openAndClose' },\n        { title: '@focus and @blur event', anchor: 'focusAndBlur' },\n        { title: 'Customized Picker Labels', anchor: 'customPickerLabels' },\n        { title: 'Adjust Input Width', anchor: 'inputWidth' },\n        { title: 'Auto-Scroll', anchor: 'autoScroll' },\n        { title: 'More Powerful format String', anchor: 'morePowerfulFormat' },\n        { title: 'Customized Buttons And Icon', anchor: 'customButtonIcon' },\n        { title: 'Fixed Dropdown Button', anchor: 'fixedDropdownButton' },\n        { title: 'Drop Direction', anchor: 'dropDirection' }\n      ]\n    }\n  },\n\n  methods: {\n    changeHandler (eventData) {\n      if (this.muteFlowListener) { return }\n      this.latestDataFlow = eventData\n      this.demoArgs = undefined\n    },\n\n    otherChangeHandler (eventData, arg1, arg2) {\n      if (this.muteFlowListener) { return }\n      this.latestDataFlow = eventData\n      this.demoArgs = {\n        arg1: arg1,\n        arg2: arg2\n      }\n    },\n\n    lazyChangeHandler (eventData) {\n      this.lazyChangeData = eventData\n      this.lazyEventTs = new Date().toLocaleString()\n    },\n\n    lazyInputHandler (eventData) {\n      this.lazyInputData = eventData\n    }\n  },\n\n  mounted () {\n    window.setTimeout(() => {\n      this.muteFlowListener = false\n    }, 1000)\n  }\n}\n</script>\n\n<template lang=\"pug\">\nsection#mostlyUsedSamples\n  h2.section-title Common Usage\n\n  //- Default\n  sample-block#default\n    template(v-slot:title) Default\n    p(slot=\"description\")\n      | Default to 24-hour format\n      code HH:mm\n    template(v-slot:codes)\n      highlight-code(lang=\"html\" data-title=\"HTML\")\n        | &lt;vue-timepicker&gt;&lt;/vue-timepicker&gt;\n    template(v-slot:preview)\n      vue-timepicker\n\n  //- 12 Hours\n  sample-block#format12hours\n    template(v-slot:title) 12 Hours\n    p(slot=\"description\")\n      | By properly define the\n      code format\n      | string, you can set timepicker in form of 12 hours\n    template(v-slot:codes)\n      highlight-code(lang=\"html\" data-title=\"HTML\")\n        pre\n          | &lt;!-- 12-hour sample 1 --&gt;\n          | &lt;vue-timepicker format=\"hh:mm A\"&gt;&lt;/vue-timepicker&gt;\n          | &nbsp;\n          | &lt;!-- 12-hour sample 2 --&gt;\n          | &lt;vue-timepicker format=\"h:m a\"&gt;&lt;/vue-timepicker&gt;\n    template(v-slot:preview)\n      b 12-hour sample 1\n      p\n        vue-timepicker(format=\"hh:mm A\")\n      b 12-hour sample 2\n      p\n        vue-timepicker(format=\"h:m a\")\n\n  //- Seconds Picker\n  sample-block#seconds\n    template(v-slot:title) Seconds Picker\n    p(slot=\"description\")\n      | You can trigger the seconds picker by adding\n      code ss\n      | or\n      code s\n      | in your format string.\n    template(v-slot:codes)\n      highlight-code(lang=\"html\" data-title=\"HTML\")\n        | &lt;vue-timepicker format=\"HH:mm:ss\"&gt;&lt;/vue-timepicker&gt;\n    template(v-slot:preview)\n      vue-timepicker(format=\"HH:mm:ss\")\n\n  //- Customized Interval\n  sample-block#interval\n    template(v-slot:title) Customized Interval\n    p(slot=\"description\")\n      | Timepicker also allows you to display minutes or seconds picker with certain interval, like a 10-minute interval\n      code 0, 10, 20, ... 50, 60\n      | for example\n    template(v-slot:codes)\n      highlight-code(lang=\"html\" data-title=\"HTML\")\n        pre\n          | &lt;!-- 10-minute interval --&gt;\n          | &lt;vue-timepicker :minute-interval=\"10\"&gt;&lt;/vue-timepicker&gt;\n          | &nbsp;\n          | &lt;!-- 15-second interval --&gt;\n          | &lt;vue-timepicker format=\"HH:mm:ss\" :second-interval=\"15\"&gt;&lt;/vue-timepicker&gt;\n          | &nbsp;\n          | &lt;!-- 5-minute interval plus 10-second interval --&gt;\n          | &lt;vue-timepicker format=\"hh:mm:ss\" :minute-interval=\"5\" :second-interval=\"10\"&gt;&lt;/vue-timepicker&gt;\n    template(v-slot:preview)\n      b 10-minute interval\n      p\n        vue-timepicker(:minute-interval=\"10\")\n      b 15-second interval\n      p\n        vue-timepicker(format=\"HH:mm:ss\" :second-interval=\"15\")\n      b 5-minute interval plus 10-second interval\n      p\n        vue-timepicker(format=\"hh:mm:ss\" :minute-interval=\"5\" :second-interval=\"10\")\n\n  //- Using v-model\n  sample-block#vModel\n    template(v-slot:title)\n      | Using&nbsp;\n      code v-model\n    p(slot=\"description\")\n      | Timepicker takes <code>v-model</code> value in object format by default.\n    template(v-slot:codes)\n      highlight-code(lang=\"javascript\" data-title=\"JS\")\n        pre\n          | // Define format and initial data\n          | data () {\n          |   return {\n          |     yourFormat: 'hh:mm:ss a',\n          |     yourData: {\n          |       hh: '03',\n          |       mm: '05',\n          |       ss: '00',\n          |       a: 'am'\n          |     }\n          |   }\n          | }\n      highlight-code(lang=\"html\" data-title=\"HTML\")\n        | &lt;vue-timepicker :format=\"yourFormat\" v-model=\"yourData\"&gt;&lt;/vue-timepicker&gt;\n    template(v-slot:preview)\n      vue-timepicker(:format=\"yourFormat\" v-model=\"yourData\")\n    template(v-slot:data)\n      highlight-code(lang=\"json\" data-title=\"`yourData` in live (JSON)\") {{ yourData }}\n\n  //- String format `v-model`\n  sample-block#vModelWithString\n    template(v-slot:title)\n      code v-model\n      | &nbsp;with String Value\n    p(slot=\"description\")\n      | From <code>v1.0.0+</code>, timepicker also supports <code>v-model</code> value in string format.\n    template(v-slot:codes)\n      highlight-code(lang=\"javascript\" data-title=\"JS\")\n        pre\n          | // Set initial data in string format\n          | data () {\n          |   return {\n          |     simpleStringValue: '02:30',\n          |\n          |     // paired with format 'h:mm:ss A'\n          |     yourStringValue: '3:mm:05 A',\n          |\n          |     unsetStringValue: ''\n          |   }\n          | }\n      highlight-code(lang=\"html\" data-title=\"HTML\")\n        pre\n          | &lt;!-- default 24-hour sample --&gt;\n          | &lt;vue-timepicker v-model=\"simpleStringValue\"&gt;&lt;/vue-timepicker&gt;\n          |\n          | &lt;!-- 12-hour format with partial value set --&gt;\n          | &lt;vue-timepicker v-model=\"yourStringValue\" format=\"h:mm:ss A\"&gt;&lt;/vue-timepicker&gt;\n          |\n          | &lt;!-- unset/unknown initial value --&gt;\n          | &lt;vue-timepicker v-model=\"unsetStringValue\"&gt;&lt;/vue-timepicker&gt;\n    template(v-slot:preview)\n      b default 24-hour sample\n      p\n        vue-timepicker(v-model=\"simpleStringValue\")\n        span.inline-data-preview\n          | simpleStringValue&nbsp;\n          code \"{{ simpleStringValue }}\"\n      b 12-hour format with partial value set\n      p\n        vue-timepicker(v-model=\"yourStringValue\" format=\"h:mm:ss A\")\n        span.inline-data-preview\n          | yourStringValue:&nbsp;\n          code \"{{ yourStringValue }}\"\n      b unset/unknown initial value\n      p\n        vue-timepicker(v-model=\"unsetStringValue\")\n        span.inline-data-preview\n          | unsetStringValue:&nbsp;\n          code \"{{ unsetStringValue }}\"\n\n  //- v-for Example\n  sample-block#vForSample\n    template(v-slot:title)\n      | Work with&nbsp;\n      code v-for\n    p(slot=\"description\")\n      | Here's a quick sample of\n      code v-for\n      | usage\n    template(v-slot:codes)\n      highlight-code(lang=\"javascript\" data-title=\"JS\")\n        pre\n          | data () {\n          |   return {\n          |     yourDaysArray: [\n          |       {start_time: {HH: '08', mm: '00'}, end_time: {HH: '09', mm: '00'}},\n          |       {start_time: {HH: '15', mm: '00'}, end_time: {HH: '', mm: ''}},\n          |       {start_time: {HH: '', mm: ''}, end_time: {HH: '13', mm: '30'}},\n          |       {start_time: {HH: '', mm: ''}, end_time: {HH: '', mm: ''}}\n          |     ]\n          |   }\n          | }\n      highlight-code(lang=\"html\" data-title=\"HTML\")\n        pre\n          | &lt;p v-for=\"(day, index) in yourDaysArray\"&gt;\n          |   &lt;label&gt;Day <span>{{</span> index + 1 <span>}}</span>: &lt;/label&gt;\n          |   &lt;vue-timepicker v-model=\"day.start_time\" placeholder=\"Start Time\"&gt;&lt;/vue-timepicker&gt;\n          |   &lt;span&gt; to &lt;/span&gt;\n          |   &lt;vue-timepicker v-model=\"day.end_time\" placeholder=\"End Time\"&gt;&lt;/vue-timepicker&gt;\n          | &lt;/p&gt;\n    template(v-slot:preview)\n      p(v-for=\"(day, index) in yourDaysArray\")\n        label Day {{ index + 1 }}:&nbsp;\n        vue-timepicker(v-model=\"day.start_time\" placeholder=\"Start Time\")\n        span &nbsp;to&nbsp;\n        vue-timepicker(v-model=\"day.end_time\" placeholder=\"End Time\")\n    template(v-slot:data)\n      highlight-code(lang=\"json\" data-title=\"`yourDaysArray` JSON in live\") {{ yourDaysArray }}\n\n  //- Hour Range\n  sample-block#hourRange\n    template(v-slot:title) Hour Range\n    p(slot=\"description\") Define the hour values you want and disable the rest\n    template(v-slot:codes)\n      highlight-code(lang=\"html\" data-title=\"HTML\")\n        pre\n          | &lt;!-- Hour Range Sample 1 --&gt;\n          | &lt;vue-timepicker :hour-range=\"[5, [8, 12], [14, 17], 19]\"&gt;&lt;/vue-timepicker&gt;\n          | &lt;!-- >> Equals to :hour-range=\"[5, 8, 9, 10, 11, 12, 14, 15, 16, 17, 19]\" --&gt;\n          | &nbsp;\n          | &lt;!-- Hour Range Sample 2 (12-hour format) --&gt;\n          | &lt;vue-timepicker :hour-range=\"['7a', '9a', '11a', '1p', ['3p', '5p'], '7p']\" format=\"hh:mm a\"&gt;&lt;/vue-timepicker&gt;\n          | &lt;!-- >> Equals to :hour-range=\"['7a', '9a', '11a', '1p', '3p', '4p', '5p', '7p']\" --&gt;\n    template(v-slot:preview)\n      b Hour Range Sample 1\n      p\n        vue-timepicker(:hour-range=\"[5, [8, 12], [14, 17], 19]\")\n      b Hour Range Sample 2 (12-hour format)\n      p\n        vue-timepicker(:hour-range=\"['7a', '9a', '11a', '1p', ['3p', '5p'], '7p']\" format=\"hh:mm a\")\n\n  //- Minute Range\n  sample-block#minuteAndSecondRange\n    template(v-slot:title) Minute and Second Range\n    template(v-slot:description)\n      p Similar to Hour Range, you can set available minute/second values base on your needs.\n    template(v-slot:codes)\n      highlight-code(lang=\"html\" data-title=\"HTML\")\n        pre\n          | &lt;!-- Minute range only --&gt;\n          | &lt;vue-timepicker :minute-range=\"[0, 6, [10, 30], 42, 50]\"&gt;&lt;/vue-timepicker&gt;\n          |\n          | &lt;!-- Minute range + 5-minute interval --&gt;\n          | &lt;vue-timepicker :minute-range=\"[0, 6, [10, 30], 42, 50]\" :minute-interval=\"5\"&gt;&lt;/vue-timepicker&gt;\n          |\n          | &lt;!-- Second range only --&gt;\n          | &lt;vue-timepicker format=\"H:m:s\" :second-range=\"[0, 6, [10, 30], 42, 50]\"&gt;&lt;/vue-timepicker&gt;\n          |\n          | &lt;!-- Second range + 10-second interval --&gt;\n          | &lt;vue-timepicker format=\"H:m:s\" :second-range=\"[0, 6, [10, 30], 42, 50]\" :second-interval=\"10\"&gt;&lt;/vue-timepicker&gt;\n          |\n          | &lt;!-- Minute and Second ranges + 10-minute interval + 5-second interval --&gt;\n          | &lt;vue-timepicker format=\"HH:mm:ss\" :minute-range=\"[0, 6, [10, 30], 42, 50]\" :second-range=\"[0, 6, [10, 30], 42, 50]\" :minute-interval=\"10\" :second-interval=\"5\"&gt;&lt;/vue-timepicker&gt;\n    template(v-slot:preview)\n      b Minute range only\n      p\n        vue-timepicker(:minute-range=\"[0, 6, [10, 30], 42, 50]\")\n      b Minute range + 5-minute interval\n      p\n        vue-timepicker(:minute-range=\"[0, 6, [10, 30], 42, 50]\" :minute-interval=\"5\")\n      b Second range only\n      p\n        vue-timepicker(format=\"H:m:s\" :second-range=\"[0, 6, [10, 30], 42, 50]\")\n      b Second range + 10-second interval\n      p\n        vue-timepicker(format=\"H:m:s\" :second-range=\"[0, 6, [10, 30], 42, 50]\" :second-interval=\"10\")\n      b Minute and Second ranges + 10-minute interval + 5-second interval\n      p\n        vue-timepicker(format=\"HH:mm:ss\" :minute-range=\"[0, 6, [10, 30], 42, 50]\" :second-range=\"[0, 6, [10, 30], 42, 50]\" :minute-interval=\"10\" :second-interval=\"5\")\n\n  //- Hide Disabled Items\n  sample-block#hideDisabledItems\n    template(v-slot:title) Hide Disabled Items\n    template(v-slot:description)\n      p Here're four kinds of helper properties to let you hide the values excluded by the <code>hour-range</code>, <code>minute-range</code>, and <code>second-range</code>.\n      ul\n        li\n          b hide-disabled-items\n          | : Hide <b>all</b> disabled items - hour, minute, and seconds.\n        li\n          b hide-disabled-hours\n          | : Hide disabled <b>hour</b> valus only.\n        li\n          b hide-disabled-minutes\n          | : Hide disabled <b>minute</b> values only.\n        li\n          b hide-disabled-seconds\n          | : Hide disabled <b>second</b> values only.\n    template(v-slot:codes)\n      highlight-code(lang=\"html\" data-title=\"HTML\")\n        pre\n          | &lt;!-- hide-disabled-items --&gt;\n          | &lt;vue-timepicker hide-disabled-items format=\"HH:mm:ss\" :hour-range=\"[[9, 17]]\" :minute-range=\"[0, 10, 15, 30, 50]\" :second-range=\"[5, 15, 25, 45]\"&gt;&lt;/vue-timepicker&gt;\n          |\n          | &lt;!-- hide-disabled-hours --&gt;\n          | &lt;vue-timepicker hide-disabled-hours format=\"HH:mm:ss\" :hour-range=\"[[9, 17]]\" :minute-range=\"[0, 10, 15, 30, 50]\" :second-range=\"[5, 15, 25, 45]\"&gt;&lt;/vue-timepicker&gt;\n          |\n          | &lt;!-- hide-disabled-minutes --&gt;\n          | &lt;vue-timepicker hide-disabled-minutes format=\"HH:mm:ss\" :hour-range=\"[[9, 17]]\" :minute-range=\"[0, 10, 15, 30, 50]\" :second-range=\"[5, 15, 25, 45]\"&gt;&lt;/vue-timepicker&gt;\n          |\n          | &lt;!-- hide-disabled-seconds --&gt;\n          | &lt;vue-timepicker hide-disabled-seconds format=\"HH:mm:ss\" :hour-range=\"[[9, 17]]\" :minute-range=\"[0, 10, 15, 30, 50]\" :second-range=\"[5, 15, 25, 45]\"&gt;&lt;/vue-timepicker&gt;\n    template(v-slot:preview)\n      b hide-disabled-items\n      p\n        vue-timepicker(hide-disabled-items format=\"HH:mm:ss\" :hour-range=\"[[9, 17]]\" :minute-range=\"[0, 10, 15, 30, 50]\" :second-range=\"[5, 15, 25, 45]\")\n      b hide-disabled-hours\n      p\n        vue-timepicker(hide-disabled-hours format=\"HH:mm:ss\" :hour-range=\"[[9, 17]]\" :minute-range=\"[0, 10, 15, 30, 50]\" :second-range=\"[5, 15, 25, 45]\")\n      b hide-disabled-minutes\n      p\n        vue-timepicker(hide-disabled-minutes format=\"HH:mm:ss\" :hour-range=\"[[9, 17]]\" :minute-range=\"[0, 10, 15, 30, 50]\" :second-range=\"[5, 15, 25, 45]\")\n      b hide-disabled-seconds\n      p\n        vue-timepicker(hide-disabled-seconds format=\"HH:mm:ss\" :hour-range=\"[[9, 17]]\" :minute-range=\"[0, 10, 15, 30, 50]\" :second-range=\"[5, 15, 25, 45]\")\n\n  //- Close on Complete\n  sample-block#closeOnComplete\n    template(v-slot:title) Close on Complete\n    p(slot=\"description\")\n      | Automatically close the dropdown when user finish selecting <b>all</b> of the required fields.\n    template(v-slot:codes)\n      highlight-code(lang=\"html\" data-title=\"HTML\")\n        pre\n          | &lt;!-- Auto-close on complete --&gt;\n          | &lt;vue-timepicker format=\"hh:mm A\" close-on-complete&gt;&lt;/vue-timepicker&gt;\n          |\n          | &lt;!-- Default - close by clicking anywhere outside of the dropdown --&gt;\n          | &lt;vue-timepicker format=\"hh:mm A\"&gt;&lt;/vue-timepicker&gt;\n    template(v-slot:preview)\n      b Auto-close on complete\n      p\n        vue-timepicker(format=\"hh:mm A\" close-on-complete)\n      b Default - close by clicking anywhere outside of the dropdown\n      p\n        vue-timepicker(format=\"hh:mm A\")\n\n  //- Hide Clear Button\n  sample-block#hideClearButton\n    template(v-slot:title) Hide Clear Button\n    p(slot=\"description\")\n      | If you don't want to expose the clear button in the UI,\n      code hide-clear-button\n      | property will do the trick.\n    template(v-slot:codes)\n      highlight-code(lang=\"html\" data-title=\"HTML\")\n        | &lt;vue-timepicker hide-clear-button&gt;&lt;/vue-timepicker&gt;\n    template(v-slot:preview)\n      vue-timepicker(hide-clear-button)\n\n\n  //- Disable Picker\n  sample-block#disablePicker\n    template(v-slot:title) Disable Picker\n    p(slot=\"description\")\n      | Completely disable the picker.\n    template(v-slot:codes)\n      highlight-code(lang=\"html\" data-title=\"HTML\")\n        | &lt;vue-timepicker disabled&gt;&lt;/vue-timepicker&gt;\n    template(v-slot:preview)\n      vue-timepicker(disabled)\n\n  //- @change Sample\n  sample-block#onChangeSample\n    template(v-slot:title)\n      | The&nbsp;\n      code change\n      | &nbsp;Event\n    template(v-slot:description)\n      p A <code>change</code> event will be triggered every time the user alters timepicker's value.\n      p Unlike the <code>v-model</code>, which only returns data in your predefined format, <code>change</code> event will return a full package of all supported time tokens.\n      p Started from <code>v0.2.2</code>, a <code>displayTime</code> string value is also included in the return data of <code>change</code> event.\n      p Play around with the two pickers below to see their data changes in live.\n    template(v-slot:codes)\n      highlight-code(lang=\"html\" data-title=\"HTML\")\n        pre\n          | &lt;!-- No argument --&gt;\n          | &lt;vue-timepicker v-model=\"demoData1\" @change=\"changeHandler\"&gt;&lt;/vue-timepicker&gt;\n          | &nbsp;\n          | &lt;!-- Custom argument --&gt;\n          | &lt;vue-timepicker v-model=\"demoData2\" @change=\"otherChangeHandler($event, 'foo', 42)\"&gt;&lt;/vue-timepicker&gt;\n      highlight-code(lang=\"javascript\" data-title=\"JS\")\n        pre\n          | methods: {\n          |   // No argument\n          |   changeHandler (eventData) {\n          |     // eventData -&gt; {data: {HH:..., mm:...}, displayTime: 'HH:mm'}\n          |   },\n          |\n          |   // Customized arguments\n          |   otherChangeHandler (eventData, arg1, arg2) {\n          |     // eventData -&gt; {data: {HH:..., mm:...}, displayTime: 'HH:mm'}\n          |     // arg1 -&gt; 'foo'\n          |     // arg2 -&gt; 42\n          |   }\n          | }\n    template(v-slot:preview)\n      b No argument\n      p\n        vue-timepicker(v-model=\"demoData1\" @change=\"changeHandler\")\n      b With Custom arguments ('foo', 42)\n      p\n        vue-timepicker(v-model=\"demoData2\" @change=\"otherChangeHandler($event, 'foo', 42)\")\n    template(v-if=\"latestDataFlow || demoArgs\" slot=\"data\")\n      highlight-code(v-if=\"latestDataFlow\" lang=\"json\" data-title=\"The `@change` event data\") {{ latestDataFlow }}\n      highlight-code(v-if=\"demoArgs\" lang=\"json\" data-title=\"Received Custom Arguments\") {{ demoArgs }}\n      highlight-code(v-if=\"latestDataFlow\" lang=\"json\" data-title=\"`v-model` value\") {{ demoArgs ? demoData2 : demoData1 }}\n\n  //- Lazy Event Mode\n  sample-block#lazyEvents\n    template(v-slot:title) Lazy Event Mode\n    template(v-slot:description)\n      p When <code>lazy</code> event mode is toggled on, only an actual user behavior can trigger the <code>input</code> and <code>change</code> events. Which are:\n      ul\n        li The user opened the dropdown and picked a new value\n        li The user clicked the (\"x\") clear button\n    template(v-slot:codes)\n      highlight-code(lang=\"html\" data-title=\"HTML\")\n        | &lt;vue-timepicker lazy format=\"hh:mm:ss a\"&gt;&lt;/vue-timepicker&gt;\n    template(v-slot:preview)\n      p\n        vue-timepicker(v-model=\"lazyData\" lazy format=\"hh:mm:ss a\" @input=\"lazyInputHandler\" @change=\"lazyChangeHandler\")\n        span.inline-data-preview(v-if=\"lazyEventTs\")\n          b Last <code>change</code> event timestamp:\n          | &nbsp;{{ lazyEventTs }}\n\n    template(v-slot:data)\n      highlight-code(v-if=\"lazyInputData\" lang=\"json\" data-title=\"The lazy `input` event data\") {{ lazyInputData }}\n      highlight-code(v-if=\"lazyChangeData\" lang=\"json\" data-title=\"The lazy `change` event data\") {{ lazyChangeData }}\n\n  //- Keyboard Support\n  sample-block#kbSupport\n    template(v-slot:title) Keyboard Support\n    template(v-slot:description)\n      p\n        b Basic Keyboard Support:\n      ul\n        li\n          b Tab\n          | : Focus or blur the Timepicker\n        li\n          b Esc\n          | : Close the dropdown\n      p\n        b Advance Keyboard Support:\n      ul\n        li\n          b Arrow Keys\n          | : Navigate between valid (non-disabled) values and columns\n        li\n          b Space\n          | &nbsp;or&nbsp;\n          b Enter\n          | : Select the focusing item\n      p Try tabbing through the following inputs to see the difference between the <b>Default Timepicker</b> and the <b>Timepicker with Advanced Keyboard support</b>.\n\n    template(v-slot:codes)\n      highlight-code(lang=\"html\" data-title=\"HTML\")\n        pre\n          | &lt;label for=\"otherInput\"&gt;Text Input&lt;label/&gt;\n          | &lt;input id=\"otherInput\" type=\"text\" placeholder=\"Text\" /&gt;\n          |\n          | &lt;!-- Default, with minimal keyboard support --&gt;\n          | &lt;label for=\"simplePicker\"&gt;Default Vue Timepicker&lt;label/&gt;\n          | &lt;vue-timepicker id=\"simplePicker\"&gt;&lt;/vue-timepicker&gt;\n          |\n          | &lt;label for=\"moreInput\"&gt;Number Input&lt;label/&gt;\n          | &lt;input id=\"moreInput\" type=\"number\" placeholder=\"Number\" /&gt;\n          |\n          | &lt;!-- Advanced Keyboard Support Enabled --&gt;\n          | &lt;label for=\"pickerKB\"&gt;Vue Timepicker with Advanced Keyboard support&lt;label/&gt;\n          | &lt;vue-timepicker advanced-keyboard format=\"h:mm:ss A\" :hour-range=\"[['7a', '5p']]\" id=\"pickerKB\"&gt;&lt;/vue-timepicker&gt;\n          |\n          | &lt;label for=\"oneMoreInput\"&gt;One More Text Input&lt;label/&gt;\n          | &lt;input id=\"oneMoreInput\" type=\"text\" placeholder=\"More Text\" /&gt;\n    template(v-slot:preview)\n      b\n        label(for=\"otherInput\") Text Input\n      p\n        input#otherInput.native-input(type=\"text\" placeholder=\"Text\")\n      b\n        label(for=\"simplePicker\") Default Vue Timepicker\n      p\n        vue-timepicker(id=\"simplePicker\")\n      b\n        label(for=\"moreInput\") Number Input\n      p\n        input#moreInput.native-input(type=\"number\" placeholder=\"Number\")\n      b\n        label(for=\"pickerKB\") Vue Timepicker with Advanced Keyboard support\n      p\n        vue-timepicker(id=\"pickerKB\" format=\"h:mm:ss A\" :hour-range=\"[['7a', '5p']]\" advanced-keyboard)\n      b\n        label(for=\"oneMoreInput\") One More Text Input\n      p\n        input#oneMoreInput.native-input(type=\"text\" placeholder=\"More Text\")\n\n  //- Manual Input\n  sample-block#manualInput\n    template(v-slot:title) Manual Input\n    p(slot=\"description\")\n      | Allow users to input values manually. Please note that the additional <code>hide-dropdown</code> option works with <code>manual-input</code> mode only.\n    template(v-slot:codes)\n      highlight-code(lang=\"html\" data-title=\"HTML\")\n        pre\n          | &lt;!-- 24-hour format with empty init value --&gt;\n          | &lt;vue-timepicker manual-input&gt;&lt;/vue-timepicker&gt;\n          |\n          | &lt;!-- 12-hour format with a predefined value --&gt;\n          | &lt;vue-timepicker format=\"h:mm a\" v-model=\"manualStringValue\" manual-input&gt;&lt;/vue-timepicker&gt;\n          |\n          | &lt;!-- Manual input + hide dropdown --&gt;\n          | &lt;vue-timepicker manual-input hide-dropdown&gt;&lt;/vue-timepicker&gt;\n      highlight-code(lang=\"javascript\" data-title=\"JS\")\n        pre\n          | data () {\n          |   return {\n          |     manualStringValue: '8:15 pm'\n          |   }\n          | }\n    template(v-slot:preview)\n      b 24-hour format with empty init value\n      p\n        vue-timepicker(manual-input)\n      b 12-hour format with a predefined value\n      p\n        vue-timepicker(format=\"h:mm a\" v-model=\"manualStringValue\" manual-input)\n      b Manual input + hide dropdown\n      p\n        vue-timepicker(manual-input hide-dropdown)\n\n  //- Open And Close Event\n  sample-block#openAndClose\n    template(v-slot:title)\n      code open\n      | &nbsp;and&nbsp;\n      code close\n      | &nbsp;event\n    p(slot=\"description\")\n      | Help to identify the current state of the dropdown picker.\n    template(v-slot:codes)\n      highlight-code(lang=\"javascript\" data-title=\"JS\")\n        pre\n          | // Define a variable for logging the status\n          | data () {\n          |   return {\n          |     dropdownStatus: 'closed'\n          |   }\n          | }\n      highlight-code(lang=\"html\" data-title=\"HTML\")\n        pre\n          | &lt;p&gt;Dropdown Status: I'm <span>{{</span>dropdownStatus<span>}}</span>!&lt;/p&gt;\n          | &nbsp;\n          | &lt;vue-timepicker @open=\"dropdownStatus = 'opened'\" @close=\"dropdownStatus = 'closed'\"&gt;&lt;/vue-timepicker&gt;\n    template(v-slot:preview)\n      b Dropdown Status: I'm {{dropdownStatus}}!\n      p\n        vue-timepicker(@open=\"dropdownStatus = 'opened'\" @close=\"dropdownStatus = 'closed'\")\n\n  //- Focus And Blur Event\n  sample-block#focusAndBlur\n    template(v-slot:title)\n      code focus\n      | &nbsp;and&nbsp;\n      code blur\n      | &nbsp;event\n    p(slot=\"description\")\n      | It works with Manual Input mode. Helps to identify the focus/blur state of the Timepicker's input. Especially useful when the dropdown is force hidden by <code>hide-dropdown</code>.\n    template(v-slot:codes)\n      highlight-code(lang=\"javascript\" data-title=\"JS\")\n        pre\n          | data () {\n          |   return {\n          |     // variable for the input state\n          |     focusState: 'blurred',\n          |\n          |     // variable for the dropdown state\n          |     dropdownState: 'closed'\n          |   }\n          | }\n      highlight-code(lang=\"html\" data-title=\"HTML\")\n        pre\n          | &lt;span&gt;Focus State: <span>{{</span>focusState<span>}}</span>&lt;/span&gt;\n          | &lt;span&gt;Dropdown State: <span>{{</span>dropdownState<span>}}</span>&lt;/span&gt;\n          | &nbsp;\n          | &lt;vue-timepicker manual-input hide-dropdown @focus=\"focusState = 'focused'\" @blur=\"focusState = 'blurred'\" @open=\"dropdownState = 'opened'\" @close=\"dropdownState = 'closed'\"&gt;&lt;/vue-timepicker&gt;\n    template(v-slot:preview)\n      b Focus State: {{focusState}}\n      span &emsp;/&emsp;\n      b Dropdown State: {{ dropdownState }}\n      p\n        vue-timepicker(manual-input hide-dropdown @focus=\"focusState = 'focused'\" @blur=\"focusState = 'blurred'\" @open=\"dropdownState = 'opened'\" @close=\"dropdownState = 'closed'\")\n\n  //- Custom Labels\n  sample-block#customPickerLabels\n    template(v-slot:title) Customized Picker Labels\n    p(slot=\"description\")\n      | Define customized labels for hour, minute, second, and APM pickers.\n    template(v-slot:codes)\n      highlight-code(lang=\"html\" data-title=\"HTML\")\n        pre\n          | &lt;!-- 24-hour format with customized hour and minute labels --&gt;\n          | &lt;vue-timepicker hour-label=\"heure\" minute-label=\"minute\"&gt;&lt;/vue-timepicker&gt;\n          |\n          | &lt;!-- 12-hour format with customized am/pm text --&gt;\n          | &lt;vue-timepicker hour-label=\"时\" minute-label=\"分\" second-label=\"秒\" apm-label=\"午\" am-text=\"上午\" pm-text=\"下午\" format=\"h:mm:ss a\"&gt;&lt;/vue-timepicker&gt;\n    template(v-slot:preview)\n      b 24-hour format with customized hour and minute label\n      p\n        vue-timepicker(hour-label=\"heure\" minute-label=\"minute\")\n      b 12-hour format with customized am/pm text\n      p\n        vue-timepicker(hour-label=\"时\" minute-label=\"分\" second-label=\"秒\" apm-label=\"午\" am-text=\"上午\" pm-text=\"下午\" format=\"h:mm:ss a\")\n\n  //- Adjust Input Width\n  sample-block#inputWidth\n    template(v-slot:title) Adjust Input Width\n    p(slot=\"description\")\n      | Helps you to adjust both the\n      code &lt;input&gt;\n      | and the dropdown picker's width\n    template(v-slot:codes)\n      highlight-code(lang=\"html\" data-title=\"HTML\")\n        pre\n          | &lt;!-- In `px` --&gt;\n          | &lt;vue-timepicker input-width=\"100px\"&gt;&lt;/vue-timepicker&gt;\n          |\n          | &lt;!-- In `em` --&gt;\n          | &lt;vue-timepicker input-width=\"12em\" format=\"HH:mm:ss\"&gt;&lt;/vue-timepicker&gt;\n    template(v-slot:preview)\n      b In `px`\n      p\n        vue-timepicker(input-width=\"100px\")\n      b In `em`\n      p\n        vue-timepicker(input-width=\"12em\" format=\"HH:mm:ss\")\n\n  //- Auto Scroll\n  sample-block#autoScroll\n    template(v-slot:title) Auto-Scroll\n    p(slot=\"description\") Auto-scroll to selected value on dropdown open.\n    template(v-slot:codes)\n      highlight-code(lang=\"html\" data-title=\"HTML\")\n        pre\n          | &lt;!-- Default format --&gt;\n          | &lt;vue-timepicker auto-scroll v-model=\"autoScrollData1\"&gt;&lt;/vue-timepicker&gt;\n          | &nbsp;\n          | &lt;!-- 12-hour format --&gt;\n          | &lt;vue-timepicker auto-scroll format=\"h:mm:ss a\" v-model=\"autoScrollData2\"&gt;&lt;/vue-timepicker&gt;\n      highlight-code(lang=\"javascript\" data-title=\"JS\")\n        pre\n          | // Initial values\n          | data () {\n          |   return {\n          |     autoScrollData1: '08:40',\n          |     autoScrollData2: '5:30:20 pm'\n          |   }\n          | }\n    template(v-slot:preview)\n      b Default format\n      p\n        vue-timepicker(auto-scroll v-model=\"autoScrollData1\")\n      b 12-hour format\n      p\n        vue-timepicker(auto-scroll format=\"h:mm:ss a\" v-model=\"autoScrollData2\")\n\n  //- More Powerful format String\n  sample-block#morePowerfulFormat\n    template(v-slot:title) More Powerful <code>format</code> String\n    template(slot=\"description\")\n      p The <code>format</code> parameter becomes even more powerful started from <code>v1.1.2</code>.\n    template(v-slot:codes)\n      highlight-code(lang=\"html\" data-title=\"HTML\")\n        pre\n          | &lt;!-- Use without \"hour\" --&gt;\n          | &lt;vue-timepicker format=\"mm:ss\"&gt;&lt;/vue-timepicker&gt;\n          | &lt;vue-timepicker format=\"m:s\"&gt;&lt;/vue-timepicker&gt;\n          | &nbsp;\n          | &lt;!-- Make AM/PM the first column in the dropdown --&gt;\n          | &lt;vue-timepicker format=\"A hh:mm\" v-model=\"apmFirst1\"&gt;&lt;/vue-timepicker&gt;\n          | &lt;vue-timepicker format=\"ah時m分\" v-model=\"apmFirst2\" am-text=\"午前\" pm-text=\"午後\"&gt;&lt;/vue-timepicker&gt;\n          | &nbsp;\n          | &lt;!-- Hour + APM only --&gt;\n          | &lt;vue-timepicker format=\"ha\"&gt;&lt;/vue-timepicker&gt;\n          | &lt;vue-timepicker format=\"hh A\"&gt;&lt;/vue-timepicker&gt;\n          | &nbsp;\n          | &lt;!-- One slot only --&gt;\n          | &lt;!-- Not recommended, though :) --&gt;\n          | &lt;vue-timepicker format=\"h\" input-width=\"60px\"&gt;&lt;/vue-timepicker&gt;\n          | &lt;vue-timepicker format=\"mm\" input-width=\"60px\"&gt;&lt;/vue-timepicker&gt;\n          | &lt;vue-timepicker format=\"ss\" input-width=\"60px\"&gt;&lt;/vue-timepicker&gt;\n          | &lt;vue-timepicker format=\"a\" input-width=\"60px\"&gt;&lt;/vue-timepicker&gt;\n      highlight-code(lang=\"javascript\" data-title=\"JS\")\n        pre\n          | // Initial values\n          | data () {\n          |   return {\n          |     apmFirst1: 'AM 03:15',\n          |     // -> Equivalent to:\n          |     // apmFirst1: {\n          |     //   A: 'AM',\n          |     //   hh: '03',\n          |     //   mm: '15'\n          |     // }\n          |\n          |     apmFirst2: 'pm9時6分'\n          |     // -> Equivalent to:\n          |     // apmFirst2: {\n          |     //   a: 'pm',\n          |     //   h: '9',\n          |     //   m: '6'\n          |     // }\n          |   }\n          | }\n    template(v-slot:preview)\n      b Use without \"hour\"\n      p\n        vue-timepicker(format=\"mm:ss\")\n        | &nbsp;\n        vue-timepicker(format=\"m:s\")\n      b Make AM/PM the first column in the dropdown\n      p\n        vue-timepicker(format=\"A hh:mm\" v-model=\"apmFirst1\")\n        | &nbsp;\n        vue-timepicker(format=\"ah時m分\" v-model=\"apmFirst2\" am-text=\"午前\" pm-text=\"午後\")\n      b Hour + APM only\n      p\n        vue-timepicker(format=\"ha\")\n        | &nbsp;\n        vue-timepicker(format=\"hh A\")\n      b One slot only\n      p\n        vue-timepicker(format=\"h\" input-width=\"60px\")\n        | &nbsp;\n        vue-timepicker(format=\"mm\" input-width=\"60px\")\n        | &nbsp;\n        vue-timepicker(format=\"ss\" input-width=\"60px\")\n        | &nbsp;\n        vue-timepicker(format=\"a\" input-width=\"60px\")\n\n  //- Custom Button And Icon\n  sample-block#customButtonIcon\n    template(v-slot:title) Customized Buttons And Input Icon\n    template(v-slot:description)\n      p You can customize the clear button, and the dropdown button with your own icon/image starts from <code>v1.1.4+</code>. There's an additional slot for the input icon as well.\n      p Please note that Vue v2.6.0+ introduces a significant update of the <b>Named Slots</b> syntax. Check the <a href=\"https://vuejs.org/v2/guide/components-slots.html#Named-Slots\" target=\"_black\">official documentation</a> for more information.\n\n    template(v-slot:codes)\n      highlight-code(lang=\"html\" data-title=\"HTML\")\n        pre\n          | &lt;!-- For Vue 2.6.0+ --&gt;\n          |\n          | &lt;!-- Input icon (image) --&gt;\n          | &lt;vue-timepicker&gt;\n          |   &lt;template v-slot:icon&gt;\n          |     &lt;img src=\"$YOUR_ICON_SRC\" /&gt;\n          |   &lt;/template&gt;\n          | &lt;/vue-timepicker&gt;\n          |\n          | &lt;!-- Customized clear button (image) --&gt;\n          | &lt;vue-timepicker&gt;\n          |   &lt;template v-slot:clearButton&gt;\n          |     &lt;img src=\"$YOUR_CUSTOM_IMAGE_SRC\" /&gt;\n          |   &lt;/template&gt;\n          | &lt;/vue-timepicker&gt;\n          |\n          | &lt;!-- Customized dropdown button (character entity) --&gt;\n          | &lt;vue-timepicker manual-input hide-dropdown&gt;\n          |   &lt;template v-slot:dropdownButton&gt;&amp;#x02263;&lt;/template&gt;\n          | &lt;/vue-timepicker&gt;\n\n    template(v-slot:preview)\n      b Input icon (image)\n      p\n        vue-timepicker\n          template(v-slot:icon)\n            img(src=\"https://i.postimg.cc/CLkZcW46/custom-clock.png\")\n      b Customized clear button (image)\n      p\n        vue-timepicker(v-model=\"customCloseBtnValue\")\n          template(v-slot:clearButton)\n            img(src=\"https://i.postimg.cc/Y0f6RHF8/custom-close.png\")\n      b Customized dropdown button (character entity)\n      p\n        vue-timepicker(manual-input hide-dropdown)\n          template(v-slot:dropdownButton) &#x02263;\n\n\n  //- Fixed Dropdown Button\n  sample-block#fixedDropdownButton\n    template(v-slot:title) Fixed Dropdown Button\n    template(v-slot:description)\n      p You can make the dropdown button always visible in the UI with <code>fixed-dropdown-button</code>.\n      p When paired with a customized dropdown button, it's similar to an input icon on the righthand side.\n\n    template(v-slot:codes)\n      highlight-code(lang=\"html\" data-title=\"HTML\")\n        pre\n          | &lt;!-- Default dropdown button --&gt;\n          | &lt;vue-timepicker fixed-dropdown-button&gt;&lt;/vue-timepicker&gt;\n          |\n          | &lt;!-- Customized + fixed dropdown button --&gt;\n          | &lt;vue-timepicker fixed-dropdown-button&gt;\n          |   &lt;template v-slot:dropdownButton&gt;\n          |     &lt;img src=\"$YOUR_BUTTON_IMAGE_SRC\" /&gt; \n          |   &lt;/template&gt;\n          | &lt;/vue-timepicker&gt;\n          |\n          | &lt;!-- To display only one button on the right --&gt;\n          | &lt;!-- Customized + fixed dropdown button + hide clear button --&gt;\n          | &lt;vue-timepicker fixed-dropdown-button hide-clear-button&gt;\n          |   &lt;template v-slot:dropdownButton&gt;\n          |     &lt;img src=\"$YOUR_BUTTON_IMAGE_SRC\" /&gt; \n          |   &lt;/template&gt;\n          | &lt;/vue-timepicker&gt;\n\n    template(v-slot:preview)\n      b Default dropdown button\n      p\n        vue-timepicker(fixed-dropdown-button)\n      b Customized + fixed dropdown button\n      p\n        vue-timepicker(fixed-dropdown-button)\n          template(v-slot:dropdownButton)\n            img(src=\"https://i.postimg.cc/CLkZcW46/custom-clock.png\")\n      b Customized + fixed dropdown button + hide clear button\n      p\n        vue-timepicker(fixed-dropdown-button hide-clear-button)\n          template(v-slot:dropdownButton)\n            img(src=\"https://i.postimg.cc/CLkZcW46/custom-clock.png\")\n\n  //- Drop Direction\n  sample-block#dropDirection\n    template(v-slot:title) Drop Direction\n    template(v-slot:description)\n      p Change dropdown direction when needed (<code>v1.1.5+</code>).  Accepting values:\n      ul\n        li\n          b down\n          | : Default value.\n        li\n          b up\n          | : Force open the dropdown above the input.\n        li\n          b auto\n          | : Auto detects available height and opens the dropdown on top if there are not enough spaces below the input.\n\n    template(v-slot:codes)\n      highlight-code(lang=\"html\" data-title=\"HTML\")\n        pre\n          | &lt;!-- Drop Direction Up --&gt;\n          | &lt;vue-timepicker drop-direction=\"up\"&gt;&lt;/vue-timepicker&gt;\n          | &nbsp;\n          | &lt;!-- Auto Drop Direction --&gt;\n          | &lt;div id=\"auto-dropdown-containter\"&gt;\n          |   &lt;!-- Defined Container --&gt;\n          |   &lt;vue-timepicker drop-direction=\"auto\" container-id=\"auto-dropdown-containter\"&gt;&lt;/vue-timepicker&gt;\n          |   &lt;!-- Default (document body) --&gt;\n          |   &lt;vue-timepicker drop-direction=\"auto\"&gt;&lt;/vue-timepicker&gt;\n          | &lt;/div&gt;\n    template(v-slot:preview)\n      b Drop Direction Up\n      p\n        vue-timepicker(drop-direction=\"up\")\n      #auto-dropdown-containter\n        .demo-title\n          b Auto Drop Direction\n        .demo-body\n          .inner\n            b Defined Container\n            p\n              vue-timepicker(drop-direction=\"auto\" container-id=\"auto-dropdown-containter\")\n          .inner\n            b Default (document body)\n            p\n              vue-timepicker(drop-direction=\"auto\")\n\n  //- Footer Links\n  .footer-links\n    slot(name=\"footer-links\")\n\n  //- Side Nav\n  .sidenav\n    nav\n      ul\n        li(v-for=\"(nav, navIdx) in sideNav\" :key=\"navIdx\")\n          a(:href=\"'#' + nav.anchor\" v-text=\"nav.title\")\n</template>\n\n<style lang=\"stylus\">\n@import '../assets/_variables.styl'\n\nsection#mostlyUsedSamples\n  .section-title\n    padding-left: 20%\n\n  .footer-links\n    padding: 5em 0 0 20%\n    a\n      cursor: pointer\n    .title\n      position: relative\n      margin-bottom: 1.5em\n      a.anchor\n        position: absolute\n        left: -1em\n\n    .description\n      margin-left: 1.5em\n\n  .sidenav\n    position: fixed\n    width: 20%\n    bottom: 0\n    left: 0\n    max-height: calc(100vh - 50px)\n    overflow-y: auto\n\n    ul\n      padding: 0 0 0.5em 1.5em\n      margin: 0\n      list-style: square\n\n      li\n        padding: 0.15em 0\n        font-size: 0.8em\n        color: alpha($body-color, 0.4)\n\n  // Browser Native Input\n  input.native-input\n    box-sizing: border-box\n    border: 1px solid #d2d2d2\n    width: 10em\n    height: 2.2em\n    padding: 0.3em 0.5em\n    font-size: 1em\n  \n  // Drop Direction Demo\n  #auto-dropdown-containter\n    margin-top: 1em\n    padding: 1em\n    background: rgba(0, 0, 0, 0.05)\n    border-radius: 5px\n    .demo-title\n      font-weight: 600\n      padding: 0 0 0.5em 0\n\n    .demo-body\n      display: flex\n      flex-flow: row nowrap\n      justify-content: flex-start\n      align-items: flex-start\n      .inner\n        margin-right: 0.5em\n      b\n        font-weight: normal\n</style>\n"
  },
  {
    "path": "demo/src/main.js",
    "content": "import Vue from 'vue'\n\nimport VueHighlightJS from 'vue-highlight.js'\nimport javascript from 'highlight.js/lib/languages/javascript'\nimport json from 'highlight.js/lib/languages/json'\nimport vue from 'vue-highlight.js/lib/languages/vue'\nimport 'highlight.js/styles/docco.css'\n\nimport App from './App.vue'\n\nVue.config.productionTip = false\n\n/*\n* Use Vue Highlight.js\n*/\nVue.use(VueHighlightJS, {\n  // Register only languages that you want\n  languages: {\n    javascript,\n    json,\n    vue\n  }\n})\n\nnew Vue({\n  render: h => h(App),\n}).$mount('#app')\n"
  },
  {
    "path": "demo/vue.config.js",
    "content": "module.exports = {\n  outputDir: '../gh-pages',\n  publicPath: process.env.NODE_ENV === 'production'\n    ? '/vue2-timepicker/'\n    : '/'\n}\n"
  },
  {
    "path": "dist/VueTimepicker.common.js",
    "content": "module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = \"fb15\");\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ \"00ee\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(\"b622\");\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n\n\n/***/ }),\n\n/***/ \"0366\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar aFunction = __webpack_require__(\"1c0b\");\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n  aFunction(fn);\n  if (that === undefined) return fn;\n  switch (length) {\n    case 0: return function () {\n      return fn.call(that);\n    };\n    case 1: return function (a) {\n      return fn.call(that, a);\n    };\n    case 2: return function (a, b) {\n      return fn.call(that, a, b);\n    };\n    case 3: return function (a, b, c) {\n      return fn.call(that, a, b, c);\n    };\n  }\n  return function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n\n\n/***/ }),\n\n/***/ \"057f\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toIndexedObject = __webpack_require__(\"fc6a\");\nvar nativeGetOwnPropertyNames = __webpack_require__(\"241c\").f;\n\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n  ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n  try {\n    return nativeGetOwnPropertyNames(it);\n  } catch (error) {\n    return windowNames.slice();\n  }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n  return windowNames && toString.call(it) == '[object Window]'\n    ? getWindowNames(it)\n    : nativeGetOwnPropertyNames(toIndexedObject(it));\n};\n\n\n/***/ }),\n\n/***/ \"06cf\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(\"83ab\");\nvar propertyIsEnumerableModule = __webpack_require__(\"d1e7\");\nvar createPropertyDescriptor = __webpack_require__(\"5c6c\");\nvar toIndexedObject = __webpack_require__(\"fc6a\");\nvar toPrimitive = __webpack_require__(\"c04e\");\nvar has = __webpack_require__(\"5135\");\nvar IE8_DOM_DEFINE = __webpack_require__(\"0cfb\");\n\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n  O = toIndexedObject(O);\n  P = toPrimitive(P, true);\n  if (IE8_DOM_DEFINE) try {\n    return nativeGetOwnPropertyDescriptor(O, P);\n  } catch (error) { /* empty */ }\n  if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n\n\n/***/ }),\n\n/***/ \"0cfb\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(\"83ab\");\nvar fails = __webpack_require__(\"d039\");\nvar createElement = __webpack_require__(\"cc12\");\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n  return Object.defineProperty(createElement('div'), 'a', {\n    get: function () { return 7; }\n  }).a != 7;\n});\n\n\n/***/ }),\n\n/***/ \"1276\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar fixRegExpWellKnownSymbolLogic = __webpack_require__(\"d784\");\nvar isRegExp = __webpack_require__(\"44e7\");\nvar anObject = __webpack_require__(\"825a\");\nvar requireObjectCoercible = __webpack_require__(\"1d80\");\nvar speciesConstructor = __webpack_require__(\"4840\");\nvar advanceStringIndex = __webpack_require__(\"8aa5\");\nvar toLength = __webpack_require__(\"50c4\");\nvar callRegExpExec = __webpack_require__(\"14c3\");\nvar regexpExec = __webpack_require__(\"9263\");\nvar fails = __webpack_require__(\"d039\");\n\nvar arrayPush = [].push;\nvar min = Math.min;\nvar MAX_UINT32 = 0xFFFFFFFF;\n\n// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\nvar SUPPORTS_Y = !fails(function () { return !RegExp(MAX_UINT32, 'y'); });\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) {\n  var internalSplit;\n  if (\n    'abbc'.split(/(b)*/)[1] == 'c' ||\n    'test'.split(/(?:)/, -1).length != 4 ||\n    'ab'.split(/(?:ab)*/).length != 2 ||\n    '.'.split(/(.?)(.?)/).length != 4 ||\n    '.'.split(/()()/).length > 1 ||\n    ''.split(/.?/).length\n  ) {\n    // based on es5-shim implementation, need to rework it\n    internalSplit = function (separator, limit) {\n      var string = String(requireObjectCoercible(this));\n      var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n      if (lim === 0) return [];\n      if (separator === undefined) return [string];\n      // If `separator` is not a regex, use native split\n      if (!isRegExp(separator)) {\n        return nativeSplit.call(string, separator, lim);\n      }\n      var output = [];\n      var flags = (separator.ignoreCase ? 'i' : '') +\n                  (separator.multiline ? 'm' : '') +\n                  (separator.unicode ? 'u' : '') +\n                  (separator.sticky ? 'y' : '');\n      var lastLastIndex = 0;\n      // Make `global` and avoid `lastIndex` issues by working with a copy\n      var separatorCopy = new RegExp(separator.source, flags + 'g');\n      var match, lastIndex, lastLength;\n      while (match = regexpExec.call(separatorCopy, string)) {\n        lastIndex = separatorCopy.lastIndex;\n        if (lastIndex > lastLastIndex) {\n          output.push(string.slice(lastLastIndex, match.index));\n          if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));\n          lastLength = match[0].length;\n          lastLastIndex = lastIndex;\n          if (output.length >= lim) break;\n        }\n        if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n      }\n      if (lastLastIndex === string.length) {\n        if (lastLength || !separatorCopy.test('')) output.push('');\n      } else output.push(string.slice(lastLastIndex));\n      return output.length > lim ? output.slice(0, lim) : output;\n    };\n  // Chakra, V8\n  } else if ('0'.split(undefined, 0).length) {\n    internalSplit = function (separator, limit) {\n      return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);\n    };\n  } else internalSplit = nativeSplit;\n\n  return [\n    // `String.prototype.split` method\n    // https://tc39.github.io/ecma262/#sec-string.prototype.split\n    function split(separator, limit) {\n      var O = requireObjectCoercible(this);\n      var splitter = separator == undefined ? undefined : separator[SPLIT];\n      return splitter !== undefined\n        ? splitter.call(separator, O, limit)\n        : internalSplit.call(String(O), separator, limit);\n    },\n    // `RegExp.prototype[@@split]` method\n    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split\n    //\n    // NOTE: This cannot be properly polyfilled in engines that don't support\n    // the 'y' flag.\n    function (regexp, limit) {\n      var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit);\n      if (res.done) return res.value;\n\n      var rx = anObject(regexp);\n      var S = String(this);\n      var C = speciesConstructor(rx, RegExp);\n\n      var unicodeMatching = rx.unicode;\n      var flags = (rx.ignoreCase ? 'i' : '') +\n                  (rx.multiline ? 'm' : '') +\n                  (rx.unicode ? 'u' : '') +\n                  (SUPPORTS_Y ? 'y' : 'g');\n\n      // ^(? + rx + ) is needed, in combination with some S slicing, to\n      // simulate the 'y' flag.\n      var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);\n      var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n      if (lim === 0) return [];\n      if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n      var p = 0;\n      var q = 0;\n      var A = [];\n      while (q < S.length) {\n        splitter.lastIndex = SUPPORTS_Y ? q : 0;\n        var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));\n        var e;\n        if (\n          z === null ||\n          (e = min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p\n        ) {\n          q = advanceStringIndex(S, q, unicodeMatching);\n        } else {\n          A.push(S.slice(p, q));\n          if (A.length === lim) return A;\n          for (var i = 1; i <= z.length - 1; i++) {\n            A.push(z[i]);\n            if (A.length === lim) return A;\n          }\n          q = p = e;\n        }\n      }\n      A.push(S.slice(p));\n      return A;\n    }\n  ];\n}, !SUPPORTS_Y);\n\n\n/***/ }),\n\n/***/ \"14c3\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar classof = __webpack_require__(\"c6b6\");\nvar regexpExec = __webpack_require__(\"9263\");\n\n// `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n  var exec = R.exec;\n  if (typeof exec === 'function') {\n    var result = exec.call(R, S);\n    if (typeof result !== 'object') {\n      throw TypeError('RegExp exec method returned something other than an Object or null');\n    }\n    return result;\n  }\n\n  if (classof(R) !== 'RegExp') {\n    throw TypeError('RegExp#exec called on incompatible receiver');\n  }\n\n  return regexpExec.call(R, S);\n};\n\n\n\n/***/ }),\n\n/***/ \"159b\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"da84\");\nvar DOMIterables = __webpack_require__(\"fdbc\");\nvar forEach = __webpack_require__(\"17c2\");\nvar createNonEnumerableProperty = __webpack_require__(\"9112\");\n\nfor (var COLLECTION_NAME in DOMIterables) {\n  var Collection = global[COLLECTION_NAME];\n  var CollectionPrototype = Collection && Collection.prototype;\n  // some Chrome versions have non-configurable methods on DOMTokenList\n  if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n    createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n  } catch (error) {\n    CollectionPrototype.forEach = forEach;\n  }\n}\n\n\n/***/ }),\n\n/***/ \"17c2\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $forEach = __webpack_require__(\"b727\").forEach;\nvar arrayMethodIsStrict = __webpack_require__(\"a640\");\nvar arrayMethodUsesToLength = __webpack_require__(\"ae40\");\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\nmodule.exports = (!STRICT_METHOD || !USES_TO_LENGTH) ? function forEach(callbackfn /* , thisArg */) {\n  return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n} : [].forEach;\n\n\n/***/ }),\n\n/***/ \"1be4\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getBuiltIn = __webpack_require__(\"d066\");\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n\n\n/***/ }),\n\n/***/ \"1c0b\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n  if (typeof it != 'function') {\n    throw TypeError(String(it) + ' is not a function');\n  } return it;\n};\n\n\n/***/ }),\n\n/***/ \"1c7e\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(\"b622\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n  var called = 0;\n  var iteratorWithReturn = {\n    next: function () {\n      return { done: !!called++ };\n    },\n    'return': function () {\n      SAFE_CLOSING = true;\n    }\n  };\n  iteratorWithReturn[ITERATOR] = function () {\n    return this;\n  };\n  // eslint-disable-next-line no-throw-literal\n  Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n  if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n  var ITERATION_SUPPORT = false;\n  try {\n    var object = {};\n    object[ITERATOR] = function () {\n      return {\n        next: function () {\n          return { done: ITERATION_SUPPORT = true };\n        }\n      };\n    };\n    exec(object);\n  } catch (error) { /* empty */ }\n  return ITERATION_SUPPORT;\n};\n\n\n/***/ }),\n\n/***/ \"1d80\":\n/***/ (function(module, exports) {\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.github.io/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n  return it;\n};\n\n\n/***/ }),\n\n/***/ \"1dde\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(\"d039\");\nvar wellKnownSymbol = __webpack_require__(\"b622\");\nvar V8_VERSION = __webpack_require__(\"2d00\");\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n  // We can't use this feature detection in V8 since it causes\n  // deoptimization and serious performance degradation\n  // https://github.com/zloirock/core-js/issues/677\n  return V8_VERSION >= 51 || !fails(function () {\n    var array = [];\n    var constructor = array.constructor = {};\n    constructor[SPECIES] = function () {\n      return { foo: 1 };\n    };\n    return array[METHOD_NAME](Boolean).foo !== 1;\n  });\n};\n\n\n/***/ }),\n\n/***/ \"23cb\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(\"a691\");\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n  var integer = toInteger(index);\n  return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n\n\n/***/ }),\n\n/***/ \"23e7\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"da84\");\nvar getOwnPropertyDescriptor = __webpack_require__(\"06cf\").f;\nvar createNonEnumerableProperty = __webpack_require__(\"9112\");\nvar redefine = __webpack_require__(\"6eeb\");\nvar setGlobal = __webpack_require__(\"ce4e\");\nvar copyConstructorProperties = __webpack_require__(\"e893\");\nvar isForced = __webpack_require__(\"94ca\");\n\n/*\n  options.target      - name of the target object\n  options.global      - target is the global object\n  options.stat        - export as static methods of target\n  options.proto       - export as prototype methods of target\n  options.real        - real prototype method for the `pure` version\n  options.forced      - export even if the native feature is available\n  options.bind        - bind methods to the target, required for the `pure` version\n  options.wrap        - wrap constructors to preventing global pollution, required for the `pure` version\n  options.unsafe      - use the simple assignment of property instead of delete + defineProperty\n  options.sham        - add a flag to not completely full polyfills\n  options.enumerable  - export as enumerable property\n  options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n  var TARGET = options.target;\n  var GLOBAL = options.global;\n  var STATIC = options.stat;\n  var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n  if (GLOBAL) {\n    target = global;\n  } else if (STATIC) {\n    target = global[TARGET] || setGlobal(TARGET, {});\n  } else {\n    target = (global[TARGET] || {}).prototype;\n  }\n  if (target) for (key in source) {\n    sourceProperty = source[key];\n    if (options.noTargetGet) {\n      descriptor = getOwnPropertyDescriptor(target, key);\n      targetProperty = descriptor && descriptor.value;\n    } else targetProperty = target[key];\n    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n    // contained in target\n    if (!FORCED && targetProperty !== undefined) {\n      if (typeof sourceProperty === typeof targetProperty) continue;\n      copyConstructorProperties(sourceProperty, targetProperty);\n    }\n    // add a flag to not completely full polyfills\n    if (options.sham || (targetProperty && targetProperty.sham)) {\n      createNonEnumerableProperty(sourceProperty, 'sham', true);\n    }\n    // extend global\n    redefine(target, key, sourceProperty, options);\n  }\n};\n\n\n/***/ }),\n\n/***/ \"241c\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar internalObjectKeys = __webpack_require__(\"ca84\");\nvar enumBugKeys = __webpack_require__(\"7839\");\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertynames\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return internalObjectKeys(O, hiddenKeys);\n};\n\n\n/***/ }),\n\n/***/ \"2532\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(\"23e7\");\nvar notARegExp = __webpack_require__(\"5a34\");\nvar requireObjectCoercible = __webpack_require__(\"1d80\");\nvar correctIsRegExpLogic = __webpack_require__(\"ab13\");\n\n// `String.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n  includes: function includes(searchString /* , position = 0 */) {\n    return !!~String(requireObjectCoercible(this))\n      .indexOf(notARegExp(searchString), arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n\n/***/ }),\n\n/***/ \"25f0\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar redefine = __webpack_require__(\"6eeb\");\nvar anObject = __webpack_require__(\"825a\");\nvar fails = __webpack_require__(\"d039\");\nvar flags = __webpack_require__(\"ad6d\");\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar nativeToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = nativeToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n  redefine(RegExp.prototype, TO_STRING, function toString() {\n    var R = anObject(this);\n    var p = String(R.source);\n    var rf = R.flags;\n    var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf);\n    return '/' + p + '/' + f;\n  }, { unsafe: true });\n}\n\n\n/***/ }),\n\n/***/ \"2626\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar getBuiltIn = __webpack_require__(\"d066\");\nvar definePropertyModule = __webpack_require__(\"9bf2\");\nvar wellKnownSymbol = __webpack_require__(\"b622\");\nvar DESCRIPTORS = __webpack_require__(\"83ab\");\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n  var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n  var defineProperty = definePropertyModule.f;\n\n  if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n    defineProperty(Constructor, SPECIES, {\n      configurable: true,\n      get: function () { return this; }\n    });\n  }\n};\n\n\n/***/ }),\n\n/***/ \"2d00\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"da84\");\nvar userAgent = __webpack_require__(\"342f\");\n\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n  match = v8.split('.');\n  version = match[0] + match[1];\n} else if (userAgent) {\n  match = userAgent.match(/Edge\\/(\\d+)/);\n  if (!match || match[1] >= 74) {\n    match = userAgent.match(/Chrome\\/(\\d+)/);\n    if (match) version = match[1];\n  }\n}\n\nmodule.exports = version && +version;\n\n\n/***/ }),\n\n/***/ \"342f\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getBuiltIn = __webpack_require__(\"d066\");\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n\n\n/***/ }),\n\n/***/ \"35a1\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar classof = __webpack_require__(\"f5df\");\nvar Iterators = __webpack_require__(\"3f8c\");\nvar wellKnownSymbol = __webpack_require__(\"b622\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n  if (it != undefined) return it[ITERATOR]\n    || it['@@iterator']\n    || Iterators[classof(it)];\n};\n\n\n/***/ }),\n\n/***/ \"37e8\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(\"83ab\");\nvar definePropertyModule = __webpack_require__(\"9bf2\");\nvar anObject = __webpack_require__(\"825a\");\nvar objectKeys = __webpack_require__(\"df75\");\n\n// `Object.defineProperties` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperties\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var keys = objectKeys(Properties);\n  var length = keys.length;\n  var index = 0;\n  var key;\n  while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n  return O;\n};\n\n\n/***/ }),\n\n/***/ \"3bbe\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"861d\");\n\nmodule.exports = function (it) {\n  if (!isObject(it) && it !== null) {\n    throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n  } return it;\n};\n\n\n/***/ }),\n\n/***/ \"3ca3\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar charAt = __webpack_require__(\"6547\").charAt;\nvar InternalStateModule = __webpack_require__(\"69f3\");\nvar defineIterator = __webpack_require__(\"7dd0\");\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n  setInternalState(this, {\n    type: STRING_ITERATOR,\n    string: String(iterated),\n    index: 0\n  });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n  var state = getInternalState(this);\n  var string = state.string;\n  var index = state.index;\n  var point;\n  if (index >= string.length) return { value: undefined, done: true };\n  point = charAt(string, index);\n  state.index += point.length;\n  return { value: point, done: false };\n});\n\n\n/***/ }),\n\n/***/ \"3f8c\":\n/***/ (function(module, exports) {\n\nmodule.exports = {};\n\n\n/***/ }),\n\n/***/ \"4160\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(\"23e7\");\nvar forEach = __webpack_require__(\"17c2\");\n\n// `Array.prototype.forEach` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n$({ target: 'Array', proto: true, forced: [].forEach != forEach }, {\n  forEach: forEach\n});\n\n\n/***/ }),\n\n/***/ \"428f\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"da84\");\n\nmodule.exports = global;\n\n\n/***/ }),\n\n/***/ \"44ad\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(\"d039\");\nvar classof = __webpack_require__(\"c6b6\");\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n  // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n  // eslint-disable-next-line no-prototype-builtins\n  return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n  return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n\n\n/***/ }),\n\n/***/ \"44d2\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(\"b622\");\nvar create = __webpack_require__(\"7c73\");\nvar definePropertyModule = __webpack_require__(\"9bf2\");\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n  definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n    configurable: true,\n    value: create(null)\n  });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n  ArrayPrototype[UNSCOPABLES][key] = true;\n};\n\n\n/***/ }),\n\n/***/ \"44e7\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"861d\");\nvar classof = __webpack_require__(\"c6b6\");\nvar wellKnownSymbol = __webpack_require__(\"b622\");\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.github.io/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n  var isRegExp;\n  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n\n\n/***/ }),\n\n/***/ \"45fc\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(\"23e7\");\nvar $some = __webpack_require__(\"b727\").some;\nvar arrayMethodIsStrict = __webpack_require__(\"a640\");\nvar arrayMethodUsesToLength = __webpack_require__(\"ae40\");\n\nvar STRICT_METHOD = arrayMethodIsStrict('some');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('some');\n\n// `Array.prototype.some` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.some\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD || !USES_TO_LENGTH }, {\n  some: function some(callbackfn /* , thisArg */) {\n    return $some(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n\n/***/ }),\n\n/***/ \"466d\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar fixRegExpWellKnownSymbolLogic = __webpack_require__(\"d784\");\nvar anObject = __webpack_require__(\"825a\");\nvar toLength = __webpack_require__(\"50c4\");\nvar requireObjectCoercible = __webpack_require__(\"1d80\");\nvar advanceStringIndex = __webpack_require__(\"8aa5\");\nvar regExpExec = __webpack_require__(\"14c3\");\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', 1, function (MATCH, nativeMatch, maybeCallNative) {\n  return [\n    // `String.prototype.match` method\n    // https://tc39.github.io/ecma262/#sec-string.prototype.match\n    function match(regexp) {\n      var O = requireObjectCoercible(this);\n      var matcher = regexp == undefined ? undefined : regexp[MATCH];\n      return matcher !== undefined ? matcher.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n    },\n    // `RegExp.prototype[@@match]` method\n    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match\n    function (regexp) {\n      var res = maybeCallNative(nativeMatch, regexp, this);\n      if (res.done) return res.value;\n\n      var rx = anObject(regexp);\n      var S = String(this);\n\n      if (!rx.global) return regExpExec(rx, S);\n\n      var fullUnicode = rx.unicode;\n      rx.lastIndex = 0;\n      var A = [];\n      var n = 0;\n      var result;\n      while ((result = regExpExec(rx, S)) !== null) {\n        var matchStr = String(result[0]);\n        A[n] = matchStr;\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n        n++;\n      }\n      return n === 0 ? null : A;\n    }\n  ];\n});\n\n\n/***/ }),\n\n/***/ \"4840\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(\"825a\");\nvar aFunction = __webpack_require__(\"1c0b\");\nvar wellKnownSymbol = __webpack_require__(\"b622\");\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.github.io/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n  var C = anObject(O).constructor;\n  var S;\n  return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S);\n};\n\n\n/***/ }),\n\n/***/ \"4930\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(\"d039\");\n\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n  // Chrome 38 Symbol has incorrect toString conversion\n  // eslint-disable-next-line no-undef\n  return !String(Symbol());\n});\n\n\n/***/ }),\n\n/***/ \"498a\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(\"23e7\");\nvar $trim = __webpack_require__(\"58a8\").trim;\nvar forcedStringTrimMethod = __webpack_require__(\"c8d2\");\n\n// `String.prototype.trim` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n  trim: function trim() {\n    return $trim(this);\n  }\n});\n\n\n/***/ }),\n\n/***/ \"4d63\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(\"83ab\");\nvar global = __webpack_require__(\"da84\");\nvar isForced = __webpack_require__(\"94ca\");\nvar inheritIfRequired = __webpack_require__(\"7156\");\nvar defineProperty = __webpack_require__(\"9bf2\").f;\nvar getOwnPropertyNames = __webpack_require__(\"241c\").f;\nvar isRegExp = __webpack_require__(\"44e7\");\nvar getFlags = __webpack_require__(\"ad6d\");\nvar stickyHelpers = __webpack_require__(\"9f7f\");\nvar redefine = __webpack_require__(\"6eeb\");\nvar fails = __webpack_require__(\"d039\");\nvar setInternalState = __webpack_require__(\"69f3\").set;\nvar setSpecies = __webpack_require__(\"2626\");\nvar wellKnownSymbol = __webpack_require__(\"b622\");\n\nvar MATCH = wellKnownSymbol('match');\nvar NativeRegExp = global.RegExp;\nvar RegExpPrototype = NativeRegExp.prototype;\nvar re1 = /a/g;\nvar re2 = /a/g;\n\n// \"new\" should create a new object, old webkit bug\nvar CORRECT_NEW = new NativeRegExp(re1) !== re1;\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\n\nvar FORCED = DESCRIPTORS && isForced('RegExp', (!CORRECT_NEW || UNSUPPORTED_Y || fails(function () {\n  re2[MATCH] = false;\n  // RegExp constructor can alter flags and IsRegExp works correct with @@match\n  return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i';\n})));\n\n// `RegExp` constructor\n// https://tc39.github.io/ecma262/#sec-regexp-constructor\nif (FORCED) {\n  var RegExpWrapper = function RegExp(pattern, flags) {\n    var thisIsRegExp = this instanceof RegExpWrapper;\n    var patternIsRegExp = isRegExp(pattern);\n    var flagsAreUndefined = flags === undefined;\n    var sticky;\n\n    if (!thisIsRegExp && patternIsRegExp && pattern.constructor === RegExpWrapper && flagsAreUndefined) {\n      return pattern;\n    }\n\n    if (CORRECT_NEW) {\n      if (patternIsRegExp && !flagsAreUndefined) pattern = pattern.source;\n    } else if (pattern instanceof RegExpWrapper) {\n      if (flagsAreUndefined) flags = getFlags.call(pattern);\n      pattern = pattern.source;\n    }\n\n    if (UNSUPPORTED_Y) {\n      sticky = !!flags && flags.indexOf('y') > -1;\n      if (sticky) flags = flags.replace(/y/g, '');\n    }\n\n    var result = inheritIfRequired(\n      CORRECT_NEW ? new NativeRegExp(pattern, flags) : NativeRegExp(pattern, flags),\n      thisIsRegExp ? this : RegExpPrototype,\n      RegExpWrapper\n    );\n\n    if (UNSUPPORTED_Y && sticky) setInternalState(result, { sticky: sticky });\n\n    return result;\n  };\n  var proxy = function (key) {\n    key in RegExpWrapper || defineProperty(RegExpWrapper, key, {\n      configurable: true,\n      get: function () { return NativeRegExp[key]; },\n      set: function (it) { NativeRegExp[key] = it; }\n    });\n  };\n  var keys = getOwnPropertyNames(NativeRegExp);\n  var index = 0;\n  while (keys.length > index) proxy(keys[index++]);\n  RegExpPrototype.constructor = RegExpWrapper;\n  RegExpWrapper.prototype = RegExpPrototype;\n  redefine(global, 'RegExp', RegExpWrapper);\n}\n\n// https://tc39.github.io/ecma262/#sec-get-regexp-@@species\nsetSpecies('RegExp');\n\n\n/***/ }),\n\n/***/ \"4d64\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toIndexedObject = __webpack_require__(\"fc6a\");\nvar toLength = __webpack_require__(\"50c4\");\nvar toAbsoluteIndex = __webpack_require__(\"23cb\");\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIndexedObject($this);\n    var length = toLength(O.length);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare\n    if (IS_INCLUDES && el != el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare\n      if (value != value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) {\n      if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.includes` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.includes\n  includes: createMethod(true),\n  // `Array.prototype.indexOf` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n  indexOf: createMethod(false)\n};\n\n\n/***/ }),\n\n/***/ \"4de4\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(\"23e7\");\nvar $filter = __webpack_require__(\"b727\").filter;\nvar arrayMethodHasSpeciesSupport = __webpack_require__(\"1dde\");\nvar arrayMethodUsesToLength = __webpack_require__(\"ae40\");\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n// Edge 14- issue\nvar USES_TO_LENGTH = arrayMethodUsesToLength('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n  filter: function filter(callbackfn /* , thisArg */) {\n    return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n\n/***/ }),\n\n/***/ \"4df4\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar bind = __webpack_require__(\"0366\");\nvar toObject = __webpack_require__(\"7b0b\");\nvar callWithSafeIterationClosing = __webpack_require__(\"9bdd\");\nvar isArrayIteratorMethod = __webpack_require__(\"e95a\");\nvar toLength = __webpack_require__(\"50c4\");\nvar createProperty = __webpack_require__(\"8418\");\nvar getIteratorMethod = __webpack_require__(\"35a1\");\n\n// `Array.from` method implementation\n// https://tc39.github.io/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n  var O = toObject(arrayLike);\n  var C = typeof this == 'function' ? this : Array;\n  var argumentsLength = arguments.length;\n  var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n  var mapping = mapfn !== undefined;\n  var iteratorMethod = getIteratorMethod(O);\n  var index = 0;\n  var length, result, step, iterator, next, value;\n  if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);\n  // if the target is not iterable or it's an array with the default iterator - use a simple case\n  if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {\n    iterator = iteratorMethod.call(O);\n    next = iterator.next;\n    result = new C();\n    for (;!(step = next.call(iterator)).done; index++) {\n      value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n      createProperty(result, index, value);\n    }\n  } else {\n    length = toLength(O.length);\n    result = new C(length);\n    for (;length > index; index++) {\n      value = mapping ? mapfn(O[index], index) : O[index];\n      createProperty(result, index, value);\n    }\n  }\n  result.length = index;\n  return result;\n};\n\n\n/***/ }),\n\n/***/ \"50c4\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(\"a691\");\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.github.io/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n  return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n\n\n/***/ }),\n\n/***/ \"5135\":\n/***/ (function(module, exports) {\n\nvar hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function (it, key) {\n  return hasOwnProperty.call(it, key);\n};\n\n\n/***/ }),\n\n/***/ \"5319\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar fixRegExpWellKnownSymbolLogic = __webpack_require__(\"d784\");\nvar anObject = __webpack_require__(\"825a\");\nvar toObject = __webpack_require__(\"7b0b\");\nvar toLength = __webpack_require__(\"50c4\");\nvar toInteger = __webpack_require__(\"a691\");\nvar requireObjectCoercible = __webpack_require__(\"1d80\");\nvar advanceStringIndex = __webpack_require__(\"8aa5\");\nvar regExpExec = __webpack_require__(\"14c3\");\n\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n  return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative, reason) {\n  var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = reason.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE;\n  var REPLACE_KEEPS_$0 = reason.REPLACE_KEEPS_$0;\n  var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n  return [\n    // `String.prototype.replace` method\n    // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n    function replace(searchValue, replaceValue) {\n      var O = requireObjectCoercible(this);\n      var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];\n      return replacer !== undefined\n        ? replacer.call(searchValue, O, replaceValue)\n        : nativeReplace.call(String(O), searchValue, replaceValue);\n    },\n    // `RegExp.prototype[@@replace]` method\n    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n    function (regexp, replaceValue) {\n      if (\n        (!REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE && REPLACE_KEEPS_$0) ||\n        (typeof replaceValue === 'string' && replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1)\n      ) {\n        var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);\n        if (res.done) return res.value;\n      }\n\n      var rx = anObject(regexp);\n      var S = String(this);\n\n      var functionalReplace = typeof replaceValue === 'function';\n      if (!functionalReplace) replaceValue = String(replaceValue);\n\n      var global = rx.global;\n      if (global) {\n        var fullUnicode = rx.unicode;\n        rx.lastIndex = 0;\n      }\n      var results = [];\n      while (true) {\n        var result = regExpExec(rx, S);\n        if (result === null) break;\n\n        results.push(result);\n        if (!global) break;\n\n        var matchStr = String(result[0]);\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n      }\n\n      var accumulatedResult = '';\n      var nextSourcePosition = 0;\n      for (var i = 0; i < results.length; i++) {\n        result = results[i];\n\n        var matched = String(result[0]);\n        var position = max(min(toInteger(result.index), S.length), 0);\n        var captures = [];\n        // NOTE: This is equivalent to\n        //   captures = result.slice(1).map(maybeToString)\n        // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n        // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n        // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n        for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n        var namedCaptures = result.groups;\n        if (functionalReplace) {\n          var replacerArgs = [matched].concat(captures, position, S);\n          if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n          var replacement = String(replaceValue.apply(undefined, replacerArgs));\n        } else {\n          replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n        }\n        if (position >= nextSourcePosition) {\n          accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n          nextSourcePosition = position + matched.length;\n        }\n      }\n      return accumulatedResult + S.slice(nextSourcePosition);\n    }\n  ];\n\n  // https://tc39.github.io/ecma262/#sec-getsubstitution\n  function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n    var tailPos = position + matched.length;\n    var m = captures.length;\n    var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n    if (namedCaptures !== undefined) {\n      namedCaptures = toObject(namedCaptures);\n      symbols = SUBSTITUTION_SYMBOLS;\n    }\n    return nativeReplace.call(replacement, symbols, function (match, ch) {\n      var capture;\n      switch (ch.charAt(0)) {\n        case '$': return '$';\n        case '&': return matched;\n        case '`': return str.slice(0, position);\n        case \"'\": return str.slice(tailPos);\n        case '<':\n          capture = namedCaptures[ch.slice(1, -1)];\n          break;\n        default: // \\d\\d?\n          var n = +ch;\n          if (n === 0) return match;\n          if (n > m) {\n            var f = floor(n / 10);\n            if (f === 0) return match;\n            if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n            return match;\n          }\n          capture = captures[n - 1];\n      }\n      return capture === undefined ? '' : capture;\n    });\n  }\n});\n\n\n/***/ }),\n\n/***/ \"5692\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar IS_PURE = __webpack_require__(\"c430\");\nvar store = __webpack_require__(\"c6cd\");\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: '3.6.5',\n  mode: IS_PURE ? 'pure' : 'global',\n  copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n\n\n/***/ }),\n\n/***/ \"56ef\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getBuiltIn = __webpack_require__(\"d066\");\nvar getOwnPropertyNamesModule = __webpack_require__(\"241c\");\nvar getOwnPropertySymbolsModule = __webpack_require__(\"7418\");\nvar anObject = __webpack_require__(\"825a\");\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n  var keys = getOwnPropertyNamesModule.f(anObject(it));\n  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n  return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n\n\n/***/ }),\n\n/***/ \"5899\":\n/***/ (function(module, exports) {\n\n// a string of all valid unicode whitespaces\n// eslint-disable-next-line max-len\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n\n\n/***/ }),\n\n/***/ \"58a8\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar requireObjectCoercible = __webpack_require__(\"1d80\");\nvar whitespaces = __webpack_require__(\"5899\");\n\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n  return function ($this) {\n    var string = String(requireObjectCoercible($this));\n    if (TYPE & 1) string = string.replace(ltrim, '');\n    if (TYPE & 2) string = string.replace(rtrim, '');\n    return string;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.{ trimLeft, trimStart }` methods\n  // https://tc39.github.io/ecma262/#sec-string.prototype.trimstart\n  start: createMethod(1),\n  // `String.prototype.{ trimRight, trimEnd }` methods\n  // https://tc39.github.io/ecma262/#sec-string.prototype.trimend\n  end: createMethod(2),\n  // `String.prototype.trim` method\n  // https://tc39.github.io/ecma262/#sec-string.prototype.trim\n  trim: createMethod(3)\n};\n\n\n/***/ }),\n\n/***/ \"5a34\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isRegExp = __webpack_require__(\"44e7\");\n\nmodule.exports = function (it) {\n  if (isRegExp(it)) {\n    throw TypeError(\"The method doesn't accept regular expressions\");\n  } return it;\n};\n\n\n/***/ }),\n\n/***/ \"5c6c\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n\n\n/***/ }),\n\n/***/ \"60da\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar DESCRIPTORS = __webpack_require__(\"83ab\");\nvar fails = __webpack_require__(\"d039\");\nvar objectKeys = __webpack_require__(\"df75\");\nvar getOwnPropertySymbolsModule = __webpack_require__(\"7418\");\nvar propertyIsEnumerableModule = __webpack_require__(\"d1e7\");\nvar toObject = __webpack_require__(\"7b0b\");\nvar IndexedObject = __webpack_require__(\"44ad\");\n\nvar nativeAssign = Object.assign;\nvar defineProperty = Object.defineProperty;\n\n// `Object.assign` method\n// https://tc39.github.io/ecma262/#sec-object.assign\nmodule.exports = !nativeAssign || fails(function () {\n  // should have correct order of operations (Edge bug)\n  if (DESCRIPTORS && nativeAssign({ b: 1 }, nativeAssign(defineProperty({}, 'a', {\n    enumerable: true,\n    get: function () {\n      defineProperty(this, 'b', {\n        value: 3,\n        enumerable: false\n      });\n    }\n  }), { b: 2 })).b !== 1) return true;\n  // should work with symbols and should have deterministic property order (V8 bug)\n  var A = {};\n  var B = {};\n  // eslint-disable-next-line no-undef\n  var symbol = Symbol();\n  var alphabet = 'abcdefghijklmnopqrst';\n  A[symbol] = 7;\n  alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n  return nativeAssign({}, A)[symbol] != 7 || objectKeys(nativeAssign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n  var T = toObject(target);\n  var argumentsLength = arguments.length;\n  var index = 1;\n  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n  var propertyIsEnumerable = propertyIsEnumerableModule.f;\n  while (argumentsLength > index) {\n    var S = IndexedObject(arguments[index++]);\n    var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S);\n    var length = keys.length;\n    var j = 0;\n    var key;\n    while (length > j) {\n      key = keys[j++];\n      if (!DESCRIPTORS || propertyIsEnumerable.call(S, key)) T[key] = S[key];\n    }\n  } return T;\n} : nativeAssign;\n\n\n/***/ }),\n\n/***/ \"6547\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(\"a691\");\nvar requireObjectCoercible = __webpack_require__(\"1d80\");\n\n// `String.prototype.{ codePointAt, at }` methods implementation\nvar createMethod = function (CONVERT_TO_STRING) {\n  return function ($this, pos) {\n    var S = String(requireObjectCoercible($this));\n    var position = toInteger(pos);\n    var size = S.length;\n    var first, second;\n    if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n    first = S.charCodeAt(position);\n    return first < 0xD800 || first > 0xDBFF || position + 1 === size\n      || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n        ? CONVERT_TO_STRING ? S.charAt(position) : first\n        : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.codePointAt` method\n  // https://tc39.github.io/ecma262/#sec-string.prototype.codepointat\n  codeAt: createMethod(false),\n  // `String.prototype.at` method\n  // https://github.com/mathiasbynens/String.prototype.at\n  charAt: createMethod(true)\n};\n\n\n/***/ }),\n\n/***/ \"65f0\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"861d\");\nvar isArray = __webpack_require__(\"e8b5\");\nvar wellKnownSymbol = __webpack_require__(\"b622\");\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.github.io/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n  var C;\n  if (isArray(originalArray)) {\n    C = originalArray.constructor;\n    // cross-realm fallback\n    if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n    else if (isObject(C)) {\n      C = C[SPECIES];\n      if (C === null) C = undefined;\n    }\n  } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n};\n\n\n/***/ }),\n\n/***/ \"69f3\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar NATIVE_WEAK_MAP = __webpack_require__(\"7f9a\");\nvar global = __webpack_require__(\"da84\");\nvar isObject = __webpack_require__(\"861d\");\nvar createNonEnumerableProperty = __webpack_require__(\"9112\");\nvar objectHas = __webpack_require__(\"5135\");\nvar sharedKey = __webpack_require__(\"f772\");\nvar hiddenKeys = __webpack_require__(\"d012\");\n\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n  return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n  return function (it) {\n    var state;\n    if (!isObject(it) || (state = get(it)).type !== TYPE) {\n      throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n    } return state;\n  };\n};\n\nif (NATIVE_WEAK_MAP) {\n  var store = new WeakMap();\n  var wmget = store.get;\n  var wmhas = store.has;\n  var wmset = store.set;\n  set = function (it, metadata) {\n    wmset.call(store, it, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return wmget.call(store, it) || {};\n  };\n  has = function (it) {\n    return wmhas.call(store, it);\n  };\n} else {\n  var STATE = sharedKey('state');\n  hiddenKeys[STATE] = true;\n  set = function (it, metadata) {\n    createNonEnumerableProperty(it, STATE, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return objectHas(it, STATE) ? it[STATE] : {};\n  };\n  has = function (it) {\n    return objectHas(it, STATE);\n  };\n}\n\nmodule.exports = {\n  set: set,\n  get: get,\n  has: has,\n  enforce: enforce,\n  getterFor: getterFor\n};\n\n\n/***/ }),\n\n/***/ \"6eeb\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"da84\");\nvar createNonEnumerableProperty = __webpack_require__(\"9112\");\nvar has = __webpack_require__(\"5135\");\nvar setGlobal = __webpack_require__(\"ce4e\");\nvar inspectSource = __webpack_require__(\"8925\");\nvar InternalStateModule = __webpack_require__(\"69f3\");\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n  var unsafe = options ? !!options.unsafe : false;\n  var simple = options ? !!options.enumerable : false;\n  var noTargetGet = options ? !!options.noTargetGet : false;\n  if (typeof value == 'function') {\n    if (typeof key == 'string' && !has(value, 'name')) createNonEnumerableProperty(value, 'name', key);\n    enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');\n  }\n  if (O === global) {\n    if (simple) O[key] = value;\n    else setGlobal(key, value);\n    return;\n  } else if (!unsafe) {\n    delete O[key];\n  } else if (!noTargetGet && O[key]) {\n    simple = true;\n  }\n  if (simple) O[key] = value;\n  else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n  return typeof this == 'function' && getInternalState(this).source || inspectSource(this);\n});\n\n\n/***/ }),\n\n/***/ \"7156\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"861d\");\nvar setPrototypeOf = __webpack_require__(\"d2bb\");\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n  var NewTarget, NewTargetPrototype;\n  if (\n    // it can work only with native `setPrototypeOf`\n    setPrototypeOf &&\n    // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n    typeof (NewTarget = dummy.constructor) == 'function' &&\n    NewTarget !== Wrapper &&\n    isObject(NewTargetPrototype = NewTarget.prototype) &&\n    NewTargetPrototype !== Wrapper.prototype\n  ) setPrototypeOf($this, NewTargetPrototype);\n  return $this;\n};\n\n\n/***/ }),\n\n/***/ \"7418\":\n/***/ (function(module, exports) {\n\nexports.f = Object.getOwnPropertySymbols;\n\n\n/***/ }),\n\n/***/ \"746f\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar path = __webpack_require__(\"428f\");\nvar has = __webpack_require__(\"5135\");\nvar wrappedWellKnownSymbolModule = __webpack_require__(\"e538\");\nvar defineProperty = __webpack_require__(\"9bf2\").f;\n\nmodule.exports = function (NAME) {\n  var Symbol = path.Symbol || (path.Symbol = {});\n  if (!has(Symbol, NAME)) defineProperty(Symbol, NAME, {\n    value: wrappedWellKnownSymbolModule.f(NAME)\n  });\n};\n\n\n/***/ }),\n\n/***/ \"7839\":\n/***/ (function(module, exports) {\n\n// IE8- don't enum bug keys\nmodule.exports = [\n  'constructor',\n  'hasOwnProperty',\n  'isPrototypeOf',\n  'propertyIsEnumerable',\n  'toLocaleString',\n  'toString',\n  'valueOf'\n];\n\n\n/***/ }),\n\n/***/ \"7b0b\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar requireObjectCoercible = __webpack_require__(\"1d80\");\n\n// `ToObject` abstract operation\n// https://tc39.github.io/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n  return Object(requireObjectCoercible(argument));\n};\n\n\n/***/ }),\n\n/***/ \"7c73\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(\"825a\");\nvar defineProperties = __webpack_require__(\"37e8\");\nvar enumBugKeys = __webpack_require__(\"7839\");\nvar hiddenKeys = __webpack_require__(\"d012\");\nvar html = __webpack_require__(\"1be4\");\nvar documentCreateElement = __webpack_require__(\"cc12\");\nvar sharedKey = __webpack_require__(\"f772\");\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n  return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n  activeXDocument.write(scriptTag(''));\n  activeXDocument.close();\n  var temp = activeXDocument.parentWindow.Object;\n  activeXDocument = null; // avoid memory leak\n  return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = documentCreateElement('iframe');\n  var JS = 'java' + SCRIPT + ':';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  html.appendChild(iframe);\n  // https://github.com/zloirock/core-js/issues/475\n  iframe.src = String(JS);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(scriptTag('document.F=Object'));\n  iframeDocument.close();\n  return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n  try {\n    /* global ActiveXObject */\n    activeXDocument = document.domain && new ActiveXObject('htmlfile');\n  } catch (error) { /* ignore */ }\n  NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();\n  var length = enumBugKeys.length;\n  while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n  return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.github.io/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    EmptyConstructor[PROTOTYPE] = anObject(O);\n    result = new EmptyConstructor();\n    EmptyConstructor[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = NullProtoObject();\n  return Properties === undefined ? result : defineProperties(result, Properties);\n};\n\n\n/***/ }),\n\n/***/ \"7dd0\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(\"23e7\");\nvar createIteratorConstructor = __webpack_require__(\"9ed3\");\nvar getPrototypeOf = __webpack_require__(\"e163\");\nvar setPrototypeOf = __webpack_require__(\"d2bb\");\nvar setToStringTag = __webpack_require__(\"d44e\");\nvar createNonEnumerableProperty = __webpack_require__(\"9112\");\nvar redefine = __webpack_require__(\"6eeb\");\nvar wellKnownSymbol = __webpack_require__(\"b622\");\nvar IS_PURE = __webpack_require__(\"c430\");\nvar Iterators = __webpack_require__(\"3f8c\");\nvar IteratorsCore = __webpack_require__(\"ae93\");\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n  createIteratorConstructor(IteratorConstructor, NAME, next);\n\n  var getIterationMethod = function (KIND) {\n    if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n    if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n    switch (KIND) {\n      case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n      case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n      case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n    } return function () { return new IteratorConstructor(this); };\n  };\n\n  var TO_STRING_TAG = NAME + ' Iterator';\n  var INCORRECT_VALUES_NAME = false;\n  var IterablePrototype = Iterable.prototype;\n  var nativeIterator = IterablePrototype[ITERATOR]\n    || IterablePrototype['@@iterator']\n    || DEFAULT && IterablePrototype[DEFAULT];\n  var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n  var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n  var CurrentIteratorPrototype, methods, KEY;\n\n  // fix native\n  if (anyNativeIterator) {\n    CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n    if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n      if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n        if (setPrototypeOf) {\n          setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n        } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n          createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);\n        }\n      }\n      // Set @@toStringTag to native iterators\n      setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n      if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n    }\n  }\n\n  // fix Array#{values, @@iterator}.name in V8 / FF\n  if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n    INCORRECT_VALUES_NAME = true;\n    defaultIterator = function values() { return nativeIterator.call(this); };\n  }\n\n  // define iterator\n  if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n    createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);\n  }\n  Iterators[NAME] = defaultIterator;\n\n  // export additional methods\n  if (DEFAULT) {\n    methods = {\n      values: getIterationMethod(VALUES),\n      keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n      entries: getIterationMethod(ENTRIES)\n    };\n    if (FORCED) for (KEY in methods) {\n      if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n        redefine(IterablePrototype, KEY, methods[KEY]);\n      }\n    } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n  }\n\n  return methods;\n};\n\n\n/***/ }),\n\n/***/ \"7f9a\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"da84\");\nvar inspectSource = __webpack_require__(\"8925\");\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\n\n\n/***/ }),\n\n/***/ \"825a\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"861d\");\n\nmodule.exports = function (it) {\n  if (!isObject(it)) {\n    throw TypeError(String(it) + ' is not an object');\n  } return it;\n};\n\n\n/***/ }),\n\n/***/ \"83ab\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(\"d039\");\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !fails(function () {\n  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n\n\n/***/ }),\n\n/***/ \"8418\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar toPrimitive = __webpack_require__(\"c04e\");\nvar definePropertyModule = __webpack_require__(\"9bf2\");\nvar createPropertyDescriptor = __webpack_require__(\"5c6c\");\n\nmodule.exports = function (object, key, value) {\n  var propertyKey = toPrimitive(key);\n  if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n  else object[propertyKey] = value;\n};\n\n\n/***/ }),\n\n/***/ \"861d\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n  return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n\n/***/ }),\n\n/***/ \"8875\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// addapted from the document.currentScript polyfill by Adam Miller\n// MIT license\n// source: https://github.com/amiller-gh/currentScript-polyfill\n\n// added support for Firefox https://bugzilla.mozilla.org/show_bug.cgi?id=1620505\n\n(function (root, factory) {\n  if (true) {\n    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n  } else {}\n}(typeof self !== 'undefined' ? self : this, function () {\n  function getCurrentScript () {\n    if (document.currentScript) {\n      return document.currentScript\n    }\n  \n    // IE 8-10 support script readyState\n    // IE 11+ & Firefox support stack trace\n    try {\n      throw new Error();\n    }\n    catch (err) {\n      // Find the second match for the \"at\" string to get file src url from stack.\n      var ieStackRegExp = /.*at [^(]*\\((.*):(.+):(.+)\\)$/ig,\n        ffStackRegExp = /@([^@]*):(\\d+):(\\d+)\\s*$/ig,\n        stackDetails = ieStackRegExp.exec(err.stack) || ffStackRegExp.exec(err.stack),\n        scriptLocation = (stackDetails && stackDetails[1]) || false,\n        line = (stackDetails && stackDetails[2]) || false,\n        currentLocation = document.location.href.replace(document.location.hash, ''),\n        pageSource,\n        inlineScriptSourceRegExp,\n        inlineScriptSource,\n        scripts = document.getElementsByTagName('script'); // Live NodeList collection\n  \n      if (scriptLocation === currentLocation) {\n        pageSource = document.documentElement.outerHTML;\n        inlineScriptSourceRegExp = new RegExp('(?:[^\\\\n]+?\\\\n){0,' + (line - 2) + '}[^<]*<script>([\\\\d\\\\D]*?)<\\\\/script>[\\\\d\\\\D]*', 'i');\n        inlineScriptSource = pageSource.replace(inlineScriptSourceRegExp, '$1').trim();\n      }\n  \n      for (var i = 0; i < scripts.length; i++) {\n        // If ready state is interactive, return the script tag\n        if (scripts[i].readyState === 'interactive') {\n          return scripts[i];\n        }\n  \n        // If src matches, return the script tag\n        if (scripts[i].src === scriptLocation) {\n          return scripts[i];\n        }\n  \n        // If inline source matches, return the script tag\n        if (\n          scriptLocation === currentLocation &&\n          scripts[i].innerHTML &&\n          scripts[i].innerHTML.trim() === inlineScriptSource\n        ) {\n          return scripts[i];\n        }\n      }\n  \n      // If no match, return null\n      return null;\n    }\n  };\n\n  return getCurrentScript\n}));\n\n\n/***/ }),\n\n/***/ \"8925\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar store = __webpack_require__(\"c6cd\");\n\nvar functionToString = Function.toString;\n\n// this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper\nif (typeof store.inspectSource != 'function') {\n  store.inspectSource = function (it) {\n    return functionToString.call(it);\n  };\n}\n\nmodule.exports = store.inspectSource;\n\n\n/***/ }),\n\n/***/ \"8aa5\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar charAt = __webpack_require__(\"6547\").charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n  return index + (unicode ? charAt(S, index).length : 1);\n};\n\n\n/***/ }),\n\n/***/ \"90e3\":\n/***/ (function(module, exports) {\n\nvar id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n  return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n\n\n/***/ }),\n\n/***/ \"9112\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(\"83ab\");\nvar definePropertyModule = __webpack_require__(\"9bf2\");\nvar createPropertyDescriptor = __webpack_require__(\"5c6c\");\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n  return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n\n\n/***/ }),\n\n/***/ \"9263\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar regexpFlags = __webpack_require__(\"ad6d\");\nvar stickyHelpers = __webpack_require__(\"9f7f\");\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n  var re1 = /a/;\n  var re2 = /b*/g;\n  nativeExec.call(re1, 'a');\n  nativeExec.call(re2, 'a');\n  return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y || stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y;\n\nif (PATCH) {\n  patchedExec = function exec(str) {\n    var re = this;\n    var lastIndex, reCopy, match, i;\n    var sticky = UNSUPPORTED_Y && re.sticky;\n    var flags = regexpFlags.call(re);\n    var source = re.source;\n    var charsAdded = 0;\n    var strCopy = str;\n\n    if (sticky) {\n      flags = flags.replace('y', '');\n      if (flags.indexOf('g') === -1) {\n        flags += 'g';\n      }\n\n      strCopy = String(str).slice(re.lastIndex);\n      // Support anchored sticky behavior.\n      if (re.lastIndex > 0 && (!re.multiline || re.multiline && str[re.lastIndex - 1] !== '\\n')) {\n        source = '(?: ' + source + ')';\n        strCopy = ' ' + strCopy;\n        charsAdded++;\n      }\n      // ^(? + rx + ) is needed, in combination with some str slicing, to\n      // simulate the 'y' flag.\n      reCopy = new RegExp('^(?:' + source + ')', flags);\n    }\n\n    if (NPCG_INCLUDED) {\n      reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n    }\n    if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n    match = nativeExec.call(sticky ? reCopy : re, strCopy);\n\n    if (sticky) {\n      if (match) {\n        match.input = match.input.slice(charsAdded);\n        match[0] = match[0].slice(charsAdded);\n        match.index = re.lastIndex;\n        re.lastIndex += match[0].length;\n      } else re.lastIndex = 0;\n    } else if (UPDATES_LAST_INDEX_WRONG && match) {\n      re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n    }\n    if (NPCG_INCLUDED && match && match.length > 1) {\n      // Fix browsers whose `exec` methods don't consistently return `undefined`\n      // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n      nativeReplace.call(match[0], reCopy, function () {\n        for (i = 1; i < arguments.length - 2; i++) {\n          if (arguments[i] === undefined) match[i] = undefined;\n        }\n      });\n    }\n\n    return match;\n  };\n}\n\nmodule.exports = patchedExec;\n\n\n/***/ }),\n\n/***/ \"94ca\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(\"d039\");\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n  var value = data[normalize(feature)];\n  return value == POLYFILL ? true\n    : value == NATIVE ? false\n    : typeof detection == 'function' ? fails(detection)\n    : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n  return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n\n\n/***/ }),\n\n/***/ \"99af\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(\"23e7\");\nvar fails = __webpack_require__(\"d039\");\nvar isArray = __webpack_require__(\"e8b5\");\nvar isObject = __webpack_require__(\"861d\");\nvar toObject = __webpack_require__(\"7b0b\");\nvar toLength = __webpack_require__(\"50c4\");\nvar createProperty = __webpack_require__(\"8418\");\nvar arraySpeciesCreate = __webpack_require__(\"65f0\");\nvar arrayMethodHasSpeciesSupport = __webpack_require__(\"1dde\");\nvar wellKnownSymbol = __webpack_require__(\"b622\");\nvar V8_VERSION = __webpack_require__(\"2d00\");\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n  var array = [];\n  array[IS_CONCAT_SPREADABLE] = false;\n  return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n  if (!isObject(O)) return false;\n  var spreadable = O[IS_CONCAT_SPREADABLE];\n  return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, forced: FORCED }, {\n  concat: function concat(arg) { // eslint-disable-line no-unused-vars\n    var O = toObject(this);\n    var A = arraySpeciesCreate(O, 0);\n    var n = 0;\n    var i, k, length, len, E;\n    for (i = -1, length = arguments.length; i < length; i++) {\n      E = i === -1 ? O : arguments[i];\n      if (isConcatSpreadable(E)) {\n        len = toLength(E.length);\n        if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n        for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n      } else {\n        if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n        createProperty(A, n++, E);\n      }\n    }\n    A.length = n;\n    return A;\n  }\n});\n\n\n/***/ }),\n\n/***/ \"9bdd\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(\"825a\");\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n  try {\n    return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n  // 7.4.6 IteratorClose(iterator, completion)\n  } catch (error) {\n    var returnMethod = iterator['return'];\n    if (returnMethod !== undefined) anObject(returnMethod.call(iterator));\n    throw error;\n  }\n};\n\n\n/***/ }),\n\n/***/ \"9bf2\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(\"83ab\");\nvar IE8_DOM_DEFINE = __webpack_require__(\"0cfb\");\nvar anObject = __webpack_require__(\"825a\");\nvar toPrimitive = __webpack_require__(\"c04e\");\n\nvar nativeDefineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPrimitive(P, true);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return nativeDefineProperty(O, P, Attributes);\n  } catch (error) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n\n\n/***/ }),\n\n/***/ \"9ed3\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar IteratorPrototype = __webpack_require__(\"ae93\").IteratorPrototype;\nvar create = __webpack_require__(\"7c73\");\nvar createPropertyDescriptor = __webpack_require__(\"5c6c\");\nvar setToStringTag = __webpack_require__(\"d44e\");\nvar Iterators = __webpack_require__(\"3f8c\");\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n  var TO_STRING_TAG = NAME + ' Iterator';\n  IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n  setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n  Iterators[TO_STRING_TAG] = returnThis;\n  return IteratorConstructor;\n};\n\n\n/***/ }),\n\n/***/ \"9f7f\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar fails = __webpack_require__(\"d039\");\n\n// babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError,\n// so we use an intermediate function.\nfunction RE(s, f) {\n  return RegExp(s, f);\n}\n\nexports.UNSUPPORTED_Y = fails(function () {\n  // babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\n  var re = RE('a', 'y');\n  re.lastIndex = 2;\n  return re.exec('abcd') != null;\n});\n\nexports.BROKEN_CARET = fails(function () {\n  // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n  var re = RE('^r', 'gy');\n  re.lastIndex = 2;\n  return re.exec('str') != null;\n});\n\n\n/***/ }),\n\n/***/ \"a15b\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(\"23e7\");\nvar IndexedObject = __webpack_require__(\"44ad\");\nvar toIndexedObject = __webpack_require__(\"fc6a\");\nvar arrayMethodIsStrict = __webpack_require__(\"a640\");\n\nvar nativeJoin = [].join;\n\nvar ES3_STRINGS = IndexedObject != Object;\nvar STRICT_METHOD = arrayMethodIsStrict('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: ES3_STRINGS || !STRICT_METHOD }, {\n  join: function join(separator) {\n    return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator);\n  }\n});\n\n\n/***/ }),\n\n/***/ \"a434\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(\"23e7\");\nvar toAbsoluteIndex = __webpack_require__(\"23cb\");\nvar toInteger = __webpack_require__(\"a691\");\nvar toLength = __webpack_require__(\"50c4\");\nvar toObject = __webpack_require__(\"7b0b\");\nvar arraySpeciesCreate = __webpack_require__(\"65f0\");\nvar createProperty = __webpack_require__(\"8418\");\nvar arrayMethodHasSpeciesSupport = __webpack_require__(\"1dde\");\nvar arrayMethodUsesToLength = __webpack_require__(\"ae40\");\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('splice', { ACCESSORS: true, 0: 0, 1: 2 });\n\nvar max = Math.max;\nvar min = Math.min;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';\n\n// `Array.prototype.splice` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n  splice: function splice(start, deleteCount /* , ...items */) {\n    var O = toObject(this);\n    var len = toLength(O.length);\n    var actualStart = toAbsoluteIndex(start, len);\n    var argumentsLength = arguments.length;\n    var insertCount, actualDeleteCount, A, k, from, to;\n    if (argumentsLength === 0) {\n      insertCount = actualDeleteCount = 0;\n    } else if (argumentsLength === 1) {\n      insertCount = 0;\n      actualDeleteCount = len - actualStart;\n    } else {\n      insertCount = argumentsLength - 2;\n      actualDeleteCount = min(max(toInteger(deleteCount), 0), len - actualStart);\n    }\n    if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {\n      throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n    }\n    A = arraySpeciesCreate(O, actualDeleteCount);\n    for (k = 0; k < actualDeleteCount; k++) {\n      from = actualStart + k;\n      if (from in O) createProperty(A, k, O[from]);\n    }\n    A.length = actualDeleteCount;\n    if (insertCount < actualDeleteCount) {\n      for (k = actualStart; k < len - actualDeleteCount; k++) {\n        from = k + actualDeleteCount;\n        to = k + insertCount;\n        if (from in O) O[to] = O[from];\n        else delete O[to];\n      }\n      for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];\n    } else if (insertCount > actualDeleteCount) {\n      for (k = len - actualDeleteCount; k > actualStart; k--) {\n        from = k + actualDeleteCount - 1;\n        to = k + insertCount - 1;\n        if (from in O) O[to] = O[from];\n        else delete O[to];\n      }\n    }\n    for (k = 0; k < insertCount; k++) {\n      O[k + actualStart] = arguments[k + 2];\n    }\n    O.length = len - actualDeleteCount + insertCount;\n    return A;\n  }\n});\n\n\n/***/ }),\n\n/***/ \"a4d3\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(\"23e7\");\nvar global = __webpack_require__(\"da84\");\nvar getBuiltIn = __webpack_require__(\"d066\");\nvar IS_PURE = __webpack_require__(\"c430\");\nvar DESCRIPTORS = __webpack_require__(\"83ab\");\nvar NATIVE_SYMBOL = __webpack_require__(\"4930\");\nvar USE_SYMBOL_AS_UID = __webpack_require__(\"fdbf\");\nvar fails = __webpack_require__(\"d039\");\nvar has = __webpack_require__(\"5135\");\nvar isArray = __webpack_require__(\"e8b5\");\nvar isObject = __webpack_require__(\"861d\");\nvar anObject = __webpack_require__(\"825a\");\nvar toObject = __webpack_require__(\"7b0b\");\nvar toIndexedObject = __webpack_require__(\"fc6a\");\nvar toPrimitive = __webpack_require__(\"c04e\");\nvar createPropertyDescriptor = __webpack_require__(\"5c6c\");\nvar nativeObjectCreate = __webpack_require__(\"7c73\");\nvar objectKeys = __webpack_require__(\"df75\");\nvar getOwnPropertyNamesModule = __webpack_require__(\"241c\");\nvar getOwnPropertyNamesExternal = __webpack_require__(\"057f\");\nvar getOwnPropertySymbolsModule = __webpack_require__(\"7418\");\nvar getOwnPropertyDescriptorModule = __webpack_require__(\"06cf\");\nvar definePropertyModule = __webpack_require__(\"9bf2\");\nvar propertyIsEnumerableModule = __webpack_require__(\"d1e7\");\nvar createNonEnumerableProperty = __webpack_require__(\"9112\");\nvar redefine = __webpack_require__(\"6eeb\");\nvar shared = __webpack_require__(\"5692\");\nvar sharedKey = __webpack_require__(\"f772\");\nvar hiddenKeys = __webpack_require__(\"d012\");\nvar uid = __webpack_require__(\"90e3\");\nvar wellKnownSymbol = __webpack_require__(\"b622\");\nvar wrappedWellKnownSymbolModule = __webpack_require__(\"e538\");\nvar defineWellKnownSymbol = __webpack_require__(\"746f\");\nvar setToStringTag = __webpack_require__(\"d44e\");\nvar InternalStateModule = __webpack_require__(\"69f3\");\nvar $forEach = __webpack_require__(\"b727\").forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\nvar WellKnownSymbolsStore = shared('wks');\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n  return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n    get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n  })).a != 7;\n}) ? function (O, P, Attributes) {\n  var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n  if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n  nativeDefineProperty(O, P, Attributes);\n  if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n    nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n  }\n} : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n  var symbol = AllSymbols[tag] = nativeObjectCreate($Symbol[PROTOTYPE]);\n  setInternalState(symbol, {\n    type: SYMBOL,\n    tag: tag,\n    description: description\n  });\n  if (!DESCRIPTORS) symbol.description = description;\n  return symbol;\n};\n\nvar isSymbol = USE_SYMBOL_AS_UID ? function (it) {\n  return typeof it == 'symbol';\n} : function (it) {\n  return Object(it) instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n  if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n  anObject(O);\n  var key = toPrimitive(P, true);\n  anObject(Attributes);\n  if (has(AllSymbols, key)) {\n    if (!Attributes.enumerable) {\n      if (!has(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n      O[HIDDEN][key] = true;\n    } else {\n      if (has(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n      Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n    } return setSymbolDescriptor(O, key, Attributes);\n  } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n  anObject(O);\n  var properties = toIndexedObject(Properties);\n  var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n  $forEach(keys, function (key) {\n    if (!DESCRIPTORS || $propertyIsEnumerable.call(properties, key)) $defineProperty(O, key, properties[key]);\n  });\n  return O;\n};\n\nvar $create = function create(O, Properties) {\n  return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n  var P = toPrimitive(V, true);\n  var enumerable = nativePropertyIsEnumerable.call(this, P);\n  if (this === ObjectPrototype && has(AllSymbols, P) && !has(ObjectPrototypeSymbols, P)) return false;\n  return enumerable || !has(this, P) || !has(AllSymbols, P) || has(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n  var it = toIndexedObject(O);\n  var key = toPrimitive(P, true);\n  if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return;\n  var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n  if (descriptor && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) {\n    descriptor.enumerable = true;\n  }\n  return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n  var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n  var result = [];\n  $forEach(names, function (key) {\n    if (!has(AllSymbols, key) && !has(hiddenKeys, key)) result.push(key);\n  });\n  return result;\n};\n\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(O) {\n  var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n  var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n  var result = [];\n  $forEach(names, function (key) {\n    if (has(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || has(ObjectPrototype, key))) {\n      result.push(AllSymbols[key]);\n    }\n  });\n  return result;\n};\n\n// `Symbol` constructor\n// https://tc39.github.io/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n  $Symbol = function Symbol() {\n    if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor');\n    var description = !arguments.length || arguments[0] === undefined ? undefined : String(arguments[0]);\n    var tag = uid(description);\n    var setter = function (value) {\n      if (this === ObjectPrototype) setter.call(ObjectPrototypeSymbols, value);\n      if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n      setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n    };\n    if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n    return wrap(tag, description);\n  };\n\n  redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n    return getInternalState(this).tag;\n  });\n\n  redefine($Symbol, 'withoutSetter', function (description) {\n    return wrap(uid(description), description);\n  });\n\n  propertyIsEnumerableModule.f = $propertyIsEnumerable;\n  definePropertyModule.f = $defineProperty;\n  getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n  getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n  getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n  wrappedWellKnownSymbolModule.f = function (name) {\n    return wrap(wellKnownSymbol(name), name);\n  };\n\n  if (DESCRIPTORS) {\n    // https://github.com/tc39/proposal-Symbol-description\n    nativeDefineProperty($Symbol[PROTOTYPE], 'description', {\n      configurable: true,\n      get: function description() {\n        return getInternalState(this).description;\n      }\n    });\n    if (!IS_PURE) {\n      redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n    }\n  }\n}\n\n$({ global: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n  Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n  defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n  // `Symbol.for` method\n  // https://tc39.github.io/ecma262/#sec-symbol.for\n  'for': function (key) {\n    var string = String(key);\n    if (has(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n    var symbol = $Symbol(string);\n    StringToSymbolRegistry[string] = symbol;\n    SymbolToStringRegistry[symbol] = string;\n    return symbol;\n  },\n  // `Symbol.keyFor` method\n  // https://tc39.github.io/ecma262/#sec-symbol.keyfor\n  keyFor: function keyFor(sym) {\n    if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol');\n    if (has(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n  },\n  useSetter: function () { USE_SETTER = true; },\n  useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n  // `Object.create` method\n  // https://tc39.github.io/ecma262/#sec-object.create\n  create: $create,\n  // `Object.defineProperty` method\n  // https://tc39.github.io/ecma262/#sec-object.defineproperty\n  defineProperty: $defineProperty,\n  // `Object.defineProperties` method\n  // https://tc39.github.io/ecma262/#sec-object.defineproperties\n  defineProperties: $defineProperties,\n  // `Object.getOwnPropertyDescriptor` method\n  // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors\n  getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n  // `Object.getOwnPropertyNames` method\n  // https://tc39.github.io/ecma262/#sec-object.getownpropertynames\n  getOwnPropertyNames: $getOwnPropertyNames,\n  // `Object.getOwnPropertySymbols` method\n  // https://tc39.github.io/ecma262/#sec-object.getownpropertysymbols\n  getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\n$({ target: 'Object', stat: true, forced: fails(function () { getOwnPropertySymbolsModule.f(1); }) }, {\n  getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n    return getOwnPropertySymbolsModule.f(toObject(it));\n  }\n});\n\n// `JSON.stringify` method behavior with symbols\n// https://tc39.github.io/ecma262/#sec-json.stringify\nif ($stringify) {\n  var FORCED_JSON_STRINGIFY = !NATIVE_SYMBOL || fails(function () {\n    var symbol = $Symbol();\n    // MS Edge converts symbol values to JSON as {}\n    return $stringify([symbol]) != '[null]'\n      // WebKit converts symbol values to JSON as null\n      || $stringify({ a: symbol }) != '{}'\n      // V8 throws on boxed symbols\n      || $stringify(Object(symbol)) != '{}';\n  });\n\n  $({ target: 'JSON', stat: true, forced: FORCED_JSON_STRINGIFY }, {\n    // eslint-disable-next-line no-unused-vars\n    stringify: function stringify(it, replacer, space) {\n      var args = [it];\n      var index = 1;\n      var $replacer;\n      while (arguments.length > index) args.push(arguments[index++]);\n      $replacer = replacer;\n      if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n      if (!isArray(replacer)) replacer = function (key, value) {\n        if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n        if (!isSymbol(value)) return value;\n      };\n      args[1] = replacer;\n      return $stringify.apply(null, args);\n    }\n  });\n}\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@toprimitive\nif (!$Symbol[PROTOTYPE][TO_PRIMITIVE]) {\n  createNonEnumerableProperty($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n}\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n\n\n/***/ }),\n\n/***/ \"a630\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(\"23e7\");\nvar from = __webpack_require__(\"4df4\");\nvar checkCorrectnessOfIteration = __webpack_require__(\"1c7e\");\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n  Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.github.io/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n  from: from\n});\n\n\n/***/ }),\n\n/***/ \"a640\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar fails = __webpack_require__(\"d039\");\n\nmodule.exports = function (METHOD_NAME, argument) {\n  var method = [][METHOD_NAME];\n  return !!method && fails(function () {\n    // eslint-disable-next-line no-useless-call,no-throw-literal\n    method.call(null, argument || function () { throw 1; }, 1);\n  });\n};\n\n\n/***/ }),\n\n/***/ \"a691\":\n/***/ (function(module, exports) {\n\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.github.io/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n  return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n\n\n/***/ }),\n\n/***/ \"a9e3\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar DESCRIPTORS = __webpack_require__(\"83ab\");\nvar global = __webpack_require__(\"da84\");\nvar isForced = __webpack_require__(\"94ca\");\nvar redefine = __webpack_require__(\"6eeb\");\nvar has = __webpack_require__(\"5135\");\nvar classof = __webpack_require__(\"c6b6\");\nvar inheritIfRequired = __webpack_require__(\"7156\");\nvar toPrimitive = __webpack_require__(\"c04e\");\nvar fails = __webpack_require__(\"d039\");\nvar create = __webpack_require__(\"7c73\");\nvar getOwnPropertyNames = __webpack_require__(\"241c\").f;\nvar getOwnPropertyDescriptor = __webpack_require__(\"06cf\").f;\nvar defineProperty = __webpack_require__(\"9bf2\").f;\nvar trim = __webpack_require__(\"58a8\").trim;\n\nvar NUMBER = 'Number';\nvar NativeNumber = global[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\n\n// Opera ~12 has broken Object#toString\nvar BROKEN_CLASSOF = classof(create(NumberPrototype)) == NUMBER;\n\n// `ToNumber` abstract operation\n// https://tc39.github.io/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n  var it = toPrimitive(argument, false);\n  var first, third, radix, maxCode, digits, length, index, code;\n  if (typeof it == 'string' && it.length > 2) {\n    it = trim(it);\n    first = it.charCodeAt(0);\n    if (first === 43 || first === 45) {\n      third = it.charCodeAt(2);\n      if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n    } else if (first === 48) {\n      switch (it.charCodeAt(1)) {\n        case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i\n        case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i\n        default: return +it;\n      }\n      digits = it.slice(2);\n      length = digits.length;\n      for (index = 0; index < length; index++) {\n        code = digits.charCodeAt(index);\n        // parseInt parses a string to a first unavailable symbol\n        // but ToNumber should return NaN if a string contains unavailable symbols\n        if (code < 48 || code > maxCode) return NaN;\n      } return parseInt(digits, radix);\n    }\n  } return +it;\n};\n\n// `Number` constructor\n// https://tc39.github.io/ecma262/#sec-number-constructor\nif (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {\n  var NumberWrapper = function Number(value) {\n    var it = arguments.length < 1 ? 0 : value;\n    var dummy = this;\n    return dummy instanceof NumberWrapper\n      // check on 1..constructor(foo) case\n      && (BROKEN_CLASSOF ? fails(function () { NumberPrototype.valueOf.call(dummy); }) : classof(dummy) != NUMBER)\n        ? inheritIfRequired(new NativeNumber(toNumber(it)), dummy, NumberWrapper) : toNumber(it);\n  };\n  for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : (\n    // ES3:\n    'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n    // ES2015 (in case, if modules with ES2015 Number statics required before):\n    'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n    'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n  ).split(','), j = 0, key; keys.length > j; j++) {\n    if (has(NativeNumber, key = keys[j]) && !has(NumberWrapper, key)) {\n      defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key));\n    }\n  }\n  NumberWrapper.prototype = NumberPrototype;\n  NumberPrototype.constructor = NumberWrapper;\n  redefine(global, NUMBER, NumberWrapper);\n}\n\n\n/***/ }),\n\n/***/ \"aab0\":\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_vue_timepicker_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"fd6f\");\n/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_vue_timepicker_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_vue_timepicker_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__);\n/* unused harmony reexport * */\n /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_vue_timepicker_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default.a); \n\n/***/ }),\n\n/***/ \"ab13\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(\"b622\");\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n  var regexp = /./;\n  try {\n    '/./'[METHOD_NAME](regexp);\n  } catch (e) {\n    try {\n      regexp[MATCH] = false;\n      return '/./'[METHOD_NAME](regexp);\n    } catch (f) { /* empty */ }\n  } return false;\n};\n\n\n/***/ }),\n\n/***/ \"ac1f\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(\"23e7\");\nvar exec = __webpack_require__(\"9263\");\n\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n  exec: exec\n});\n\n\n/***/ }),\n\n/***/ \"ad6d\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar anObject = __webpack_require__(\"825a\");\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.github.io/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n  var that = anObject(this);\n  var result = '';\n  if (that.global) result += 'g';\n  if (that.ignoreCase) result += 'i';\n  if (that.multiline) result += 'm';\n  if (that.dotAll) result += 's';\n  if (that.unicode) result += 'u';\n  if (that.sticky) result += 'y';\n  return result;\n};\n\n\n/***/ }),\n\n/***/ \"ae40\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(\"83ab\");\nvar fails = __webpack_require__(\"d039\");\nvar has = __webpack_require__(\"5135\");\n\nvar defineProperty = Object.defineProperty;\nvar cache = {};\n\nvar thrower = function (it) { throw it; };\n\nmodule.exports = function (METHOD_NAME, options) {\n  if (has(cache, METHOD_NAME)) return cache[METHOD_NAME];\n  if (!options) options = {};\n  var method = [][METHOD_NAME];\n  var ACCESSORS = has(options, 'ACCESSORS') ? options.ACCESSORS : false;\n  var argument0 = has(options, 0) ? options[0] : thrower;\n  var argument1 = has(options, 1) ? options[1] : undefined;\n\n  return cache[METHOD_NAME] = !!method && !fails(function () {\n    if (ACCESSORS && !DESCRIPTORS) return true;\n    var O = { length: -1 };\n\n    if (ACCESSORS) defineProperty(O, 1, { enumerable: true, get: thrower });\n    else O[1] = 1;\n\n    method.call(O, argument0, argument1);\n  });\n};\n\n\n/***/ }),\n\n/***/ \"ae93\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar getPrototypeOf = __webpack_require__(\"e163\");\nvar createNonEnumerableProperty = __webpack_require__(\"9112\");\nvar has = __webpack_require__(\"5135\");\nvar wellKnownSymbol = __webpack_require__(\"b622\");\nvar IS_PURE = __webpack_require__(\"c430\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\nif ([].keys) {\n  arrayIterator = [].keys();\n  // Safari 8 has buggy iterators w/o `next`\n  if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n  else {\n    PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n    if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n  }\n}\n\nif (IteratorPrototype == undefined) IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nif (!IS_PURE && !has(IteratorPrototype, ITERATOR)) {\n  createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);\n}\n\nmodule.exports = {\n  IteratorPrototype: IteratorPrototype,\n  BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n\n\n/***/ }),\n\n/***/ \"b041\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar TO_STRING_TAG_SUPPORT = __webpack_require__(\"00ee\");\nvar classof = __webpack_require__(\"f5df\");\n\n// `Object.prototype.toString` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n  return '[object ' + classof(this) + ']';\n};\n\n\n/***/ }),\n\n/***/ \"b0c0\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(\"83ab\");\nvar defineProperty = __webpack_require__(\"9bf2\").f;\n\nvar FunctionPrototype = Function.prototype;\nvar FunctionPrototypeToString = FunctionPrototype.toString;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.github.io/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !(NAME in FunctionPrototype)) {\n  defineProperty(FunctionPrototype, NAME, {\n    configurable: true,\n    get: function () {\n      try {\n        return FunctionPrototypeToString.call(this).match(nameRE)[1];\n      } catch (error) {\n        return '';\n      }\n    }\n  });\n}\n\n\n/***/ }),\n\n/***/ \"b622\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"da84\");\nvar shared = __webpack_require__(\"5692\");\nvar has = __webpack_require__(\"5135\");\nvar uid = __webpack_require__(\"90e3\");\nvar NATIVE_SYMBOL = __webpack_require__(\"4930\");\nvar USE_SYMBOL_AS_UID = __webpack_require__(\"fdbf\");\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n  if (!has(WellKnownSymbolsStore, name)) {\n    if (NATIVE_SYMBOL && has(Symbol, name)) WellKnownSymbolsStore[name] = Symbol[name];\n    else WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n  } return WellKnownSymbolsStore[name];\n};\n\n\n/***/ }),\n\n/***/ \"b64b\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(\"23e7\");\nvar toObject = __webpack_require__(\"7b0b\");\nvar nativeKeys = __webpack_require__(\"df75\");\nvar fails = __webpack_require__(\"d039\");\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n  keys: function keys(it) {\n    return nativeKeys(toObject(it));\n  }\n});\n\n\n/***/ }),\n\n/***/ \"b727\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar bind = __webpack_require__(\"0366\");\nvar IndexedObject = __webpack_require__(\"44ad\");\nvar toObject = __webpack_require__(\"7b0b\");\nvar toLength = __webpack_require__(\"50c4\");\nvar arraySpeciesCreate = __webpack_require__(\"65f0\");\n\nvar push = [].push;\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex }` methods implementation\nvar createMethod = function (TYPE) {\n  var IS_MAP = TYPE == 1;\n  var IS_FILTER = TYPE == 2;\n  var IS_SOME = TYPE == 3;\n  var IS_EVERY = TYPE == 4;\n  var IS_FIND_INDEX = TYPE == 6;\n  var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n  return function ($this, callbackfn, that, specificCreate) {\n    var O = toObject($this);\n    var self = IndexedObject(O);\n    var boundFunction = bind(callbackfn, that, 3);\n    var length = toLength(self.length);\n    var index = 0;\n    var create = specificCreate || arraySpeciesCreate;\n    var target = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n    var value, result;\n    for (;length > index; index++) if (NO_HOLES || index in self) {\n      value = self[index];\n      result = boundFunction(value, index, O);\n      if (TYPE) {\n        if (IS_MAP) target[index] = result; // map\n        else if (result) switch (TYPE) {\n          case 3: return true;              // some\n          case 5: return value;             // find\n          case 6: return index;             // findIndex\n          case 2: push.call(target, value); // filter\n        } else if (IS_EVERY) return false;  // every\n      }\n    }\n    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.forEach` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n  forEach: createMethod(0),\n  // `Array.prototype.map` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.map\n  map: createMethod(1),\n  // `Array.prototype.filter` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.filter\n  filter: createMethod(2),\n  // `Array.prototype.some` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.some\n  some: createMethod(3),\n  // `Array.prototype.every` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.every\n  every: createMethod(4),\n  // `Array.prototype.find` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.find\n  find: createMethod(5),\n  // `Array.prototype.findIndex` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex\n  findIndex: createMethod(6)\n};\n\n\n/***/ }),\n\n/***/ \"c04e\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"861d\");\n\n// `ToPrimitive` abstract operation\n// https://tc39.github.io/ecma262/#sec-toprimitive\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (input, PREFERRED_STRING) {\n  if (!isObject(input)) return input;\n  var fn, val;\n  if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n  if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n  if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n\n\n/***/ }),\n\n/***/ \"c430\":\n/***/ (function(module, exports) {\n\nmodule.exports = false;\n\n\n/***/ }),\n\n/***/ \"c6b6\":\n/***/ (function(module, exports) {\n\nvar toString = {}.toString;\n\nmodule.exports = function (it) {\n  return toString.call(it).slice(8, -1);\n};\n\n\n/***/ }),\n\n/***/ \"c6cd\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"da84\");\nvar setGlobal = __webpack_require__(\"ce4e\");\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n\n\n/***/ }),\n\n/***/ \"c740\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(\"23e7\");\nvar $findIndex = __webpack_require__(\"b727\").findIndex;\nvar addToUnscopables = __webpack_require__(\"44d2\");\nvar arrayMethodUsesToLength = __webpack_require__(\"ae40\");\n\nvar FIND_INDEX = 'findIndex';\nvar SKIPS_HOLES = true;\n\nvar USES_TO_LENGTH = arrayMethodUsesToLength(FIND_INDEX);\n\n// Shouldn't skip holes\nif (FIND_INDEX in []) Array(1)[FIND_INDEX](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.findIndex` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.findindex\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES || !USES_TO_LENGTH }, {\n  findIndex: function findIndex(callbackfn /* , that = undefined */) {\n    return $findIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND_INDEX);\n\n\n/***/ }),\n\n/***/ \"c8ba\":\n/***/ (function(module, exports) {\n\nvar g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n\n\n/***/ }),\n\n/***/ \"c8d2\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(\"d039\");\nvar whitespaces = __webpack_require__(\"5899\");\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n  return fails(function () {\n    return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME;\n  });\n};\n\n\n/***/ }),\n\n/***/ \"c975\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(\"23e7\");\nvar $indexOf = __webpack_require__(\"4d64\").indexOf;\nvar arrayMethodIsStrict = __webpack_require__(\"a640\");\nvar arrayMethodUsesToLength = __webpack_require__(\"ae40\");\n\nvar nativeIndexOf = [].indexOf;\n\nvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('indexOf');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 });\n\n// `Array.prototype.indexOf` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || !STRICT_METHOD || !USES_TO_LENGTH }, {\n  indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n    return NEGATIVE_ZERO\n      // convert -0 to +0\n      ? nativeIndexOf.apply(this, arguments) || 0\n      : $indexOf(this, searchElement, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n\n/***/ }),\n\n/***/ \"ca84\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar has = __webpack_require__(\"5135\");\nvar toIndexedObject = __webpack_require__(\"fc6a\");\nvar indexOf = __webpack_require__(\"4d64\").indexOf;\nvar hiddenKeys = __webpack_require__(\"d012\");\n\nmodule.exports = function (object, names) {\n  var O = toIndexedObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (has(O, key = names[i++])) {\n    ~indexOf(result, key) || result.push(key);\n  }\n  return result;\n};\n\n\n/***/ }),\n\n/***/ \"caad\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(\"23e7\");\nvar $includes = __webpack_require__(\"4d64\").includes;\nvar addToUnscopables = __webpack_require__(\"44d2\");\nvar arrayMethodUsesToLength = __webpack_require__(\"ae40\");\n\nvar USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 });\n\n// `Array.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true, forced: !USES_TO_LENGTH }, {\n  includes: function includes(el /* , fromIndex = 0 */) {\n    return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n\n\n/***/ }),\n\n/***/ \"cc12\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"da84\");\nvar isObject = __webpack_require__(\"861d\");\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n  return EXISTS ? document.createElement(it) : {};\n};\n\n\n/***/ }),\n\n/***/ \"cca6\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(\"23e7\");\nvar assign = __webpack_require__(\"60da\");\n\n// `Object.assign` method\n// https://tc39.github.io/ecma262/#sec-object.assign\n$({ target: 'Object', stat: true, forced: Object.assign !== assign }, {\n  assign: assign\n});\n\n\n/***/ }),\n\n/***/ \"ce4e\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"da84\");\nvar createNonEnumerableProperty = __webpack_require__(\"9112\");\n\nmodule.exports = function (key, value) {\n  try {\n    createNonEnumerableProperty(global, key, value);\n  } catch (error) {\n    global[key] = value;\n  } return value;\n};\n\n\n/***/ }),\n\n/***/ \"d012\":\n/***/ (function(module, exports) {\n\nmodule.exports = {};\n\n\n/***/ }),\n\n/***/ \"d039\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (error) {\n    return true;\n  }\n};\n\n\n/***/ }),\n\n/***/ \"d066\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar path = __webpack_require__(\"428f\");\nvar global = __webpack_require__(\"da84\");\n\nvar aFunction = function (variable) {\n  return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n  return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n    : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n\n\n/***/ }),\n\n/***/ \"d1e7\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar nativePropertyIsEnumerable = {}.propertyIsEnumerable;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n  var descriptor = getOwnPropertyDescriptor(this, V);\n  return !!descriptor && descriptor.enumerable;\n} : nativePropertyIsEnumerable;\n\n\n/***/ }),\n\n/***/ \"d28b\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineWellKnownSymbol = __webpack_require__(\"746f\");\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n\n\n/***/ }),\n\n/***/ \"d2bb\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(\"825a\");\nvar aPossiblePrototype = __webpack_require__(\"3bbe\");\n\n// `Object.setPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n  var CORRECT_SETTER = false;\n  var test = {};\n  var setter;\n  try {\n    setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n    setter.call(test, []);\n    CORRECT_SETTER = test instanceof Array;\n  } catch (error) { /* empty */ }\n  return function setPrototypeOf(O, proto) {\n    anObject(O);\n    aPossiblePrototype(proto);\n    if (CORRECT_SETTER) setter.call(O, proto);\n    else O.__proto__ = proto;\n    return O;\n  };\n}() : undefined);\n\n\n/***/ }),\n\n/***/ \"d3b7\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar TO_STRING_TAG_SUPPORT = __webpack_require__(\"00ee\");\nvar redefine = __webpack_require__(\"6eeb\");\nvar toString = __webpack_require__(\"b041\");\n\n// `Object.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n  redefine(Object.prototype, 'toString', toString, { unsafe: true });\n}\n\n\n/***/ }),\n\n/***/ \"d44e\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineProperty = __webpack_require__(\"9bf2\").f;\nvar has = __webpack_require__(\"5135\");\nvar wellKnownSymbol = __webpack_require__(\"b622\");\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n  if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n    defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n  }\n};\n\n\n/***/ }),\n\n/***/ \"d784\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// TODO: Remove from `core-js@4` since it's moved to entry points\n__webpack_require__(\"ac1f\");\nvar redefine = __webpack_require__(\"6eeb\");\nvar fails = __webpack_require__(\"d039\");\nvar wellKnownSymbol = __webpack_require__(\"b622\");\nvar regexpExec = __webpack_require__(\"9263\");\nvar createNonEnumerableProperty = __webpack_require__(\"9112\");\n\nvar SPECIES = wellKnownSymbol('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n  // #replace needs built-in support for named groups.\n  // #match works fine because it just return the exec results, even if it has\n  // a \"grops\" property.\n  var re = /./;\n  re.exec = function () {\n    var result = [];\n    result.groups = { a: '7' };\n    return result;\n  };\n  return ''.replace(re, '$<a>') !== '7';\n});\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n  return 'a'.replace(/./, '$0') === '$0';\n})();\n\nvar REPLACE = wellKnownSymbol('replace');\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n  if (/./[REPLACE]) {\n    return /./[REPLACE]('a', '$0') === '';\n  }\n  return false;\n})();\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n  var re = /(?:)/;\n  var originalExec = re.exec;\n  re.exec = function () { return originalExec.apply(this, arguments); };\n  var result = 'ab'.split(re);\n  return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\nmodule.exports = function (KEY, length, exec, sham) {\n  var SYMBOL = wellKnownSymbol(KEY);\n\n  var DELEGATES_TO_SYMBOL = !fails(function () {\n    // String methods call symbol-named RegEp methods\n    var O = {};\n    O[SYMBOL] = function () { return 7; };\n    return ''[KEY](O) != 7;\n  });\n\n  var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n    // Symbol-named RegExp methods call .exec\n    var execCalled = false;\n    var re = /a/;\n\n    if (KEY === 'split') {\n      // We can't use real regex here since it causes deoptimization\n      // and serious performance degradation in V8\n      // https://github.com/zloirock/core-js/issues/306\n      re = {};\n      // RegExp[@@split] doesn't call the regex's exec method, but first creates\n      // a new one. We need to return the patched regex when creating the new one.\n      re.constructor = {};\n      re.constructor[SPECIES] = function () { return re; };\n      re.flags = '';\n      re[SYMBOL] = /./[SYMBOL];\n    }\n\n    re.exec = function () { execCalled = true; return null; };\n\n    re[SYMBOL]('');\n    return !execCalled;\n  });\n\n  if (\n    !DELEGATES_TO_SYMBOL ||\n    !DELEGATES_TO_EXEC ||\n    (KEY === 'replace' && !(\n      REPLACE_SUPPORTS_NAMED_GROUPS &&\n      REPLACE_KEEPS_$0 &&\n      !REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n    )) ||\n    (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n  ) {\n    var nativeRegExpMethod = /./[SYMBOL];\n    var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n      if (regexp.exec === regexpExec) {\n        if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n          // The native String method already delegates to @@method (this\n          // polyfilled function), leasing to infinite recursion.\n          // We avoid it by directly calling the native @@method method.\n          return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n        }\n        return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n      }\n      return { done: false };\n    }, {\n      REPLACE_KEEPS_$0: REPLACE_KEEPS_$0,\n      REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE: REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n    });\n    var stringMethod = methods[0];\n    var regexMethod = methods[1];\n\n    redefine(String.prototype, KEY, stringMethod);\n    redefine(RegExp.prototype, SYMBOL, length == 2\n      // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n      // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n      ? function (string, arg) { return regexMethod.call(string, this, arg); }\n      // 21.2.5.6 RegExp.prototype[@@match](string)\n      // 21.2.5.9 RegExp.prototype[@@search](string)\n      : function (string) { return regexMethod.call(string, this); }\n    );\n  }\n\n  if (sham) createNonEnumerableProperty(RegExp.prototype[SYMBOL], 'sham', true);\n};\n\n\n/***/ }),\n\n/***/ \"d81d\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(\"23e7\");\nvar $map = __webpack_require__(\"b727\").map;\nvar arrayMethodHasSpeciesSupport = __webpack_require__(\"1dde\");\nvar arrayMethodUsesToLength = __webpack_require__(\"ae40\");\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n// FF49- issue\nvar USES_TO_LENGTH = arrayMethodUsesToLength('map');\n\n// `Array.prototype.map` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n  map: function map(callbackfn /* , thisArg */) {\n    return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n\n/***/ }),\n\n/***/ \"da84\":\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {var check = function (it) {\n  return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n  // eslint-disable-next-line no-undef\n  check(typeof globalThis == 'object' && globalThis) ||\n  check(typeof window == 'object' && window) ||\n  check(typeof self == 'object' && self) ||\n  check(typeof global == 'object' && global) ||\n  // eslint-disable-next-line no-new-func\n  Function('return this')();\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(\"c8ba\")))\n\n/***/ }),\n\n/***/ \"ddb0\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"da84\");\nvar DOMIterables = __webpack_require__(\"fdbc\");\nvar ArrayIteratorMethods = __webpack_require__(\"e260\");\nvar createNonEnumerableProperty = __webpack_require__(\"9112\");\nvar wellKnownSymbol = __webpack_require__(\"b622\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nfor (var COLLECTION_NAME in DOMIterables) {\n  var Collection = global[COLLECTION_NAME];\n  var CollectionPrototype = Collection && Collection.prototype;\n  if (CollectionPrototype) {\n    // some Chrome versions have non-configurable methods on DOMTokenList\n    if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n      createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n    } catch (error) {\n      CollectionPrototype[ITERATOR] = ArrayValues;\n    }\n    if (!CollectionPrototype[TO_STRING_TAG]) {\n      createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n    }\n    if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n      // some Chrome versions have non-configurable methods on DOMTokenList\n      if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n        createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n      } catch (error) {\n        CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n      }\n    }\n  }\n}\n\n\n/***/ }),\n\n/***/ \"df75\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar internalObjectKeys = __webpack_require__(\"ca84\");\nvar enumBugKeys = __webpack_require__(\"7839\");\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\nmodule.exports = Object.keys || function keys(O) {\n  return internalObjectKeys(O, enumBugKeys);\n};\n\n\n/***/ }),\n\n/***/ \"e01a\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n// `Symbol.prototype.description` getter\n// https://tc39.github.io/ecma262/#sec-symbol.prototype.description\n\nvar $ = __webpack_require__(\"23e7\");\nvar DESCRIPTORS = __webpack_require__(\"83ab\");\nvar global = __webpack_require__(\"da84\");\nvar has = __webpack_require__(\"5135\");\nvar isObject = __webpack_require__(\"861d\");\nvar defineProperty = __webpack_require__(\"9bf2\").f;\nvar copyConstructorProperties = __webpack_require__(\"e893\");\n\nvar NativeSymbol = global.Symbol;\n\nif (DESCRIPTORS && typeof NativeSymbol == 'function' && (!('description' in NativeSymbol.prototype) ||\n  // Safari 12 bug\n  NativeSymbol().description !== undefined\n)) {\n  var EmptyStringDescriptionStore = {};\n  // wrap Symbol constructor for correct work with undefined description\n  var SymbolWrapper = function Symbol() {\n    var description = arguments.length < 1 || arguments[0] === undefined ? undefined : String(arguments[0]);\n    var result = this instanceof SymbolWrapper\n      ? new NativeSymbol(description)\n      // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n      : description === undefined ? NativeSymbol() : NativeSymbol(description);\n    if (description === '') EmptyStringDescriptionStore[result] = true;\n    return result;\n  };\n  copyConstructorProperties(SymbolWrapper, NativeSymbol);\n  var symbolPrototype = SymbolWrapper.prototype = NativeSymbol.prototype;\n  symbolPrototype.constructor = SymbolWrapper;\n\n  var symbolToString = symbolPrototype.toString;\n  var native = String(NativeSymbol('test')) == 'Symbol(test)';\n  var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n  defineProperty(symbolPrototype, 'description', {\n    configurable: true,\n    get: function description() {\n      var symbol = isObject(this) ? this.valueOf() : this;\n      var string = symbolToString.call(symbol);\n      if (has(EmptyStringDescriptionStore, symbol)) return '';\n      var desc = native ? string.slice(7, -1) : string.replace(regexp, '$1');\n      return desc === '' ? undefined : desc;\n    }\n  });\n\n  $({ global: true, forced: true }, {\n    Symbol: SymbolWrapper\n  });\n}\n\n\n/***/ }),\n\n/***/ \"e163\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar has = __webpack_require__(\"5135\");\nvar toObject = __webpack_require__(\"7b0b\");\nvar sharedKey = __webpack_require__(\"f772\");\nvar CORRECT_PROTOTYPE_GETTER = __webpack_require__(\"e177\");\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.getprototypeof\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n  O = toObject(O);\n  if (has(O, IE_PROTO)) return O[IE_PROTO];\n  if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n    return O.constructor.prototype;\n  } return O instanceof Object ? ObjectPrototype : null;\n};\n\n\n/***/ }),\n\n/***/ \"e177\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(\"d039\");\n\nmodule.exports = !fails(function () {\n  function F() { /* empty */ }\n  F.prototype.constructor = null;\n  return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n\n\n/***/ }),\n\n/***/ \"e260\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar toIndexedObject = __webpack_require__(\"fc6a\");\nvar addToUnscopables = __webpack_require__(\"44d2\");\nvar Iterators = __webpack_require__(\"3f8c\");\nvar InternalStateModule = __webpack_require__(\"69f3\");\nvar defineIterator = __webpack_require__(\"7dd0\");\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.github.io/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n  setInternalState(this, {\n    type: ARRAY_ITERATOR,\n    target: toIndexedObject(iterated), // target\n    index: 0,                          // next index\n    kind: kind                         // kind\n  });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n  var state = getInternalState(this);\n  var target = state.target;\n  var kind = state.kind;\n  var index = state.index++;\n  if (!target || index >= target.length) {\n    state.target = undefined;\n    return { value: undefined, done: true };\n  }\n  if (kind == 'keys') return { value: index, done: false };\n  if (kind == 'values') return { value: target[index], done: false };\n  return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.github.io/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.github.io/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n\n/***/ }),\n\n/***/ \"e538\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(\"b622\");\n\nexports.f = wellKnownSymbol;\n\n\n/***/ }),\n\n/***/ \"e893\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar has = __webpack_require__(\"5135\");\nvar ownKeys = __webpack_require__(\"56ef\");\nvar getOwnPropertyDescriptorModule = __webpack_require__(\"06cf\");\nvar definePropertyModule = __webpack_require__(\"9bf2\");\n\nmodule.exports = function (target, source) {\n  var keys = ownKeys(source);\n  var defineProperty = definePropertyModule.f;\n  var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n  for (var i = 0; i < keys.length; i++) {\n    var key = keys[i];\n    if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n  }\n};\n\n\n/***/ }),\n\n/***/ \"e8b5\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar classof = __webpack_require__(\"c6b6\");\n\n// `IsArray` abstract operation\n// https://tc39.github.io/ecma262/#sec-isarray\nmodule.exports = Array.isArray || function isArray(arg) {\n  return classof(arg) == 'Array';\n};\n\n\n/***/ }),\n\n/***/ \"e95a\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(\"b622\");\nvar Iterators = __webpack_require__(\"3f8c\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n  return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n\n\n/***/ }),\n\n/***/ \"f5df\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar TO_STRING_TAG_SUPPORT = __webpack_require__(\"00ee\");\nvar classofRaw = __webpack_require__(\"c6b6\");\nvar wellKnownSymbol = __webpack_require__(\"b622\");\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n  try {\n    return it[key];\n  } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n  var O, tag, result;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n    // builtinTag case\n    : CORRECT_ARGUMENTS ? classofRaw(O)\n    // ES3 arguments fallback\n    : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n\n\n/***/ }),\n\n/***/ \"f772\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar shared = __webpack_require__(\"5692\");\nvar uid = __webpack_require__(\"90e3\");\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n  return keys[key] || (keys[key] = uid(key));\n};\n\n\n/***/ }),\n\n/***/ \"fb15\":\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js\n// This file is imported into lib/wc client bundles.\n\nif (typeof window !== 'undefined') {\n  var currentScript = window.document.currentScript\n  if (true) {\n    var getCurrentScript = __webpack_require__(\"8875\")\n    currentScript = getCurrentScript()\n\n    // for backward compatibility, because previously we directly included the polyfill\n    if (!('currentScript' in document)) {\n      Object.defineProperty(document, 'currentScript', { get: getCurrentScript })\n    }\n  }\n\n  var src = currentScript && currentScript.src.match(/(.+\\/)[^/]+\\.js(\\?.*)?$/)\n  if (src) {\n    __webpack_require__.p = src[1] // eslint-disable-line\n  }\n}\n\n// Indicate to webpack that this file can be concatenated\n/* harmony default export */ var setPublicPath = (null);\n\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"08a1de70-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/vue-timepicker.vue?vue&type=template&id=7502c349&\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"vue__time-picker time-picker\",style:(_vm.inputWidthStyle)},[_c('input',{ref:\"input\",staticClass:\"display-time\",class:[_vm.inputClass, {'is-empty': _vm.inputIsEmpty, 'invalid': _vm.hasInvalidInput, 'all-selected': _vm.allValueSelected, 'disabled': _vm.disabled, 'has-custom-icon': _vm.$slots && _vm.$slots.icon }],style:(_vm.inputWidthStyle),attrs:{\"type\":\"text\",\"id\":_vm.id,\"name\":_vm.name,\"placeholder\":_vm.placeholder ? _vm.placeholder : _vm.formatString,\"tabindex\":_vm.disabled ? -1 : _vm.tabindex,\"disabled\":_vm.disabled,\"readonly\":!_vm.manualInput,\"autocomplete\":_vm.autocomplete},domProps:{\"value\":_vm.inputIsEmpty ? null : _vm.customDisplayTime},on:{\"focus\":_vm.onFocus,\"change\":_vm.onChange,\"blur\":function($event){_vm.debounceBlur(); _vm.blurEvent()},\"mousedown\":_vm.onMouseDown,\"keydown\":[_vm.keyDownHandler,function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey){ return null; }return _vm.escBlur($event)}],\"compositionstart\":_vm.onCompostionStart,\"compositionend\":_vm.onCompostionEnd,\"paste\":_vm.pasteHandler}}),(_vm.showClearBtn || _vm.showDropdownBtn)?_c('div',{staticClass:\"controls\",attrs:{\"tabindex\":\"-1\"}},[(!_vm.isActive && _vm.showClearBtn)?_c('span',{staticClass:\"clear-btn\",class:{'has-custom-btn': _vm.$slots && _vm.$slots.clearButton },attrs:{\"tabindex\":\"-1\"},on:{\"click\":_vm.clearTime}},[_vm._t(\"clearButton\",[_c('span',{staticClass:\"char\"},[_vm._v(\"×\")])])],2):_vm._e(),(_vm.showDropdownBtn)?_c('span',{staticClass:\"dropdown-btn\",class:{'has-custom-btn': _vm.$slots && _vm.$slots.dropdownButton },attrs:{\"tabindex\":\"-1\"},on:{\"click\":function($event){return _vm.setDropdownState(_vm.fixedDropdownButton ? !_vm.showDropdown : true, true)},\"mousedown\":_vm.keepFocusing}},[_vm._t(\"dropdownButton\",[_c('span',{staticClass:\"char\"},[_vm._v(\"▾\")])])],2):_vm._e()]):_vm._e(),(_vm.$slots && _vm.$slots.icon)?_c('div',{staticClass:\"custom-icon\"},[_vm._t(\"icon\")],2):_vm._e(),(_vm.showDropdown)?_c('div',{staticClass:\"time-picker-overlay\",attrs:{\"tabindex\":\"-1\"},on:{\"click\":_vm.toggleActive}}):_vm._e(),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showDropdown),expression:\"showDropdown\"}],ref:\"dropdown\",staticClass:\"dropdown\",class:[_vm.dropdownDirClass],style:(_vm.inputWidthStyle),attrs:{\"tabindex\":\"-1\"},on:{\"mouseup\":_vm.keepFocusing,\"click\":function($event){$event.stopPropagation();}}},[_c('div',{staticClass:\"select-list\",style:(_vm.inputWidthStyle),attrs:{\"tabindex\":\"-1\"}},[(!_vm.advancedKeyboard)?[_vm._l((_vm.columnsSequence),function(column){return [(column === 'hour')?_c('ul',{key:column,staticClass:\"hours\",on:{\"scroll\":_vm.keepFocusing}},[_c('li',{staticClass:\"hint\",domProps:{\"textContent\":_vm._s(_vm.hourLabelText)}}),_vm._l((_vm.hours),function(hr,hIndex){return [(!_vm.opts.hideDisabledHours || (_vm.opts.hideDisabledHours && !_vm.isDisabled('hour', hr)))?_c('li',{key:hIndex,class:{active: _vm.hour === hr},attrs:{\"disabled\":_vm.isDisabled('hour', hr),\"data-key\":hr},domProps:{\"textContent\":_vm._s(hr)},on:{\"click\":function($event){return _vm.select('hour', hr)}}}):_vm._e()]})],2):_vm._e(),(column === 'minute')?_c('ul',{key:column,staticClass:\"minutes\",on:{\"scroll\":_vm.keepFocusing}},[_c('li',{staticClass:\"hint\",domProps:{\"textContent\":_vm._s(_vm.minuteLabelText)}}),_vm._l((_vm.minutes),function(m,mIndex){return [(!_vm.opts.hideDisabledMinutes || (_vm.opts.hideDisabledMinutes && !_vm.isDisabled('minute', m)))?_c('li',{key:mIndex,class:{active: _vm.minute === m},attrs:{\"disabled\":_vm.isDisabled('minute', m),\"data-key\":m},domProps:{\"textContent\":_vm._s(m)},on:{\"click\":function($event){return _vm.select('minute', m)}}}):_vm._e()]})],2):_vm._e(),(column === 'second')?_c('ul',{key:column,staticClass:\"seconds\",on:{\"scroll\":_vm.keepFocusing}},[_c('li',{staticClass:\"hint\",domProps:{\"textContent\":_vm._s(_vm.secondLabelText)}}),_vm._l((_vm.seconds),function(s,sIndex){return [(!_vm.opts.hideDisabledSeconds || (_vm.opts.hideDisabledSeconds && !_vm.isDisabled('second', s)))?_c('li',{key:sIndex,class:{active: _vm.second === s},attrs:{\"disabled\":_vm.isDisabled('second', s),\"data-key\":s},domProps:{\"textContent\":_vm._s(s)},on:{\"click\":function($event){return _vm.select('second', s)}}}):_vm._e()]})],2):_vm._e(),(column === 'apm')?_c('ul',{key:column,staticClass:\"apms\",on:{\"scroll\":_vm.keepFocusing}},[_c('li',{staticClass:\"hint\",domProps:{\"textContent\":_vm._s(_vm.apmLabelText)}}),_vm._l((_vm.apms),function(a,aIndex){return [(!_vm.opts.hideDisabledHours || (_vm.opts.hideDisabledHours && !_vm.isDisabled('apm', a)))?_c('li',{key:aIndex,class:{active: _vm.apm === a},attrs:{\"disabled\":_vm.isDisabled('apm', a),\"data-key\":a},domProps:{\"textContent\":_vm._s(_vm.apmDisplayText(a))},on:{\"click\":function($event){return _vm.select('apm', a)}}}):_vm._e()]})],2):_vm._e()]})]:_vm._e(),(_vm.advancedKeyboard)?[_vm._l((_vm.columnsSequence),function(column){return [(column === 'hour')?_c('ul',{key:column,staticClass:\"hours\",attrs:{\"tabindex\":\"-1\"},on:{\"scroll\":_vm.keepFocusing}},[_c('li',{staticClass:\"hint\",attrs:{\"tabindex\":\"-1\"},domProps:{\"textContent\":_vm._s(_vm.hourLabelText)}}),_vm._l((_vm.hours),function(hr,hIndex){return [(!_vm.opts.hideDisabledHours || (_vm.opts.hideDisabledHours && !_vm.isDisabled('hour', hr)))?_c('li',{key:hIndex,class:{active: _vm.hour === hr},attrs:{\"tabindex\":_vm.isDisabled('hour', hr) ? -1 : _vm.tabindex,\"data-key\":hr,\"disabled\":_vm.isDisabled('hour', hr)},domProps:{\"textContent\":_vm._s(hr)},on:{\"click\":function($event){return _vm.select('hour', hr)},\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"tab\",9,$event.key,\"Tab\")){ return null; }return _vm.onTab('hour', hr, $event)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"space\",32,$event.key,[\" \",\"Spacebar\"])){ return null; }$event.preventDefault();return _vm.select('hour', hr)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }$event.preventDefault();return _vm.select('hour', hr)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"up\",38,$event.key,[\"Up\",\"ArrowUp\"])){ return null; }$event.preventDefault();return _vm.prevItem('hour', hr)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"down\",40,$event.key,[\"Down\",\"ArrowDown\"])){ return null; }$event.preventDefault();return _vm.nextItem('hour', hr)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"left\",37,$event.key,[\"Left\",\"ArrowLeft\"])){ return null; }if('button' in $event && $event.button !== 0){ return null; }$event.preventDefault();return _vm.toLeftColumn('hour')},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"right\",39,$event.key,[\"Right\",\"ArrowRight\"])){ return null; }if('button' in $event && $event.button !== 2){ return null; }$event.preventDefault();return _vm.toRightColumn('hour')},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey){ return null; }return _vm.debounceBlur($event)}],\"blur\":_vm.debounceBlur,\"focus\":_vm.keepFocusing}}):_vm._e()]})],2):_vm._e(),(column === 'minute')?_c('ul',{key:column,staticClass:\"minutes\",attrs:{\"tabindex\":\"-1\"},on:{\"scroll\":_vm.keepFocusing}},[_c('li',{staticClass:\"hint\",attrs:{\"tabindex\":\"-1\"},domProps:{\"textContent\":_vm._s(_vm.minuteLabelText)}}),_vm._l((_vm.minutes),function(m,mIndex){return [(!_vm.opts.hideDisabledMinutes || (_vm.opts.hideDisabledMinutes && !_vm.isDisabled('minute', m)))?_c('li',{key:mIndex,class:{active: _vm.minute === m},attrs:{\"tabindex\":_vm.isDisabled('minute', m) ? -1 : _vm.tabindex,\"data-key\":m,\"disabled\":_vm.isDisabled('minute', m)},domProps:{\"textContent\":_vm._s(m)},on:{\"click\":function($event){return _vm.select('minute', m)},\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"tab\",9,$event.key,\"Tab\")){ return null; }return _vm.onTab('minute', m, $event)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"space\",32,$event.key,[\" \",\"Spacebar\"])){ return null; }$event.preventDefault();return _vm.select('minute', m)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }$event.preventDefault();return _vm.select('minute', m)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"up\",38,$event.key,[\"Up\",\"ArrowUp\"])){ return null; }$event.preventDefault();return _vm.prevItem('minute', m)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"down\",40,$event.key,[\"Down\",\"ArrowDown\"])){ return null; }$event.preventDefault();return _vm.nextItem('minute', m)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"left\",37,$event.key,[\"Left\",\"ArrowLeft\"])){ return null; }if('button' in $event && $event.button !== 0){ return null; }$event.preventDefault();return _vm.toLeftColumn('minute')},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"right\",39,$event.key,[\"Right\",\"ArrowRight\"])){ return null; }if('button' in $event && $event.button !== 2){ return null; }$event.preventDefault();return _vm.toRightColumn('minute')},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey){ return null; }return _vm.debounceBlur($event)}],\"blur\":_vm.debounceBlur,\"focus\":_vm.keepFocusing}}):_vm._e()]})],2):_vm._e(),(column === 'second')?_c('ul',{key:column,staticClass:\"seconds\",attrs:{\"tabindex\":\"-1\"},on:{\"scroll\":_vm.keepFocusing}},[_c('li',{staticClass:\"hint\",attrs:{\"tabindex\":\"-1\"},domProps:{\"textContent\":_vm._s(_vm.secondLabelText)}}),_vm._l((_vm.seconds),function(s,sIndex){return [(!_vm.opts.hideDisabledSeconds || (_vm.opts.hideDisabledSeconds && !_vm.isDisabled('second', s)))?_c('li',{key:sIndex,class:{active: _vm.second === s},attrs:{\"tabindex\":_vm.isDisabled('second', s) ? -1 : _vm.tabindex,\"data-key\":s,\"disabled\":_vm.isDisabled('second', s)},domProps:{\"textContent\":_vm._s(s)},on:{\"click\":function($event){return _vm.select('second', s)},\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"tab\",9,$event.key,\"Tab\")){ return null; }return _vm.onTab('second', s, $event)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"space\",32,$event.key,[\" \",\"Spacebar\"])){ return null; }$event.preventDefault();return _vm.select('second', s)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }$event.preventDefault();return _vm.select('second', s)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"up\",38,$event.key,[\"Up\",\"ArrowUp\"])){ return null; }$event.preventDefault();return _vm.prevItem('second', s)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"down\",40,$event.key,[\"Down\",\"ArrowDown\"])){ return null; }$event.preventDefault();return _vm.nextItem('second', s)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"left\",37,$event.key,[\"Left\",\"ArrowLeft\"])){ return null; }if('button' in $event && $event.button !== 0){ return null; }$event.preventDefault();return _vm.toLeftColumn('second')},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"right\",39,$event.key,[\"Right\",\"ArrowRight\"])){ return null; }if('button' in $event && $event.button !== 2){ return null; }$event.preventDefault();return _vm.toRightColumn('second')},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey){ return null; }return _vm.debounceBlur($event)}],\"blur\":_vm.debounceBlur,\"focus\":_vm.keepFocusing}}):_vm._e()]})],2):_vm._e(),(column === 'apm')?_c('ul',{key:column,staticClass:\"apms\",attrs:{\"tabindex\":\"-1\"},on:{\"scroll\":_vm.keepFocusing}},[_c('li',{staticClass:\"hint\",attrs:{\"tabindex\":\"-1\"},domProps:{\"textContent\":_vm._s(_vm.apmLabelText)}}),_vm._l((_vm.apms),function(a,aIndex){return [(!_vm.opts.hideDisabledHours || (_vm.opts.hideDisabledHours && !_vm.isDisabled('apm', a)))?_c('li',{key:aIndex,class:{active: _vm.apm === a},attrs:{\"tabindex\":_vm.isDisabled('apm', a) ? -1 : _vm.tabindex,\"data-key\":a,\"disabled\":_vm.isDisabled('apm', a)},domProps:{\"textContent\":_vm._s(_vm.apmDisplayText(a))},on:{\"click\":function($event){return _vm.select('apm', a)},\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"tab\",9,$event.key,\"Tab\")){ return null; }return _vm.onTab('apm', a, $event)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"space\",32,$event.key,[\" \",\"Spacebar\"])){ return null; }$event.preventDefault();return _vm.select('apm', a)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }$event.preventDefault();return _vm.select('apm', a)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"up\",38,$event.key,[\"Up\",\"ArrowUp\"])){ return null; }$event.preventDefault();return _vm.prevItem('apm', a)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"down\",40,$event.key,[\"Down\",\"ArrowDown\"])){ return null; }$event.preventDefault();return _vm.nextItem('apm', a)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"left\",37,$event.key,[\"Left\",\"ArrowLeft\"])){ return null; }if('button' in $event && $event.button !== 0){ return null; }$event.preventDefault();return _vm.toLeftColumn('apm')},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"right\",39,$event.key,[\"Right\",\"ArrowRight\"])){ return null; }if('button' in $event && $event.button !== 2){ return null; }$event.preventDefault();return _vm.toRightColumn('apm')},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey){ return null; }return _vm.debounceBlur($event)}],\"blur\":_vm.debounceBlur,\"focus\":_vm.keepFocusing}}):_vm._e()]})],2):_vm._e()]})]:_vm._e()],2)])])}\nvar staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/vue-timepicker.vue?vue&type=template&id=7502c349&\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.concat.js\nvar es_array_concat = __webpack_require__(\"99af\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.filter.js\nvar es_array_filter = __webpack_require__(\"4de4\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.find-index.js\nvar es_array_find_index = __webpack_require__(\"c740\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.for-each.js\nvar es_array_for_each = __webpack_require__(\"4160\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.includes.js\nvar es_array_includes = __webpack_require__(\"caad\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.index-of.js\nvar es_array_index_of = __webpack_require__(\"c975\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.join.js\nvar es_array_join = __webpack_require__(\"a15b\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.map.js\nvar es_array_map = __webpack_require__(\"d81d\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.slice.js\nvar es_array_slice = __webpack_require__(\"fb6a\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.some.js\nvar es_array_some = __webpack_require__(\"45fc\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.splice.js\nvar es_array_splice = __webpack_require__(\"a434\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.function.name.js\nvar es_function_name = __webpack_require__(\"b0c0\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.number.constructor.js\nvar es_number_constructor = __webpack_require__(\"a9e3\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.object.assign.js\nvar es_object_assign = __webpack_require__(\"cca6\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.object.keys.js\nvar es_object_keys = __webpack_require__(\"b64b\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.regexp.constructor.js\nvar es_regexp_constructor = __webpack_require__(\"4d63\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.regexp.exec.js\nvar es_regexp_exec = __webpack_require__(\"ac1f\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.regexp.to-string.js\nvar es_regexp_to_string = __webpack_require__(\"25f0\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.includes.js\nvar es_string_includes = __webpack_require__(\"2532\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.match.js\nvar es_string_match = __webpack_require__(\"466d\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.replace.js\nvar es_string_replace = __webpack_require__(\"5319\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.split.js\nvar es_string_split = __webpack_require__(\"1276\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.trim.js\nvar es_string_trim = __webpack_require__(\"498a\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/web.dom-collections.for-each.js\nvar web_dom_collections_for_each = __webpack_require__(\"159b\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.symbol.js\nvar es_symbol = __webpack_require__(\"a4d3\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.symbol.description.js\nvar es_symbol_description = __webpack_require__(\"e01a\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.symbol.iterator.js\nvar es_symbol_iterator = __webpack_require__(\"d28b\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.iterator.js\nvar es_array_iterator = __webpack_require__(\"e260\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.object.to-string.js\nvar es_object_to_string = __webpack_require__(\"d3b7\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.iterator.js\nvar es_string_iterator = __webpack_require__(\"3ca3\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/web.dom-collections.iterator.js\nvar web_dom_collections_iterator = __webpack_require__(\"ddb0\");\n\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/typeof.js\n\n\n\n\n\n\n\nfunction _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n    _typeof = function _typeof(obj) {\n      return typeof obj;\n    };\n  } else {\n    _typeof = function _typeof(obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n  }\n\n  return _typeof(obj);\n}\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.from.js\nvar es_array_from = __webpack_require__(\"a630\");\n\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js\nfunction _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n\n  for (var i = 0, arr2 = new Array(len); i < len; i++) {\n    arr2[i] = arr[i];\n  }\n\n  return arr2;\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js\n\n\n\n\n\n\n\nfunction _unsupportedIterableToArray(o, minLen) {\n  if (!o) return;\n  if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n  var n = Object.prototype.toString.call(o).slice(8, -1);\n  if (n === \"Object\" && o.constructor) n = o.constructor.name;\n  if (n === \"Map\" || n === \"Set\") return Array.from(o);\n  if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js\n\n\n\n\n\n\n\n\nfunction _createForOfIteratorHelper(o) {\n  if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) {\n    if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) {\n      var i = 0;\n\n      var F = function F() {};\n\n      return {\n        s: F,\n        n: function n() {\n          if (i >= o.length) return {\n            done: true\n          };\n          return {\n            done: false,\n            value: o[i++]\n          };\n        },\n        e: function e(_e) {\n          throw _e;\n        },\n        f: F\n      };\n    }\n\n    throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n  }\n\n  var it,\n      normalCompletion = true,\n      didErr = false,\n      err;\n  return {\n    s: function s() {\n      it = o[Symbol.iterator]();\n    },\n    n: function n() {\n      var step = it.next();\n      normalCompletion = step.done;\n      return step;\n    },\n    e: function e(_e2) {\n      didErr = true;\n      err = _e2;\n    },\n    f: function f() {\n      try {\n        if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n      } finally {\n        if (didErr) throw err;\n      }\n    }\n  };\n}\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/vue-timepicker.vue?vue&type=script&lang=js&\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar CONFIG = {\n  HOUR_TOKENS: ['HH', 'H', 'hh', 'h', 'kk', 'k'],\n  MINUTE_TOKENS: ['mm', 'm'],\n  SECOND_TOKENS: ['ss', 's'],\n  APM_TOKENS: ['A', 'a'],\n  BASIC_TYPES: ['hour', 'minute', 'second', 'apm']\n};\nvar DEFAULT_OPTIONS = {\n  format: 'HH:mm',\n  minuteInterval: 1,\n  secondInterval: 1,\n  hourRange: null,\n  minuteRange: null,\n  secondRange: null,\n  hideDisabledHours: false,\n  hideDisabledMinutes: false,\n  hideDisabledSeconds: false,\n  hideDisabledItems: false,\n  hideDropdown: false,\n  blurDelay: 300,\n  manualInputTimeout: 1000,\n  dropOffsetHeight: 160\n};\n/* harmony default export */ var vue_timepickervue_type_script_lang_js_ = ({\n  name: 'VueTimepicker',\n  props: {\n    value: {\n      type: [Object, String]\n    },\n    format: {\n      type: String\n    },\n    minuteInterval: {\n      type: [Number, String]\n    },\n    secondInterval: {\n      type: [Number, String]\n    },\n    hourRange: {\n      type: Array\n    },\n    minuteRange: {\n      type: Array\n    },\n    secondRange: {\n      type: Array\n    },\n    hideDisabledHours: {\n      type: Boolean,\n      default: false\n    },\n    hideDisabledMinutes: {\n      type: Boolean,\n      default: false\n    },\n    hideDisabledSeconds: {\n      type: Boolean,\n      default: false\n    },\n    hideDisabledItems: {\n      type: Boolean,\n      default: false\n    },\n    hideClearButton: {\n      type: Boolean,\n      default: false\n    },\n    disabled: {\n      type: Boolean,\n      default: false\n    },\n    closeOnComplete: {\n      type: Boolean,\n      default: false\n    },\n    id: {\n      type: String\n    },\n    name: {\n      type: String\n    },\n    inputClass: {\n      type: [String, Object, Array]\n    },\n    placeholder: {\n      type: String\n    },\n    tabindex: {\n      type: [Number, String],\n      default: 0\n    },\n    inputWidth: {\n      type: String\n    },\n    autocomplete: {\n      type: String,\n      default: 'off'\n    },\n    hourLabel: {\n      type: String\n    },\n    minuteLabel: {\n      type: String\n    },\n    secondLabel: {\n      type: String\n    },\n    apmLabel: {\n      type: String\n    },\n    amText: {\n      type: String\n    },\n    pmText: {\n      type: String\n    },\n    blurDelay: {\n      type: [Number, String]\n    },\n    advancedKeyboard: {\n      type: Boolean,\n      default: false\n    },\n    lazy: {\n      type: Boolean,\n      default: false\n    },\n    autoScroll: {\n      type: Boolean,\n      default: false\n    },\n    dropDirection: {\n      type: String,\n      default: 'down'\n    },\n    dropOffsetHeight: {\n      type: [Number, String]\n    },\n    containerId: {\n      type: String\n    },\n    appendToBody: {\n      type: Boolean,\n      default: false\n    },\n    manualInput: {\n      type: Boolean,\n      default: false\n    },\n    manualInputTimeout: {\n      type: [Number, String]\n    },\n    hideDropdown: {\n      type: Boolean,\n      default: false\n    },\n    fixedDropdownButton: {\n      type: Boolean,\n      default: false\n    },\n    debugMode: {\n      type: Boolean,\n      default: false\n    }\n  },\n  data: function data() {\n    return {\n      timeValue: {},\n      hours: [],\n      minutes: [],\n      seconds: [],\n      apms: [],\n      isActive: false,\n      showDropdown: false,\n      isFocusing: false,\n      debounceTimer: undefined,\n      hourType: 'HH',\n      minuteType: 'mm',\n      secondType: '',\n      apmType: '',\n      hour: '',\n      minute: '',\n      second: '',\n      apm: '',\n      fullValues: undefined,\n      bakDisplayTime: undefined,\n      doClearApmChecking: false,\n      selectionTimer: undefined,\n      kbInputTimer: undefined,\n      kbInputLog: '',\n      bakCurrentPos: undefined,\n      forceDropOnTop: false\n    };\n  },\n  computed: {\n    opts: function opts() {\n      var options = Object.assign({}, DEFAULT_OPTIONS);\n\n      if (this.format && this.format.length) {\n        options.format = String(this.format);\n      }\n\n      if (this.isNumber(this.minuteInterval)) {\n        options.minuteInterval = +this.minuteInterval;\n      } // minuteInterval failsafe\n\n\n      if (!options.minuteInterval || options.minuteInterval < 1 || options.minuteInterval > 60) {\n        if (this.debugMode) {\n          if (options.minuteInterval > 60) {\n            this.debugLog(\"\\\"minute-interval\\\" should be less than 60. Current value is \".concat(this.minuteInterval));\n          } else if (options.minuteInterval === 0 || options.minuteInterval < 1) {\n            this.debugLog(\"\\\"minute-interval\\\" should be NO less than 1. Current value is \".concat(this.minuteInterval));\n          }\n        }\n\n        if (options.minuteInterval === 0) {\n          options.minuteInterval = 60;\n        } else {\n          options.minuteInterval = 1;\n        }\n      }\n\n      if (this.isNumber(this.secondInterval)) {\n        options.secondInterval = +this.secondInterval;\n      } // secondInterval failsafe\n\n\n      if (!options.secondInterval || options.secondInterval < 1 || options.secondInterval > 60) {\n        if (this.debugMode) {\n          if (options.secondInterval > 60) {\n            this.debugLog(\"\\\"second-interval\\\" should be less than 60. Current value is \".concat(this.secondInterval));\n          } else if (options.secondInterval === 0 || options.secondInterval < 1) {\n            this.debugLog(\"\\\"second-interval\\\" should be NO less than 1. Current value is \".concat(this.secondInterval));\n          }\n        }\n\n        if (options.secondInterval === 0) {\n          options.secondInterval = 60;\n        } else {\n          options.secondInterval = 1;\n        }\n      }\n\n      if (this.hourRange && Array.isArray(this.hourRange)) {\n        options.hourRange = JSON.parse(JSON.stringify(this.hourRange));\n\n        if (!this.hourRange.length && this.debugMode) {\n          this.debugLog('The \"hour-range\" array is empty (length === 0)');\n        }\n      }\n\n      if (this.minuteRange && Array.isArray(this.minuteRange)) {\n        options.minuteRange = JSON.parse(JSON.stringify(this.minuteRange));\n\n        if (!this.minuteRange.length && this.debugMode) {\n          this.debugLog('The \"minute-range\" array is empty (length === 0)');\n        }\n      }\n\n      if (this.secondRange && Array.isArray(this.secondRange)) {\n        options.secondRange = JSON.parse(JSON.stringify(this.secondRange));\n\n        if (!this.secondRange.length && this.debugMode) {\n          this.debugLog('The \"second-range\" array is empty (length === 0)');\n        }\n      }\n\n      if (this.hideDisabledItems) {\n        options.hideDisabledItems = true;\n      }\n\n      if (this.hideDisabledHours || this.hideDisabledItems) {\n        options.hideDisabledHours = true;\n      }\n\n      if (this.hideDisabledMinutes || this.hideDisabledItems) {\n        options.hideDisabledMinutes = true;\n      }\n\n      if (this.hideDisabledSeconds || this.hideDisabledItems) {\n        options.hideDisabledSeconds = true;\n      }\n\n      if (this.hideDropdown) {\n        if (this.manualInput) {\n          options.hideDropdown = true;\n        } else if (this.debugMode) {\n          this.debugLog('\"hide-dropdown\" only works with \"manual-input\" mode');\n        }\n      }\n\n      if (this.blurDelay && +this.blurDelay > 0) {\n        options.blurDelay = +this.blurDelay;\n      }\n\n      if (this.manualInputTimeout && +this.manualInputTimeout > 0) {\n        options.manualInputTimeout = +this.manualInputTimeout;\n      }\n\n      if (this.dropOffsetHeight && +this.dropOffsetHeight > 0) {\n        options.dropOffsetHeight = +this.dropOffsetHeight;\n      }\n\n      return options;\n    },\n    useStringValue: function useStringValue() {\n      return typeof this.value === 'string';\n    },\n    formatString: function formatString() {\n      return this.opts.format || DEFAULT_OPTIONS.format;\n    },\n    inUse: function inUse() {\n      var _this = this;\n\n      var typesInUse = CONFIG.BASIC_TYPES.filter(function (type) {\n        return _this.getTokenByType(type);\n      }); // Sort types and tokens by their sequence in the \"format\" string\n\n      typesInUse.sort(function (l, r) {\n        return _this.formatString.indexOf(_this.getTokenByType(l) || null) - _this.formatString.indexOf(_this.getTokenByType(r) || null);\n      });\n      var tokensInUse = typesInUse.map(function (type) {\n        return _this.getTokenByType(type);\n      });\n      return {\n        hour: !!this.hourType,\n        minute: !!this.minuteType,\n        second: !!this.secondType,\n        apm: !!this.apmType,\n        types: typesInUse || [],\n        tokens: tokensInUse || []\n      };\n    },\n    displayTime: function displayTime() {\n      var formatString = String(this.formatString);\n\n      if (this.hour) {\n        formatString = formatString.replace(new RegExp(this.hourType, 'g'), this.hour);\n      }\n\n      if (this.minute) {\n        formatString = formatString.replace(new RegExp(this.minuteType, 'g'), this.minute);\n      }\n\n      if (this.second && this.secondType) {\n        formatString = formatString.replace(new RegExp(this.secondType, 'g'), this.second);\n      }\n\n      if (this.apm && this.apmType) {\n        formatString = formatString.replace(new RegExp(this.apmType, 'g'), this.apm);\n      }\n\n      return formatString;\n    },\n    customDisplayTime: function customDisplayTime() {\n      if (!this.amText && !this.pmText) {\n        return this.displayTime;\n      }\n\n      return this.displayTime.replace(new RegExp(this.apm, 'g'), this.apmDisplayText(this.apm));\n    },\n    inputIsEmpty: function inputIsEmpty() {\n      return this.formatString === this.displayTime;\n    },\n    allValueSelected: function allValueSelected() {\n      if (this.inUse.hour && !this.hour || this.inUse.minute && !this.minute || this.inUse.second && !this.second || this.inUse.apm && !this.apm) {\n        return false;\n      }\n\n      return true;\n    },\n    columnsSequence: function columnsSequence() {\n      return this.inUse.types.map(function (type) {\n        return type;\n      }) || [];\n    },\n    showClearBtn: function showClearBtn() {\n      if (this.hideClearButton || this.disabled) {\n        return false;\n      }\n\n      return !this.inputIsEmpty;\n    },\n    showDropdownBtn: function showDropdownBtn() {\n      if (this.fixedDropdownButton) {\n        return true;\n      }\n\n      if (this.opts.hideDropdown && this.isActive && !this.showDropdown) {\n        return true;\n      }\n\n      return false;\n    },\n    baseOn12Hours: function baseOn12Hours() {\n      return this.hourType === 'h' || this.hourType === 'hh';\n    },\n    hourRangeIn24HrFormat: function hourRangeIn24HrFormat() {\n      var _this2 = this;\n\n      if (!this.hourType || !this.opts.hourRange) {\n        return false;\n      }\n\n      if (!this.opts.hourRange.length) {\n        return [];\n      }\n\n      var range = [];\n      this.opts.hourRange.forEach(function (value) {\n        if (value instanceof Array) {\n          if (value.length > 2 && _this2.debugMode) {\n            _this2.debugLog(\"Nested array within \\\"hour-range\\\" must contain no more than two items. Only the first two items of \".concat(JSON.stringify(value), \" will be taken into account.\"));\n          }\n\n          var start = value[0];\n          var end = value[1] || value[0];\n\n          if (_this2.is12hRange(start)) {\n            start = _this2.translate12hRange(start);\n          }\n\n          if (_this2.is12hRange(end)) {\n            end = _this2.translate12hRange(end);\n          }\n\n          for (var i = +start; i <= +end; i++) {\n            if (i < 0 || i > 24) {\n              continue;\n            }\n\n            if (!range.includes(i)) {\n              range.push(i);\n            }\n          }\n        } else {\n          if (_this2.is12hRange(value)) {\n            value = _this2.translate12hRange(value);\n          } else {\n            value = +value;\n          }\n\n          if (value < 0 || value > 24) {\n            return;\n          }\n\n          if (!range.includes(value)) {\n            range.push(value);\n          }\n        }\n      });\n      range.sort(function (l, r) {\n        return l - r;\n      });\n      return range;\n    },\n    restrictedHourRange: function restrictedHourRange() {\n      // No restriction\n      if (!this.hourRangeIn24HrFormat) {\n        return false;\n      } // 12-Hour\n\n\n      if (this.baseOn12Hours) {\n        var range = this.hourRangeIn24HrFormat.map(function (value) {\n          if (value === 12) {\n            return '12p';\n          } else if (value === 24 || value === 0) {\n            return '12a';\n          }\n\n          return value > 12 ? \"\".concat(value % 12, \"p\") : \"\".concat(value, \"a\");\n        });\n        return range;\n      } // 24-Hour\n\n\n      return this.hourRangeIn24HrFormat;\n    },\n    validHoursList: function validHoursList() {\n      var _this3 = this;\n\n      if (!this.manualInput) {\n        return false;\n      }\n\n      if (this.restrictedHourRange) {\n        var list = [];\n\n        if (this.baseOn12Hours) {\n          list = this.restrictedHourRange.map(function (hr) {\n            var l = hr.substr(0, hr.length - 1);\n            var r = hr.substr(-1);\n            return \"\".concat(_this3.formatValue(_this3.hourType, l)).concat(r);\n          });\n          var am12Index = list.indexOf('12a');\n\n          if (am12Index > 0) {\n            // Make '12a' the first item in h/hh\n            list.unshift(list.splice(am12Index, 1)[0]);\n          }\n\n          return list;\n        }\n\n        list = this.restrictedHourRange.map(function (hr) {\n          return _this3.formatValue(_this3.hourType, hr);\n        });\n\n        if (list.length > 1 && list[0] && list[0] === '24') {\n          // Make '24' the last item in k/kk\n          list.push(list.shift());\n        }\n\n        return list;\n      }\n\n      if (this.baseOn12Hours) {\n        return [].concat([], this.hours.map(function (hr) {\n          return \"\".concat(hr, \"a\");\n        }), this.hours.map(function (hr) {\n          return \"\".concat(hr, \"p\");\n        }));\n      }\n\n      return this.hours;\n    },\n    has: function has() {\n      var result = {\n        customApmText: false\n      };\n      var apmEnabled = !!this.apmType;\n\n      if (apmEnabled && this.hourRangeIn24HrFormat && this.hourRangeIn24HrFormat.length) {\n        var range = [].concat([], this.hourRangeIn24HrFormat);\n        result.am = range.some(function (value) {\n          return value < 12 || value === 24;\n        });\n        result.pm = range.some(function (value) {\n          return value >= 12 && value < 24;\n        });\n      } else {\n        result.am = apmEnabled;\n        result.pm = apmEnabled;\n      }\n\n      if (this.amText && this.amText.length || this.pmText && this.pmText.length) {\n        result.customApmText = true;\n      }\n\n      return result;\n    },\n    minuteRangeList: function minuteRangeList() {\n      if (!this.minuteType || !this.opts.minuteRange) {\n        return false;\n      }\n\n      if (!this.opts.minuteRange.length) {\n        return [];\n      }\n\n      return this.renderRangeList(this.opts.minuteRange, 'minute');\n    },\n    secondRangeList: function secondRangeList() {\n      if (!this.secondType || !this.opts.secondRange) {\n        return false;\n      }\n\n      if (!this.opts.secondRange.length) {\n        return [];\n      }\n\n      return this.renderRangeList(this.opts.secondRange, 'second');\n    },\n    hourLabelText: function hourLabelText() {\n      return this.hourLabel || this.hourType;\n    },\n    minuteLabelText: function minuteLabelText() {\n      return this.minuteLabel || this.minuteType;\n    },\n    secondLabelText: function secondLabelText() {\n      return this.secondLabel || this.secondType;\n    },\n    apmLabelText: function apmLabelText() {\n      return this.apmLabel || this.apmType;\n    },\n    inputWidthStyle: function inputWidthStyle() {\n      if (!this.inputWidth || !this.inputWidth.length) {\n        return;\n      }\n\n      return {\n        width: this.inputWidth\n      };\n    },\n    tokenRegexBase: function tokenRegexBase() {\n      return this.inUse.tokens.join('|');\n    },\n    tokenChunks: function tokenChunks() {\n      if (!this.manualInput && !this.useStringValue) {\n        return false;\n      }\n\n      var formatString = String(this.formatString);\n      var tokensRegxStr = \"(\".concat(this.tokenRegexBase, \")+?\");\n      var tokensMatchAll = this.getMatchAllByRegex(formatString, tokensRegxStr);\n      var tokenChunks = [];\n\n      var _iterator = _createForOfIteratorHelper(tokensMatchAll),\n          _step;\n\n      try {\n        for (_iterator.s(); !(_step = _iterator.n()).done;) {\n          var tkMatch = _step.value;\n          var rawToken = tkMatch[0];\n          var tokenMatchItem = {\n            index: tkMatch.index,\n            token: rawToken,\n            type: this.getTokenType(rawToken),\n            needsCalibrate: rawToken.length < 2,\n            len: (rawToken || '').length\n          };\n          tokenChunks.push(tokenMatchItem);\n        }\n      } catch (err) {\n        _iterator.e(err);\n      } finally {\n        _iterator.f();\n      }\n\n      return tokenChunks;\n    },\n    needsPosCalibrate: function needsPosCalibrate() {\n      if (!this.manualInput) {\n        return false;\n      }\n\n      return this.tokenChunks.some(function (chk) {\n        return chk.needsCalibrate;\n      });\n    },\n    tokenChunksPos: function tokenChunksPos() {\n      var _this4 = this;\n\n      if (!this.manualInput) {\n        return false;\n      }\n\n      if (!this.needsPosCalibrate) {\n        return this.tokenChunks.map(function (chk) {\n          return {\n            token: chk.token,\n            type: chk.type,\n            start: chk.index,\n            end: chk.index + chk.len\n          };\n        });\n      }\n\n      var list = [];\n      var calibrateLen = 0;\n      this.tokenChunks.forEach(function (chk) {\n        var chunkCurrentLen; // Adjust for customized AM/PM text\n\n        if (chk.type === 'apm' && _this4.has.customApmText) {\n          if (_this4.apm && _this4.apm.length) {\n            var customApmText = _this4.apm.toLowerCase() === 'am' ? _this4.amText : _this4.pmText;\n            chunkCurrentLen = customApmText && customApmText.length ? customApmText.length : chk.len;\n          } else {\n            chunkCurrentLen = chk.len;\n          } // Others\n\n        } else {\n          chunkCurrentLen = _this4[chk.type] && _this4[chk.type].length ? _this4[chk.type].length : chk.len;\n        }\n\n        list.push({\n          token: chk.token,\n          type: chk.type,\n          start: chk.index + calibrateLen,\n          end: chk.index + calibrateLen + chunkCurrentLen\n        });\n\n        if (chk.needsCalibrate && chunkCurrentLen > chk.len) {\n          calibrateLen += chunkCurrentLen - chk.len;\n        }\n      });\n      return list;\n    },\n    invalidValues: function invalidValues() {\n      if (this.inputIsEmpty) {\n        return [];\n      }\n\n      if (!this.restrictedHourRange && !this.minuteRangeList && !this.secondRangeList && this.opts.minuteInterval === 1 && this.opts.secondInterval === 1) {\n        return [];\n      }\n\n      var result = [];\n\n      if (this.inUse.hour && !this.isEmptyValue(this.hourType, this.hour) && (!this.isValidValue(this.hourType, this.hour) || this.isDisabled('hour', this.hour))) {\n        result.push('hour');\n      }\n\n      if (this.inUse.minute && !this.isEmptyValue(this.minuteType, this.minute) && (!this.isValidValue(this.minuteType, this.minute) || this.isDisabled('minute', this.minute) || this.notInInterval('minute', this.minute))) {\n        result.push('minute');\n      }\n\n      if (this.inUse.second && !this.isEmptyValue(this.secondType, this.second) && (!this.isValidValue(this.secondType, this.second) || this.isDisabled('second', this.second) || this.notInInterval('second', this.second))) {\n        result.push('second');\n      }\n\n      if (this.inUse.apm && !this.isEmptyValue(this.apmType, this.apm) && (!this.isValidValue(this.apmType, this.apm) || this.isDisabled('apm', this.apm))) {\n        result.push('apm');\n      }\n\n      if (result.length) {\n        return result;\n      }\n\n      return [];\n    },\n    hasInvalidInput: function hasInvalidInput() {\n      return Boolean(this.invalidValues && this.invalidValues.length);\n    },\n    autoDirectionEnabled: function autoDirectionEnabled() {\n      return this.dropDirection === 'auto';\n    },\n    dropdownDirClass: function dropdownDirClass() {\n      if (this.autoDirectionEnabled) {\n        return this.forceDropOnTop ? 'drop-up' : 'drop-down';\n      }\n\n      return this.dropDirection === 'up' ? 'drop-up' : 'drop-down';\n    }\n  },\n  watch: {\n    'opts.format': function optsFormat(newValue) {\n      this.renderFormat(newValue);\n    },\n    'opts.minuteInterval': function optsMinuteInterval(newInteval) {\n      this.renderList('minute', newInteval);\n    },\n    'opts.secondInterval': function optsSecondInterval(newInteval) {\n      this.renderList('second', newInteval);\n    },\n    value: {\n      deep: true,\n      handler: function handler() {\n        this.readValues();\n      }\n    },\n    displayTime: function displayTime() {\n      this.fillValues();\n    },\n    disabled: function disabled(toDisabled) {\n      if (toDisabled) {\n        // Force close dropdown and reset status when disabled\n        if (this.isActive) {\n          this.isActive = false;\n        }\n\n        if (this.showDropdown) {\n          this.showDropdown = false;\n        }\n      }\n    },\n    'invalidValues.length': function invalidValuesLength(newLength, oldLength) {\n      if (newLength && newLength >= 1) {\n        this.$emit('error', this.invalidValues);\n      } else if (oldLength && oldLength >= 1) {\n        this.$emit('error', []);\n      }\n    }\n  },\n  methods: {\n    formatValue: function formatValue(token, i) {\n      if (!this.isNumber(i)) {\n        return '';\n      }\n\n      i = +i;\n\n      switch (token) {\n        case 'H':\n        case 'h':\n        case 'k':\n        case 'm':\n        case 's':\n          if (['h', 'k'].includes(token) && i === 0) {\n            return token === 'k' ? '24' : '12';\n          }\n\n          return String(i);\n\n        case 'HH':\n        case 'mm':\n        case 'ss':\n        case 'hh':\n        case 'kk':\n          if (['hh', 'kk'].includes(token) && i === 0) {\n            return token === 'kk' ? '24' : '12';\n          }\n\n          return i < 10 ? \"0\".concat(i) : String(i);\n\n        default:\n          return '';\n      }\n    },\n    checkAcceptingType: function checkAcceptingType(validValues, formatString) {\n      if (!validValues || !formatString || !formatString.length) {\n        return '';\n      }\n\n      for (var i = 0; i < validValues.length; i++) {\n        if (formatString.indexOf(validValues[i]) > -1) {\n          return validValues[i];\n        }\n      }\n\n      return '';\n    },\n    renderFormat: function renderFormat(newFormat) {\n      var _this5 = this;\n\n      newFormat = newFormat || this.opts.format || DEFAULT_OPTIONS.format;\n      var hourType = this.checkAcceptingType(CONFIG.HOUR_TOKENS, newFormat);\n      var minuteType = this.checkAcceptingType(CONFIG.MINUTE_TOKENS, newFormat);\n      this.secondType = this.checkAcceptingType(CONFIG.SECOND_TOKENS, newFormat);\n      this.apmType = this.checkAcceptingType(CONFIG.APM_TOKENS, newFormat); // Failsafe checking\n\n      if (!hourType && !minuteType && !this.secondType && !this.apmType) {\n        if (this.debugMode && this.format) {\n          this.debugLog(\"No valid tokens found in your defined \\\"format\\\" string \\\"\".concat(this.format, \"\\\". Fallback to the default \\\"HH:mm\\\" format.\"));\n        }\n\n        hourType = 'HH';\n        minuteType = 'mm';\n      }\n\n      this.hourType = hourType;\n      this.minuteType = minuteType;\n      this.hourType ? this.renderHoursList() : this.hours = [];\n      this.minuteType ? this.renderList('minute') : this.minutes = [];\n      this.secondType ? this.renderList('second') : this.seconds = [];\n      this.apmType ? this.renderApmList() : this.apms = [];\n      this.$nextTick(function () {\n        _this5.readValues();\n      });\n    },\n    renderHoursList: function renderHoursList() {\n      var hoursCount = this.baseOn12Hours ? 12 : 24;\n      var hours = [];\n\n      for (var i = 0; i < hoursCount; i++) {\n        if (this.hourType === 'k' || this.hourType === 'kk') {\n          hours.push(this.formatValue(this.hourType, i + 1));\n        } else {\n          hours.push(this.formatValue(this.hourType, i));\n        }\n      }\n\n      this.hours = hours;\n    },\n    renderList: function renderList(listType, interval) {\n      if (!this.isMinuteOrSecond(listType)) {\n        return;\n      }\n\n      var isMinute = listType === 'minute';\n      interval = interval || (isMinute ? this.opts.minuteInterval || DEFAULT_OPTIONS.minuteInterval : this.opts.secondInterval || DEFAULT_OPTIONS.secondInterval);\n      var result = [];\n\n      for (var i = 0; i < 60; i += interval) {\n        result.push(this.formatValue(isMinute ? this.minuteType : this.secondType, i));\n      }\n\n      isMinute ? this.minutes = result : this.seconds = result;\n    },\n    renderApmList: function renderApmList() {\n      this.apms = this.apmType === 'A' ? ['AM', 'PM'] : ['am', 'pm'];\n    },\n    readValues: function readValues() {\n      if (this.useStringValue) {\n        if (this.debugMode) {\n          this.debugLog(\"Received a string value: \\\"\".concat(this.value, \"\\\"\"));\n        }\n\n        this.readStringValues(this.value);\n      } else {\n        if (this.debugMode) {\n          this.debugLog(\"Received an object value: \\\"\".concat(JSON.stringify(this.value || {}), \"\\\"\"));\n        }\n\n        this.readObjectValues(this.value);\n      }\n    },\n    readObjectValues: function readObjectValues(objValue) {\n      var _this6 = this;\n\n      var timeValue = JSON.parse(JSON.stringify(objValue || {}));\n      var values = Object.keys(timeValue); // Failsafe for empty `v-model` object\n\n      if (values.length === 0) {\n        this.addFallbackValues();\n        return;\n      }\n\n      CONFIG.BASIC_TYPES.forEach(function (type) {\n        var token = _this6.getTokenByType(type);\n\n        if (values.indexOf(token) > -1) {\n          var sanitizedValue = _this6.sanitizedValue(token, timeValue[token]);\n\n          _this6[type] = sanitizedValue;\n          timeValue[token] = sanitizedValue;\n        } else {\n          _this6[type] = '';\n        }\n      });\n      this.timeValue = timeValue;\n    },\n    getMatchAllByRegex: function getMatchAllByRegex(testString, regexString) {\n      var str = 'polyfillTest';\n      var needsPolyfill = Boolean(!str.matchAll || typeof str.matchAll !== 'function');\n      return needsPolyfill ? this.polyfillMatchAll(testString, regexString) : testString.matchAll(new RegExp(regexString, 'g'));\n    },\n    readStringValues: function readStringValues(stringValue) {\n      var _this7 = this;\n\n      // Failsafe for empty `v-model` string\n      if (!stringValue || !stringValue.length) {\n        this.addFallbackValues();\n        return;\n      }\n\n      var formatString = String(this.formatString);\n      var tokensRegxStr = \"(\".concat(this.tokenRegexBase, \")+?\");\n      var othersRegxStr = \"[^(\".concat(this.tokenRegexBase, \")]+\");\n      var tokensMatchAll = this.getMatchAllByRegex(formatString, tokensRegxStr);\n      var othersMatchAll = this.getMatchAllByRegex(formatString, othersRegxStr);\n      var chunks = [];\n      var tokenChunks = [];\n\n      var _iterator2 = _createForOfIteratorHelper(tokensMatchAll),\n          _step2;\n\n      try {\n        for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n          var tkMatch = _step2.value;\n          var tokenMatchItem = {\n            index: tkMatch.index,\n            token: tkMatch[0],\n            isValueToken: true\n          };\n          chunks.push(tokenMatchItem);\n          tokenChunks.push(tokenMatchItem);\n        }\n      } catch (err) {\n        _iterator2.e(err);\n      } finally {\n        _iterator2.f();\n      }\n\n      var _iterator3 = _createForOfIteratorHelper(othersMatchAll),\n          _step3;\n\n      try {\n        for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n          var otMatch = _step3.value;\n          chunks.push({\n            index: otMatch.index,\n            token: otMatch[0]\n          });\n        }\n      } catch (err) {\n        _iterator3.e(err);\n      } finally {\n        _iterator3.f();\n      }\n\n      chunks.sort(function (l, r) {\n        return l.index < r.index ? -1 : 1;\n      });\n      var regexCombo = '';\n      chunks.forEach(function (chunk) {\n        if (chunk.isValueToken) {\n          var tokenRegex = _this7.getTokenRegex(chunk.token) || '';\n          regexCombo += tokenRegex;\n        } else {\n          var safeChars = chunk.token.replace(/\\\\{0}(\\*|\\?|\\.|\\+)/g, '\\\\$1');\n          regexCombo += \"(?:\".concat(safeChars, \")\");\n        }\n      });\n      var comboReg = new RegExp(regexCombo); // Do test before match\n\n      if (comboReg.test(stringValue)) {\n        var matchResults = stringValue.match(new RegExp(regexCombo));\n        var valueResults = matchResults.slice(1, tokenChunks.length + 1);\n        var timeValue = {};\n        valueResults.forEach(function (value, vrIndex) {\n          if (tokenChunks[vrIndex]) {\n            var targetToken = tokenChunks[vrIndex].token;\n            timeValue[targetToken] = _this7.setValueFromString(value, targetToken);\n          }\n        });\n        this.timeValue = timeValue;\n\n        if (this.debugMode) {\n          var tokenChunksForLog = tokenChunks.map(function (tChunk) {\n            return tChunk && tChunk.token;\n          });\n          this.debugLog(\"Successfully parsed values \".concat(JSON.stringify(valueResults), \"\\nfor \").concat(JSON.stringify(tokenChunksForLog), \"\\nin format pattern '\").concat(this.formatString, \"'\"));\n        }\n      } else {\n        if (this.debugMode) {\n          this.debugLog(\"The input string in \\\"v-model\\\" does NOT match the \\\"format\\\" pattern\\nformat: \".concat(this.formatString, \"\\nv-model: \").concat(stringValue));\n        }\n      }\n    },\n    polyfillMatchAll: function polyfillMatchAll(targetString, regxStr) {\n      var matchesList = targetString.match(new RegExp(regxStr, 'g'));\n      var result = [];\n      var indicesReg = [];\n\n      if (matchesList && matchesList.length) {\n        matchesList.forEach(function (matchedItem) {\n          var existIndex = indicesReg.findIndex(function (idxItem) {\n            return idxItem.str === matchedItem;\n          });\n          var index;\n\n          if (existIndex >= 0) {\n            if (indicesReg[existIndex] && indicesReg[existIndex].regex) {\n              index = indicesReg[existIndex].regex.exec(targetString).index;\n            }\n          } else {\n            var itemIndicesRegex = new RegExp(matchedItem, 'g');\n            index = itemIndicesRegex.exec(targetString).index;\n            indicesReg.push({\n              str: String(matchedItem),\n              regex: itemIndicesRegex\n            });\n          }\n\n          result.push({\n            0: String(matchedItem),\n            index: index\n          });\n        });\n      }\n\n      return result;\n    },\n    addFallbackValues: function addFallbackValues() {\n      var _this8 = this;\n\n      var timeValue = {};\n      this.inUse.types.forEach(function (type) {\n        timeValue[_this8.getTokenByType(type)] = '';\n      });\n      this.timeValue = timeValue;\n    },\n    setValueFromString: function setValueFromString(parsedValue, token) {\n      if (!token || !parsedValue) {\n        return '';\n      }\n\n      var tokenType = this.getTokenType(token);\n\n      if (!tokenType || !tokenType.length) {\n        return '';\n      }\n\n      var stdValue = parsedValue !== this.getTokenByType(tokenType) ? parsedValue : '';\n      this[tokenType] = stdValue;\n      return stdValue;\n    },\n    fillValues: function fillValues(forceEmit) {\n      var _this9 = this;\n\n      var fullValues = {};\n      var baseHour = this.hour;\n      var baseHourType = this.hourType;\n      var apmValue; // Hour type or hour value is NOT set in the \"format\" string\n\n      if (!baseHourType || !this.isNumber(baseHour)) {\n        CONFIG.HOUR_TOKENS.forEach(function (token) {\n          return fullValues[token] = '';\n        });\n        apmValue = this.lowerCasedApm(this.apm || '');\n        fullValues.a = apmValue;\n        fullValues.A = apmValue.toUpperCase(); // Both Hour type and value are set\n      } else {\n        var hourValue = +baseHour;\n\n        var _apmValue = this.baseOn12Hours && this.apm ? this.lowerCasedApm(this.apm) : false;\n\n        CONFIG.HOUR_TOKENS.forEach(function (token) {\n          if (token === baseHourType) {\n            fullValues[token] = baseHour;\n            return;\n          }\n\n          var value;\n          var apm;\n\n          switch (token) {\n            case 'H':\n            case 'HH':\n            case 'k':\n            case 'kk':\n              if (_this9.baseOn12Hours) {\n                if (_apmValue === 'pm') {\n                  value = hourValue < 12 ? hourValue + 12 : hourValue;\n                } else if (['k', 'kk'].includes(token)) {\n                  value = hourValue === 12 ? 24 : hourValue;\n                } else {\n                  value = hourValue % 12;\n                }\n              } else {\n                if (['k', 'kk'].includes(token)) {\n                  value = hourValue === 0 ? 24 : hourValue;\n                } else {\n                  value = hourValue % 24;\n                }\n              }\n\n              fullValues[token] = _this9.formatValue(token, value);\n              break;\n\n            case 'h':\n            case 'hh':\n              // h <-> hh\n              if (_this9.baseOn12Hours) {\n                value = hourValue;\n                apm = _apmValue || ''; // Read from other hour formats\n              } else {\n                if (hourValue > 11 && hourValue < 24) {\n                  apm = 'pm';\n                  value = hourValue === 12 ? 12 : hourValue % 12;\n                } else {\n                  apm = 'am';\n                  value = hourValue % 12 === 0 ? 12 : hourValue;\n                }\n              }\n\n              fullValues[token] = _this9.formatValue(token, value);\n              fullValues.a = apm;\n              fullValues.A = apm.toUpperCase();\n              break;\n          }\n        });\n      }\n\n      fullValues.m = this.formatValue('m', this.minute);\n      fullValues.mm = this.formatValue('mm', this.minute);\n      fullValues.s = this.formatValue('s', this.second);\n      fullValues.ss = this.formatValue('ss', this.second);\n      this.fullValues = fullValues; // On lazy mode, emit `input` and `change` events only when:\n      // - The user pick a new value and then close the dropdown\n      // - The user click the (\"x\") clear button\n\n      if (!this.lazy || forceEmit) {\n        this.emitTimeValue();\n      }\n\n      if (this.closeOnComplete && this.allValueSelected && this.showDropdown) {\n        this.toggleActive();\n      }\n    },\n    getFullData: function getFullData() {\n      if (!this.fullValues) {\n        this.fillValues();\n      }\n\n      return {\n        data: JSON.parse(JSON.stringify(this.fullValues)),\n        displayTime: this.inputIsEmpty ? '' : String(this.displayTime)\n      };\n    },\n    emitTimeValue: function emitTimeValue() {\n      if (this.lazy && this.bakDisplayTime === this.displayTime) {\n        if (this.debugMode) {\n          this.debugLog('The value does not change on `lazy` mode. Skip the emitting `input` and `change` event.');\n        }\n\n        return;\n      }\n\n      var fullData = this.getFullData();\n\n      if (this.useStringValue) {\n        this.$emit('input', fullData.displayTime);\n      } else {\n        var fullValues = fullData.data;\n        var tokensInUse = this.inUse.tokens || [];\n        var timeValue = {};\n        tokensInUse.forEach(function (token) {\n          timeValue[token] = fullValues[token] || '';\n        });\n        this.$emit('input', JSON.parse(JSON.stringify(timeValue)));\n      }\n\n      this.$emit('change', fullData);\n    },\n    translate12hRange: function translate12hRange(value) {\n      var valueT = this.match12hRange(value);\n\n      if (+valueT[1] === 12) {\n        return +valueT[1] + (valueT[2].toLowerCase() === 'p' ? 0 : 12);\n      }\n\n      return +valueT[1] + (valueT[2].toLowerCase() === 'p' ? 12 : 0);\n    },\n    isDisabled: function isDisabled(type, value) {\n      if (!this.isBasicType(type) || !this.inUse[type]) {\n        return true;\n      }\n\n      switch (type) {\n        case 'hour':\n          return this.isDisabledHour(value);\n\n        case 'minute':\n        case 'second':\n          if (!this[\"\".concat(type, \"RangeList\")]) {\n            return false;\n          }\n\n          return !this[\"\".concat(type, \"RangeList\")].includes(value);\n\n        case 'apm':\n          if (!this.restrictedHourRange) {\n            return false;\n          }\n\n          return !this.has[this.lowerCasedApm(value)];\n\n        default:\n          return true;\n      }\n    },\n    isDisabledHour: function isDisabledHour(value) {\n      if (!this.restrictedHourRange) {\n        return false;\n      }\n\n      if (this.baseOn12Hours) {\n        if (!this.apm || !this.apm.length) {\n          return false;\n        } else {\n          var token = this.apm.toLowerCase() === 'am' ? 'a' : 'p';\n          return !this.restrictedHourRange.includes(\"\".concat(+value).concat(token));\n        }\n      } // Fallback for 'HH' and 'H hour format with a `hour-range` in a 12-hour form\n\n\n      if ((this.hourType === 'HH' || this.hourType === 'H') && +value === 0 && this.restrictedHourRange.includes(24)) {\n        return false;\n      }\n\n      return !this.restrictedHourRange.includes(+value);\n    },\n    notInInterval: function notInInterval(section, value) {\n      if (!section || !this.isMinuteOrSecond(section)) {\n        return;\n      }\n\n      if (this.opts[\"\".concat(section, \"Interval\")] === 1) {\n        return false;\n      }\n\n      return +value % this.opts[\"\".concat(section, \"Interval\")] !== 0;\n    },\n    renderRangeList: function renderRangeList(rawRange, section) {\n      var _this10 = this;\n\n      if (!rawRange || !section || !this.isMinuteOrSecond(section)) {\n        return [];\n      }\n\n      var range = [];\n      var formatedValue;\n      rawRange.forEach(function (value) {\n        if (value instanceof Array) {\n          if (value.length > 2 && _this10.debugMode) {\n            _this10.debugLog(\"Nested array within \\\"\".concat(section, \"-range\\\" must contain no more than two items. Only the first two items of \").concat(JSON.stringify(value), \" will be taken into account.\"));\n          }\n\n          var start = value[0];\n          var end = value[1] || value[0];\n\n          for (var i = +start; i <= +end; i++) {\n            if (i < 0 || i > 59) {\n              continue;\n            }\n\n            formatedValue = _this10.formatValue(_this10.getTokenByType(section), i);\n\n            if (!range.includes(formatedValue)) {\n              range.push(formatedValue);\n            }\n          }\n        } else {\n          if (+value < 0 || +value > 59) {\n            return;\n          }\n\n          formatedValue = _this10.formatValue(_this10.getTokenByType(section), value);\n\n          if (!range.includes(formatedValue)) {\n            range.push(formatedValue);\n          }\n        }\n      });\n      range.sort(function (l, r) {\n        return l - r;\n      }); // Debug Mode\n\n      if (this.debugMode) {\n        var fullList = (section === 'minute' ? this.minutes : this.seconds) || [];\n        var validItems = fullList.filter(function (item) {\n          return range.includes(item);\n        });\n\n        if (!validItems || !validItems.length) {\n          if (section === 'minute') {\n            this.debugLog(\"The minute list is empty due to the \\\"minute-range\\\" config\\nminute-range: \".concat(JSON.stringify(this.minuteRange), \"\\nminute-interval: \").concat(this.opts.minuteInterval));\n          } else {\n            this.debugLog(\"The second list is empty due to the \\\"second-range\\\" config\\nsecond-range: \".concat(JSON.stringify(this.secondRange), \"\\nsecond-interval: \").concat(this.opts.secondInterval));\n          }\n        }\n      }\n\n      return range;\n    },\n    forceApmSelection: function forceApmSelection() {\n      if (this.manualInput) {\n        // Skip this to allow users to paste a string value from the clipboard in Manual Input mode\n        return;\n      }\n\n      if (this.apmType && !this.apm) {\n        if (this.has.am || this.has.pm) {\n          this.doClearApmChecking = true;\n          var apmValue = this.has.am ? 'am' : 'pm';\n          this.apm = this.apmType === 'A' ? apmValue.toUpperCase() : apmValue;\n        }\n      }\n    },\n    emptyApmSelection: function emptyApmSelection() {\n      if (this.doClearApmChecking && this.hour === '' && this.minute === '' && this.second === '') {\n        this.apm = '';\n      }\n\n      this.doClearApmChecking = false;\n    },\n    apmDisplayText: function apmDisplayText(apmValue) {\n      if (this.amText && this.lowerCasedApm(apmValue) === 'am') {\n        return this.amText;\n      }\n\n      if (this.pmText && this.lowerCasedApm(apmValue) === 'pm') {\n        return this.pmText;\n      }\n\n      return apmValue;\n    },\n    toggleActive: function toggleActive() {\n      var _this11 = this;\n\n      if (this.disabled) {\n        return;\n      }\n\n      this.isActive = !this.isActive;\n\n      if (this.isActive) {\n        this.isFocusing = true;\n\n        if (this.manualInput) {\n          this.$emit('focus');\n        }\n\n        if (!this.opts.hideDropdown) {\n          this.setDropdownState(true);\n        } // Record to check if value did change in the later phase\n\n\n        if (this.lazy) {\n          this.bakDisplayTime = String(this.displayTime || '');\n        }\n\n        if (this.manualInput && !this.inputIsEmpty) {\n          this.$nextTick(function () {\n            if (_this11.$refs.input && _this11.$refs.input.selectionStart === 0 && _this11.$refs.input.selectionEnd === _this11.displayTime.length) {\n              // Select the first slot instead of the whole value string when tabbed in\n              _this11.selectFirstSlot();\n            }\n          });\n        }\n      } else {\n        if (this.showDropdown) {\n          this.setDropdownState(false);\n        } else if (this.manualInput) {\n          this.$emit('blur', this.getFullData());\n        }\n\n        this.isFocusing = false;\n\n        if (this.lazy) {\n          this.fillValues(true);\n          this.bakDisplayTime = undefined;\n        }\n      }\n\n      if (this.restrictedHourRange && this.baseOn12Hours) {\n        this.showDropdown ? this.forceApmSelection() : this.emptyApmSelection();\n      }\n\n      if (this.showDropdown) {\n        this.checkForAutoScroll();\n      }\n    },\n    setDropdownState: function setDropdownState(toShow) {\n      var fromUserClick = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n      if (toShow) {\n        if (this.appendToBody) {\n          this.appendDropdownToBody();\n        }\n\n        this.keepFocusing();\n\n        if (this.autoDirectionEnabled) {\n          this.checkDropDirection();\n        }\n\n        this.showDropdown = true;\n        this.$emit('open');\n\n        if (fromUserClick) {\n          if (this.fixedDropdownButton) {\n            this.isActive = true;\n          }\n\n          this.$emit('blur', this.getFullData());\n          this.checkForAutoScroll();\n        }\n      } else {\n        this.showDropdown = false;\n        this.$emit('close', this.getFullData());\n\n        if (this.appendToBody) {\n          this.removeDropdownFromBody();\n        }\n      }\n    },\n    appendDropdownToBody: function appendDropdownToBody() {\n      var dropdown = this.$refs && this.$refs.dropdown;\n      var body = document.getElementsByTagName('body')[0];\n\n      if (body && dropdown) {\n        window.addEventListener('scroll', this.updateDropdownPos);\n        dropdown.classList.add('vue__time-picker-dropdown');\n        this.updateDropdownPos();\n        body.appendChild(dropdown);\n      }\n    },\n    updateDropdownPos: function updateDropdownPos() {\n      if (!this.appendToBody) {\n        return;\n      }\n\n      var dropdown = this.$refs && this.$refs.dropdown;\n      var body = document.getElementsByTagName('body')[0];\n\n      if (body && dropdown) {\n        var box = this.$el.getBoundingClientRect();\n\n        if (this.dropdownDirClass === 'drop-up') {\n          dropdown.style.bottom = \"\".concat(window.innerHeight - box.y, \"px\");\n          dropdown.style.top = 'auto';\n        } else {\n          dropdown.style.top = \"\".concat(box.y + box.height, \"px\");\n          dropdown.style.bottom = 'auto';\n        }\n\n        dropdown.style.left = \"\".concat(box.x, \"px\");\n      }\n    },\n    removeDropdownFromBody: function removeDropdownFromBody() {\n      var dropdown = this.$refs && this.$refs.dropdown;\n      var body = document.getElementsByTagName('body')[0];\n\n      if (body && dropdown && body.contains(dropdown)) {\n        body.removeChild(dropdown);\n      }\n\n      if (dropdown) {\n        dropdown.classList.remove('vue__time-picker-dropdown');\n        dropdown.style.top = '';\n        dropdown.style.bottom = '';\n        dropdown.style.left = '';\n        this.$el.appendChild(dropdown);\n      }\n\n      window.removeEventListener('scroll', this.updateDropdownPos);\n    },\n    blurEvent: function blurEvent() {\n      if (this.manualInput && !this.opts.hideDropdown) {\n        // hideDropdown's `blur` event is handled somewhere else\n        this.$emit('blur', this.getFullData());\n      }\n    },\n    select: function select(type, value) {\n      if (this.isBasicType(type) && !this.isDisabled(type, value)) {\n        this[type] = value;\n\n        if (this.doClearApmChecking) {\n          this.doClearApmChecking = false;\n        }\n      }\n    },\n    clearTime: function clearTime() {\n      if (this.disabled) {\n        return;\n      }\n\n      this.hour = '';\n      this.minute = '';\n      this.second = '';\n      this.apm = '';\n\n      if (this.manualInput && this.$refs && this.$refs.input && this.$refs.input.value.length) {\n        this.$refs.input.value = '';\n      }\n\n      if (this.lazy) {\n        this.fillValues(true);\n      }\n    },\n    //\n    // Auto-Scroll\n    //\n    checkForAutoScroll: function checkForAutoScroll() {\n      var _this12 = this;\n\n      if (this.inputIsEmpty) {\n        return;\n      }\n\n      if (this.autoScroll) {\n        this.$nextTick(function () {\n          _this12.scrollToSelectedValues();\n        });\n      } else if (this.advancedKeyboard) {\n        // Auto-focus on selected value in the first column for advanced-keyboard\n        this.$nextTick(function () {\n          var firstColumn = _this12.inUse.types[0];\n\n          _this12.scrollToSelected(firstColumn, true);\n        });\n      }\n    },\n    scrollToSelected: function scrollToSelected(column) {\n      var allowFallback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n      if (!this.timeValue || this.inputIsEmpty) {\n        return;\n      }\n\n      var targetList;\n\n      if (this.appendToBody && this.$refs && this.$refs.dropdown) {\n        targetList = this.$refs.dropdown.querySelectorAll(\"ul.\".concat(column, \"s\"))[0];\n      } else {\n        targetList = this.$el.querySelectorAll(\"ul.\".concat(column, \"s\"))[0];\n      }\n\n      var targetValue = this.activeItemInCol(column)[0];\n\n      if (!targetValue && allowFallback) {\n        // No value selected in the target column, fallback to the first found valid item\n        targetValue = this.validItemsInCol(column)[0];\n      }\n\n      if (targetList && targetValue) {\n        targetList.scrollTop = targetValue.offsetTop || 0;\n\n        if (this.advancedKeyboard) {\n          targetValue.focus();\n        }\n      }\n    },\n    scrollToSelectedValues: function scrollToSelectedValues() {\n      var _this13 = this;\n\n      if (!this.timeValue || this.inputIsEmpty) {\n        return;\n      }\n\n      this.inUse.types.forEach(function (section) {\n        _this13.scrollToSelected(section);\n      });\n    },\n    //\n    // Additional Keyboard Navigation\n    //\n    onFocus: function onFocus() {\n      if (this.disabled) {\n        return;\n      }\n\n      if (!this.isFocusing) {\n        this.isFocusing = true;\n      }\n\n      if (!this.isActive) {\n        this.toggleActive();\n      }\n    },\n    escBlur: function escBlur() {\n      if (this.disabled) {\n        return;\n      }\n\n      window.clearTimeout(this.debounceTimer);\n      this.isFocusing = false;\n      var inputBox = this.$el.querySelectorAll('input.display-time')[0];\n\n      if (inputBox) {\n        inputBox.blur();\n      }\n    },\n    debounceBlur: function debounceBlur() {\n      var _this14 = this;\n\n      if (this.disabled) {\n        return;\n      }\n\n      this.isFocusing = false;\n      window.clearTimeout(this.debounceTimer);\n      this.debounceTimer = window.setTimeout(function () {\n        window.clearTimeout(_this14.debounceTimer);\n\n        _this14.onBlur();\n      }, this.opts.blurDelay);\n    },\n    onBlur: function onBlur() {\n      if (!this.disabled && !this.isFocusing && this.isActive) {\n        this.toggleActive();\n      }\n    },\n    keepFocusing: function keepFocusing() {\n      if (this.disabled) {\n        return;\n      }\n\n      window.clearTimeout(this.debounceTimer);\n\n      if (!this.isFocusing) {\n        this.isFocusing = true;\n      }\n    },\n    onTab: function onTab(column, value, evt) {\n      if (this.appendToBody && evt.shiftKey) {\n        var firstColumn = this.inUse.types[0];\n\n        if (column !== firstColumn) {\n          return;\n        }\n\n        var firstValidValue = this.validItemsInCol(firstColumn)[0]; // Is the first valid item in the first column\n\n        if (firstValidValue && firstValidValue.getAttribute('data-key') === String(value)) {\n          evt.preventDefault(); // Focus back on <input>\n\n          if (this.$refs && this.$refs.input) {\n            this.$refs.input.focus();\n          }\n        }\n      }\n    },\n    validItemsInCol: function validItemsInCol(column) {\n      var columnClass = \"\".concat(column, \"s\");\n\n      if (this.appendToBody && this.$refs && this.$refs.dropdown) {\n        return this.$refs.dropdown.querySelectorAll(\"ul.\".concat(columnClass, \" > li:not(.hint):not([disabled])\"));\n      }\n\n      return this.$el.querySelectorAll(\"ul.\".concat(columnClass, \" > li:not(.hint):not([disabled])\"));\n    },\n    activeItemInCol: function activeItemInCol(column) {\n      var columnClass = \"\".concat(column, \"s\");\n\n      if (this.appendToBody && this.$refs && this.$refs.dropdown) {\n        return this.$refs.dropdown.querySelectorAll(\"ul.\".concat(columnClass, \" > li.active:not(.hint)\"));\n      }\n\n      return this.$el.querySelectorAll(\"ul.\".concat(columnClass, \" > li.active:not(.hint)\"));\n    },\n    getClosestSibling: function getClosestSibling(column, dataKey) {\n      var getPrevious = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n      var siblingsInCol = this.validItemsInCol(column);\n      var selfIndex = Array.prototype.findIndex.call(siblingsInCol, function (sbl) {\n        return sbl.getAttribute('data-key') === dataKey;\n      }); // Already the first item\n\n      if (getPrevious && selfIndex === 0) {\n        return siblingsInCol[siblingsInCol.length - 1];\n      } // Already the last item\n\n\n      if (!getPrevious && selfIndex === siblingsInCol.length - 1) {\n        return siblingsInCol[0];\n      } // Selected value not in the valid values list\n\n\n      if (selfIndex < 0) {\n        return siblingsInCol[0];\n      }\n\n      if (getPrevious) {\n        return siblingsInCol[selfIndex - 1];\n      }\n\n      return siblingsInCol[selfIndex + 1];\n    },\n    prevItem: function prevItem(column, dataKey) {\n      var isManualInput = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n      var targetItem = this.getClosestSibling(column, dataKey, true);\n\n      if (targetItem) {\n        return isManualInput ? targetItem : targetItem.focus();\n      }\n    },\n    nextItem: function nextItem(column, dataKey) {\n      var isManualInput = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n      var targetItem = this.getClosestSibling(column, dataKey, false);\n\n      if (targetItem) {\n        return isManualInput ? targetItem : targetItem.focus();\n      }\n    },\n    getSideColumnName: function getSideColumnName(currentColumn) {\n      var toLeft = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n      var currentColumnIndex = this.inUse.types.indexOf(currentColumn);\n\n      if (toLeft && currentColumnIndex <= 0) {\n        if (this.debugMode) {\n          this.debugLog('You\\'re in the leftmost list already');\n        }\n\n        return;\n      } else if (!toLeft && currentColumnIndex === this.inUse.types.length - 1) {\n        if (this.debugMode) {\n          this.debugLog('You\\'re in the rightmost list already');\n        }\n\n        return;\n      }\n\n      return this.inUse.types[toLeft ? currentColumnIndex - 1 : currentColumnIndex + 1];\n    },\n    getFirstItemInSideColumn: function getFirstItemInSideColumn(currentColumn) {\n      var toLeft = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n      var targetColumn = this.getSideColumnName(currentColumn, toLeft);\n\n      if (!targetColumn) {\n        return;\n      }\n\n      var listItems = this.validItemsInCol(targetColumn);\n\n      if (listItems && listItems[0]) {\n        return listItems[0];\n      }\n    },\n    getActiveItemInSideColumn: function getActiveItemInSideColumn(currentColumn) {\n      var toLeft = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n      var targetColumn = this.getSideColumnName(currentColumn, toLeft);\n\n      if (!targetColumn) {\n        return;\n      }\n\n      var activeItems = this.activeItemInCol(targetColumn);\n\n      if (activeItems && activeItems[0]) {\n        return activeItems[0];\n      }\n    },\n    toLeftColumn: function toLeftColumn(currentColumn) {\n      var targetItem = this.getActiveItemInSideColumn(currentColumn, true) || this.getFirstItemInSideColumn(currentColumn, true);\n\n      if (targetItem) {\n        targetItem.focus();\n      }\n    },\n    toRightColumn: function toRightColumn(currentColumn) {\n      var targetItem = this.getActiveItemInSideColumn(currentColumn, false) || this.getFirstItemInSideColumn(currentColumn, false);\n\n      if (targetItem) {\n        targetItem.focus();\n      }\n    },\n    //\n    // Manual Input\n    //\n    onMouseDown: function onMouseDown() {\n      var _this15 = this;\n\n      if (!this.manualInput) {\n        return;\n      }\n\n      window.clearTimeout(this.selectionTimer);\n      this.selectionTimer = window.setTimeout(function () {\n        window.clearTimeout(_this15.selectionTimer);\n\n        if (_this15.$refs && _this15.$refs.input) {\n          var nearestSlot = _this15.getNearestChunkByPos(_this15.$refs.input.selectionStart || 0);\n\n          _this15.debounceSetInputSelection(nearestSlot);\n        }\n      }, 50);\n    },\n    keyDownHandler: function keyDownHandler(evt) {\n      if (evt.isComposing || evt.keyCode === 229) {\n        // Skip IME inputs\n        evt.preventDefault();\n        evt.stopPropagation();\n        return false;\n      } // Numbers\n\n\n      if (evt.keyCode >= 48 && evt.keyCode <= 57 || evt.keyCode >= 96 && evt.keyCode <= 105) {\n        evt.preventDefault();\n        this.keyboardInput(evt.key); // A|P|M\n      } else if ([65, 80, 77].includes(evt.keyCode)) {\n        evt.preventDefault();\n        this.keyboardInput(evt.key, true); // Arrow keys\n      } else if (evt.keyCode >= 37 && evt.keyCode <= 40) {\n        evt.preventDefault();\n        this.clearKbInputLog();\n        this.arrowHandler(evt); // Delete|Backspace\n      } else if (evt.keyCode === 8 || evt.keyCode === 46) {\n        evt.preventDefault();\n        this.clearKbInputLog();\n        this.clearTime(); // Tab\n      } else if (evt.keyCode === 9) {\n        this.clearKbInputLog();\n        this.tabHandler(evt); // Colon|Space\n      } else if (evt.keyCode === 186 || evt.keyCode === 32) {\n        evt.preventDefault();\n        this.clearKbInputLog();\n        this.toNextSlot(); // Prevent any Non-ESC and non-pasting inputs\n      } else if (evt.keyCode !== 27 && !(evt.metaKey || evt.ctrlKey)) {\n        evt.preventDefault();\n      }\n    },\n    onCompostionStart: function onCompostionStart(evt) {\n      evt.preventDefault();\n      evt.stopPropagation();\n      this.bakCurrentPos = this.getCurrentTokenChunk();\n      return false;\n    },\n    onCompostionEnd: function onCompostionEnd(evt) {\n      var _this16 = this;\n\n      evt.preventDefault();\n      evt.stopPropagation();\n      var cpsData = evt.data;\n      var inputIsCustomApmText = false;\n\n      if (this.has.customApmText) {\n        inputIsCustomApmText = this.isCustomApmText(cpsData);\n      }\n\n      if (inputIsCustomApmText) {\n        this.setSanitizedValueToSection('apm', inputIsCustomApmText);\n      }\n\n      this.$refs.input.value = this.has.customApmText ? this.customDisplayTime : this.displayTime;\n      this.$nextTick(function () {\n        if (_this16.bakCurrentPos) {\n          var bakPos = JSON.parse(JSON.stringify(_this16.bakCurrentPos));\n\n          if (inputIsCustomApmText) {\n            bakPos.end = bakPos.start + cpsData.length;\n          }\n\n          _this16.debounceSetInputSelection(bakPos);\n\n          _this16.bakCurrentPos = null;\n        }\n      });\n      return false;\n    },\n    pasteHandler: function pasteHandler(evt) {\n      evt.preventDefault();\n      var pastingText = (evt.clipboardData || window.clipboardData).getData('text');\n\n      if (this.debugMode) {\n        this.debugLog(\"Pasting value \\\"\".concat(pastingText, \"\\\" from clipboard\"));\n      }\n\n      if (!pastingText || !pastingText.length) {\n        return;\n      } // Replace custom AM/PM text (if any)\n\n\n      if (this.has.customApmText) {\n        pastingText = this.replaceCustomApmText(pastingText);\n      }\n\n      if (this.inputIsEmpty) {\n        this.readStringValues(pastingText);\n      } else {\n        this.kbInputLog = pastingText.substr(-2, 2);\n        this.setKbInput();\n        this.debounceClearKbLog();\n      }\n    },\n    arrowHandler: function arrowHandler(evt) {\n      var direction = {\n        37: 'L',\n        38: 'U',\n        39: 'R',\n        40: 'D'\n      }[evt.keyCode];\n\n      if (direction === 'U' || direction === 'D') {\n        if (this.inputIsEmpty) {\n          this.selectFirstValidValue();\n        } else {\n          var currentChunk = this.getCurrentTokenChunk();\n\n          if (!currentChunk) {\n            this.selectFirstValidValue();\n            return;\n          }\n\n          var tokenType = currentChunk.type;\n          this.getClosestValidItemInCol(tokenType, this[tokenType], direction);\n          var newChunkPos = this.getCurrentTokenChunk();\n          this.debounceSetInputSelection(newChunkPos);\n        }\n      } else if (direction === 'R') {\n        this.toLateralToken(false);\n      } else if (direction === 'L') {\n        this.toLateralToken(true);\n      }\n    },\n    tabHandler: function tabHandler(evt) {\n      if (!this.inputIsEmpty && this.tokenChunksPos && this.tokenChunksPos.length) {\n        var currentChunk = this.getCurrentTokenChunk();\n\n        if (!currentChunk) {\n          return;\n        }\n\n        var firstChunk = this.tokenChunksPos[0];\n        var lastChunk = this.tokenChunksPos[this.tokenChunksPos.length - 1];\n\n        if (evt.shiftKey && currentChunk.token !== firstChunk.token || !evt.shiftKey && currentChunk.token !== lastChunk.token) {\n          evt.preventDefault();\n          this.toLateralToken(evt.shiftKey);\n        }\n      } else if (this.appendToBody && this.advancedKeyboard) {\n        if (evt.shiftKey) {\n          return;\n        }\n\n        evt.preventDefault();\n\n        if (this.inputIsEmpty) {\n          var firstColumn = this.inUse.types[0];\n          var targetValue = this.validItemsInCol(firstColumn)[0];\n\n          if (targetValue) {\n            targetValue.focus();\n          }\n        }\n      }\n    },\n    keyboardInput: function keyboardInput(newChar) {\n      var isApm = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n      var currentChunk = this.getCurrentTokenChunk();\n\n      if (!currentChunk || currentChunk.type !== 'apm' && isApm || currentChunk.type === 'apm' && !isApm) {\n        return;\n      }\n\n      this.kbInputLog = \"\".concat(this.kbInputLog.substr(-1)).concat(newChar);\n      this.setKbInput();\n      this.debounceClearKbLog();\n    },\n    clearKbInputLog: function clearKbInputLog() {\n      window.clearTimeout(this.kbInputTimer);\n      this.kbInputLog = '';\n    },\n    debounceClearKbLog: function debounceClearKbLog() {\n      var _this17 = this;\n\n      window.clearTimeout(this.kbInputTimer);\n      this.kbInputTimer = window.setTimeout(function () {\n        _this17.clearKbInputLog();\n      }, this.opts.manualInputTimeout);\n    },\n    setKbInput: function setKbInput(value) {\n      value = value || this.kbInputLog;\n      var currentChunk = this.getCurrentTokenChunk();\n\n      if (!currentChunk || !value || !value.length) {\n        return;\n      }\n\n      var chunkType = currentChunk.type;\n      var chunkToken = currentChunk.token;\n      var validValue;\n\n      if (chunkType === 'apm') {\n        if (this.lowerCasedApm(value).includes('a')) {\n          validValue = 'am';\n        } else if (this.lowerCasedApm(value).includes('p')) {\n          validValue = 'pm';\n        }\n\n        if (validValue) {\n          validValue = chunkToken === 'A' ? validValue.toUpperCase() : validValue;\n        }\n      } else {\n        if (this.isValidValue(chunkToken, value)) {\n          validValue = value;\n        } else {\n          var lastInputValue = this.formatValue(chunkToken, value.substr(-1));\n\n          if (this.isValidValue(chunkToken, lastInputValue)) {\n            validValue = lastInputValue;\n          }\n        }\n      }\n\n      if (validValue) {\n        this.setSanitizedValueToSection(chunkType, validValue);\n        var newChunkPos = this.getCurrentTokenChunk();\n        this.debounceSetInputSelection(newChunkPos);\n      }\n\n      if (this.debugMode) {\n        if (validValue) {\n          this.debugLog(\"Successfully set value \\\"\".concat(validValue, \"\\\" from latest input \\\"\").concat(value, \"\\\" for the \\\"\").concat(chunkType, \"\\\" slot\"));\n        } else {\n          this.debugLog(\"Value \\\"\".concat(value, \"\\\" is invalid in the \\\"\").concat(chunkType, \"\\\" slot\"));\n        }\n      }\n    },\n    // Form Autofill\n    onChange: function onChange() {\n      if (!this.manualInput || !this.$refs || !this.$refs.input) {\n        return;\n      }\n\n      var autoFillValue = this.$refs.input.value || '';\n\n      if (autoFillValue && autoFillValue.length) {\n        this.readStringValues(autoFillValue);\n      }\n    },\n    getNearestChunkByPos: function getNearestChunkByPos(startPos) {\n      if (!this.tokenChunksPos || !this.tokenChunksPos.length) {\n        return;\n      }\n\n      var nearest;\n      var nearestDelta = -1;\n\n      for (var i = 0; i < this.tokenChunksPos.length; i++) {\n        var chunk = JSON.parse(JSON.stringify(this.tokenChunksPos[i]));\n\n        if (chunk.start === startPos) {\n          return chunk;\n        }\n\n        var delta = Math.abs(chunk.start - startPos);\n\n        if (nearestDelta < 0) {\n          nearest = chunk;\n          nearestDelta = delta;\n        } else {\n          if (nearestDelta <= delta) {\n            return nearest;\n          }\n\n          nearestDelta = delta;\n          nearest = chunk;\n        }\n      }\n\n      return nearest;\n    },\n    selectFirstValidValue: function selectFirstValidValue() {\n      if (!this.tokenChunksPos || !this.tokenChunksPos.length) {\n        return;\n      }\n\n      var firstSlotType = this.tokenChunksPos[0].type;\n\n      if (firstSlotType === 'hour') {\n        this.getClosestHourItem();\n      } else {\n        this.getClosestValidItemInCol(firstSlotType, this[firstSlotType]);\n      }\n\n      this.selectFirstSlot();\n    },\n    getClosestHourItem: function getClosestHourItem(currentValue) {\n      var _this18 = this;\n\n      var direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'U';\n\n      if (!this.validHoursList || !this.validHoursList.length) {\n        if (this.debugMode) {\n          this.debugLog(\"No valid hour values found, please check your \\\"hour-range\\\" config\\nhour-range: \".concat(JSON.stringify(this.hourRange)));\n        }\n\n        return;\n      }\n\n      if (!currentValue) {\n        this.setManualHour(this.validHoursList[0]);\n        return;\n      }\n\n      var currentIndex = this.validHoursList.findIndex(function (item) {\n        if (!_this18.baseOn12Hours) {\n          return item === currentValue;\n        } else {\n          var valueKey = \"\".concat(currentValue).concat(_this18.lowerCasedApm(_this18.apm) === 'pm' ? 'p' : 'a');\n          return item === valueKey;\n        }\n      });\n      var nextIndex;\n\n      if (currentIndex === -1) {\n        nextIndex = 0;\n      } else if (direction === 'D') {\n        nextIndex = currentIndex === 0 ? this.validHoursList.length - 1 : currentIndex - 1;\n      } else {\n        nextIndex = (currentIndex + 1) % this.validHoursList.length;\n      }\n\n      var nextItem = this.validHoursList[nextIndex];\n      this.setManualHour(nextItem);\n    },\n    getClosestValidItemInCol: function getClosestValidItemInCol(column, currentValue) {\n      var direction = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'U';\n\n      if (column === 'hour') {\n        this.getClosestHourItem(currentValue, direction);\n      } else {\n        var nextItem = direction === 'D' ? this.prevItem(column, this[column], true) : this.nextItem(column, this[column], true);\n\n        if (nextItem) {\n          this.select(column, nextItem.getAttribute('data-key'));\n        }\n      }\n    },\n    setSanitizedValueToSection: function setSanitizedValueToSection(section, inputValue) {\n      if (!section || !this.getTokenByType(section)) {\n        return;\n      } // NOTE: Disabled values are allowed here, followed by an 'error' event, though\n\n\n      var sanitizedValue = this.sanitizedValue(this.getTokenByType(section), inputValue);\n      this[section] = sanitizedValue;\n    },\n    setManualHour: function setManualHour(nextItem) {\n      if (this.is12hRange(nextItem)) {\n        var hourT = this.match12hRange(nextItem);\n        var apmValue = hourT[2] === 'a' ? 'AM' : 'PM';\n        this.setSanitizedValueToSection('apm', this.apmType === 'a' ? apmValue.toLowerCase() : apmValue);\n        this.setSanitizedValueToSection('hour', hourT[1]);\n      } else {\n        this.setSanitizedValueToSection('hour', nextItem);\n      }\n    },\n    debounceSetInputSelection: function debounceSetInputSelection(_ref) {\n      var _this19 = this;\n\n      var _ref$start = _ref.start,\n          start = _ref$start === void 0 ? 0 : _ref$start,\n          _ref$end = _ref.end,\n          end = _ref$end === void 0 ? 0 : _ref$end;\n      this.$nextTick(function () {\n        _this19.setInputSelectionRange(start, end);\n      });\n      window.clearTimeout(this.selectionTimer);\n      this.selectionTimer = window.setTimeout(function () {\n        window.clearTimeout(_this19.selectionTimer); // Double-check selection for 12hr format\n\n        if (_this19.$refs.input && (_this19.$refs.input.selectionStart !== start || _this19.$refs.input.selectionEnd !== end)) {\n          _this19.setInputSelectionRange(start, end);\n        }\n      }, 30);\n    },\n    setInputSelectionRange: function setInputSelectionRange(start, end) {\n      if (this.$refs && this.$refs.input) {\n        this.$refs.input.setSelectionRange(start, end);\n      }\n    },\n    getCurrentTokenChunk: function getCurrentTokenChunk() {\n      return this.getNearestChunkByPos(this.$refs.input && this.$refs.input.selectionStart || 0);\n    },\n    selectFirstSlot: function selectFirstSlot() {\n      var firstChunkPos = this.getNearestChunkByPos(0);\n      this.debounceSetInputSelection(firstChunkPos);\n    },\n    toNextSlot: function toNextSlot() {\n      if (!this.inputIsEmpty && this.tokenChunksPos && this.tokenChunksPos.length) {\n        var currentChunk = this.getCurrentTokenChunk();\n\n        if (!currentChunk) {\n          return;\n        }\n\n        var lastChunk = this.tokenChunksPos[this.tokenChunksPos.length - 1];\n\n        if (currentChunk.token !== lastChunk.token) {\n          this.toLateralToken(false);\n        }\n      }\n    },\n    toLateralToken: function toLateralToken(toLeft) {\n      var currentChunk = this.getCurrentTokenChunk();\n\n      if (!currentChunk) {\n        this.selectFirstValidValue();\n        return;\n      }\n\n      var currentChunkIndex = this.tokenChunksPos.findIndex(function (chk) {\n        return chk.token === currentChunk.token;\n      });\n\n      if (!toLeft && currentChunkIndex >= this.tokenChunksPos.length - 1 || toLeft && currentChunkIndex === 0) {\n        if (this.debugMode) {\n          if (toLeft) {\n            this.debugLog('You\\'re in the leftmost slot already');\n          } else {\n            this.debugLog('You\\'re in the rightmost slot already');\n          }\n        }\n\n        return;\n      }\n\n      var targetSlotPos = toLeft ? this.tokenChunksPos[currentChunkIndex - 1] : this.tokenChunksPos[currentChunkIndex + 1];\n      this.debounceSetInputSelection(targetSlotPos);\n    },\n    isCustomApmText: function isCustomApmText(inputData) {\n      if (!inputData || !inputData.length) {\n        return false;\n      }\n\n      if (this.amText && this.amText === inputData) {\n        return this.apmType === 'A' ? 'AM' : 'am';\n      }\n\n      if (this.pmText && this.pmText === inputData) {\n        return this.apmType === 'A' ? 'PM' : 'pm';\n      }\n\n      return false;\n    },\n    replaceCustomApmText: function replaceCustomApmText(inputString) {\n      if (this.amText && this.amText.length && inputString.includes(this.amText)) {\n        return inputString.replace(new RegExp(this.amText, 'g'), this.apmType === 'A' ? 'AM' : 'am');\n      } else if (this.pmText && this.pmText.length && inputString.includes(this.pmText)) {\n        return inputString.replace(new RegExp(this.pmText, 'g'), this.apmType === 'A' ? 'PM' : 'pm');\n      }\n\n      return inputString;\n    },\n    checkDropDirection: function checkDropDirection() {\n      if (!this.$el) {\n        return;\n      }\n\n      var container;\n\n      if (this.containerId && this.containerId.length) {\n        container = document.getElementById(this.containerId);\n\n        if (!container && this.debugMode) {\n          this.debugLog(\"Container with id \\\"\".concat(this.containerId, \"\\\" not found. Fallback to document body.\"));\n        }\n      }\n\n      var el = this.$el;\n      var spaceDown;\n\n      if (container && container.offsetHeight) {\n        // Valid container found\n        spaceDown = container.offsetTop + container.offsetHeight - (el.offsetTop + el.offsetHeight);\n      } else {\n        // Fallback to document body\n        var docHeight = Math.max(document.body.scrollHeight, document.documentElement.scrollHeight, document.body.offsetHeight, document.documentElement.offsetHeight, document.body.clientHeight, document.documentElement.clientHeight);\n        spaceDown = docHeight - (el.offsetTop + el.offsetHeight);\n      }\n\n      this.forceDropOnTop = this.opts.dropOffsetHeight > spaceDown;\n    },\n    //\n    // Helpers\n    //\n    is12hRange: function is12hRange(value) {\n      return /^\\d{1,2}(a|p|A|P)$/.test(value);\n    },\n    match12hRange: function match12hRange(value) {\n      return value.match(/^(\\d{1,2})(a|p|A|P)$/);\n    },\n    isNumber: function isNumber(value) {\n      return !isNaN(parseFloat(value)) && isFinite(value);\n    },\n    isBasicType: function isBasicType(type) {\n      return CONFIG.BASIC_TYPES.includes(type);\n    },\n    lowerCasedApm: function lowerCasedApm(apmValue) {\n      return (apmValue || '').toLowerCase();\n    },\n    getTokenRegex: function getTokenRegex(token) {\n      switch (token) {\n        case 'HH':\n          return '([01][0-9]|2[0-3]|H{2})';\n\n        case 'H':\n          return '([0-9]{1}|1[0-9]|2[0-3]|H{1})';\n\n        case 'hh':\n          return '(0[1-9]|1[0-2]|h{2})';\n\n        case 'h':\n          return '([1-9]{1}|1[0-2]|h{1})';\n\n        case 'kk':\n          return '(0[1-9]|1[0-9]|2[0-4]|k{2})';\n\n        case 'k':\n          return '([1-9]{1}|1[0-9]|2[0-4]|k{1})';\n\n        case 'mm':\n          return '([0-5][0-9]|m{2})';\n\n        case 'ss':\n          return '([0-5][0-9]|s{2})';\n\n        case 'm':\n          return '([0-9]{1}|[1-5][0-9]|m{1})';\n\n        case 's':\n          return '([0-9]{1}|[1-5][0-9]|s{1})';\n\n        case 'A':\n          return '(AM|PM|A{1})';\n\n        case 'a':\n          return '(am|pm|a{1})';\n\n        default:\n          return '';\n      }\n    },\n    isEmptyValue: function isEmptyValue(targetToken, testValue) {\n      return !testValue || !testValue.length || testValue && testValue === targetToken;\n    },\n    isValidValue: function isValidValue(targetToken, testValue) {\n      if (!targetToken || this.isEmptyValue(targetToken, testValue)) {\n        return false;\n      }\n\n      var tokenRegexStr = this.getTokenRegex(targetToken);\n\n      if (!tokenRegexStr || !tokenRegexStr.length) {\n        return false;\n      }\n\n      return new RegExp(\"^\".concat(tokenRegexStr, \"$\")).test(testValue);\n    },\n    sanitizedValue: function sanitizedValue(targetToken, inputValue) {\n      if (this.isValidValue(targetToken, inputValue)) {\n        return inputValue;\n      }\n\n      return '';\n    },\n    getTokenType: function getTokenType(token) {\n      return this.inUse.types[this.inUse.tokens.indexOf(token)] || '';\n    },\n    getTokenByType: function getTokenByType(type) {\n      return this[\"\".concat(type, \"Type\")] || '';\n    },\n    isMinuteOrSecond: function isMinuteOrSecond(type) {\n      return ['minute', 'second'].includes(type);\n    },\n    debugLog: function debugLog(logText) {\n      var _this20 = this;\n\n      if (!logText || !logText.length) {\n        return;\n      }\n\n      var identifier = '';\n\n      if (this.id) {\n        identifier += \"#\".concat(this.id);\n      }\n\n      if (this.name) {\n        identifier += \"[name=\".concat(this.name, \"]\");\n      }\n\n      if (this.inputClass) {\n        var inputClasses = [];\n\n        if (typeof this.inputClass === 'string') {\n          inputClasses = this.inputClass.split(/\\s/g);\n        } else if (Array.isArray(this.inputClass)) {\n          inputClasses = [].concat([], this.inputClass);\n        } else if (_typeof(this.inputClass) === 'object') {\n          Object.keys(this.inputClass).forEach(function (clsName) {\n            if (_this20.inputClass[clsName]) {\n              inputClasses.push(clsName);\n            }\n          });\n        }\n\n        var _iterator4 = _createForOfIteratorHelper(inputClasses),\n            _step4;\n\n        try {\n          for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n            var inputClass = _step4.value;\n\n            if (inputClass && inputClass.trim().length) {\n              identifier += \".\".concat(inputClass.trim());\n            }\n          }\n        } catch (err) {\n          _iterator4.e(err);\n        } finally {\n          _iterator4.f();\n        }\n      }\n\n      var finalLogText = \"DEBUG: \".concat(logText).concat(identifier ? \"\\n\\t(\".concat(identifier, \")\") : '');\n\n      if (window.console.debug && typeof window.console.debug === 'function') {\n        window.console.debug(finalLogText);\n      } else {\n        window.console.log(finalLogText);\n      }\n    }\n  },\n  mounted: function mounted() {\n    window.clearTimeout(this.debounceTimer);\n    window.clearTimeout(this.selectionTimer);\n    window.clearTimeout(this.kbInputTimer);\n    this.renderFormat();\n  },\n  beforeDestroy: function beforeDestroy() {\n    window.clearTimeout(this.debounceTimer);\n    window.clearTimeout(this.selectionTimer);\n    window.clearTimeout(this.kbInputTimer);\n  }\n});\n// CONCATENATED MODULE: ./src/vue-timepicker.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_vue_timepickervue_type_script_lang_js_ = (vue_timepickervue_type_script_lang_js_); \n// EXTERNAL MODULE: ./src/vue-timepicker.vue?vue&type=style&index=0&lang=css&\nvar vue_timepickervue_type_style_index_0_lang_css_ = __webpack_require__(\"aab0\");\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js\n/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nfunction normalizeComponent (\n  scriptExports,\n  render,\n  staticRenderFns,\n  functionalTemplate,\n  injectStyles,\n  scopeId,\n  moduleIdentifier, /* server only */\n  shadowMode /* vue-cli only */\n) {\n  // Vue.extend constructor export interop\n  var options = typeof scriptExports === 'function'\n    ? scriptExports.options\n    : scriptExports\n\n  // render functions\n  if (render) {\n    options.render = render\n    options.staticRenderFns = staticRenderFns\n    options._compiled = true\n  }\n\n  // functional template\n  if (functionalTemplate) {\n    options.functional = true\n  }\n\n  // scopedId\n  if (scopeId) {\n    options._scopeId = 'data-v-' + scopeId\n  }\n\n  var hook\n  if (moduleIdentifier) { // server build\n    hook = function (context) {\n      // 2.3 injection\n      context =\n        context || // cached call\n        (this.$vnode && this.$vnode.ssrContext) || // stateful\n        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n      // 2.2 with runInNewContext: true\n      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n        context = __VUE_SSR_CONTEXT__\n      }\n      // inject component styles\n      if (injectStyles) {\n        injectStyles.call(this, context)\n      }\n      // register component module identifier for async chunk inferrence\n      if (context && context._registeredComponents) {\n        context._registeredComponents.add(moduleIdentifier)\n      }\n    }\n    // used by ssr in case component is cached and beforeCreate\n    // never gets called\n    options._ssrRegister = hook\n  } else if (injectStyles) {\n    hook = shadowMode\n      ? function () {\n        injectStyles.call(\n          this,\n          (options.functional ? this.parent : this).$root.$options.shadowRoot\n        )\n      }\n      : injectStyles\n  }\n\n  if (hook) {\n    if (options.functional) {\n      // for template-only hot-reload because in that case the render fn doesn't\n      // go through the normalizer\n      options._injectStyles = hook\n      // register for functional component in vue file\n      var originalRender = options.render\n      options.render = function renderWithStyleInjection (h, context) {\n        hook.call(context)\n        return originalRender(h, context)\n      }\n    } else {\n      // inject component registration as beforeCreate hook\n      var existing = options.beforeCreate\n      options.beforeCreate = existing\n        ? [].concat(existing, hook)\n        : [hook]\n    }\n  }\n\n  return {\n    exports: scriptExports,\n    options: options\n  }\n}\n\n// CONCATENATED MODULE: ./src/vue-timepicker.vue\n\n\n\n\n\n\n/* normalize component */\n\nvar component = normalizeComponent(\n  src_vue_timepickervue_type_script_lang_js_,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* harmony default export */ var vue_timepicker = (component.exports);\n// CONCATENATED MODULE: ./src/index.js\n\n/* harmony default export */ var src_0 = (vue_timepicker);\n// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js\n\n\n/* harmony default export */ var entry_lib = __webpack_exports__[\"default\"] = (src_0);\n\n\n\n/***/ }),\n\n/***/ \"fb6a\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(\"23e7\");\nvar isObject = __webpack_require__(\"861d\");\nvar isArray = __webpack_require__(\"e8b5\");\nvar toAbsoluteIndex = __webpack_require__(\"23cb\");\nvar toLength = __webpack_require__(\"50c4\");\nvar toIndexedObject = __webpack_require__(\"fc6a\");\nvar createProperty = __webpack_require__(\"8418\");\nvar wellKnownSymbol = __webpack_require__(\"b622\");\nvar arrayMethodHasSpeciesSupport = __webpack_require__(\"1dde\");\nvar arrayMethodUsesToLength = __webpack_require__(\"ae40\");\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('slice', { ACCESSORS: true, 0: 0, 1: 2 });\n\nvar SPECIES = wellKnownSymbol('species');\nvar nativeSlice = [].slice;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n  slice: function slice(start, end) {\n    var O = toIndexedObject(this);\n    var length = toLength(O.length);\n    var k = toAbsoluteIndex(start, length);\n    var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n    // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n    var Constructor, result, n;\n    if (isArray(O)) {\n      Constructor = O.constructor;\n      // cross-realm fallback\n      if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) {\n        Constructor = undefined;\n      } else if (isObject(Constructor)) {\n        Constructor = Constructor[SPECIES];\n        if (Constructor === null) Constructor = undefined;\n      }\n      if (Constructor === Array || Constructor === undefined) {\n        return nativeSlice.call(O, k, fin);\n      }\n    }\n    result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));\n    for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n    result.length = n;\n    return result;\n  }\n});\n\n\n/***/ }),\n\n/***/ \"fc6a\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = __webpack_require__(\"44ad\");\nvar requireObjectCoercible = __webpack_require__(\"1d80\");\n\nmodule.exports = function (it) {\n  return IndexedObject(requireObjectCoercible(it));\n};\n\n\n/***/ }),\n\n/***/ \"fd6f\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"fdbc\":\n/***/ (function(module, exports) {\n\n// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n  CSSRuleList: 0,\n  CSSStyleDeclaration: 0,\n  CSSValueList: 0,\n  ClientRectList: 0,\n  DOMRectList: 0,\n  DOMStringList: 0,\n  DOMTokenList: 1,\n  DataTransferItemList: 0,\n  FileList: 0,\n  HTMLAllCollection: 0,\n  HTMLCollection: 0,\n  HTMLFormElement: 0,\n  HTMLSelectElement: 0,\n  MediaList: 0,\n  MimeTypeArray: 0,\n  NamedNodeMap: 0,\n  NodeList: 1,\n  PaintRequestList: 0,\n  Plugin: 0,\n  PluginArray: 0,\n  SVGLengthList: 0,\n  SVGNumberList: 0,\n  SVGPathSegList: 0,\n  SVGPointList: 0,\n  SVGStringList: 0,\n  SVGTransformList: 0,\n  SourceBufferList: 0,\n  StyleSheetList: 0,\n  TextTrackCueList: 0,\n  TextTrackList: 0,\n  TouchList: 0\n};\n\n\n/***/ }),\n\n/***/ \"fdbf\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar NATIVE_SYMBOL = __webpack_require__(\"4930\");\n\nmodule.exports = NATIVE_SYMBOL\n  // eslint-disable-next-line no-undef\n  && !Symbol.sham\n  // eslint-disable-next-line no-undef\n  && typeof Symbol.iterator == 'symbol';\n\n\n/***/ })\n\n/******/ });\n//# sourceMappingURL=VueTimepicker.common.js.map"
  },
  {
    "path": "dist/VueTimepicker.css",
    "content": ".vue__time-picker{display:inline-block;position:relative;font-size:1em;width:10em;font-family:sans-serif;vertical-align:middle}.vue__time-picker *{-webkit-box-sizing:border-box;box-sizing:border-box}.vue__time-picker input.display-time{border:1px solid #d2d2d2;width:10em;height:2.2em;padding:.3em .5em;font-size:1em}.vue__time-picker input.has-custom-icon{padding-left:1.8em}.vue__time-picker input.display-time.invalid:not(.skip-error-style){border-color:#c03;outline-color:#c03}.vue__time-picker input.display-time.disabled,.vue__time-picker input.display-time:disabled{color:#d2d2d2}.vue__time-picker .controls{position:absolute;top:0;bottom:0;right:0;z-index:3;-webkit-box-orient:horizontal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;pointer-events:none}.vue__time-picker .controls,.vue__time-picker .controls>*{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-direction:normal}.vue__time-picker .controls>*{cursor:pointer;width:auto;-webkit-box-orient:vertical;-ms-flex-flow:column nowrap;flex-flow:column nowrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 .35em;color:#d2d2d2;line-height:100%;font-style:normal;pointer-events:auto;-webkit-transition:color .2s,opacity .2s;transition:color .2s,opacity .2s}.vue__time-picker .controls>:hover{color:#797979}.vue__time-picker .controls>:active,.vue__time-picker .controls>:focus{outline:0}.vue__time-picker .controls .char{font-size:1.1em;line-height:100%;-webkit-margin-before:-.15em}.vue__time-picker .custom-icon{z-index:2;position:absolute;left:0;top:0;bottom:0;width:1.8em;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column nowrap;flex-flow:column nowrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;pointer-events:none}.vue__time-picker .controls img,.vue__time-picker .controls svg,.vue__time-picker .custom-icon img,.vue__time-picker .custom-icon svg{display:inline-block;vertical-align:middle;margin:0;border:0;outline:0;max-width:1em;height:auto}.vue__time-picker .time-picker-overlay{z-index:4;position:fixed;top:0;left:0;right:0;bottom:0}.vue__time-picker-dropdown,.vue__time-picker .dropdown{position:absolute;z-index:5;top:calc(2.2em + 2px);left:0;background:#fff;-webkit-box-shadow:0 1px 6px rgba(0,0,0,.15);box-shadow:0 1px 6px rgba(0,0,0,.15);width:10em;height:10em;font-weight:400}.vue__time-picker-dropdown{position:fixed;z-index:100}.vue__time-picker-dropdown.drop-up,.vue__time-picker .dropdown.drop-up{top:auto;bottom:calc(2.2em + 1px)}.vue__time-picker-dropdown .select-list,.vue__time-picker .dropdown .select-list{width:10em;height:10em;overflow:hidden;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.vue__time-picker-dropdown .select-list:active,.vue__time-picker-dropdown .select-list:focus,.vue__time-picker .dropdown .select-list:active,.vue__time-picker .dropdown .select-list:focus{outline:0}.vue__time-picker-dropdown ul,.vue__time-picker .dropdown ul{padding:0;margin:0;list-style:none;outline:0;-webkit-box-flex:1;-ms-flex:1 1 0.00001px;flex:1 1 0.00001px;overflow-x:hidden;overflow-y:auto}.vue__time-picker-dropdown ul.apms,.vue__time-picker-dropdown ul.minutes,.vue__time-picker-dropdown ul.seconds,.vue__time-picker .dropdown ul.apms,.vue__time-picker .dropdown ul.minutes,.vue__time-picker .dropdown ul.seconds{border-left:1px solid #fff}.vue__time-picker-dropdown ul li,.vue__time-picker .dropdown ul li{list-style:none;text-align:center;padding:.3em 0;color:#161616}.vue__time-picker-dropdown ul li:not(.hint):not([disabled]):focus,.vue__time-picker-dropdown ul li:not(.hint):not([disabled]):hover,.vue__time-picker .dropdown ul li:not(.hint):not([disabled]):focus,.vue__time-picker .dropdown ul li:not(.hint):not([disabled]):hover{background:rgba(0,0,0,.08);color:#161616;cursor:pointer}.vue__time-picker-dropdown ul li:not([disabled]).active,.vue__time-picker-dropdown ul li:not([disabled]).active:focus,.vue__time-picker-dropdown ul li:not([disabled]).active:hover,.vue__time-picker .dropdown ul li:not([disabled]).active,.vue__time-picker .dropdown ul li:not([disabled]).active:focus,.vue__time-picker .dropdown ul li:not([disabled]).active:hover{background:#41b883;color:#fff}.vue__time-picker-dropdown ul li[disabled],.vue__time-picker-dropdown ul li[disabled]:hover,.vue__time-picker .dropdown ul li[disabled],.vue__time-picker .dropdown ul li[disabled]:hover{background:transparent;opacity:.3;cursor:not-allowed}.vue__time-picker-dropdown .hint,.vue__time-picker .dropdown .hint{color:#a5a5a5;cursor:default;font-size:.8em}"
  },
  {
    "path": "dist/VueTimepicker.umd.js",
    "content": "(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"VueTimepicker\"] = factory();\n\telse\n\t\troot[\"VueTimepicker\"] = factory();\n})((typeof self !== 'undefined' ? self : this), function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = \"fb15\");\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ \"00ee\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(\"b622\");\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n\n\n/***/ }),\n\n/***/ \"0366\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar aFunction = __webpack_require__(\"1c0b\");\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n  aFunction(fn);\n  if (that === undefined) return fn;\n  switch (length) {\n    case 0: return function () {\n      return fn.call(that);\n    };\n    case 1: return function (a) {\n      return fn.call(that, a);\n    };\n    case 2: return function (a, b) {\n      return fn.call(that, a, b);\n    };\n    case 3: return function (a, b, c) {\n      return fn.call(that, a, b, c);\n    };\n  }\n  return function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n\n\n/***/ }),\n\n/***/ \"057f\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toIndexedObject = __webpack_require__(\"fc6a\");\nvar nativeGetOwnPropertyNames = __webpack_require__(\"241c\").f;\n\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n  ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n  try {\n    return nativeGetOwnPropertyNames(it);\n  } catch (error) {\n    return windowNames.slice();\n  }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n  return windowNames && toString.call(it) == '[object Window]'\n    ? getWindowNames(it)\n    : nativeGetOwnPropertyNames(toIndexedObject(it));\n};\n\n\n/***/ }),\n\n/***/ \"06cf\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(\"83ab\");\nvar propertyIsEnumerableModule = __webpack_require__(\"d1e7\");\nvar createPropertyDescriptor = __webpack_require__(\"5c6c\");\nvar toIndexedObject = __webpack_require__(\"fc6a\");\nvar toPrimitive = __webpack_require__(\"c04e\");\nvar has = __webpack_require__(\"5135\");\nvar IE8_DOM_DEFINE = __webpack_require__(\"0cfb\");\n\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n  O = toIndexedObject(O);\n  P = toPrimitive(P, true);\n  if (IE8_DOM_DEFINE) try {\n    return nativeGetOwnPropertyDescriptor(O, P);\n  } catch (error) { /* empty */ }\n  if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n\n\n/***/ }),\n\n/***/ \"0cfb\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(\"83ab\");\nvar fails = __webpack_require__(\"d039\");\nvar createElement = __webpack_require__(\"cc12\");\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n  return Object.defineProperty(createElement('div'), 'a', {\n    get: function () { return 7; }\n  }).a != 7;\n});\n\n\n/***/ }),\n\n/***/ \"1276\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar fixRegExpWellKnownSymbolLogic = __webpack_require__(\"d784\");\nvar isRegExp = __webpack_require__(\"44e7\");\nvar anObject = __webpack_require__(\"825a\");\nvar requireObjectCoercible = __webpack_require__(\"1d80\");\nvar speciesConstructor = __webpack_require__(\"4840\");\nvar advanceStringIndex = __webpack_require__(\"8aa5\");\nvar toLength = __webpack_require__(\"50c4\");\nvar callRegExpExec = __webpack_require__(\"14c3\");\nvar regexpExec = __webpack_require__(\"9263\");\nvar fails = __webpack_require__(\"d039\");\n\nvar arrayPush = [].push;\nvar min = Math.min;\nvar MAX_UINT32 = 0xFFFFFFFF;\n\n// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\nvar SUPPORTS_Y = !fails(function () { return !RegExp(MAX_UINT32, 'y'); });\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) {\n  var internalSplit;\n  if (\n    'abbc'.split(/(b)*/)[1] == 'c' ||\n    'test'.split(/(?:)/, -1).length != 4 ||\n    'ab'.split(/(?:ab)*/).length != 2 ||\n    '.'.split(/(.?)(.?)/).length != 4 ||\n    '.'.split(/()()/).length > 1 ||\n    ''.split(/.?/).length\n  ) {\n    // based on es5-shim implementation, need to rework it\n    internalSplit = function (separator, limit) {\n      var string = String(requireObjectCoercible(this));\n      var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n      if (lim === 0) return [];\n      if (separator === undefined) return [string];\n      // If `separator` is not a regex, use native split\n      if (!isRegExp(separator)) {\n        return nativeSplit.call(string, separator, lim);\n      }\n      var output = [];\n      var flags = (separator.ignoreCase ? 'i' : '') +\n                  (separator.multiline ? 'm' : '') +\n                  (separator.unicode ? 'u' : '') +\n                  (separator.sticky ? 'y' : '');\n      var lastLastIndex = 0;\n      // Make `global` and avoid `lastIndex` issues by working with a copy\n      var separatorCopy = new RegExp(separator.source, flags + 'g');\n      var match, lastIndex, lastLength;\n      while (match = regexpExec.call(separatorCopy, string)) {\n        lastIndex = separatorCopy.lastIndex;\n        if (lastIndex > lastLastIndex) {\n          output.push(string.slice(lastLastIndex, match.index));\n          if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));\n          lastLength = match[0].length;\n          lastLastIndex = lastIndex;\n          if (output.length >= lim) break;\n        }\n        if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n      }\n      if (lastLastIndex === string.length) {\n        if (lastLength || !separatorCopy.test('')) output.push('');\n      } else output.push(string.slice(lastLastIndex));\n      return output.length > lim ? output.slice(0, lim) : output;\n    };\n  // Chakra, V8\n  } else if ('0'.split(undefined, 0).length) {\n    internalSplit = function (separator, limit) {\n      return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);\n    };\n  } else internalSplit = nativeSplit;\n\n  return [\n    // `String.prototype.split` method\n    // https://tc39.github.io/ecma262/#sec-string.prototype.split\n    function split(separator, limit) {\n      var O = requireObjectCoercible(this);\n      var splitter = separator == undefined ? undefined : separator[SPLIT];\n      return splitter !== undefined\n        ? splitter.call(separator, O, limit)\n        : internalSplit.call(String(O), separator, limit);\n    },\n    // `RegExp.prototype[@@split]` method\n    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split\n    //\n    // NOTE: This cannot be properly polyfilled in engines that don't support\n    // the 'y' flag.\n    function (regexp, limit) {\n      var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit);\n      if (res.done) return res.value;\n\n      var rx = anObject(regexp);\n      var S = String(this);\n      var C = speciesConstructor(rx, RegExp);\n\n      var unicodeMatching = rx.unicode;\n      var flags = (rx.ignoreCase ? 'i' : '') +\n                  (rx.multiline ? 'm' : '') +\n                  (rx.unicode ? 'u' : '') +\n                  (SUPPORTS_Y ? 'y' : 'g');\n\n      // ^(? + rx + ) is needed, in combination with some S slicing, to\n      // simulate the 'y' flag.\n      var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);\n      var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n      if (lim === 0) return [];\n      if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n      var p = 0;\n      var q = 0;\n      var A = [];\n      while (q < S.length) {\n        splitter.lastIndex = SUPPORTS_Y ? q : 0;\n        var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));\n        var e;\n        if (\n          z === null ||\n          (e = min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p\n        ) {\n          q = advanceStringIndex(S, q, unicodeMatching);\n        } else {\n          A.push(S.slice(p, q));\n          if (A.length === lim) return A;\n          for (var i = 1; i <= z.length - 1; i++) {\n            A.push(z[i]);\n            if (A.length === lim) return A;\n          }\n          q = p = e;\n        }\n      }\n      A.push(S.slice(p));\n      return A;\n    }\n  ];\n}, !SUPPORTS_Y);\n\n\n/***/ }),\n\n/***/ \"14c3\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar classof = __webpack_require__(\"c6b6\");\nvar regexpExec = __webpack_require__(\"9263\");\n\n// `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n  var exec = R.exec;\n  if (typeof exec === 'function') {\n    var result = exec.call(R, S);\n    if (typeof result !== 'object') {\n      throw TypeError('RegExp exec method returned something other than an Object or null');\n    }\n    return result;\n  }\n\n  if (classof(R) !== 'RegExp') {\n    throw TypeError('RegExp#exec called on incompatible receiver');\n  }\n\n  return regexpExec.call(R, S);\n};\n\n\n\n/***/ }),\n\n/***/ \"159b\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"da84\");\nvar DOMIterables = __webpack_require__(\"fdbc\");\nvar forEach = __webpack_require__(\"17c2\");\nvar createNonEnumerableProperty = __webpack_require__(\"9112\");\n\nfor (var COLLECTION_NAME in DOMIterables) {\n  var Collection = global[COLLECTION_NAME];\n  var CollectionPrototype = Collection && Collection.prototype;\n  // some Chrome versions have non-configurable methods on DOMTokenList\n  if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n    createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n  } catch (error) {\n    CollectionPrototype.forEach = forEach;\n  }\n}\n\n\n/***/ }),\n\n/***/ \"17c2\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $forEach = __webpack_require__(\"b727\").forEach;\nvar arrayMethodIsStrict = __webpack_require__(\"a640\");\nvar arrayMethodUsesToLength = __webpack_require__(\"ae40\");\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\nmodule.exports = (!STRICT_METHOD || !USES_TO_LENGTH) ? function forEach(callbackfn /* , thisArg */) {\n  return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n} : [].forEach;\n\n\n/***/ }),\n\n/***/ \"1be4\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getBuiltIn = __webpack_require__(\"d066\");\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n\n\n/***/ }),\n\n/***/ \"1c0b\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n  if (typeof it != 'function') {\n    throw TypeError(String(it) + ' is not a function');\n  } return it;\n};\n\n\n/***/ }),\n\n/***/ \"1c7e\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(\"b622\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n  var called = 0;\n  var iteratorWithReturn = {\n    next: function () {\n      return { done: !!called++ };\n    },\n    'return': function () {\n      SAFE_CLOSING = true;\n    }\n  };\n  iteratorWithReturn[ITERATOR] = function () {\n    return this;\n  };\n  // eslint-disable-next-line no-throw-literal\n  Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n  if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n  var ITERATION_SUPPORT = false;\n  try {\n    var object = {};\n    object[ITERATOR] = function () {\n      return {\n        next: function () {\n          return { done: ITERATION_SUPPORT = true };\n        }\n      };\n    };\n    exec(object);\n  } catch (error) { /* empty */ }\n  return ITERATION_SUPPORT;\n};\n\n\n/***/ }),\n\n/***/ \"1d80\":\n/***/ (function(module, exports) {\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.github.io/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n  return it;\n};\n\n\n/***/ }),\n\n/***/ \"1dde\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(\"d039\");\nvar wellKnownSymbol = __webpack_require__(\"b622\");\nvar V8_VERSION = __webpack_require__(\"2d00\");\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n  // We can't use this feature detection in V8 since it causes\n  // deoptimization and serious performance degradation\n  // https://github.com/zloirock/core-js/issues/677\n  return V8_VERSION >= 51 || !fails(function () {\n    var array = [];\n    var constructor = array.constructor = {};\n    constructor[SPECIES] = function () {\n      return { foo: 1 };\n    };\n    return array[METHOD_NAME](Boolean).foo !== 1;\n  });\n};\n\n\n/***/ }),\n\n/***/ \"23cb\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(\"a691\");\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n  var integer = toInteger(index);\n  return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n\n\n/***/ }),\n\n/***/ \"23e7\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"da84\");\nvar getOwnPropertyDescriptor = __webpack_require__(\"06cf\").f;\nvar createNonEnumerableProperty = __webpack_require__(\"9112\");\nvar redefine = __webpack_require__(\"6eeb\");\nvar setGlobal = __webpack_require__(\"ce4e\");\nvar copyConstructorProperties = __webpack_require__(\"e893\");\nvar isForced = __webpack_require__(\"94ca\");\n\n/*\n  options.target      - name of the target object\n  options.global      - target is the global object\n  options.stat        - export as static methods of target\n  options.proto       - export as prototype methods of target\n  options.real        - real prototype method for the `pure` version\n  options.forced      - export even if the native feature is available\n  options.bind        - bind methods to the target, required for the `pure` version\n  options.wrap        - wrap constructors to preventing global pollution, required for the `pure` version\n  options.unsafe      - use the simple assignment of property instead of delete + defineProperty\n  options.sham        - add a flag to not completely full polyfills\n  options.enumerable  - export as enumerable property\n  options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n  var TARGET = options.target;\n  var GLOBAL = options.global;\n  var STATIC = options.stat;\n  var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n  if (GLOBAL) {\n    target = global;\n  } else if (STATIC) {\n    target = global[TARGET] || setGlobal(TARGET, {});\n  } else {\n    target = (global[TARGET] || {}).prototype;\n  }\n  if (target) for (key in source) {\n    sourceProperty = source[key];\n    if (options.noTargetGet) {\n      descriptor = getOwnPropertyDescriptor(target, key);\n      targetProperty = descriptor && descriptor.value;\n    } else targetProperty = target[key];\n    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n    // contained in target\n    if (!FORCED && targetProperty !== undefined) {\n      if (typeof sourceProperty === typeof targetProperty) continue;\n      copyConstructorProperties(sourceProperty, targetProperty);\n    }\n    // add a flag to not completely full polyfills\n    if (options.sham || (targetProperty && targetProperty.sham)) {\n      createNonEnumerableProperty(sourceProperty, 'sham', true);\n    }\n    // extend global\n    redefine(target, key, sourceProperty, options);\n  }\n};\n\n\n/***/ }),\n\n/***/ \"241c\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar internalObjectKeys = __webpack_require__(\"ca84\");\nvar enumBugKeys = __webpack_require__(\"7839\");\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertynames\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return internalObjectKeys(O, hiddenKeys);\n};\n\n\n/***/ }),\n\n/***/ \"2532\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(\"23e7\");\nvar notARegExp = __webpack_require__(\"5a34\");\nvar requireObjectCoercible = __webpack_require__(\"1d80\");\nvar correctIsRegExpLogic = __webpack_require__(\"ab13\");\n\n// `String.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n  includes: function includes(searchString /* , position = 0 */) {\n    return !!~String(requireObjectCoercible(this))\n      .indexOf(notARegExp(searchString), arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n\n/***/ }),\n\n/***/ \"25f0\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar redefine = __webpack_require__(\"6eeb\");\nvar anObject = __webpack_require__(\"825a\");\nvar fails = __webpack_require__(\"d039\");\nvar flags = __webpack_require__(\"ad6d\");\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar nativeToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = nativeToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n  redefine(RegExp.prototype, TO_STRING, function toString() {\n    var R = anObject(this);\n    var p = String(R.source);\n    var rf = R.flags;\n    var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf);\n    return '/' + p + '/' + f;\n  }, { unsafe: true });\n}\n\n\n/***/ }),\n\n/***/ \"2626\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar getBuiltIn = __webpack_require__(\"d066\");\nvar definePropertyModule = __webpack_require__(\"9bf2\");\nvar wellKnownSymbol = __webpack_require__(\"b622\");\nvar DESCRIPTORS = __webpack_require__(\"83ab\");\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n  var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n  var defineProperty = definePropertyModule.f;\n\n  if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n    defineProperty(Constructor, SPECIES, {\n      configurable: true,\n      get: function () { return this; }\n    });\n  }\n};\n\n\n/***/ }),\n\n/***/ \"2d00\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"da84\");\nvar userAgent = __webpack_require__(\"342f\");\n\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n  match = v8.split('.');\n  version = match[0] + match[1];\n} else if (userAgent) {\n  match = userAgent.match(/Edge\\/(\\d+)/);\n  if (!match || match[1] >= 74) {\n    match = userAgent.match(/Chrome\\/(\\d+)/);\n    if (match) version = match[1];\n  }\n}\n\nmodule.exports = version && +version;\n\n\n/***/ }),\n\n/***/ \"342f\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getBuiltIn = __webpack_require__(\"d066\");\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n\n\n/***/ }),\n\n/***/ \"35a1\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar classof = __webpack_require__(\"f5df\");\nvar Iterators = __webpack_require__(\"3f8c\");\nvar wellKnownSymbol = __webpack_require__(\"b622\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n  if (it != undefined) return it[ITERATOR]\n    || it['@@iterator']\n    || Iterators[classof(it)];\n};\n\n\n/***/ }),\n\n/***/ \"37e8\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(\"83ab\");\nvar definePropertyModule = __webpack_require__(\"9bf2\");\nvar anObject = __webpack_require__(\"825a\");\nvar objectKeys = __webpack_require__(\"df75\");\n\n// `Object.defineProperties` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperties\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var keys = objectKeys(Properties);\n  var length = keys.length;\n  var index = 0;\n  var key;\n  while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n  return O;\n};\n\n\n/***/ }),\n\n/***/ \"3bbe\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"861d\");\n\nmodule.exports = function (it) {\n  if (!isObject(it) && it !== null) {\n    throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n  } return it;\n};\n\n\n/***/ }),\n\n/***/ \"3ca3\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar charAt = __webpack_require__(\"6547\").charAt;\nvar InternalStateModule = __webpack_require__(\"69f3\");\nvar defineIterator = __webpack_require__(\"7dd0\");\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n  setInternalState(this, {\n    type: STRING_ITERATOR,\n    string: String(iterated),\n    index: 0\n  });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n  var state = getInternalState(this);\n  var string = state.string;\n  var index = state.index;\n  var point;\n  if (index >= string.length) return { value: undefined, done: true };\n  point = charAt(string, index);\n  state.index += point.length;\n  return { value: point, done: false };\n});\n\n\n/***/ }),\n\n/***/ \"3f8c\":\n/***/ (function(module, exports) {\n\nmodule.exports = {};\n\n\n/***/ }),\n\n/***/ \"4160\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(\"23e7\");\nvar forEach = __webpack_require__(\"17c2\");\n\n// `Array.prototype.forEach` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n$({ target: 'Array', proto: true, forced: [].forEach != forEach }, {\n  forEach: forEach\n});\n\n\n/***/ }),\n\n/***/ \"428f\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"da84\");\n\nmodule.exports = global;\n\n\n/***/ }),\n\n/***/ \"44ad\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(\"d039\");\nvar classof = __webpack_require__(\"c6b6\");\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n  // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n  // eslint-disable-next-line no-prototype-builtins\n  return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n  return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n\n\n/***/ }),\n\n/***/ \"44d2\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(\"b622\");\nvar create = __webpack_require__(\"7c73\");\nvar definePropertyModule = __webpack_require__(\"9bf2\");\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n  definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n    configurable: true,\n    value: create(null)\n  });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n  ArrayPrototype[UNSCOPABLES][key] = true;\n};\n\n\n/***/ }),\n\n/***/ \"44e7\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"861d\");\nvar classof = __webpack_require__(\"c6b6\");\nvar wellKnownSymbol = __webpack_require__(\"b622\");\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.github.io/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n  var isRegExp;\n  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n\n\n/***/ }),\n\n/***/ \"45fc\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(\"23e7\");\nvar $some = __webpack_require__(\"b727\").some;\nvar arrayMethodIsStrict = __webpack_require__(\"a640\");\nvar arrayMethodUsesToLength = __webpack_require__(\"ae40\");\n\nvar STRICT_METHOD = arrayMethodIsStrict('some');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('some');\n\n// `Array.prototype.some` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.some\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD || !USES_TO_LENGTH }, {\n  some: function some(callbackfn /* , thisArg */) {\n    return $some(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n\n/***/ }),\n\n/***/ \"466d\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar fixRegExpWellKnownSymbolLogic = __webpack_require__(\"d784\");\nvar anObject = __webpack_require__(\"825a\");\nvar toLength = __webpack_require__(\"50c4\");\nvar requireObjectCoercible = __webpack_require__(\"1d80\");\nvar advanceStringIndex = __webpack_require__(\"8aa5\");\nvar regExpExec = __webpack_require__(\"14c3\");\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', 1, function (MATCH, nativeMatch, maybeCallNative) {\n  return [\n    // `String.prototype.match` method\n    // https://tc39.github.io/ecma262/#sec-string.prototype.match\n    function match(regexp) {\n      var O = requireObjectCoercible(this);\n      var matcher = regexp == undefined ? undefined : regexp[MATCH];\n      return matcher !== undefined ? matcher.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n    },\n    // `RegExp.prototype[@@match]` method\n    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match\n    function (regexp) {\n      var res = maybeCallNative(nativeMatch, regexp, this);\n      if (res.done) return res.value;\n\n      var rx = anObject(regexp);\n      var S = String(this);\n\n      if (!rx.global) return regExpExec(rx, S);\n\n      var fullUnicode = rx.unicode;\n      rx.lastIndex = 0;\n      var A = [];\n      var n = 0;\n      var result;\n      while ((result = regExpExec(rx, S)) !== null) {\n        var matchStr = String(result[0]);\n        A[n] = matchStr;\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n        n++;\n      }\n      return n === 0 ? null : A;\n    }\n  ];\n});\n\n\n/***/ }),\n\n/***/ \"4840\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(\"825a\");\nvar aFunction = __webpack_require__(\"1c0b\");\nvar wellKnownSymbol = __webpack_require__(\"b622\");\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.github.io/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n  var C = anObject(O).constructor;\n  var S;\n  return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S);\n};\n\n\n/***/ }),\n\n/***/ \"4930\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(\"d039\");\n\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n  // Chrome 38 Symbol has incorrect toString conversion\n  // eslint-disable-next-line no-undef\n  return !String(Symbol());\n});\n\n\n/***/ }),\n\n/***/ \"498a\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(\"23e7\");\nvar $trim = __webpack_require__(\"58a8\").trim;\nvar forcedStringTrimMethod = __webpack_require__(\"c8d2\");\n\n// `String.prototype.trim` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n  trim: function trim() {\n    return $trim(this);\n  }\n});\n\n\n/***/ }),\n\n/***/ \"4d63\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(\"83ab\");\nvar global = __webpack_require__(\"da84\");\nvar isForced = __webpack_require__(\"94ca\");\nvar inheritIfRequired = __webpack_require__(\"7156\");\nvar defineProperty = __webpack_require__(\"9bf2\").f;\nvar getOwnPropertyNames = __webpack_require__(\"241c\").f;\nvar isRegExp = __webpack_require__(\"44e7\");\nvar getFlags = __webpack_require__(\"ad6d\");\nvar stickyHelpers = __webpack_require__(\"9f7f\");\nvar redefine = __webpack_require__(\"6eeb\");\nvar fails = __webpack_require__(\"d039\");\nvar setInternalState = __webpack_require__(\"69f3\").set;\nvar setSpecies = __webpack_require__(\"2626\");\nvar wellKnownSymbol = __webpack_require__(\"b622\");\n\nvar MATCH = wellKnownSymbol('match');\nvar NativeRegExp = global.RegExp;\nvar RegExpPrototype = NativeRegExp.prototype;\nvar re1 = /a/g;\nvar re2 = /a/g;\n\n// \"new\" should create a new object, old webkit bug\nvar CORRECT_NEW = new NativeRegExp(re1) !== re1;\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\n\nvar FORCED = DESCRIPTORS && isForced('RegExp', (!CORRECT_NEW || UNSUPPORTED_Y || fails(function () {\n  re2[MATCH] = false;\n  // RegExp constructor can alter flags and IsRegExp works correct with @@match\n  return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i';\n})));\n\n// `RegExp` constructor\n// https://tc39.github.io/ecma262/#sec-regexp-constructor\nif (FORCED) {\n  var RegExpWrapper = function RegExp(pattern, flags) {\n    var thisIsRegExp = this instanceof RegExpWrapper;\n    var patternIsRegExp = isRegExp(pattern);\n    var flagsAreUndefined = flags === undefined;\n    var sticky;\n\n    if (!thisIsRegExp && patternIsRegExp && pattern.constructor === RegExpWrapper && flagsAreUndefined) {\n      return pattern;\n    }\n\n    if (CORRECT_NEW) {\n      if (patternIsRegExp && !flagsAreUndefined) pattern = pattern.source;\n    } else if (pattern instanceof RegExpWrapper) {\n      if (flagsAreUndefined) flags = getFlags.call(pattern);\n      pattern = pattern.source;\n    }\n\n    if (UNSUPPORTED_Y) {\n      sticky = !!flags && flags.indexOf('y') > -1;\n      if (sticky) flags = flags.replace(/y/g, '');\n    }\n\n    var result = inheritIfRequired(\n      CORRECT_NEW ? new NativeRegExp(pattern, flags) : NativeRegExp(pattern, flags),\n      thisIsRegExp ? this : RegExpPrototype,\n      RegExpWrapper\n    );\n\n    if (UNSUPPORTED_Y && sticky) setInternalState(result, { sticky: sticky });\n\n    return result;\n  };\n  var proxy = function (key) {\n    key in RegExpWrapper || defineProperty(RegExpWrapper, key, {\n      configurable: true,\n      get: function () { return NativeRegExp[key]; },\n      set: function (it) { NativeRegExp[key] = it; }\n    });\n  };\n  var keys = getOwnPropertyNames(NativeRegExp);\n  var index = 0;\n  while (keys.length > index) proxy(keys[index++]);\n  RegExpPrototype.constructor = RegExpWrapper;\n  RegExpWrapper.prototype = RegExpPrototype;\n  redefine(global, 'RegExp', RegExpWrapper);\n}\n\n// https://tc39.github.io/ecma262/#sec-get-regexp-@@species\nsetSpecies('RegExp');\n\n\n/***/ }),\n\n/***/ \"4d64\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toIndexedObject = __webpack_require__(\"fc6a\");\nvar toLength = __webpack_require__(\"50c4\");\nvar toAbsoluteIndex = __webpack_require__(\"23cb\");\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIndexedObject($this);\n    var length = toLength(O.length);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare\n    if (IS_INCLUDES && el != el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare\n      if (value != value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) {\n      if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.includes` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.includes\n  includes: createMethod(true),\n  // `Array.prototype.indexOf` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n  indexOf: createMethod(false)\n};\n\n\n/***/ }),\n\n/***/ \"4de4\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(\"23e7\");\nvar $filter = __webpack_require__(\"b727\").filter;\nvar arrayMethodHasSpeciesSupport = __webpack_require__(\"1dde\");\nvar arrayMethodUsesToLength = __webpack_require__(\"ae40\");\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n// Edge 14- issue\nvar USES_TO_LENGTH = arrayMethodUsesToLength('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n  filter: function filter(callbackfn /* , thisArg */) {\n    return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n\n/***/ }),\n\n/***/ \"4df4\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar bind = __webpack_require__(\"0366\");\nvar toObject = __webpack_require__(\"7b0b\");\nvar callWithSafeIterationClosing = __webpack_require__(\"9bdd\");\nvar isArrayIteratorMethod = __webpack_require__(\"e95a\");\nvar toLength = __webpack_require__(\"50c4\");\nvar createProperty = __webpack_require__(\"8418\");\nvar getIteratorMethod = __webpack_require__(\"35a1\");\n\n// `Array.from` method implementation\n// https://tc39.github.io/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n  var O = toObject(arrayLike);\n  var C = typeof this == 'function' ? this : Array;\n  var argumentsLength = arguments.length;\n  var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n  var mapping = mapfn !== undefined;\n  var iteratorMethod = getIteratorMethod(O);\n  var index = 0;\n  var length, result, step, iterator, next, value;\n  if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);\n  // if the target is not iterable or it's an array with the default iterator - use a simple case\n  if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {\n    iterator = iteratorMethod.call(O);\n    next = iterator.next;\n    result = new C();\n    for (;!(step = next.call(iterator)).done; index++) {\n      value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n      createProperty(result, index, value);\n    }\n  } else {\n    length = toLength(O.length);\n    result = new C(length);\n    for (;length > index; index++) {\n      value = mapping ? mapfn(O[index], index) : O[index];\n      createProperty(result, index, value);\n    }\n  }\n  result.length = index;\n  return result;\n};\n\n\n/***/ }),\n\n/***/ \"50c4\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(\"a691\");\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.github.io/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n  return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n\n\n/***/ }),\n\n/***/ \"5135\":\n/***/ (function(module, exports) {\n\nvar hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function (it, key) {\n  return hasOwnProperty.call(it, key);\n};\n\n\n/***/ }),\n\n/***/ \"5319\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar fixRegExpWellKnownSymbolLogic = __webpack_require__(\"d784\");\nvar anObject = __webpack_require__(\"825a\");\nvar toObject = __webpack_require__(\"7b0b\");\nvar toLength = __webpack_require__(\"50c4\");\nvar toInteger = __webpack_require__(\"a691\");\nvar requireObjectCoercible = __webpack_require__(\"1d80\");\nvar advanceStringIndex = __webpack_require__(\"8aa5\");\nvar regExpExec = __webpack_require__(\"14c3\");\n\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n  return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative, reason) {\n  var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = reason.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE;\n  var REPLACE_KEEPS_$0 = reason.REPLACE_KEEPS_$0;\n  var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n  return [\n    // `String.prototype.replace` method\n    // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n    function replace(searchValue, replaceValue) {\n      var O = requireObjectCoercible(this);\n      var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];\n      return replacer !== undefined\n        ? replacer.call(searchValue, O, replaceValue)\n        : nativeReplace.call(String(O), searchValue, replaceValue);\n    },\n    // `RegExp.prototype[@@replace]` method\n    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n    function (regexp, replaceValue) {\n      if (\n        (!REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE && REPLACE_KEEPS_$0) ||\n        (typeof replaceValue === 'string' && replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1)\n      ) {\n        var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);\n        if (res.done) return res.value;\n      }\n\n      var rx = anObject(regexp);\n      var S = String(this);\n\n      var functionalReplace = typeof replaceValue === 'function';\n      if (!functionalReplace) replaceValue = String(replaceValue);\n\n      var global = rx.global;\n      if (global) {\n        var fullUnicode = rx.unicode;\n        rx.lastIndex = 0;\n      }\n      var results = [];\n      while (true) {\n        var result = regExpExec(rx, S);\n        if (result === null) break;\n\n        results.push(result);\n        if (!global) break;\n\n        var matchStr = String(result[0]);\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n      }\n\n      var accumulatedResult = '';\n      var nextSourcePosition = 0;\n      for (var i = 0; i < results.length; i++) {\n        result = results[i];\n\n        var matched = String(result[0]);\n        var position = max(min(toInteger(result.index), S.length), 0);\n        var captures = [];\n        // NOTE: This is equivalent to\n        //   captures = result.slice(1).map(maybeToString)\n        // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n        // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n        // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n        for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n        var namedCaptures = result.groups;\n        if (functionalReplace) {\n          var replacerArgs = [matched].concat(captures, position, S);\n          if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n          var replacement = String(replaceValue.apply(undefined, replacerArgs));\n        } else {\n          replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n        }\n        if (position >= nextSourcePosition) {\n          accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n          nextSourcePosition = position + matched.length;\n        }\n      }\n      return accumulatedResult + S.slice(nextSourcePosition);\n    }\n  ];\n\n  // https://tc39.github.io/ecma262/#sec-getsubstitution\n  function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n    var tailPos = position + matched.length;\n    var m = captures.length;\n    var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n    if (namedCaptures !== undefined) {\n      namedCaptures = toObject(namedCaptures);\n      symbols = SUBSTITUTION_SYMBOLS;\n    }\n    return nativeReplace.call(replacement, symbols, function (match, ch) {\n      var capture;\n      switch (ch.charAt(0)) {\n        case '$': return '$';\n        case '&': return matched;\n        case '`': return str.slice(0, position);\n        case \"'\": return str.slice(tailPos);\n        case '<':\n          capture = namedCaptures[ch.slice(1, -1)];\n          break;\n        default: // \\d\\d?\n          var n = +ch;\n          if (n === 0) return match;\n          if (n > m) {\n            var f = floor(n / 10);\n            if (f === 0) return match;\n            if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n            return match;\n          }\n          capture = captures[n - 1];\n      }\n      return capture === undefined ? '' : capture;\n    });\n  }\n});\n\n\n/***/ }),\n\n/***/ \"5692\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar IS_PURE = __webpack_require__(\"c430\");\nvar store = __webpack_require__(\"c6cd\");\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: '3.6.5',\n  mode: IS_PURE ? 'pure' : 'global',\n  copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n\n\n/***/ }),\n\n/***/ \"56ef\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getBuiltIn = __webpack_require__(\"d066\");\nvar getOwnPropertyNamesModule = __webpack_require__(\"241c\");\nvar getOwnPropertySymbolsModule = __webpack_require__(\"7418\");\nvar anObject = __webpack_require__(\"825a\");\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n  var keys = getOwnPropertyNamesModule.f(anObject(it));\n  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n  return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n\n\n/***/ }),\n\n/***/ \"5899\":\n/***/ (function(module, exports) {\n\n// a string of all valid unicode whitespaces\n// eslint-disable-next-line max-len\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n\n\n/***/ }),\n\n/***/ \"58a8\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar requireObjectCoercible = __webpack_require__(\"1d80\");\nvar whitespaces = __webpack_require__(\"5899\");\n\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n  return function ($this) {\n    var string = String(requireObjectCoercible($this));\n    if (TYPE & 1) string = string.replace(ltrim, '');\n    if (TYPE & 2) string = string.replace(rtrim, '');\n    return string;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.{ trimLeft, trimStart }` methods\n  // https://tc39.github.io/ecma262/#sec-string.prototype.trimstart\n  start: createMethod(1),\n  // `String.prototype.{ trimRight, trimEnd }` methods\n  // https://tc39.github.io/ecma262/#sec-string.prototype.trimend\n  end: createMethod(2),\n  // `String.prototype.trim` method\n  // https://tc39.github.io/ecma262/#sec-string.prototype.trim\n  trim: createMethod(3)\n};\n\n\n/***/ }),\n\n/***/ \"5a34\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isRegExp = __webpack_require__(\"44e7\");\n\nmodule.exports = function (it) {\n  if (isRegExp(it)) {\n    throw TypeError(\"The method doesn't accept regular expressions\");\n  } return it;\n};\n\n\n/***/ }),\n\n/***/ \"5c6c\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n\n\n/***/ }),\n\n/***/ \"60da\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar DESCRIPTORS = __webpack_require__(\"83ab\");\nvar fails = __webpack_require__(\"d039\");\nvar objectKeys = __webpack_require__(\"df75\");\nvar getOwnPropertySymbolsModule = __webpack_require__(\"7418\");\nvar propertyIsEnumerableModule = __webpack_require__(\"d1e7\");\nvar toObject = __webpack_require__(\"7b0b\");\nvar IndexedObject = __webpack_require__(\"44ad\");\n\nvar nativeAssign = Object.assign;\nvar defineProperty = Object.defineProperty;\n\n// `Object.assign` method\n// https://tc39.github.io/ecma262/#sec-object.assign\nmodule.exports = !nativeAssign || fails(function () {\n  // should have correct order of operations (Edge bug)\n  if (DESCRIPTORS && nativeAssign({ b: 1 }, nativeAssign(defineProperty({}, 'a', {\n    enumerable: true,\n    get: function () {\n      defineProperty(this, 'b', {\n        value: 3,\n        enumerable: false\n      });\n    }\n  }), { b: 2 })).b !== 1) return true;\n  // should work with symbols and should have deterministic property order (V8 bug)\n  var A = {};\n  var B = {};\n  // eslint-disable-next-line no-undef\n  var symbol = Symbol();\n  var alphabet = 'abcdefghijklmnopqrst';\n  A[symbol] = 7;\n  alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n  return nativeAssign({}, A)[symbol] != 7 || objectKeys(nativeAssign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n  var T = toObject(target);\n  var argumentsLength = arguments.length;\n  var index = 1;\n  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n  var propertyIsEnumerable = propertyIsEnumerableModule.f;\n  while (argumentsLength > index) {\n    var S = IndexedObject(arguments[index++]);\n    var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S);\n    var length = keys.length;\n    var j = 0;\n    var key;\n    while (length > j) {\n      key = keys[j++];\n      if (!DESCRIPTORS || propertyIsEnumerable.call(S, key)) T[key] = S[key];\n    }\n  } return T;\n} : nativeAssign;\n\n\n/***/ }),\n\n/***/ \"6547\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(\"a691\");\nvar requireObjectCoercible = __webpack_require__(\"1d80\");\n\n// `String.prototype.{ codePointAt, at }` methods implementation\nvar createMethod = function (CONVERT_TO_STRING) {\n  return function ($this, pos) {\n    var S = String(requireObjectCoercible($this));\n    var position = toInteger(pos);\n    var size = S.length;\n    var first, second;\n    if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n    first = S.charCodeAt(position);\n    return first < 0xD800 || first > 0xDBFF || position + 1 === size\n      || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n        ? CONVERT_TO_STRING ? S.charAt(position) : first\n        : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.codePointAt` method\n  // https://tc39.github.io/ecma262/#sec-string.prototype.codepointat\n  codeAt: createMethod(false),\n  // `String.prototype.at` method\n  // https://github.com/mathiasbynens/String.prototype.at\n  charAt: createMethod(true)\n};\n\n\n/***/ }),\n\n/***/ \"65f0\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"861d\");\nvar isArray = __webpack_require__(\"e8b5\");\nvar wellKnownSymbol = __webpack_require__(\"b622\");\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.github.io/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n  var C;\n  if (isArray(originalArray)) {\n    C = originalArray.constructor;\n    // cross-realm fallback\n    if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n    else if (isObject(C)) {\n      C = C[SPECIES];\n      if (C === null) C = undefined;\n    }\n  } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n};\n\n\n/***/ }),\n\n/***/ \"69f3\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar NATIVE_WEAK_MAP = __webpack_require__(\"7f9a\");\nvar global = __webpack_require__(\"da84\");\nvar isObject = __webpack_require__(\"861d\");\nvar createNonEnumerableProperty = __webpack_require__(\"9112\");\nvar objectHas = __webpack_require__(\"5135\");\nvar sharedKey = __webpack_require__(\"f772\");\nvar hiddenKeys = __webpack_require__(\"d012\");\n\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n  return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n  return function (it) {\n    var state;\n    if (!isObject(it) || (state = get(it)).type !== TYPE) {\n      throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n    } return state;\n  };\n};\n\nif (NATIVE_WEAK_MAP) {\n  var store = new WeakMap();\n  var wmget = store.get;\n  var wmhas = store.has;\n  var wmset = store.set;\n  set = function (it, metadata) {\n    wmset.call(store, it, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return wmget.call(store, it) || {};\n  };\n  has = function (it) {\n    return wmhas.call(store, it);\n  };\n} else {\n  var STATE = sharedKey('state');\n  hiddenKeys[STATE] = true;\n  set = function (it, metadata) {\n    createNonEnumerableProperty(it, STATE, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return objectHas(it, STATE) ? it[STATE] : {};\n  };\n  has = function (it) {\n    return objectHas(it, STATE);\n  };\n}\n\nmodule.exports = {\n  set: set,\n  get: get,\n  has: has,\n  enforce: enforce,\n  getterFor: getterFor\n};\n\n\n/***/ }),\n\n/***/ \"6eeb\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"da84\");\nvar createNonEnumerableProperty = __webpack_require__(\"9112\");\nvar has = __webpack_require__(\"5135\");\nvar setGlobal = __webpack_require__(\"ce4e\");\nvar inspectSource = __webpack_require__(\"8925\");\nvar InternalStateModule = __webpack_require__(\"69f3\");\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n  var unsafe = options ? !!options.unsafe : false;\n  var simple = options ? !!options.enumerable : false;\n  var noTargetGet = options ? !!options.noTargetGet : false;\n  if (typeof value == 'function') {\n    if (typeof key == 'string' && !has(value, 'name')) createNonEnumerableProperty(value, 'name', key);\n    enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');\n  }\n  if (O === global) {\n    if (simple) O[key] = value;\n    else setGlobal(key, value);\n    return;\n  } else if (!unsafe) {\n    delete O[key];\n  } else if (!noTargetGet && O[key]) {\n    simple = true;\n  }\n  if (simple) O[key] = value;\n  else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n  return typeof this == 'function' && getInternalState(this).source || inspectSource(this);\n});\n\n\n/***/ }),\n\n/***/ \"7156\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"861d\");\nvar setPrototypeOf = __webpack_require__(\"d2bb\");\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n  var NewTarget, NewTargetPrototype;\n  if (\n    // it can work only with native `setPrototypeOf`\n    setPrototypeOf &&\n    // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n    typeof (NewTarget = dummy.constructor) == 'function' &&\n    NewTarget !== Wrapper &&\n    isObject(NewTargetPrototype = NewTarget.prototype) &&\n    NewTargetPrototype !== Wrapper.prototype\n  ) setPrototypeOf($this, NewTargetPrototype);\n  return $this;\n};\n\n\n/***/ }),\n\n/***/ \"7418\":\n/***/ (function(module, exports) {\n\nexports.f = Object.getOwnPropertySymbols;\n\n\n/***/ }),\n\n/***/ \"746f\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar path = __webpack_require__(\"428f\");\nvar has = __webpack_require__(\"5135\");\nvar wrappedWellKnownSymbolModule = __webpack_require__(\"e538\");\nvar defineProperty = __webpack_require__(\"9bf2\").f;\n\nmodule.exports = function (NAME) {\n  var Symbol = path.Symbol || (path.Symbol = {});\n  if (!has(Symbol, NAME)) defineProperty(Symbol, NAME, {\n    value: wrappedWellKnownSymbolModule.f(NAME)\n  });\n};\n\n\n/***/ }),\n\n/***/ \"7839\":\n/***/ (function(module, exports) {\n\n// IE8- don't enum bug keys\nmodule.exports = [\n  'constructor',\n  'hasOwnProperty',\n  'isPrototypeOf',\n  'propertyIsEnumerable',\n  'toLocaleString',\n  'toString',\n  'valueOf'\n];\n\n\n/***/ }),\n\n/***/ \"7b0b\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar requireObjectCoercible = __webpack_require__(\"1d80\");\n\n// `ToObject` abstract operation\n// https://tc39.github.io/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n  return Object(requireObjectCoercible(argument));\n};\n\n\n/***/ }),\n\n/***/ \"7c73\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(\"825a\");\nvar defineProperties = __webpack_require__(\"37e8\");\nvar enumBugKeys = __webpack_require__(\"7839\");\nvar hiddenKeys = __webpack_require__(\"d012\");\nvar html = __webpack_require__(\"1be4\");\nvar documentCreateElement = __webpack_require__(\"cc12\");\nvar sharedKey = __webpack_require__(\"f772\");\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n  return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n  activeXDocument.write(scriptTag(''));\n  activeXDocument.close();\n  var temp = activeXDocument.parentWindow.Object;\n  activeXDocument = null; // avoid memory leak\n  return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = documentCreateElement('iframe');\n  var JS = 'java' + SCRIPT + ':';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  html.appendChild(iframe);\n  // https://github.com/zloirock/core-js/issues/475\n  iframe.src = String(JS);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(scriptTag('document.F=Object'));\n  iframeDocument.close();\n  return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n  try {\n    /* global ActiveXObject */\n    activeXDocument = document.domain && new ActiveXObject('htmlfile');\n  } catch (error) { /* ignore */ }\n  NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();\n  var length = enumBugKeys.length;\n  while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n  return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.github.io/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    EmptyConstructor[PROTOTYPE] = anObject(O);\n    result = new EmptyConstructor();\n    EmptyConstructor[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = NullProtoObject();\n  return Properties === undefined ? result : defineProperties(result, Properties);\n};\n\n\n/***/ }),\n\n/***/ \"7dd0\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(\"23e7\");\nvar createIteratorConstructor = __webpack_require__(\"9ed3\");\nvar getPrototypeOf = __webpack_require__(\"e163\");\nvar setPrototypeOf = __webpack_require__(\"d2bb\");\nvar setToStringTag = __webpack_require__(\"d44e\");\nvar createNonEnumerableProperty = __webpack_require__(\"9112\");\nvar redefine = __webpack_require__(\"6eeb\");\nvar wellKnownSymbol = __webpack_require__(\"b622\");\nvar IS_PURE = __webpack_require__(\"c430\");\nvar Iterators = __webpack_require__(\"3f8c\");\nvar IteratorsCore = __webpack_require__(\"ae93\");\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n  createIteratorConstructor(IteratorConstructor, NAME, next);\n\n  var getIterationMethod = function (KIND) {\n    if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n    if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n    switch (KIND) {\n      case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n      case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n      case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n    } return function () { return new IteratorConstructor(this); };\n  };\n\n  var TO_STRING_TAG = NAME + ' Iterator';\n  var INCORRECT_VALUES_NAME = false;\n  var IterablePrototype = Iterable.prototype;\n  var nativeIterator = IterablePrototype[ITERATOR]\n    || IterablePrototype['@@iterator']\n    || DEFAULT && IterablePrototype[DEFAULT];\n  var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n  var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n  var CurrentIteratorPrototype, methods, KEY;\n\n  // fix native\n  if (anyNativeIterator) {\n    CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n    if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n      if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n        if (setPrototypeOf) {\n          setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n        } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n          createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);\n        }\n      }\n      // Set @@toStringTag to native iterators\n      setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n      if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n    }\n  }\n\n  // fix Array#{values, @@iterator}.name in V8 / FF\n  if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n    INCORRECT_VALUES_NAME = true;\n    defaultIterator = function values() { return nativeIterator.call(this); };\n  }\n\n  // define iterator\n  if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n    createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);\n  }\n  Iterators[NAME] = defaultIterator;\n\n  // export additional methods\n  if (DEFAULT) {\n    methods = {\n      values: getIterationMethod(VALUES),\n      keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n      entries: getIterationMethod(ENTRIES)\n    };\n    if (FORCED) for (KEY in methods) {\n      if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n        redefine(IterablePrototype, KEY, methods[KEY]);\n      }\n    } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n  }\n\n  return methods;\n};\n\n\n/***/ }),\n\n/***/ \"7f9a\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"da84\");\nvar inspectSource = __webpack_require__(\"8925\");\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\n\n\n/***/ }),\n\n/***/ \"825a\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"861d\");\n\nmodule.exports = function (it) {\n  if (!isObject(it)) {\n    throw TypeError(String(it) + ' is not an object');\n  } return it;\n};\n\n\n/***/ }),\n\n/***/ \"83ab\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(\"d039\");\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !fails(function () {\n  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n\n\n/***/ }),\n\n/***/ \"8418\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar toPrimitive = __webpack_require__(\"c04e\");\nvar definePropertyModule = __webpack_require__(\"9bf2\");\nvar createPropertyDescriptor = __webpack_require__(\"5c6c\");\n\nmodule.exports = function (object, key, value) {\n  var propertyKey = toPrimitive(key);\n  if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n  else object[propertyKey] = value;\n};\n\n\n/***/ }),\n\n/***/ \"861d\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n  return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n\n/***/ }),\n\n/***/ \"8875\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// addapted from the document.currentScript polyfill by Adam Miller\n// MIT license\n// source: https://github.com/amiller-gh/currentScript-polyfill\n\n// added support for Firefox https://bugzilla.mozilla.org/show_bug.cgi?id=1620505\n\n(function (root, factory) {\n  if (true) {\n    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n  } else {}\n}(typeof self !== 'undefined' ? self : this, function () {\n  function getCurrentScript () {\n    if (document.currentScript) {\n      return document.currentScript\n    }\n  \n    // IE 8-10 support script readyState\n    // IE 11+ & Firefox support stack trace\n    try {\n      throw new Error();\n    }\n    catch (err) {\n      // Find the second match for the \"at\" string to get file src url from stack.\n      var ieStackRegExp = /.*at [^(]*\\((.*):(.+):(.+)\\)$/ig,\n        ffStackRegExp = /@([^@]*):(\\d+):(\\d+)\\s*$/ig,\n        stackDetails = ieStackRegExp.exec(err.stack) || ffStackRegExp.exec(err.stack),\n        scriptLocation = (stackDetails && stackDetails[1]) || false,\n        line = (stackDetails && stackDetails[2]) || false,\n        currentLocation = document.location.href.replace(document.location.hash, ''),\n        pageSource,\n        inlineScriptSourceRegExp,\n        inlineScriptSource,\n        scripts = document.getElementsByTagName('script'); // Live NodeList collection\n  \n      if (scriptLocation === currentLocation) {\n        pageSource = document.documentElement.outerHTML;\n        inlineScriptSourceRegExp = new RegExp('(?:[^\\\\n]+?\\\\n){0,' + (line - 2) + '}[^<]*<script>([\\\\d\\\\D]*?)<\\\\/script>[\\\\d\\\\D]*', 'i');\n        inlineScriptSource = pageSource.replace(inlineScriptSourceRegExp, '$1').trim();\n      }\n  \n      for (var i = 0; i < scripts.length; i++) {\n        // If ready state is interactive, return the script tag\n        if (scripts[i].readyState === 'interactive') {\n          return scripts[i];\n        }\n  \n        // If src matches, return the script tag\n        if (scripts[i].src === scriptLocation) {\n          return scripts[i];\n        }\n  \n        // If inline source matches, return the script tag\n        if (\n          scriptLocation === currentLocation &&\n          scripts[i].innerHTML &&\n          scripts[i].innerHTML.trim() === inlineScriptSource\n        ) {\n          return scripts[i];\n        }\n      }\n  \n      // If no match, return null\n      return null;\n    }\n  };\n\n  return getCurrentScript\n}));\n\n\n/***/ }),\n\n/***/ \"8925\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar store = __webpack_require__(\"c6cd\");\n\nvar functionToString = Function.toString;\n\n// this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper\nif (typeof store.inspectSource != 'function') {\n  store.inspectSource = function (it) {\n    return functionToString.call(it);\n  };\n}\n\nmodule.exports = store.inspectSource;\n\n\n/***/ }),\n\n/***/ \"8aa5\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar charAt = __webpack_require__(\"6547\").charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n  return index + (unicode ? charAt(S, index).length : 1);\n};\n\n\n/***/ }),\n\n/***/ \"90e3\":\n/***/ (function(module, exports) {\n\nvar id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n  return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n\n\n/***/ }),\n\n/***/ \"9112\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(\"83ab\");\nvar definePropertyModule = __webpack_require__(\"9bf2\");\nvar createPropertyDescriptor = __webpack_require__(\"5c6c\");\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n  return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n\n\n/***/ }),\n\n/***/ \"9263\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar regexpFlags = __webpack_require__(\"ad6d\");\nvar stickyHelpers = __webpack_require__(\"9f7f\");\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n  var re1 = /a/;\n  var re2 = /b*/g;\n  nativeExec.call(re1, 'a');\n  nativeExec.call(re2, 'a');\n  return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y || stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y;\n\nif (PATCH) {\n  patchedExec = function exec(str) {\n    var re = this;\n    var lastIndex, reCopy, match, i;\n    var sticky = UNSUPPORTED_Y && re.sticky;\n    var flags = regexpFlags.call(re);\n    var source = re.source;\n    var charsAdded = 0;\n    var strCopy = str;\n\n    if (sticky) {\n      flags = flags.replace('y', '');\n      if (flags.indexOf('g') === -1) {\n        flags += 'g';\n      }\n\n      strCopy = String(str).slice(re.lastIndex);\n      // Support anchored sticky behavior.\n      if (re.lastIndex > 0 && (!re.multiline || re.multiline && str[re.lastIndex - 1] !== '\\n')) {\n        source = '(?: ' + source + ')';\n        strCopy = ' ' + strCopy;\n        charsAdded++;\n      }\n      // ^(? + rx + ) is needed, in combination with some str slicing, to\n      // simulate the 'y' flag.\n      reCopy = new RegExp('^(?:' + source + ')', flags);\n    }\n\n    if (NPCG_INCLUDED) {\n      reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n    }\n    if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n    match = nativeExec.call(sticky ? reCopy : re, strCopy);\n\n    if (sticky) {\n      if (match) {\n        match.input = match.input.slice(charsAdded);\n        match[0] = match[0].slice(charsAdded);\n        match.index = re.lastIndex;\n        re.lastIndex += match[0].length;\n      } else re.lastIndex = 0;\n    } else if (UPDATES_LAST_INDEX_WRONG && match) {\n      re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n    }\n    if (NPCG_INCLUDED && match && match.length > 1) {\n      // Fix browsers whose `exec` methods don't consistently return `undefined`\n      // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n      nativeReplace.call(match[0], reCopy, function () {\n        for (i = 1; i < arguments.length - 2; i++) {\n          if (arguments[i] === undefined) match[i] = undefined;\n        }\n      });\n    }\n\n    return match;\n  };\n}\n\nmodule.exports = patchedExec;\n\n\n/***/ }),\n\n/***/ \"94ca\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(\"d039\");\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n  var value = data[normalize(feature)];\n  return value == POLYFILL ? true\n    : value == NATIVE ? false\n    : typeof detection == 'function' ? fails(detection)\n    : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n  return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n\n\n/***/ }),\n\n/***/ \"99af\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(\"23e7\");\nvar fails = __webpack_require__(\"d039\");\nvar isArray = __webpack_require__(\"e8b5\");\nvar isObject = __webpack_require__(\"861d\");\nvar toObject = __webpack_require__(\"7b0b\");\nvar toLength = __webpack_require__(\"50c4\");\nvar createProperty = __webpack_require__(\"8418\");\nvar arraySpeciesCreate = __webpack_require__(\"65f0\");\nvar arrayMethodHasSpeciesSupport = __webpack_require__(\"1dde\");\nvar wellKnownSymbol = __webpack_require__(\"b622\");\nvar V8_VERSION = __webpack_require__(\"2d00\");\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n  var array = [];\n  array[IS_CONCAT_SPREADABLE] = false;\n  return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n  if (!isObject(O)) return false;\n  var spreadable = O[IS_CONCAT_SPREADABLE];\n  return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, forced: FORCED }, {\n  concat: function concat(arg) { // eslint-disable-line no-unused-vars\n    var O = toObject(this);\n    var A = arraySpeciesCreate(O, 0);\n    var n = 0;\n    var i, k, length, len, E;\n    for (i = -1, length = arguments.length; i < length; i++) {\n      E = i === -1 ? O : arguments[i];\n      if (isConcatSpreadable(E)) {\n        len = toLength(E.length);\n        if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n        for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n      } else {\n        if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n        createProperty(A, n++, E);\n      }\n    }\n    A.length = n;\n    return A;\n  }\n});\n\n\n/***/ }),\n\n/***/ \"9bdd\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(\"825a\");\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n  try {\n    return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n  // 7.4.6 IteratorClose(iterator, completion)\n  } catch (error) {\n    var returnMethod = iterator['return'];\n    if (returnMethod !== undefined) anObject(returnMethod.call(iterator));\n    throw error;\n  }\n};\n\n\n/***/ }),\n\n/***/ \"9bf2\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(\"83ab\");\nvar IE8_DOM_DEFINE = __webpack_require__(\"0cfb\");\nvar anObject = __webpack_require__(\"825a\");\nvar toPrimitive = __webpack_require__(\"c04e\");\n\nvar nativeDefineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPrimitive(P, true);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return nativeDefineProperty(O, P, Attributes);\n  } catch (error) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n\n\n/***/ }),\n\n/***/ \"9ed3\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar IteratorPrototype = __webpack_require__(\"ae93\").IteratorPrototype;\nvar create = __webpack_require__(\"7c73\");\nvar createPropertyDescriptor = __webpack_require__(\"5c6c\");\nvar setToStringTag = __webpack_require__(\"d44e\");\nvar Iterators = __webpack_require__(\"3f8c\");\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n  var TO_STRING_TAG = NAME + ' Iterator';\n  IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n  setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n  Iterators[TO_STRING_TAG] = returnThis;\n  return IteratorConstructor;\n};\n\n\n/***/ }),\n\n/***/ \"9f7f\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar fails = __webpack_require__(\"d039\");\n\n// babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError,\n// so we use an intermediate function.\nfunction RE(s, f) {\n  return RegExp(s, f);\n}\n\nexports.UNSUPPORTED_Y = fails(function () {\n  // babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\n  var re = RE('a', 'y');\n  re.lastIndex = 2;\n  return re.exec('abcd') != null;\n});\n\nexports.BROKEN_CARET = fails(function () {\n  // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n  var re = RE('^r', 'gy');\n  re.lastIndex = 2;\n  return re.exec('str') != null;\n});\n\n\n/***/ }),\n\n/***/ \"a15b\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(\"23e7\");\nvar IndexedObject = __webpack_require__(\"44ad\");\nvar toIndexedObject = __webpack_require__(\"fc6a\");\nvar arrayMethodIsStrict = __webpack_require__(\"a640\");\n\nvar nativeJoin = [].join;\n\nvar ES3_STRINGS = IndexedObject != Object;\nvar STRICT_METHOD = arrayMethodIsStrict('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: ES3_STRINGS || !STRICT_METHOD }, {\n  join: function join(separator) {\n    return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator);\n  }\n});\n\n\n/***/ }),\n\n/***/ \"a434\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(\"23e7\");\nvar toAbsoluteIndex = __webpack_require__(\"23cb\");\nvar toInteger = __webpack_require__(\"a691\");\nvar toLength = __webpack_require__(\"50c4\");\nvar toObject = __webpack_require__(\"7b0b\");\nvar arraySpeciesCreate = __webpack_require__(\"65f0\");\nvar createProperty = __webpack_require__(\"8418\");\nvar arrayMethodHasSpeciesSupport = __webpack_require__(\"1dde\");\nvar arrayMethodUsesToLength = __webpack_require__(\"ae40\");\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('splice', { ACCESSORS: true, 0: 0, 1: 2 });\n\nvar max = Math.max;\nvar min = Math.min;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';\n\n// `Array.prototype.splice` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n  splice: function splice(start, deleteCount /* , ...items */) {\n    var O = toObject(this);\n    var len = toLength(O.length);\n    var actualStart = toAbsoluteIndex(start, len);\n    var argumentsLength = arguments.length;\n    var insertCount, actualDeleteCount, A, k, from, to;\n    if (argumentsLength === 0) {\n      insertCount = actualDeleteCount = 0;\n    } else if (argumentsLength === 1) {\n      insertCount = 0;\n      actualDeleteCount = len - actualStart;\n    } else {\n      insertCount = argumentsLength - 2;\n      actualDeleteCount = min(max(toInteger(deleteCount), 0), len - actualStart);\n    }\n    if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {\n      throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n    }\n    A = arraySpeciesCreate(O, actualDeleteCount);\n    for (k = 0; k < actualDeleteCount; k++) {\n      from = actualStart + k;\n      if (from in O) createProperty(A, k, O[from]);\n    }\n    A.length = actualDeleteCount;\n    if (insertCount < actualDeleteCount) {\n      for (k = actualStart; k < len - actualDeleteCount; k++) {\n        from = k + actualDeleteCount;\n        to = k + insertCount;\n        if (from in O) O[to] = O[from];\n        else delete O[to];\n      }\n      for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];\n    } else if (insertCount > actualDeleteCount) {\n      for (k = len - actualDeleteCount; k > actualStart; k--) {\n        from = k + actualDeleteCount - 1;\n        to = k + insertCount - 1;\n        if (from in O) O[to] = O[from];\n        else delete O[to];\n      }\n    }\n    for (k = 0; k < insertCount; k++) {\n      O[k + actualStart] = arguments[k + 2];\n    }\n    O.length = len - actualDeleteCount + insertCount;\n    return A;\n  }\n});\n\n\n/***/ }),\n\n/***/ \"a4d3\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(\"23e7\");\nvar global = __webpack_require__(\"da84\");\nvar getBuiltIn = __webpack_require__(\"d066\");\nvar IS_PURE = __webpack_require__(\"c430\");\nvar DESCRIPTORS = __webpack_require__(\"83ab\");\nvar NATIVE_SYMBOL = __webpack_require__(\"4930\");\nvar USE_SYMBOL_AS_UID = __webpack_require__(\"fdbf\");\nvar fails = __webpack_require__(\"d039\");\nvar has = __webpack_require__(\"5135\");\nvar isArray = __webpack_require__(\"e8b5\");\nvar isObject = __webpack_require__(\"861d\");\nvar anObject = __webpack_require__(\"825a\");\nvar toObject = __webpack_require__(\"7b0b\");\nvar toIndexedObject = __webpack_require__(\"fc6a\");\nvar toPrimitive = __webpack_require__(\"c04e\");\nvar createPropertyDescriptor = __webpack_require__(\"5c6c\");\nvar nativeObjectCreate = __webpack_require__(\"7c73\");\nvar objectKeys = __webpack_require__(\"df75\");\nvar getOwnPropertyNamesModule = __webpack_require__(\"241c\");\nvar getOwnPropertyNamesExternal = __webpack_require__(\"057f\");\nvar getOwnPropertySymbolsModule = __webpack_require__(\"7418\");\nvar getOwnPropertyDescriptorModule = __webpack_require__(\"06cf\");\nvar definePropertyModule = __webpack_require__(\"9bf2\");\nvar propertyIsEnumerableModule = __webpack_require__(\"d1e7\");\nvar createNonEnumerableProperty = __webpack_require__(\"9112\");\nvar redefine = __webpack_require__(\"6eeb\");\nvar shared = __webpack_require__(\"5692\");\nvar sharedKey = __webpack_require__(\"f772\");\nvar hiddenKeys = __webpack_require__(\"d012\");\nvar uid = __webpack_require__(\"90e3\");\nvar wellKnownSymbol = __webpack_require__(\"b622\");\nvar wrappedWellKnownSymbolModule = __webpack_require__(\"e538\");\nvar defineWellKnownSymbol = __webpack_require__(\"746f\");\nvar setToStringTag = __webpack_require__(\"d44e\");\nvar InternalStateModule = __webpack_require__(\"69f3\");\nvar $forEach = __webpack_require__(\"b727\").forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\nvar WellKnownSymbolsStore = shared('wks');\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n  return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n    get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n  })).a != 7;\n}) ? function (O, P, Attributes) {\n  var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n  if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n  nativeDefineProperty(O, P, Attributes);\n  if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n    nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n  }\n} : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n  var symbol = AllSymbols[tag] = nativeObjectCreate($Symbol[PROTOTYPE]);\n  setInternalState(symbol, {\n    type: SYMBOL,\n    tag: tag,\n    description: description\n  });\n  if (!DESCRIPTORS) symbol.description = description;\n  return symbol;\n};\n\nvar isSymbol = USE_SYMBOL_AS_UID ? function (it) {\n  return typeof it == 'symbol';\n} : function (it) {\n  return Object(it) instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n  if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n  anObject(O);\n  var key = toPrimitive(P, true);\n  anObject(Attributes);\n  if (has(AllSymbols, key)) {\n    if (!Attributes.enumerable) {\n      if (!has(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n      O[HIDDEN][key] = true;\n    } else {\n      if (has(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n      Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n    } return setSymbolDescriptor(O, key, Attributes);\n  } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n  anObject(O);\n  var properties = toIndexedObject(Properties);\n  var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n  $forEach(keys, function (key) {\n    if (!DESCRIPTORS || $propertyIsEnumerable.call(properties, key)) $defineProperty(O, key, properties[key]);\n  });\n  return O;\n};\n\nvar $create = function create(O, Properties) {\n  return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n  var P = toPrimitive(V, true);\n  var enumerable = nativePropertyIsEnumerable.call(this, P);\n  if (this === ObjectPrototype && has(AllSymbols, P) && !has(ObjectPrototypeSymbols, P)) return false;\n  return enumerable || !has(this, P) || !has(AllSymbols, P) || has(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n  var it = toIndexedObject(O);\n  var key = toPrimitive(P, true);\n  if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return;\n  var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n  if (descriptor && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) {\n    descriptor.enumerable = true;\n  }\n  return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n  var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n  var result = [];\n  $forEach(names, function (key) {\n    if (!has(AllSymbols, key) && !has(hiddenKeys, key)) result.push(key);\n  });\n  return result;\n};\n\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(O) {\n  var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n  var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n  var result = [];\n  $forEach(names, function (key) {\n    if (has(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || has(ObjectPrototype, key))) {\n      result.push(AllSymbols[key]);\n    }\n  });\n  return result;\n};\n\n// `Symbol` constructor\n// https://tc39.github.io/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n  $Symbol = function Symbol() {\n    if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor');\n    var description = !arguments.length || arguments[0] === undefined ? undefined : String(arguments[0]);\n    var tag = uid(description);\n    var setter = function (value) {\n      if (this === ObjectPrototype) setter.call(ObjectPrototypeSymbols, value);\n      if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n      setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n    };\n    if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n    return wrap(tag, description);\n  };\n\n  redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n    return getInternalState(this).tag;\n  });\n\n  redefine($Symbol, 'withoutSetter', function (description) {\n    return wrap(uid(description), description);\n  });\n\n  propertyIsEnumerableModule.f = $propertyIsEnumerable;\n  definePropertyModule.f = $defineProperty;\n  getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n  getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n  getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n  wrappedWellKnownSymbolModule.f = function (name) {\n    return wrap(wellKnownSymbol(name), name);\n  };\n\n  if (DESCRIPTORS) {\n    // https://github.com/tc39/proposal-Symbol-description\n    nativeDefineProperty($Symbol[PROTOTYPE], 'description', {\n      configurable: true,\n      get: function description() {\n        return getInternalState(this).description;\n      }\n    });\n    if (!IS_PURE) {\n      redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n    }\n  }\n}\n\n$({ global: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n  Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n  defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n  // `Symbol.for` method\n  // https://tc39.github.io/ecma262/#sec-symbol.for\n  'for': function (key) {\n    var string = String(key);\n    if (has(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n    var symbol = $Symbol(string);\n    StringToSymbolRegistry[string] = symbol;\n    SymbolToStringRegistry[symbol] = string;\n    return symbol;\n  },\n  // `Symbol.keyFor` method\n  // https://tc39.github.io/ecma262/#sec-symbol.keyfor\n  keyFor: function keyFor(sym) {\n    if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol');\n    if (has(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n  },\n  useSetter: function () { USE_SETTER = true; },\n  useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n  // `Object.create` method\n  // https://tc39.github.io/ecma262/#sec-object.create\n  create: $create,\n  // `Object.defineProperty` method\n  // https://tc39.github.io/ecma262/#sec-object.defineproperty\n  defineProperty: $defineProperty,\n  // `Object.defineProperties` method\n  // https://tc39.github.io/ecma262/#sec-object.defineproperties\n  defineProperties: $defineProperties,\n  // `Object.getOwnPropertyDescriptor` method\n  // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors\n  getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n  // `Object.getOwnPropertyNames` method\n  // https://tc39.github.io/ecma262/#sec-object.getownpropertynames\n  getOwnPropertyNames: $getOwnPropertyNames,\n  // `Object.getOwnPropertySymbols` method\n  // https://tc39.github.io/ecma262/#sec-object.getownpropertysymbols\n  getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\n$({ target: 'Object', stat: true, forced: fails(function () { getOwnPropertySymbolsModule.f(1); }) }, {\n  getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n    return getOwnPropertySymbolsModule.f(toObject(it));\n  }\n});\n\n// `JSON.stringify` method behavior with symbols\n// https://tc39.github.io/ecma262/#sec-json.stringify\nif ($stringify) {\n  var FORCED_JSON_STRINGIFY = !NATIVE_SYMBOL || fails(function () {\n    var symbol = $Symbol();\n    // MS Edge converts symbol values to JSON as {}\n    return $stringify([symbol]) != '[null]'\n      // WebKit converts symbol values to JSON as null\n      || $stringify({ a: symbol }) != '{}'\n      // V8 throws on boxed symbols\n      || $stringify(Object(symbol)) != '{}';\n  });\n\n  $({ target: 'JSON', stat: true, forced: FORCED_JSON_STRINGIFY }, {\n    // eslint-disable-next-line no-unused-vars\n    stringify: function stringify(it, replacer, space) {\n      var args = [it];\n      var index = 1;\n      var $replacer;\n      while (arguments.length > index) args.push(arguments[index++]);\n      $replacer = replacer;\n      if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n      if (!isArray(replacer)) replacer = function (key, value) {\n        if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n        if (!isSymbol(value)) return value;\n      };\n      args[1] = replacer;\n      return $stringify.apply(null, args);\n    }\n  });\n}\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@toprimitive\nif (!$Symbol[PROTOTYPE][TO_PRIMITIVE]) {\n  createNonEnumerableProperty($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n}\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n\n\n/***/ }),\n\n/***/ \"a630\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(\"23e7\");\nvar from = __webpack_require__(\"4df4\");\nvar checkCorrectnessOfIteration = __webpack_require__(\"1c7e\");\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n  Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.github.io/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n  from: from\n});\n\n\n/***/ }),\n\n/***/ \"a640\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar fails = __webpack_require__(\"d039\");\n\nmodule.exports = function (METHOD_NAME, argument) {\n  var method = [][METHOD_NAME];\n  return !!method && fails(function () {\n    // eslint-disable-next-line no-useless-call,no-throw-literal\n    method.call(null, argument || function () { throw 1; }, 1);\n  });\n};\n\n\n/***/ }),\n\n/***/ \"a691\":\n/***/ (function(module, exports) {\n\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.github.io/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n  return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n\n\n/***/ }),\n\n/***/ \"a9e3\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar DESCRIPTORS = __webpack_require__(\"83ab\");\nvar global = __webpack_require__(\"da84\");\nvar isForced = __webpack_require__(\"94ca\");\nvar redefine = __webpack_require__(\"6eeb\");\nvar has = __webpack_require__(\"5135\");\nvar classof = __webpack_require__(\"c6b6\");\nvar inheritIfRequired = __webpack_require__(\"7156\");\nvar toPrimitive = __webpack_require__(\"c04e\");\nvar fails = __webpack_require__(\"d039\");\nvar create = __webpack_require__(\"7c73\");\nvar getOwnPropertyNames = __webpack_require__(\"241c\").f;\nvar getOwnPropertyDescriptor = __webpack_require__(\"06cf\").f;\nvar defineProperty = __webpack_require__(\"9bf2\").f;\nvar trim = __webpack_require__(\"58a8\").trim;\n\nvar NUMBER = 'Number';\nvar NativeNumber = global[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\n\n// Opera ~12 has broken Object#toString\nvar BROKEN_CLASSOF = classof(create(NumberPrototype)) == NUMBER;\n\n// `ToNumber` abstract operation\n// https://tc39.github.io/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n  var it = toPrimitive(argument, false);\n  var first, third, radix, maxCode, digits, length, index, code;\n  if (typeof it == 'string' && it.length > 2) {\n    it = trim(it);\n    first = it.charCodeAt(0);\n    if (first === 43 || first === 45) {\n      third = it.charCodeAt(2);\n      if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n    } else if (first === 48) {\n      switch (it.charCodeAt(1)) {\n        case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i\n        case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i\n        default: return +it;\n      }\n      digits = it.slice(2);\n      length = digits.length;\n      for (index = 0; index < length; index++) {\n        code = digits.charCodeAt(index);\n        // parseInt parses a string to a first unavailable symbol\n        // but ToNumber should return NaN if a string contains unavailable symbols\n        if (code < 48 || code > maxCode) return NaN;\n      } return parseInt(digits, radix);\n    }\n  } return +it;\n};\n\n// `Number` constructor\n// https://tc39.github.io/ecma262/#sec-number-constructor\nif (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {\n  var NumberWrapper = function Number(value) {\n    var it = arguments.length < 1 ? 0 : value;\n    var dummy = this;\n    return dummy instanceof NumberWrapper\n      // check on 1..constructor(foo) case\n      && (BROKEN_CLASSOF ? fails(function () { NumberPrototype.valueOf.call(dummy); }) : classof(dummy) != NUMBER)\n        ? inheritIfRequired(new NativeNumber(toNumber(it)), dummy, NumberWrapper) : toNumber(it);\n  };\n  for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : (\n    // ES3:\n    'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n    // ES2015 (in case, if modules with ES2015 Number statics required before):\n    'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n    'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n  ).split(','), j = 0, key; keys.length > j; j++) {\n    if (has(NativeNumber, key = keys[j]) && !has(NumberWrapper, key)) {\n      defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key));\n    }\n  }\n  NumberWrapper.prototype = NumberPrototype;\n  NumberPrototype.constructor = NumberWrapper;\n  redefine(global, NUMBER, NumberWrapper);\n}\n\n\n/***/ }),\n\n/***/ \"aab0\":\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_vue_timepicker_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"fd6f\");\n/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_vue_timepicker_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_vue_timepicker_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__);\n/* unused harmony reexport * */\n /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_vue_timepicker_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default.a); \n\n/***/ }),\n\n/***/ \"ab13\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(\"b622\");\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n  var regexp = /./;\n  try {\n    '/./'[METHOD_NAME](regexp);\n  } catch (e) {\n    try {\n      regexp[MATCH] = false;\n      return '/./'[METHOD_NAME](regexp);\n    } catch (f) { /* empty */ }\n  } return false;\n};\n\n\n/***/ }),\n\n/***/ \"ac1f\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(\"23e7\");\nvar exec = __webpack_require__(\"9263\");\n\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n  exec: exec\n});\n\n\n/***/ }),\n\n/***/ \"ad6d\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar anObject = __webpack_require__(\"825a\");\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.github.io/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n  var that = anObject(this);\n  var result = '';\n  if (that.global) result += 'g';\n  if (that.ignoreCase) result += 'i';\n  if (that.multiline) result += 'm';\n  if (that.dotAll) result += 's';\n  if (that.unicode) result += 'u';\n  if (that.sticky) result += 'y';\n  return result;\n};\n\n\n/***/ }),\n\n/***/ \"ae40\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(\"83ab\");\nvar fails = __webpack_require__(\"d039\");\nvar has = __webpack_require__(\"5135\");\n\nvar defineProperty = Object.defineProperty;\nvar cache = {};\n\nvar thrower = function (it) { throw it; };\n\nmodule.exports = function (METHOD_NAME, options) {\n  if (has(cache, METHOD_NAME)) return cache[METHOD_NAME];\n  if (!options) options = {};\n  var method = [][METHOD_NAME];\n  var ACCESSORS = has(options, 'ACCESSORS') ? options.ACCESSORS : false;\n  var argument0 = has(options, 0) ? options[0] : thrower;\n  var argument1 = has(options, 1) ? options[1] : undefined;\n\n  return cache[METHOD_NAME] = !!method && !fails(function () {\n    if (ACCESSORS && !DESCRIPTORS) return true;\n    var O = { length: -1 };\n\n    if (ACCESSORS) defineProperty(O, 1, { enumerable: true, get: thrower });\n    else O[1] = 1;\n\n    method.call(O, argument0, argument1);\n  });\n};\n\n\n/***/ }),\n\n/***/ \"ae93\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar getPrototypeOf = __webpack_require__(\"e163\");\nvar createNonEnumerableProperty = __webpack_require__(\"9112\");\nvar has = __webpack_require__(\"5135\");\nvar wellKnownSymbol = __webpack_require__(\"b622\");\nvar IS_PURE = __webpack_require__(\"c430\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\nif ([].keys) {\n  arrayIterator = [].keys();\n  // Safari 8 has buggy iterators w/o `next`\n  if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n  else {\n    PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n    if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n  }\n}\n\nif (IteratorPrototype == undefined) IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nif (!IS_PURE && !has(IteratorPrototype, ITERATOR)) {\n  createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);\n}\n\nmodule.exports = {\n  IteratorPrototype: IteratorPrototype,\n  BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n\n\n/***/ }),\n\n/***/ \"b041\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar TO_STRING_TAG_SUPPORT = __webpack_require__(\"00ee\");\nvar classof = __webpack_require__(\"f5df\");\n\n// `Object.prototype.toString` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n  return '[object ' + classof(this) + ']';\n};\n\n\n/***/ }),\n\n/***/ \"b0c0\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(\"83ab\");\nvar defineProperty = __webpack_require__(\"9bf2\").f;\n\nvar FunctionPrototype = Function.prototype;\nvar FunctionPrototypeToString = FunctionPrototype.toString;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.github.io/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !(NAME in FunctionPrototype)) {\n  defineProperty(FunctionPrototype, NAME, {\n    configurable: true,\n    get: function () {\n      try {\n        return FunctionPrototypeToString.call(this).match(nameRE)[1];\n      } catch (error) {\n        return '';\n      }\n    }\n  });\n}\n\n\n/***/ }),\n\n/***/ \"b622\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"da84\");\nvar shared = __webpack_require__(\"5692\");\nvar has = __webpack_require__(\"5135\");\nvar uid = __webpack_require__(\"90e3\");\nvar NATIVE_SYMBOL = __webpack_require__(\"4930\");\nvar USE_SYMBOL_AS_UID = __webpack_require__(\"fdbf\");\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n  if (!has(WellKnownSymbolsStore, name)) {\n    if (NATIVE_SYMBOL && has(Symbol, name)) WellKnownSymbolsStore[name] = Symbol[name];\n    else WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n  } return WellKnownSymbolsStore[name];\n};\n\n\n/***/ }),\n\n/***/ \"b64b\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(\"23e7\");\nvar toObject = __webpack_require__(\"7b0b\");\nvar nativeKeys = __webpack_require__(\"df75\");\nvar fails = __webpack_require__(\"d039\");\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n  keys: function keys(it) {\n    return nativeKeys(toObject(it));\n  }\n});\n\n\n/***/ }),\n\n/***/ \"b727\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar bind = __webpack_require__(\"0366\");\nvar IndexedObject = __webpack_require__(\"44ad\");\nvar toObject = __webpack_require__(\"7b0b\");\nvar toLength = __webpack_require__(\"50c4\");\nvar arraySpeciesCreate = __webpack_require__(\"65f0\");\n\nvar push = [].push;\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex }` methods implementation\nvar createMethod = function (TYPE) {\n  var IS_MAP = TYPE == 1;\n  var IS_FILTER = TYPE == 2;\n  var IS_SOME = TYPE == 3;\n  var IS_EVERY = TYPE == 4;\n  var IS_FIND_INDEX = TYPE == 6;\n  var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n  return function ($this, callbackfn, that, specificCreate) {\n    var O = toObject($this);\n    var self = IndexedObject(O);\n    var boundFunction = bind(callbackfn, that, 3);\n    var length = toLength(self.length);\n    var index = 0;\n    var create = specificCreate || arraySpeciesCreate;\n    var target = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n    var value, result;\n    for (;length > index; index++) if (NO_HOLES || index in self) {\n      value = self[index];\n      result = boundFunction(value, index, O);\n      if (TYPE) {\n        if (IS_MAP) target[index] = result; // map\n        else if (result) switch (TYPE) {\n          case 3: return true;              // some\n          case 5: return value;             // find\n          case 6: return index;             // findIndex\n          case 2: push.call(target, value); // filter\n        } else if (IS_EVERY) return false;  // every\n      }\n    }\n    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.forEach` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n  forEach: createMethod(0),\n  // `Array.prototype.map` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.map\n  map: createMethod(1),\n  // `Array.prototype.filter` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.filter\n  filter: createMethod(2),\n  // `Array.prototype.some` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.some\n  some: createMethod(3),\n  // `Array.prototype.every` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.every\n  every: createMethod(4),\n  // `Array.prototype.find` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.find\n  find: createMethod(5),\n  // `Array.prototype.findIndex` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex\n  findIndex: createMethod(6)\n};\n\n\n/***/ }),\n\n/***/ \"c04e\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"861d\");\n\n// `ToPrimitive` abstract operation\n// https://tc39.github.io/ecma262/#sec-toprimitive\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (input, PREFERRED_STRING) {\n  if (!isObject(input)) return input;\n  var fn, val;\n  if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n  if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n  if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n\n\n/***/ }),\n\n/***/ \"c430\":\n/***/ (function(module, exports) {\n\nmodule.exports = false;\n\n\n/***/ }),\n\n/***/ \"c6b6\":\n/***/ (function(module, exports) {\n\nvar toString = {}.toString;\n\nmodule.exports = function (it) {\n  return toString.call(it).slice(8, -1);\n};\n\n\n/***/ }),\n\n/***/ \"c6cd\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"da84\");\nvar setGlobal = __webpack_require__(\"ce4e\");\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n\n\n/***/ }),\n\n/***/ \"c740\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(\"23e7\");\nvar $findIndex = __webpack_require__(\"b727\").findIndex;\nvar addToUnscopables = __webpack_require__(\"44d2\");\nvar arrayMethodUsesToLength = __webpack_require__(\"ae40\");\n\nvar FIND_INDEX = 'findIndex';\nvar SKIPS_HOLES = true;\n\nvar USES_TO_LENGTH = arrayMethodUsesToLength(FIND_INDEX);\n\n// Shouldn't skip holes\nif (FIND_INDEX in []) Array(1)[FIND_INDEX](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.findIndex` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.findindex\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES || !USES_TO_LENGTH }, {\n  findIndex: function findIndex(callbackfn /* , that = undefined */) {\n    return $findIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND_INDEX);\n\n\n/***/ }),\n\n/***/ \"c8ba\":\n/***/ (function(module, exports) {\n\nvar g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n\n\n/***/ }),\n\n/***/ \"c8d2\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(\"d039\");\nvar whitespaces = __webpack_require__(\"5899\");\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n  return fails(function () {\n    return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME;\n  });\n};\n\n\n/***/ }),\n\n/***/ \"c975\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(\"23e7\");\nvar $indexOf = __webpack_require__(\"4d64\").indexOf;\nvar arrayMethodIsStrict = __webpack_require__(\"a640\");\nvar arrayMethodUsesToLength = __webpack_require__(\"ae40\");\n\nvar nativeIndexOf = [].indexOf;\n\nvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('indexOf');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 });\n\n// `Array.prototype.indexOf` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || !STRICT_METHOD || !USES_TO_LENGTH }, {\n  indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n    return NEGATIVE_ZERO\n      // convert -0 to +0\n      ? nativeIndexOf.apply(this, arguments) || 0\n      : $indexOf(this, searchElement, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n\n/***/ }),\n\n/***/ \"ca84\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar has = __webpack_require__(\"5135\");\nvar toIndexedObject = __webpack_require__(\"fc6a\");\nvar indexOf = __webpack_require__(\"4d64\").indexOf;\nvar hiddenKeys = __webpack_require__(\"d012\");\n\nmodule.exports = function (object, names) {\n  var O = toIndexedObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (has(O, key = names[i++])) {\n    ~indexOf(result, key) || result.push(key);\n  }\n  return result;\n};\n\n\n/***/ }),\n\n/***/ \"caad\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(\"23e7\");\nvar $includes = __webpack_require__(\"4d64\").includes;\nvar addToUnscopables = __webpack_require__(\"44d2\");\nvar arrayMethodUsesToLength = __webpack_require__(\"ae40\");\n\nvar USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 });\n\n// `Array.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true, forced: !USES_TO_LENGTH }, {\n  includes: function includes(el /* , fromIndex = 0 */) {\n    return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n\n\n/***/ }),\n\n/***/ \"cc12\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"da84\");\nvar isObject = __webpack_require__(\"861d\");\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n  return EXISTS ? document.createElement(it) : {};\n};\n\n\n/***/ }),\n\n/***/ \"cca6\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(\"23e7\");\nvar assign = __webpack_require__(\"60da\");\n\n// `Object.assign` method\n// https://tc39.github.io/ecma262/#sec-object.assign\n$({ target: 'Object', stat: true, forced: Object.assign !== assign }, {\n  assign: assign\n});\n\n\n/***/ }),\n\n/***/ \"ce4e\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"da84\");\nvar createNonEnumerableProperty = __webpack_require__(\"9112\");\n\nmodule.exports = function (key, value) {\n  try {\n    createNonEnumerableProperty(global, key, value);\n  } catch (error) {\n    global[key] = value;\n  } return value;\n};\n\n\n/***/ }),\n\n/***/ \"d012\":\n/***/ (function(module, exports) {\n\nmodule.exports = {};\n\n\n/***/ }),\n\n/***/ \"d039\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (error) {\n    return true;\n  }\n};\n\n\n/***/ }),\n\n/***/ \"d066\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar path = __webpack_require__(\"428f\");\nvar global = __webpack_require__(\"da84\");\n\nvar aFunction = function (variable) {\n  return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n  return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n    : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n\n\n/***/ }),\n\n/***/ \"d1e7\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar nativePropertyIsEnumerable = {}.propertyIsEnumerable;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n  var descriptor = getOwnPropertyDescriptor(this, V);\n  return !!descriptor && descriptor.enumerable;\n} : nativePropertyIsEnumerable;\n\n\n/***/ }),\n\n/***/ \"d28b\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineWellKnownSymbol = __webpack_require__(\"746f\");\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n\n\n/***/ }),\n\n/***/ \"d2bb\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(\"825a\");\nvar aPossiblePrototype = __webpack_require__(\"3bbe\");\n\n// `Object.setPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n  var CORRECT_SETTER = false;\n  var test = {};\n  var setter;\n  try {\n    setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n    setter.call(test, []);\n    CORRECT_SETTER = test instanceof Array;\n  } catch (error) { /* empty */ }\n  return function setPrototypeOf(O, proto) {\n    anObject(O);\n    aPossiblePrototype(proto);\n    if (CORRECT_SETTER) setter.call(O, proto);\n    else O.__proto__ = proto;\n    return O;\n  };\n}() : undefined);\n\n\n/***/ }),\n\n/***/ \"d3b7\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar TO_STRING_TAG_SUPPORT = __webpack_require__(\"00ee\");\nvar redefine = __webpack_require__(\"6eeb\");\nvar toString = __webpack_require__(\"b041\");\n\n// `Object.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n  redefine(Object.prototype, 'toString', toString, { unsafe: true });\n}\n\n\n/***/ }),\n\n/***/ \"d44e\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineProperty = __webpack_require__(\"9bf2\").f;\nvar has = __webpack_require__(\"5135\");\nvar wellKnownSymbol = __webpack_require__(\"b622\");\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n  if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n    defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n  }\n};\n\n\n/***/ }),\n\n/***/ \"d784\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// TODO: Remove from `core-js@4` since it's moved to entry points\n__webpack_require__(\"ac1f\");\nvar redefine = __webpack_require__(\"6eeb\");\nvar fails = __webpack_require__(\"d039\");\nvar wellKnownSymbol = __webpack_require__(\"b622\");\nvar regexpExec = __webpack_require__(\"9263\");\nvar createNonEnumerableProperty = __webpack_require__(\"9112\");\n\nvar SPECIES = wellKnownSymbol('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n  // #replace needs built-in support for named groups.\n  // #match works fine because it just return the exec results, even if it has\n  // a \"grops\" property.\n  var re = /./;\n  re.exec = function () {\n    var result = [];\n    result.groups = { a: '7' };\n    return result;\n  };\n  return ''.replace(re, '$<a>') !== '7';\n});\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n  return 'a'.replace(/./, '$0') === '$0';\n})();\n\nvar REPLACE = wellKnownSymbol('replace');\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n  if (/./[REPLACE]) {\n    return /./[REPLACE]('a', '$0') === '';\n  }\n  return false;\n})();\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n  var re = /(?:)/;\n  var originalExec = re.exec;\n  re.exec = function () { return originalExec.apply(this, arguments); };\n  var result = 'ab'.split(re);\n  return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\nmodule.exports = function (KEY, length, exec, sham) {\n  var SYMBOL = wellKnownSymbol(KEY);\n\n  var DELEGATES_TO_SYMBOL = !fails(function () {\n    // String methods call symbol-named RegEp methods\n    var O = {};\n    O[SYMBOL] = function () { return 7; };\n    return ''[KEY](O) != 7;\n  });\n\n  var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n    // Symbol-named RegExp methods call .exec\n    var execCalled = false;\n    var re = /a/;\n\n    if (KEY === 'split') {\n      // We can't use real regex here since it causes deoptimization\n      // and serious performance degradation in V8\n      // https://github.com/zloirock/core-js/issues/306\n      re = {};\n      // RegExp[@@split] doesn't call the regex's exec method, but first creates\n      // a new one. We need to return the patched regex when creating the new one.\n      re.constructor = {};\n      re.constructor[SPECIES] = function () { return re; };\n      re.flags = '';\n      re[SYMBOL] = /./[SYMBOL];\n    }\n\n    re.exec = function () { execCalled = true; return null; };\n\n    re[SYMBOL]('');\n    return !execCalled;\n  });\n\n  if (\n    !DELEGATES_TO_SYMBOL ||\n    !DELEGATES_TO_EXEC ||\n    (KEY === 'replace' && !(\n      REPLACE_SUPPORTS_NAMED_GROUPS &&\n      REPLACE_KEEPS_$0 &&\n      !REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n    )) ||\n    (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n  ) {\n    var nativeRegExpMethod = /./[SYMBOL];\n    var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n      if (regexp.exec === regexpExec) {\n        if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n          // The native String method already delegates to @@method (this\n          // polyfilled function), leasing to infinite recursion.\n          // We avoid it by directly calling the native @@method method.\n          return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n        }\n        return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n      }\n      return { done: false };\n    }, {\n      REPLACE_KEEPS_$0: REPLACE_KEEPS_$0,\n      REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE: REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n    });\n    var stringMethod = methods[0];\n    var regexMethod = methods[1];\n\n    redefine(String.prototype, KEY, stringMethod);\n    redefine(RegExp.prototype, SYMBOL, length == 2\n      // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n      // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n      ? function (string, arg) { return regexMethod.call(string, this, arg); }\n      // 21.2.5.6 RegExp.prototype[@@match](string)\n      // 21.2.5.9 RegExp.prototype[@@search](string)\n      : function (string) { return regexMethod.call(string, this); }\n    );\n  }\n\n  if (sham) createNonEnumerableProperty(RegExp.prototype[SYMBOL], 'sham', true);\n};\n\n\n/***/ }),\n\n/***/ \"d81d\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(\"23e7\");\nvar $map = __webpack_require__(\"b727\").map;\nvar arrayMethodHasSpeciesSupport = __webpack_require__(\"1dde\");\nvar arrayMethodUsesToLength = __webpack_require__(\"ae40\");\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n// FF49- issue\nvar USES_TO_LENGTH = arrayMethodUsesToLength('map');\n\n// `Array.prototype.map` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n  map: function map(callbackfn /* , thisArg */) {\n    return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n\n/***/ }),\n\n/***/ \"da84\":\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {var check = function (it) {\n  return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n  // eslint-disable-next-line no-undef\n  check(typeof globalThis == 'object' && globalThis) ||\n  check(typeof window == 'object' && window) ||\n  check(typeof self == 'object' && self) ||\n  check(typeof global == 'object' && global) ||\n  // eslint-disable-next-line no-new-func\n  Function('return this')();\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(\"c8ba\")))\n\n/***/ }),\n\n/***/ \"ddb0\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"da84\");\nvar DOMIterables = __webpack_require__(\"fdbc\");\nvar ArrayIteratorMethods = __webpack_require__(\"e260\");\nvar createNonEnumerableProperty = __webpack_require__(\"9112\");\nvar wellKnownSymbol = __webpack_require__(\"b622\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nfor (var COLLECTION_NAME in DOMIterables) {\n  var Collection = global[COLLECTION_NAME];\n  var CollectionPrototype = Collection && Collection.prototype;\n  if (CollectionPrototype) {\n    // some Chrome versions have non-configurable methods on DOMTokenList\n    if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n      createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n    } catch (error) {\n      CollectionPrototype[ITERATOR] = ArrayValues;\n    }\n    if (!CollectionPrototype[TO_STRING_TAG]) {\n      createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n    }\n    if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n      // some Chrome versions have non-configurable methods on DOMTokenList\n      if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n        createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n      } catch (error) {\n        CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n      }\n    }\n  }\n}\n\n\n/***/ }),\n\n/***/ \"df75\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar internalObjectKeys = __webpack_require__(\"ca84\");\nvar enumBugKeys = __webpack_require__(\"7839\");\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\nmodule.exports = Object.keys || function keys(O) {\n  return internalObjectKeys(O, enumBugKeys);\n};\n\n\n/***/ }),\n\n/***/ \"e01a\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n// `Symbol.prototype.description` getter\n// https://tc39.github.io/ecma262/#sec-symbol.prototype.description\n\nvar $ = __webpack_require__(\"23e7\");\nvar DESCRIPTORS = __webpack_require__(\"83ab\");\nvar global = __webpack_require__(\"da84\");\nvar has = __webpack_require__(\"5135\");\nvar isObject = __webpack_require__(\"861d\");\nvar defineProperty = __webpack_require__(\"9bf2\").f;\nvar copyConstructorProperties = __webpack_require__(\"e893\");\n\nvar NativeSymbol = global.Symbol;\n\nif (DESCRIPTORS && typeof NativeSymbol == 'function' && (!('description' in NativeSymbol.prototype) ||\n  // Safari 12 bug\n  NativeSymbol().description !== undefined\n)) {\n  var EmptyStringDescriptionStore = {};\n  // wrap Symbol constructor for correct work with undefined description\n  var SymbolWrapper = function Symbol() {\n    var description = arguments.length < 1 || arguments[0] === undefined ? undefined : String(arguments[0]);\n    var result = this instanceof SymbolWrapper\n      ? new NativeSymbol(description)\n      // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n      : description === undefined ? NativeSymbol() : NativeSymbol(description);\n    if (description === '') EmptyStringDescriptionStore[result] = true;\n    return result;\n  };\n  copyConstructorProperties(SymbolWrapper, NativeSymbol);\n  var symbolPrototype = SymbolWrapper.prototype = NativeSymbol.prototype;\n  symbolPrototype.constructor = SymbolWrapper;\n\n  var symbolToString = symbolPrototype.toString;\n  var native = String(NativeSymbol('test')) == 'Symbol(test)';\n  var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n  defineProperty(symbolPrototype, 'description', {\n    configurable: true,\n    get: function description() {\n      var symbol = isObject(this) ? this.valueOf() : this;\n      var string = symbolToString.call(symbol);\n      if (has(EmptyStringDescriptionStore, symbol)) return '';\n      var desc = native ? string.slice(7, -1) : string.replace(regexp, '$1');\n      return desc === '' ? undefined : desc;\n    }\n  });\n\n  $({ global: true, forced: true }, {\n    Symbol: SymbolWrapper\n  });\n}\n\n\n/***/ }),\n\n/***/ \"e163\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar has = __webpack_require__(\"5135\");\nvar toObject = __webpack_require__(\"7b0b\");\nvar sharedKey = __webpack_require__(\"f772\");\nvar CORRECT_PROTOTYPE_GETTER = __webpack_require__(\"e177\");\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.getprototypeof\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n  O = toObject(O);\n  if (has(O, IE_PROTO)) return O[IE_PROTO];\n  if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n    return O.constructor.prototype;\n  } return O instanceof Object ? ObjectPrototype : null;\n};\n\n\n/***/ }),\n\n/***/ \"e177\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(\"d039\");\n\nmodule.exports = !fails(function () {\n  function F() { /* empty */ }\n  F.prototype.constructor = null;\n  return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n\n\n/***/ }),\n\n/***/ \"e260\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar toIndexedObject = __webpack_require__(\"fc6a\");\nvar addToUnscopables = __webpack_require__(\"44d2\");\nvar Iterators = __webpack_require__(\"3f8c\");\nvar InternalStateModule = __webpack_require__(\"69f3\");\nvar defineIterator = __webpack_require__(\"7dd0\");\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.github.io/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n  setInternalState(this, {\n    type: ARRAY_ITERATOR,\n    target: toIndexedObject(iterated), // target\n    index: 0,                          // next index\n    kind: kind                         // kind\n  });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n  var state = getInternalState(this);\n  var target = state.target;\n  var kind = state.kind;\n  var index = state.index++;\n  if (!target || index >= target.length) {\n    state.target = undefined;\n    return { value: undefined, done: true };\n  }\n  if (kind == 'keys') return { value: index, done: false };\n  if (kind == 'values') return { value: target[index], done: false };\n  return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.github.io/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.github.io/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n\n/***/ }),\n\n/***/ \"e538\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(\"b622\");\n\nexports.f = wellKnownSymbol;\n\n\n/***/ }),\n\n/***/ \"e893\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar has = __webpack_require__(\"5135\");\nvar ownKeys = __webpack_require__(\"56ef\");\nvar getOwnPropertyDescriptorModule = __webpack_require__(\"06cf\");\nvar definePropertyModule = __webpack_require__(\"9bf2\");\n\nmodule.exports = function (target, source) {\n  var keys = ownKeys(source);\n  var defineProperty = definePropertyModule.f;\n  var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n  for (var i = 0; i < keys.length; i++) {\n    var key = keys[i];\n    if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n  }\n};\n\n\n/***/ }),\n\n/***/ \"e8b5\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar classof = __webpack_require__(\"c6b6\");\n\n// `IsArray` abstract operation\n// https://tc39.github.io/ecma262/#sec-isarray\nmodule.exports = Array.isArray || function isArray(arg) {\n  return classof(arg) == 'Array';\n};\n\n\n/***/ }),\n\n/***/ \"e95a\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(\"b622\");\nvar Iterators = __webpack_require__(\"3f8c\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n  return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n\n\n/***/ }),\n\n/***/ \"f5df\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar TO_STRING_TAG_SUPPORT = __webpack_require__(\"00ee\");\nvar classofRaw = __webpack_require__(\"c6b6\");\nvar wellKnownSymbol = __webpack_require__(\"b622\");\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n  try {\n    return it[key];\n  } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n  var O, tag, result;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n    // builtinTag case\n    : CORRECT_ARGUMENTS ? classofRaw(O)\n    // ES3 arguments fallback\n    : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n\n\n/***/ }),\n\n/***/ \"f772\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar shared = __webpack_require__(\"5692\");\nvar uid = __webpack_require__(\"90e3\");\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n  return keys[key] || (keys[key] = uid(key));\n};\n\n\n/***/ }),\n\n/***/ \"fb15\":\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js\n// This file is imported into lib/wc client bundles.\n\nif (typeof window !== 'undefined') {\n  var currentScript = window.document.currentScript\n  if (true) {\n    var getCurrentScript = __webpack_require__(\"8875\")\n    currentScript = getCurrentScript()\n\n    // for backward compatibility, because previously we directly included the polyfill\n    if (!('currentScript' in document)) {\n      Object.defineProperty(document, 'currentScript', { get: getCurrentScript })\n    }\n  }\n\n  var src = currentScript && currentScript.src.match(/(.+\\/)[^/]+\\.js(\\?.*)?$/)\n  if (src) {\n    __webpack_require__.p = src[1] // eslint-disable-line\n  }\n}\n\n// Indicate to webpack that this file can be concatenated\n/* harmony default export */ var setPublicPath = (null);\n\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"08a1de70-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/vue-timepicker.vue?vue&type=template&id=7502c349&\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"vue__time-picker time-picker\",style:(_vm.inputWidthStyle)},[_c('input',{ref:\"input\",staticClass:\"display-time\",class:[_vm.inputClass, {'is-empty': _vm.inputIsEmpty, 'invalid': _vm.hasInvalidInput, 'all-selected': _vm.allValueSelected, 'disabled': _vm.disabled, 'has-custom-icon': _vm.$slots && _vm.$slots.icon }],style:(_vm.inputWidthStyle),attrs:{\"type\":\"text\",\"id\":_vm.id,\"name\":_vm.name,\"placeholder\":_vm.placeholder ? _vm.placeholder : _vm.formatString,\"tabindex\":_vm.disabled ? -1 : _vm.tabindex,\"disabled\":_vm.disabled,\"readonly\":!_vm.manualInput,\"autocomplete\":_vm.autocomplete},domProps:{\"value\":_vm.inputIsEmpty ? null : _vm.customDisplayTime},on:{\"focus\":_vm.onFocus,\"change\":_vm.onChange,\"blur\":function($event){_vm.debounceBlur(); _vm.blurEvent()},\"mousedown\":_vm.onMouseDown,\"keydown\":[_vm.keyDownHandler,function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey){ return null; }return _vm.escBlur($event)}],\"compositionstart\":_vm.onCompostionStart,\"compositionend\":_vm.onCompostionEnd,\"paste\":_vm.pasteHandler}}),(_vm.showClearBtn || _vm.showDropdownBtn)?_c('div',{staticClass:\"controls\",attrs:{\"tabindex\":\"-1\"}},[(!_vm.isActive && _vm.showClearBtn)?_c('span',{staticClass:\"clear-btn\",class:{'has-custom-btn': _vm.$slots && _vm.$slots.clearButton },attrs:{\"tabindex\":\"-1\"},on:{\"click\":_vm.clearTime}},[_vm._t(\"clearButton\",[_c('span',{staticClass:\"char\"},[_vm._v(\"×\")])])],2):_vm._e(),(_vm.showDropdownBtn)?_c('span',{staticClass:\"dropdown-btn\",class:{'has-custom-btn': _vm.$slots && _vm.$slots.dropdownButton },attrs:{\"tabindex\":\"-1\"},on:{\"click\":function($event){return _vm.setDropdownState(_vm.fixedDropdownButton ? !_vm.showDropdown : true, true)},\"mousedown\":_vm.keepFocusing}},[_vm._t(\"dropdownButton\",[_c('span',{staticClass:\"char\"},[_vm._v(\"▾\")])])],2):_vm._e()]):_vm._e(),(_vm.$slots && _vm.$slots.icon)?_c('div',{staticClass:\"custom-icon\"},[_vm._t(\"icon\")],2):_vm._e(),(_vm.showDropdown)?_c('div',{staticClass:\"time-picker-overlay\",attrs:{\"tabindex\":\"-1\"},on:{\"click\":_vm.toggleActive}}):_vm._e(),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showDropdown),expression:\"showDropdown\"}],ref:\"dropdown\",staticClass:\"dropdown\",class:[_vm.dropdownDirClass],style:(_vm.inputWidthStyle),attrs:{\"tabindex\":\"-1\"},on:{\"mouseup\":_vm.keepFocusing,\"click\":function($event){$event.stopPropagation();}}},[_c('div',{staticClass:\"select-list\",style:(_vm.inputWidthStyle),attrs:{\"tabindex\":\"-1\"}},[(!_vm.advancedKeyboard)?[_vm._l((_vm.columnsSequence),function(column){return [(column === 'hour')?_c('ul',{key:column,staticClass:\"hours\",on:{\"scroll\":_vm.keepFocusing}},[_c('li',{staticClass:\"hint\",domProps:{\"textContent\":_vm._s(_vm.hourLabelText)}}),_vm._l((_vm.hours),function(hr,hIndex){return [(!_vm.opts.hideDisabledHours || (_vm.opts.hideDisabledHours && !_vm.isDisabled('hour', hr)))?_c('li',{key:hIndex,class:{active: _vm.hour === hr},attrs:{\"disabled\":_vm.isDisabled('hour', hr),\"data-key\":hr},domProps:{\"textContent\":_vm._s(hr)},on:{\"click\":function($event){return _vm.select('hour', hr)}}}):_vm._e()]})],2):_vm._e(),(column === 'minute')?_c('ul',{key:column,staticClass:\"minutes\",on:{\"scroll\":_vm.keepFocusing}},[_c('li',{staticClass:\"hint\",domProps:{\"textContent\":_vm._s(_vm.minuteLabelText)}}),_vm._l((_vm.minutes),function(m,mIndex){return [(!_vm.opts.hideDisabledMinutes || (_vm.opts.hideDisabledMinutes && !_vm.isDisabled('minute', m)))?_c('li',{key:mIndex,class:{active: _vm.minute === m},attrs:{\"disabled\":_vm.isDisabled('minute', m),\"data-key\":m},domProps:{\"textContent\":_vm._s(m)},on:{\"click\":function($event){return _vm.select('minute', m)}}}):_vm._e()]})],2):_vm._e(),(column === 'second')?_c('ul',{key:column,staticClass:\"seconds\",on:{\"scroll\":_vm.keepFocusing}},[_c('li',{staticClass:\"hint\",domProps:{\"textContent\":_vm._s(_vm.secondLabelText)}}),_vm._l((_vm.seconds),function(s,sIndex){return [(!_vm.opts.hideDisabledSeconds || (_vm.opts.hideDisabledSeconds && !_vm.isDisabled('second', s)))?_c('li',{key:sIndex,class:{active: _vm.second === s},attrs:{\"disabled\":_vm.isDisabled('second', s),\"data-key\":s},domProps:{\"textContent\":_vm._s(s)},on:{\"click\":function($event){return _vm.select('second', s)}}}):_vm._e()]})],2):_vm._e(),(column === 'apm')?_c('ul',{key:column,staticClass:\"apms\",on:{\"scroll\":_vm.keepFocusing}},[_c('li',{staticClass:\"hint\",domProps:{\"textContent\":_vm._s(_vm.apmLabelText)}}),_vm._l((_vm.apms),function(a,aIndex){return [(!_vm.opts.hideDisabledHours || (_vm.opts.hideDisabledHours && !_vm.isDisabled('apm', a)))?_c('li',{key:aIndex,class:{active: _vm.apm === a},attrs:{\"disabled\":_vm.isDisabled('apm', a),\"data-key\":a},domProps:{\"textContent\":_vm._s(_vm.apmDisplayText(a))},on:{\"click\":function($event){return _vm.select('apm', a)}}}):_vm._e()]})],2):_vm._e()]})]:_vm._e(),(_vm.advancedKeyboard)?[_vm._l((_vm.columnsSequence),function(column){return [(column === 'hour')?_c('ul',{key:column,staticClass:\"hours\",attrs:{\"tabindex\":\"-1\"},on:{\"scroll\":_vm.keepFocusing}},[_c('li',{staticClass:\"hint\",attrs:{\"tabindex\":\"-1\"},domProps:{\"textContent\":_vm._s(_vm.hourLabelText)}}),_vm._l((_vm.hours),function(hr,hIndex){return [(!_vm.opts.hideDisabledHours || (_vm.opts.hideDisabledHours && !_vm.isDisabled('hour', hr)))?_c('li',{key:hIndex,class:{active: _vm.hour === hr},attrs:{\"tabindex\":_vm.isDisabled('hour', hr) ? -1 : _vm.tabindex,\"data-key\":hr,\"disabled\":_vm.isDisabled('hour', hr)},domProps:{\"textContent\":_vm._s(hr)},on:{\"click\":function($event){return _vm.select('hour', hr)},\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"tab\",9,$event.key,\"Tab\")){ return null; }return _vm.onTab('hour', hr, $event)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"space\",32,$event.key,[\" \",\"Spacebar\"])){ return null; }$event.preventDefault();return _vm.select('hour', hr)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }$event.preventDefault();return _vm.select('hour', hr)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"up\",38,$event.key,[\"Up\",\"ArrowUp\"])){ return null; }$event.preventDefault();return _vm.prevItem('hour', hr)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"down\",40,$event.key,[\"Down\",\"ArrowDown\"])){ return null; }$event.preventDefault();return _vm.nextItem('hour', hr)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"left\",37,$event.key,[\"Left\",\"ArrowLeft\"])){ return null; }if('button' in $event && $event.button !== 0){ return null; }$event.preventDefault();return _vm.toLeftColumn('hour')},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"right\",39,$event.key,[\"Right\",\"ArrowRight\"])){ return null; }if('button' in $event && $event.button !== 2){ return null; }$event.preventDefault();return _vm.toRightColumn('hour')},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey){ return null; }return _vm.debounceBlur($event)}],\"blur\":_vm.debounceBlur,\"focus\":_vm.keepFocusing}}):_vm._e()]})],2):_vm._e(),(column === 'minute')?_c('ul',{key:column,staticClass:\"minutes\",attrs:{\"tabindex\":\"-1\"},on:{\"scroll\":_vm.keepFocusing}},[_c('li',{staticClass:\"hint\",attrs:{\"tabindex\":\"-1\"},domProps:{\"textContent\":_vm._s(_vm.minuteLabelText)}}),_vm._l((_vm.minutes),function(m,mIndex){return [(!_vm.opts.hideDisabledMinutes || (_vm.opts.hideDisabledMinutes && !_vm.isDisabled('minute', m)))?_c('li',{key:mIndex,class:{active: _vm.minute === m},attrs:{\"tabindex\":_vm.isDisabled('minute', m) ? -1 : _vm.tabindex,\"data-key\":m,\"disabled\":_vm.isDisabled('minute', m)},domProps:{\"textContent\":_vm._s(m)},on:{\"click\":function($event){return _vm.select('minute', m)},\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"tab\",9,$event.key,\"Tab\")){ return null; }return _vm.onTab('minute', m, $event)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"space\",32,$event.key,[\" \",\"Spacebar\"])){ return null; }$event.preventDefault();return _vm.select('minute', m)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }$event.preventDefault();return _vm.select('minute', m)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"up\",38,$event.key,[\"Up\",\"ArrowUp\"])){ return null; }$event.preventDefault();return _vm.prevItem('minute', m)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"down\",40,$event.key,[\"Down\",\"ArrowDown\"])){ return null; }$event.preventDefault();return _vm.nextItem('minute', m)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"left\",37,$event.key,[\"Left\",\"ArrowLeft\"])){ return null; }if('button' in $event && $event.button !== 0){ return null; }$event.preventDefault();return _vm.toLeftColumn('minute')},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"right\",39,$event.key,[\"Right\",\"ArrowRight\"])){ return null; }if('button' in $event && $event.button !== 2){ return null; }$event.preventDefault();return _vm.toRightColumn('minute')},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey){ return null; }return _vm.debounceBlur($event)}],\"blur\":_vm.debounceBlur,\"focus\":_vm.keepFocusing}}):_vm._e()]})],2):_vm._e(),(column === 'second')?_c('ul',{key:column,staticClass:\"seconds\",attrs:{\"tabindex\":\"-1\"},on:{\"scroll\":_vm.keepFocusing}},[_c('li',{staticClass:\"hint\",attrs:{\"tabindex\":\"-1\"},domProps:{\"textContent\":_vm._s(_vm.secondLabelText)}}),_vm._l((_vm.seconds),function(s,sIndex){return [(!_vm.opts.hideDisabledSeconds || (_vm.opts.hideDisabledSeconds && !_vm.isDisabled('second', s)))?_c('li',{key:sIndex,class:{active: _vm.second === s},attrs:{\"tabindex\":_vm.isDisabled('second', s) ? -1 : _vm.tabindex,\"data-key\":s,\"disabled\":_vm.isDisabled('second', s)},domProps:{\"textContent\":_vm._s(s)},on:{\"click\":function($event){return _vm.select('second', s)},\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"tab\",9,$event.key,\"Tab\")){ return null; }return _vm.onTab('second', s, $event)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"space\",32,$event.key,[\" \",\"Spacebar\"])){ return null; }$event.preventDefault();return _vm.select('second', s)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }$event.preventDefault();return _vm.select('second', s)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"up\",38,$event.key,[\"Up\",\"ArrowUp\"])){ return null; }$event.preventDefault();return _vm.prevItem('second', s)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"down\",40,$event.key,[\"Down\",\"ArrowDown\"])){ return null; }$event.preventDefault();return _vm.nextItem('second', s)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"left\",37,$event.key,[\"Left\",\"ArrowLeft\"])){ return null; }if('button' in $event && $event.button !== 0){ return null; }$event.preventDefault();return _vm.toLeftColumn('second')},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"right\",39,$event.key,[\"Right\",\"ArrowRight\"])){ return null; }if('button' in $event && $event.button !== 2){ return null; }$event.preventDefault();return _vm.toRightColumn('second')},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey){ return null; }return _vm.debounceBlur($event)}],\"blur\":_vm.debounceBlur,\"focus\":_vm.keepFocusing}}):_vm._e()]})],2):_vm._e(),(column === 'apm')?_c('ul',{key:column,staticClass:\"apms\",attrs:{\"tabindex\":\"-1\"},on:{\"scroll\":_vm.keepFocusing}},[_c('li',{staticClass:\"hint\",attrs:{\"tabindex\":\"-1\"},domProps:{\"textContent\":_vm._s(_vm.apmLabelText)}}),_vm._l((_vm.apms),function(a,aIndex){return [(!_vm.opts.hideDisabledHours || (_vm.opts.hideDisabledHours && !_vm.isDisabled('apm', a)))?_c('li',{key:aIndex,class:{active: _vm.apm === a},attrs:{\"tabindex\":_vm.isDisabled('apm', a) ? -1 : _vm.tabindex,\"data-key\":a,\"disabled\":_vm.isDisabled('apm', a)},domProps:{\"textContent\":_vm._s(_vm.apmDisplayText(a))},on:{\"click\":function($event){return _vm.select('apm', a)},\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"tab\",9,$event.key,\"Tab\")){ return null; }return _vm.onTab('apm', a, $event)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"space\",32,$event.key,[\" \",\"Spacebar\"])){ return null; }$event.preventDefault();return _vm.select('apm', a)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }$event.preventDefault();return _vm.select('apm', a)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"up\",38,$event.key,[\"Up\",\"ArrowUp\"])){ return null; }$event.preventDefault();return _vm.prevItem('apm', a)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"down\",40,$event.key,[\"Down\",\"ArrowDown\"])){ return null; }$event.preventDefault();return _vm.nextItem('apm', a)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"left\",37,$event.key,[\"Left\",\"ArrowLeft\"])){ return null; }if('button' in $event && $event.button !== 0){ return null; }$event.preventDefault();return _vm.toLeftColumn('apm')},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"right\",39,$event.key,[\"Right\",\"ArrowRight\"])){ return null; }if('button' in $event && $event.button !== 2){ return null; }$event.preventDefault();return _vm.toRightColumn('apm')},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey){ return null; }return _vm.debounceBlur($event)}],\"blur\":_vm.debounceBlur,\"focus\":_vm.keepFocusing}}):_vm._e()]})],2):_vm._e()]})]:_vm._e()],2)])])}\nvar staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/vue-timepicker.vue?vue&type=template&id=7502c349&\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.concat.js\nvar es_array_concat = __webpack_require__(\"99af\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.filter.js\nvar es_array_filter = __webpack_require__(\"4de4\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.find-index.js\nvar es_array_find_index = __webpack_require__(\"c740\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.for-each.js\nvar es_array_for_each = __webpack_require__(\"4160\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.includes.js\nvar es_array_includes = __webpack_require__(\"caad\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.index-of.js\nvar es_array_index_of = __webpack_require__(\"c975\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.join.js\nvar es_array_join = __webpack_require__(\"a15b\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.map.js\nvar es_array_map = __webpack_require__(\"d81d\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.slice.js\nvar es_array_slice = __webpack_require__(\"fb6a\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.some.js\nvar es_array_some = __webpack_require__(\"45fc\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.splice.js\nvar es_array_splice = __webpack_require__(\"a434\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.function.name.js\nvar es_function_name = __webpack_require__(\"b0c0\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.number.constructor.js\nvar es_number_constructor = __webpack_require__(\"a9e3\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.object.assign.js\nvar es_object_assign = __webpack_require__(\"cca6\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.object.keys.js\nvar es_object_keys = __webpack_require__(\"b64b\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.regexp.constructor.js\nvar es_regexp_constructor = __webpack_require__(\"4d63\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.regexp.exec.js\nvar es_regexp_exec = __webpack_require__(\"ac1f\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.regexp.to-string.js\nvar es_regexp_to_string = __webpack_require__(\"25f0\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.includes.js\nvar es_string_includes = __webpack_require__(\"2532\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.match.js\nvar es_string_match = __webpack_require__(\"466d\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.replace.js\nvar es_string_replace = __webpack_require__(\"5319\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.split.js\nvar es_string_split = __webpack_require__(\"1276\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.trim.js\nvar es_string_trim = __webpack_require__(\"498a\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/web.dom-collections.for-each.js\nvar web_dom_collections_for_each = __webpack_require__(\"159b\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.symbol.js\nvar es_symbol = __webpack_require__(\"a4d3\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.symbol.description.js\nvar es_symbol_description = __webpack_require__(\"e01a\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.symbol.iterator.js\nvar es_symbol_iterator = __webpack_require__(\"d28b\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.iterator.js\nvar es_array_iterator = __webpack_require__(\"e260\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.object.to-string.js\nvar es_object_to_string = __webpack_require__(\"d3b7\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.iterator.js\nvar es_string_iterator = __webpack_require__(\"3ca3\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/web.dom-collections.iterator.js\nvar web_dom_collections_iterator = __webpack_require__(\"ddb0\");\n\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/typeof.js\n\n\n\n\n\n\n\nfunction _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n    _typeof = function _typeof(obj) {\n      return typeof obj;\n    };\n  } else {\n    _typeof = function _typeof(obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n  }\n\n  return _typeof(obj);\n}\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.from.js\nvar es_array_from = __webpack_require__(\"a630\");\n\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js\nfunction _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n\n  for (var i = 0, arr2 = new Array(len); i < len; i++) {\n    arr2[i] = arr[i];\n  }\n\n  return arr2;\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js\n\n\n\n\n\n\n\nfunction _unsupportedIterableToArray(o, minLen) {\n  if (!o) return;\n  if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n  var n = Object.prototype.toString.call(o).slice(8, -1);\n  if (n === \"Object\" && o.constructor) n = o.constructor.name;\n  if (n === \"Map\" || n === \"Set\") return Array.from(o);\n  if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js\n\n\n\n\n\n\n\n\nfunction _createForOfIteratorHelper(o) {\n  if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) {\n    if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) {\n      var i = 0;\n\n      var F = function F() {};\n\n      return {\n        s: F,\n        n: function n() {\n          if (i >= o.length) return {\n            done: true\n          };\n          return {\n            done: false,\n            value: o[i++]\n          };\n        },\n        e: function e(_e) {\n          throw _e;\n        },\n        f: F\n      };\n    }\n\n    throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n  }\n\n  var it,\n      normalCompletion = true,\n      didErr = false,\n      err;\n  return {\n    s: function s() {\n      it = o[Symbol.iterator]();\n    },\n    n: function n() {\n      var step = it.next();\n      normalCompletion = step.done;\n      return step;\n    },\n    e: function e(_e2) {\n      didErr = true;\n      err = _e2;\n    },\n    f: function f() {\n      try {\n        if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n      } finally {\n        if (didErr) throw err;\n      }\n    }\n  };\n}\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/vue-timepicker.vue?vue&type=script&lang=js&\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar CONFIG = {\n  HOUR_TOKENS: ['HH', 'H', 'hh', 'h', 'kk', 'k'],\n  MINUTE_TOKENS: ['mm', 'm'],\n  SECOND_TOKENS: ['ss', 's'],\n  APM_TOKENS: ['A', 'a'],\n  BASIC_TYPES: ['hour', 'minute', 'second', 'apm']\n};\nvar DEFAULT_OPTIONS = {\n  format: 'HH:mm',\n  minuteInterval: 1,\n  secondInterval: 1,\n  hourRange: null,\n  minuteRange: null,\n  secondRange: null,\n  hideDisabledHours: false,\n  hideDisabledMinutes: false,\n  hideDisabledSeconds: false,\n  hideDisabledItems: false,\n  hideDropdown: false,\n  blurDelay: 300,\n  manualInputTimeout: 1000,\n  dropOffsetHeight: 160\n};\n/* harmony default export */ var vue_timepickervue_type_script_lang_js_ = ({\n  name: 'VueTimepicker',\n  props: {\n    value: {\n      type: [Object, String]\n    },\n    format: {\n      type: String\n    },\n    minuteInterval: {\n      type: [Number, String]\n    },\n    secondInterval: {\n      type: [Number, String]\n    },\n    hourRange: {\n      type: Array\n    },\n    minuteRange: {\n      type: Array\n    },\n    secondRange: {\n      type: Array\n    },\n    hideDisabledHours: {\n      type: Boolean,\n      default: false\n    },\n    hideDisabledMinutes: {\n      type: Boolean,\n      default: false\n    },\n    hideDisabledSeconds: {\n      type: Boolean,\n      default: false\n    },\n    hideDisabledItems: {\n      type: Boolean,\n      default: false\n    },\n    hideClearButton: {\n      type: Boolean,\n      default: false\n    },\n    disabled: {\n      type: Boolean,\n      default: false\n    },\n    closeOnComplete: {\n      type: Boolean,\n      default: false\n    },\n    id: {\n      type: String\n    },\n    name: {\n      type: String\n    },\n    inputClass: {\n      type: [String, Object, Array]\n    },\n    placeholder: {\n      type: String\n    },\n    tabindex: {\n      type: [Number, String],\n      default: 0\n    },\n    inputWidth: {\n      type: String\n    },\n    autocomplete: {\n      type: String,\n      default: 'off'\n    },\n    hourLabel: {\n      type: String\n    },\n    minuteLabel: {\n      type: String\n    },\n    secondLabel: {\n      type: String\n    },\n    apmLabel: {\n      type: String\n    },\n    amText: {\n      type: String\n    },\n    pmText: {\n      type: String\n    },\n    blurDelay: {\n      type: [Number, String]\n    },\n    advancedKeyboard: {\n      type: Boolean,\n      default: false\n    },\n    lazy: {\n      type: Boolean,\n      default: false\n    },\n    autoScroll: {\n      type: Boolean,\n      default: false\n    },\n    dropDirection: {\n      type: String,\n      default: 'down'\n    },\n    dropOffsetHeight: {\n      type: [Number, String]\n    },\n    containerId: {\n      type: String\n    },\n    appendToBody: {\n      type: Boolean,\n      default: false\n    },\n    manualInput: {\n      type: Boolean,\n      default: false\n    },\n    manualInputTimeout: {\n      type: [Number, String]\n    },\n    hideDropdown: {\n      type: Boolean,\n      default: false\n    },\n    fixedDropdownButton: {\n      type: Boolean,\n      default: false\n    },\n    debugMode: {\n      type: Boolean,\n      default: false\n    }\n  },\n  data: function data() {\n    return {\n      timeValue: {},\n      hours: [],\n      minutes: [],\n      seconds: [],\n      apms: [],\n      isActive: false,\n      showDropdown: false,\n      isFocusing: false,\n      debounceTimer: undefined,\n      hourType: 'HH',\n      minuteType: 'mm',\n      secondType: '',\n      apmType: '',\n      hour: '',\n      minute: '',\n      second: '',\n      apm: '',\n      fullValues: undefined,\n      bakDisplayTime: undefined,\n      doClearApmChecking: false,\n      selectionTimer: undefined,\n      kbInputTimer: undefined,\n      kbInputLog: '',\n      bakCurrentPos: undefined,\n      forceDropOnTop: false\n    };\n  },\n  computed: {\n    opts: function opts() {\n      var options = Object.assign({}, DEFAULT_OPTIONS);\n\n      if (this.format && this.format.length) {\n        options.format = String(this.format);\n      }\n\n      if (this.isNumber(this.minuteInterval)) {\n        options.minuteInterval = +this.minuteInterval;\n      } // minuteInterval failsafe\n\n\n      if (!options.minuteInterval || options.minuteInterval < 1 || options.minuteInterval > 60) {\n        if (this.debugMode) {\n          if (options.minuteInterval > 60) {\n            this.debugLog(\"\\\"minute-interval\\\" should be less than 60. Current value is \".concat(this.minuteInterval));\n          } else if (options.minuteInterval === 0 || options.minuteInterval < 1) {\n            this.debugLog(\"\\\"minute-interval\\\" should be NO less than 1. Current value is \".concat(this.minuteInterval));\n          }\n        }\n\n        if (options.minuteInterval === 0) {\n          options.minuteInterval = 60;\n        } else {\n          options.minuteInterval = 1;\n        }\n      }\n\n      if (this.isNumber(this.secondInterval)) {\n        options.secondInterval = +this.secondInterval;\n      } // secondInterval failsafe\n\n\n      if (!options.secondInterval || options.secondInterval < 1 || options.secondInterval > 60) {\n        if (this.debugMode) {\n          if (options.secondInterval > 60) {\n            this.debugLog(\"\\\"second-interval\\\" should be less than 60. Current value is \".concat(this.secondInterval));\n          } else if (options.secondInterval === 0 || options.secondInterval < 1) {\n            this.debugLog(\"\\\"second-interval\\\" should be NO less than 1. Current value is \".concat(this.secondInterval));\n          }\n        }\n\n        if (options.secondInterval === 0) {\n          options.secondInterval = 60;\n        } else {\n          options.secondInterval = 1;\n        }\n      }\n\n      if (this.hourRange && Array.isArray(this.hourRange)) {\n        options.hourRange = JSON.parse(JSON.stringify(this.hourRange));\n\n        if (!this.hourRange.length && this.debugMode) {\n          this.debugLog('The \"hour-range\" array is empty (length === 0)');\n        }\n      }\n\n      if (this.minuteRange && Array.isArray(this.minuteRange)) {\n        options.minuteRange = JSON.parse(JSON.stringify(this.minuteRange));\n\n        if (!this.minuteRange.length && this.debugMode) {\n          this.debugLog('The \"minute-range\" array is empty (length === 0)');\n        }\n      }\n\n      if (this.secondRange && Array.isArray(this.secondRange)) {\n        options.secondRange = JSON.parse(JSON.stringify(this.secondRange));\n\n        if (!this.secondRange.length && this.debugMode) {\n          this.debugLog('The \"second-range\" array is empty (length === 0)');\n        }\n      }\n\n      if (this.hideDisabledItems) {\n        options.hideDisabledItems = true;\n      }\n\n      if (this.hideDisabledHours || this.hideDisabledItems) {\n        options.hideDisabledHours = true;\n      }\n\n      if (this.hideDisabledMinutes || this.hideDisabledItems) {\n        options.hideDisabledMinutes = true;\n      }\n\n      if (this.hideDisabledSeconds || this.hideDisabledItems) {\n        options.hideDisabledSeconds = true;\n      }\n\n      if (this.hideDropdown) {\n        if (this.manualInput) {\n          options.hideDropdown = true;\n        } else if (this.debugMode) {\n          this.debugLog('\"hide-dropdown\" only works with \"manual-input\" mode');\n        }\n      }\n\n      if (this.blurDelay && +this.blurDelay > 0) {\n        options.blurDelay = +this.blurDelay;\n      }\n\n      if (this.manualInputTimeout && +this.manualInputTimeout > 0) {\n        options.manualInputTimeout = +this.manualInputTimeout;\n      }\n\n      if (this.dropOffsetHeight && +this.dropOffsetHeight > 0) {\n        options.dropOffsetHeight = +this.dropOffsetHeight;\n      }\n\n      return options;\n    },\n    useStringValue: function useStringValue() {\n      return typeof this.value === 'string';\n    },\n    formatString: function formatString() {\n      return this.opts.format || DEFAULT_OPTIONS.format;\n    },\n    inUse: function inUse() {\n      var _this = this;\n\n      var typesInUse = CONFIG.BASIC_TYPES.filter(function (type) {\n        return _this.getTokenByType(type);\n      }); // Sort types and tokens by their sequence in the \"format\" string\n\n      typesInUse.sort(function (l, r) {\n        return _this.formatString.indexOf(_this.getTokenByType(l) || null) - _this.formatString.indexOf(_this.getTokenByType(r) || null);\n      });\n      var tokensInUse = typesInUse.map(function (type) {\n        return _this.getTokenByType(type);\n      });\n      return {\n        hour: !!this.hourType,\n        minute: !!this.minuteType,\n        second: !!this.secondType,\n        apm: !!this.apmType,\n        types: typesInUse || [],\n        tokens: tokensInUse || []\n      };\n    },\n    displayTime: function displayTime() {\n      var formatString = String(this.formatString);\n\n      if (this.hour) {\n        formatString = formatString.replace(new RegExp(this.hourType, 'g'), this.hour);\n      }\n\n      if (this.minute) {\n        formatString = formatString.replace(new RegExp(this.minuteType, 'g'), this.minute);\n      }\n\n      if (this.second && this.secondType) {\n        formatString = formatString.replace(new RegExp(this.secondType, 'g'), this.second);\n      }\n\n      if (this.apm && this.apmType) {\n        formatString = formatString.replace(new RegExp(this.apmType, 'g'), this.apm);\n      }\n\n      return formatString;\n    },\n    customDisplayTime: function customDisplayTime() {\n      if (!this.amText && !this.pmText) {\n        return this.displayTime;\n      }\n\n      return this.displayTime.replace(new RegExp(this.apm, 'g'), this.apmDisplayText(this.apm));\n    },\n    inputIsEmpty: function inputIsEmpty() {\n      return this.formatString === this.displayTime;\n    },\n    allValueSelected: function allValueSelected() {\n      if (this.inUse.hour && !this.hour || this.inUse.minute && !this.minute || this.inUse.second && !this.second || this.inUse.apm && !this.apm) {\n        return false;\n      }\n\n      return true;\n    },\n    columnsSequence: function columnsSequence() {\n      return this.inUse.types.map(function (type) {\n        return type;\n      }) || [];\n    },\n    showClearBtn: function showClearBtn() {\n      if (this.hideClearButton || this.disabled) {\n        return false;\n      }\n\n      return !this.inputIsEmpty;\n    },\n    showDropdownBtn: function showDropdownBtn() {\n      if (this.fixedDropdownButton) {\n        return true;\n      }\n\n      if (this.opts.hideDropdown && this.isActive && !this.showDropdown) {\n        return true;\n      }\n\n      return false;\n    },\n    baseOn12Hours: function baseOn12Hours() {\n      return this.hourType === 'h' || this.hourType === 'hh';\n    },\n    hourRangeIn24HrFormat: function hourRangeIn24HrFormat() {\n      var _this2 = this;\n\n      if (!this.hourType || !this.opts.hourRange) {\n        return false;\n      }\n\n      if (!this.opts.hourRange.length) {\n        return [];\n      }\n\n      var range = [];\n      this.opts.hourRange.forEach(function (value) {\n        if (value instanceof Array) {\n          if (value.length > 2 && _this2.debugMode) {\n            _this2.debugLog(\"Nested array within \\\"hour-range\\\" must contain no more than two items. Only the first two items of \".concat(JSON.stringify(value), \" will be taken into account.\"));\n          }\n\n          var start = value[0];\n          var end = value[1] || value[0];\n\n          if (_this2.is12hRange(start)) {\n            start = _this2.translate12hRange(start);\n          }\n\n          if (_this2.is12hRange(end)) {\n            end = _this2.translate12hRange(end);\n          }\n\n          for (var i = +start; i <= +end; i++) {\n            if (i < 0 || i > 24) {\n              continue;\n            }\n\n            if (!range.includes(i)) {\n              range.push(i);\n            }\n          }\n        } else {\n          if (_this2.is12hRange(value)) {\n            value = _this2.translate12hRange(value);\n          } else {\n            value = +value;\n          }\n\n          if (value < 0 || value > 24) {\n            return;\n          }\n\n          if (!range.includes(value)) {\n            range.push(value);\n          }\n        }\n      });\n      range.sort(function (l, r) {\n        return l - r;\n      });\n      return range;\n    },\n    restrictedHourRange: function restrictedHourRange() {\n      // No restriction\n      if (!this.hourRangeIn24HrFormat) {\n        return false;\n      } // 12-Hour\n\n\n      if (this.baseOn12Hours) {\n        var range = this.hourRangeIn24HrFormat.map(function (value) {\n          if (value === 12) {\n            return '12p';\n          } else if (value === 24 || value === 0) {\n            return '12a';\n          }\n\n          return value > 12 ? \"\".concat(value % 12, \"p\") : \"\".concat(value, \"a\");\n        });\n        return range;\n      } // 24-Hour\n\n\n      return this.hourRangeIn24HrFormat;\n    },\n    validHoursList: function validHoursList() {\n      var _this3 = this;\n\n      if (!this.manualInput) {\n        return false;\n      }\n\n      if (this.restrictedHourRange) {\n        var list = [];\n\n        if (this.baseOn12Hours) {\n          list = this.restrictedHourRange.map(function (hr) {\n            var l = hr.substr(0, hr.length - 1);\n            var r = hr.substr(-1);\n            return \"\".concat(_this3.formatValue(_this3.hourType, l)).concat(r);\n          });\n          var am12Index = list.indexOf('12a');\n\n          if (am12Index > 0) {\n            // Make '12a' the first item in h/hh\n            list.unshift(list.splice(am12Index, 1)[0]);\n          }\n\n          return list;\n        }\n\n        list = this.restrictedHourRange.map(function (hr) {\n          return _this3.formatValue(_this3.hourType, hr);\n        });\n\n        if (list.length > 1 && list[0] && list[0] === '24') {\n          // Make '24' the last item in k/kk\n          list.push(list.shift());\n        }\n\n        return list;\n      }\n\n      if (this.baseOn12Hours) {\n        return [].concat([], this.hours.map(function (hr) {\n          return \"\".concat(hr, \"a\");\n        }), this.hours.map(function (hr) {\n          return \"\".concat(hr, \"p\");\n        }));\n      }\n\n      return this.hours;\n    },\n    has: function has() {\n      var result = {\n        customApmText: false\n      };\n      var apmEnabled = !!this.apmType;\n\n      if (apmEnabled && this.hourRangeIn24HrFormat && this.hourRangeIn24HrFormat.length) {\n        var range = [].concat([], this.hourRangeIn24HrFormat);\n        result.am = range.some(function (value) {\n          return value < 12 || value === 24;\n        });\n        result.pm = range.some(function (value) {\n          return value >= 12 && value < 24;\n        });\n      } else {\n        result.am = apmEnabled;\n        result.pm = apmEnabled;\n      }\n\n      if (this.amText && this.amText.length || this.pmText && this.pmText.length) {\n        result.customApmText = true;\n      }\n\n      return result;\n    },\n    minuteRangeList: function minuteRangeList() {\n      if (!this.minuteType || !this.opts.minuteRange) {\n        return false;\n      }\n\n      if (!this.opts.minuteRange.length) {\n        return [];\n      }\n\n      return this.renderRangeList(this.opts.minuteRange, 'minute');\n    },\n    secondRangeList: function secondRangeList() {\n      if (!this.secondType || !this.opts.secondRange) {\n        return false;\n      }\n\n      if (!this.opts.secondRange.length) {\n        return [];\n      }\n\n      return this.renderRangeList(this.opts.secondRange, 'second');\n    },\n    hourLabelText: function hourLabelText() {\n      return this.hourLabel || this.hourType;\n    },\n    minuteLabelText: function minuteLabelText() {\n      return this.minuteLabel || this.minuteType;\n    },\n    secondLabelText: function secondLabelText() {\n      return this.secondLabel || this.secondType;\n    },\n    apmLabelText: function apmLabelText() {\n      return this.apmLabel || this.apmType;\n    },\n    inputWidthStyle: function inputWidthStyle() {\n      if (!this.inputWidth || !this.inputWidth.length) {\n        return;\n      }\n\n      return {\n        width: this.inputWidth\n      };\n    },\n    tokenRegexBase: function tokenRegexBase() {\n      return this.inUse.tokens.join('|');\n    },\n    tokenChunks: function tokenChunks() {\n      if (!this.manualInput && !this.useStringValue) {\n        return false;\n      }\n\n      var formatString = String(this.formatString);\n      var tokensRegxStr = \"(\".concat(this.tokenRegexBase, \")+?\");\n      var tokensMatchAll = this.getMatchAllByRegex(formatString, tokensRegxStr);\n      var tokenChunks = [];\n\n      var _iterator = _createForOfIteratorHelper(tokensMatchAll),\n          _step;\n\n      try {\n        for (_iterator.s(); !(_step = _iterator.n()).done;) {\n          var tkMatch = _step.value;\n          var rawToken = tkMatch[0];\n          var tokenMatchItem = {\n            index: tkMatch.index,\n            token: rawToken,\n            type: this.getTokenType(rawToken),\n            needsCalibrate: rawToken.length < 2,\n            len: (rawToken || '').length\n          };\n          tokenChunks.push(tokenMatchItem);\n        }\n      } catch (err) {\n        _iterator.e(err);\n      } finally {\n        _iterator.f();\n      }\n\n      return tokenChunks;\n    },\n    needsPosCalibrate: function needsPosCalibrate() {\n      if (!this.manualInput) {\n        return false;\n      }\n\n      return this.tokenChunks.some(function (chk) {\n        return chk.needsCalibrate;\n      });\n    },\n    tokenChunksPos: function tokenChunksPos() {\n      var _this4 = this;\n\n      if (!this.manualInput) {\n        return false;\n      }\n\n      if (!this.needsPosCalibrate) {\n        return this.tokenChunks.map(function (chk) {\n          return {\n            token: chk.token,\n            type: chk.type,\n            start: chk.index,\n            end: chk.index + chk.len\n          };\n        });\n      }\n\n      var list = [];\n      var calibrateLen = 0;\n      this.tokenChunks.forEach(function (chk) {\n        var chunkCurrentLen; // Adjust for customized AM/PM text\n\n        if (chk.type === 'apm' && _this4.has.customApmText) {\n          if (_this4.apm && _this4.apm.length) {\n            var customApmText = _this4.apm.toLowerCase() === 'am' ? _this4.amText : _this4.pmText;\n            chunkCurrentLen = customApmText && customApmText.length ? customApmText.length : chk.len;\n          } else {\n            chunkCurrentLen = chk.len;\n          } // Others\n\n        } else {\n          chunkCurrentLen = _this4[chk.type] && _this4[chk.type].length ? _this4[chk.type].length : chk.len;\n        }\n\n        list.push({\n          token: chk.token,\n          type: chk.type,\n          start: chk.index + calibrateLen,\n          end: chk.index + calibrateLen + chunkCurrentLen\n        });\n\n        if (chk.needsCalibrate && chunkCurrentLen > chk.len) {\n          calibrateLen += chunkCurrentLen - chk.len;\n        }\n      });\n      return list;\n    },\n    invalidValues: function invalidValues() {\n      if (this.inputIsEmpty) {\n        return [];\n      }\n\n      if (!this.restrictedHourRange && !this.minuteRangeList && !this.secondRangeList && this.opts.minuteInterval === 1 && this.opts.secondInterval === 1) {\n        return [];\n      }\n\n      var result = [];\n\n      if (this.inUse.hour && !this.isEmptyValue(this.hourType, this.hour) && (!this.isValidValue(this.hourType, this.hour) || this.isDisabled('hour', this.hour))) {\n        result.push('hour');\n      }\n\n      if (this.inUse.minute && !this.isEmptyValue(this.minuteType, this.minute) && (!this.isValidValue(this.minuteType, this.minute) || this.isDisabled('minute', this.minute) || this.notInInterval('minute', this.minute))) {\n        result.push('minute');\n      }\n\n      if (this.inUse.second && !this.isEmptyValue(this.secondType, this.second) && (!this.isValidValue(this.secondType, this.second) || this.isDisabled('second', this.second) || this.notInInterval('second', this.second))) {\n        result.push('second');\n      }\n\n      if (this.inUse.apm && !this.isEmptyValue(this.apmType, this.apm) && (!this.isValidValue(this.apmType, this.apm) || this.isDisabled('apm', this.apm))) {\n        result.push('apm');\n      }\n\n      if (result.length) {\n        return result;\n      }\n\n      return [];\n    },\n    hasInvalidInput: function hasInvalidInput() {\n      return Boolean(this.invalidValues && this.invalidValues.length);\n    },\n    autoDirectionEnabled: function autoDirectionEnabled() {\n      return this.dropDirection === 'auto';\n    },\n    dropdownDirClass: function dropdownDirClass() {\n      if (this.autoDirectionEnabled) {\n        return this.forceDropOnTop ? 'drop-up' : 'drop-down';\n      }\n\n      return this.dropDirection === 'up' ? 'drop-up' : 'drop-down';\n    }\n  },\n  watch: {\n    'opts.format': function optsFormat(newValue) {\n      this.renderFormat(newValue);\n    },\n    'opts.minuteInterval': function optsMinuteInterval(newInteval) {\n      this.renderList('minute', newInteval);\n    },\n    'opts.secondInterval': function optsSecondInterval(newInteval) {\n      this.renderList('second', newInteval);\n    },\n    value: {\n      deep: true,\n      handler: function handler() {\n        this.readValues();\n      }\n    },\n    displayTime: function displayTime() {\n      this.fillValues();\n    },\n    disabled: function disabled(toDisabled) {\n      if (toDisabled) {\n        // Force close dropdown and reset status when disabled\n        if (this.isActive) {\n          this.isActive = false;\n        }\n\n        if (this.showDropdown) {\n          this.showDropdown = false;\n        }\n      }\n    },\n    'invalidValues.length': function invalidValuesLength(newLength, oldLength) {\n      if (newLength && newLength >= 1) {\n        this.$emit('error', this.invalidValues);\n      } else if (oldLength && oldLength >= 1) {\n        this.$emit('error', []);\n      }\n    }\n  },\n  methods: {\n    formatValue: function formatValue(token, i) {\n      if (!this.isNumber(i)) {\n        return '';\n      }\n\n      i = +i;\n\n      switch (token) {\n        case 'H':\n        case 'h':\n        case 'k':\n        case 'm':\n        case 's':\n          if (['h', 'k'].includes(token) && i === 0) {\n            return token === 'k' ? '24' : '12';\n          }\n\n          return String(i);\n\n        case 'HH':\n        case 'mm':\n        case 'ss':\n        case 'hh':\n        case 'kk':\n          if (['hh', 'kk'].includes(token) && i === 0) {\n            return token === 'kk' ? '24' : '12';\n          }\n\n          return i < 10 ? \"0\".concat(i) : String(i);\n\n        default:\n          return '';\n      }\n    },\n    checkAcceptingType: function checkAcceptingType(validValues, formatString) {\n      if (!validValues || !formatString || !formatString.length) {\n        return '';\n      }\n\n      for (var i = 0; i < validValues.length; i++) {\n        if (formatString.indexOf(validValues[i]) > -1) {\n          return validValues[i];\n        }\n      }\n\n      return '';\n    },\n    renderFormat: function renderFormat(newFormat) {\n      var _this5 = this;\n\n      newFormat = newFormat || this.opts.format || DEFAULT_OPTIONS.format;\n      var hourType = this.checkAcceptingType(CONFIG.HOUR_TOKENS, newFormat);\n      var minuteType = this.checkAcceptingType(CONFIG.MINUTE_TOKENS, newFormat);\n      this.secondType = this.checkAcceptingType(CONFIG.SECOND_TOKENS, newFormat);\n      this.apmType = this.checkAcceptingType(CONFIG.APM_TOKENS, newFormat); // Failsafe checking\n\n      if (!hourType && !minuteType && !this.secondType && !this.apmType) {\n        if (this.debugMode && this.format) {\n          this.debugLog(\"No valid tokens found in your defined \\\"format\\\" string \\\"\".concat(this.format, \"\\\". Fallback to the default \\\"HH:mm\\\" format.\"));\n        }\n\n        hourType = 'HH';\n        minuteType = 'mm';\n      }\n\n      this.hourType = hourType;\n      this.minuteType = minuteType;\n      this.hourType ? this.renderHoursList() : this.hours = [];\n      this.minuteType ? this.renderList('minute') : this.minutes = [];\n      this.secondType ? this.renderList('second') : this.seconds = [];\n      this.apmType ? this.renderApmList() : this.apms = [];\n      this.$nextTick(function () {\n        _this5.readValues();\n      });\n    },\n    renderHoursList: function renderHoursList() {\n      var hoursCount = this.baseOn12Hours ? 12 : 24;\n      var hours = [];\n\n      for (var i = 0; i < hoursCount; i++) {\n        if (this.hourType === 'k' || this.hourType === 'kk') {\n          hours.push(this.formatValue(this.hourType, i + 1));\n        } else {\n          hours.push(this.formatValue(this.hourType, i));\n        }\n      }\n\n      this.hours = hours;\n    },\n    renderList: function renderList(listType, interval) {\n      if (!this.isMinuteOrSecond(listType)) {\n        return;\n      }\n\n      var isMinute = listType === 'minute';\n      interval = interval || (isMinute ? this.opts.minuteInterval || DEFAULT_OPTIONS.minuteInterval : this.opts.secondInterval || DEFAULT_OPTIONS.secondInterval);\n      var result = [];\n\n      for (var i = 0; i < 60; i += interval) {\n        result.push(this.formatValue(isMinute ? this.minuteType : this.secondType, i));\n      }\n\n      isMinute ? this.minutes = result : this.seconds = result;\n    },\n    renderApmList: function renderApmList() {\n      this.apms = this.apmType === 'A' ? ['AM', 'PM'] : ['am', 'pm'];\n    },\n    readValues: function readValues() {\n      if (this.useStringValue) {\n        if (this.debugMode) {\n          this.debugLog(\"Received a string value: \\\"\".concat(this.value, \"\\\"\"));\n        }\n\n        this.readStringValues(this.value);\n      } else {\n        if (this.debugMode) {\n          this.debugLog(\"Received an object value: \\\"\".concat(JSON.stringify(this.value || {}), \"\\\"\"));\n        }\n\n        this.readObjectValues(this.value);\n      }\n    },\n    readObjectValues: function readObjectValues(objValue) {\n      var _this6 = this;\n\n      var timeValue = JSON.parse(JSON.stringify(objValue || {}));\n      var values = Object.keys(timeValue); // Failsafe for empty `v-model` object\n\n      if (values.length === 0) {\n        this.addFallbackValues();\n        return;\n      }\n\n      CONFIG.BASIC_TYPES.forEach(function (type) {\n        var token = _this6.getTokenByType(type);\n\n        if (values.indexOf(token) > -1) {\n          var sanitizedValue = _this6.sanitizedValue(token, timeValue[token]);\n\n          _this6[type] = sanitizedValue;\n          timeValue[token] = sanitizedValue;\n        } else {\n          _this6[type] = '';\n        }\n      });\n      this.timeValue = timeValue;\n    },\n    getMatchAllByRegex: function getMatchAllByRegex(testString, regexString) {\n      var str = 'polyfillTest';\n      var needsPolyfill = Boolean(!str.matchAll || typeof str.matchAll !== 'function');\n      return needsPolyfill ? this.polyfillMatchAll(testString, regexString) : testString.matchAll(new RegExp(regexString, 'g'));\n    },\n    readStringValues: function readStringValues(stringValue) {\n      var _this7 = this;\n\n      // Failsafe for empty `v-model` string\n      if (!stringValue || !stringValue.length) {\n        this.addFallbackValues();\n        return;\n      }\n\n      var formatString = String(this.formatString);\n      var tokensRegxStr = \"(\".concat(this.tokenRegexBase, \")+?\");\n      var othersRegxStr = \"[^(\".concat(this.tokenRegexBase, \")]+\");\n      var tokensMatchAll = this.getMatchAllByRegex(formatString, tokensRegxStr);\n      var othersMatchAll = this.getMatchAllByRegex(formatString, othersRegxStr);\n      var chunks = [];\n      var tokenChunks = [];\n\n      var _iterator2 = _createForOfIteratorHelper(tokensMatchAll),\n          _step2;\n\n      try {\n        for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n          var tkMatch = _step2.value;\n          var tokenMatchItem = {\n            index: tkMatch.index,\n            token: tkMatch[0],\n            isValueToken: true\n          };\n          chunks.push(tokenMatchItem);\n          tokenChunks.push(tokenMatchItem);\n        }\n      } catch (err) {\n        _iterator2.e(err);\n      } finally {\n        _iterator2.f();\n      }\n\n      var _iterator3 = _createForOfIteratorHelper(othersMatchAll),\n          _step3;\n\n      try {\n        for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n          var otMatch = _step3.value;\n          chunks.push({\n            index: otMatch.index,\n            token: otMatch[0]\n          });\n        }\n      } catch (err) {\n        _iterator3.e(err);\n      } finally {\n        _iterator3.f();\n      }\n\n      chunks.sort(function (l, r) {\n        return l.index < r.index ? -1 : 1;\n      });\n      var regexCombo = '';\n      chunks.forEach(function (chunk) {\n        if (chunk.isValueToken) {\n          var tokenRegex = _this7.getTokenRegex(chunk.token) || '';\n          regexCombo += tokenRegex;\n        } else {\n          var safeChars = chunk.token.replace(/\\\\{0}(\\*|\\?|\\.|\\+)/g, '\\\\$1');\n          regexCombo += \"(?:\".concat(safeChars, \")\");\n        }\n      });\n      var comboReg = new RegExp(regexCombo); // Do test before match\n\n      if (comboReg.test(stringValue)) {\n        var matchResults = stringValue.match(new RegExp(regexCombo));\n        var valueResults = matchResults.slice(1, tokenChunks.length + 1);\n        var timeValue = {};\n        valueResults.forEach(function (value, vrIndex) {\n          if (tokenChunks[vrIndex]) {\n            var targetToken = tokenChunks[vrIndex].token;\n            timeValue[targetToken] = _this7.setValueFromString(value, targetToken);\n          }\n        });\n        this.timeValue = timeValue;\n\n        if (this.debugMode) {\n          var tokenChunksForLog = tokenChunks.map(function (tChunk) {\n            return tChunk && tChunk.token;\n          });\n          this.debugLog(\"Successfully parsed values \".concat(JSON.stringify(valueResults), \"\\nfor \").concat(JSON.stringify(tokenChunksForLog), \"\\nin format pattern '\").concat(this.formatString, \"'\"));\n        }\n      } else {\n        if (this.debugMode) {\n          this.debugLog(\"The input string in \\\"v-model\\\" does NOT match the \\\"format\\\" pattern\\nformat: \".concat(this.formatString, \"\\nv-model: \").concat(stringValue));\n        }\n      }\n    },\n    polyfillMatchAll: function polyfillMatchAll(targetString, regxStr) {\n      var matchesList = targetString.match(new RegExp(regxStr, 'g'));\n      var result = [];\n      var indicesReg = [];\n\n      if (matchesList && matchesList.length) {\n        matchesList.forEach(function (matchedItem) {\n          var existIndex = indicesReg.findIndex(function (idxItem) {\n            return idxItem.str === matchedItem;\n          });\n          var index;\n\n          if (existIndex >= 0) {\n            if (indicesReg[existIndex] && indicesReg[existIndex].regex) {\n              index = indicesReg[existIndex].regex.exec(targetString).index;\n            }\n          } else {\n            var itemIndicesRegex = new RegExp(matchedItem, 'g');\n            index = itemIndicesRegex.exec(targetString).index;\n            indicesReg.push({\n              str: String(matchedItem),\n              regex: itemIndicesRegex\n            });\n          }\n\n          result.push({\n            0: String(matchedItem),\n            index: index\n          });\n        });\n      }\n\n      return result;\n    },\n    addFallbackValues: function addFallbackValues() {\n      var _this8 = this;\n\n      var timeValue = {};\n      this.inUse.types.forEach(function (type) {\n        timeValue[_this8.getTokenByType(type)] = '';\n      });\n      this.timeValue = timeValue;\n    },\n    setValueFromString: function setValueFromString(parsedValue, token) {\n      if (!token || !parsedValue) {\n        return '';\n      }\n\n      var tokenType = this.getTokenType(token);\n\n      if (!tokenType || !tokenType.length) {\n        return '';\n      }\n\n      var stdValue = parsedValue !== this.getTokenByType(tokenType) ? parsedValue : '';\n      this[tokenType] = stdValue;\n      return stdValue;\n    },\n    fillValues: function fillValues(forceEmit) {\n      var _this9 = this;\n\n      var fullValues = {};\n      var baseHour = this.hour;\n      var baseHourType = this.hourType;\n      var apmValue; // Hour type or hour value is NOT set in the \"format\" string\n\n      if (!baseHourType || !this.isNumber(baseHour)) {\n        CONFIG.HOUR_TOKENS.forEach(function (token) {\n          return fullValues[token] = '';\n        });\n        apmValue = this.lowerCasedApm(this.apm || '');\n        fullValues.a = apmValue;\n        fullValues.A = apmValue.toUpperCase(); // Both Hour type and value are set\n      } else {\n        var hourValue = +baseHour;\n\n        var _apmValue = this.baseOn12Hours && this.apm ? this.lowerCasedApm(this.apm) : false;\n\n        CONFIG.HOUR_TOKENS.forEach(function (token) {\n          if (token === baseHourType) {\n            fullValues[token] = baseHour;\n            return;\n          }\n\n          var value;\n          var apm;\n\n          switch (token) {\n            case 'H':\n            case 'HH':\n            case 'k':\n            case 'kk':\n              if (_this9.baseOn12Hours) {\n                if (_apmValue === 'pm') {\n                  value = hourValue < 12 ? hourValue + 12 : hourValue;\n                } else if (['k', 'kk'].includes(token)) {\n                  value = hourValue === 12 ? 24 : hourValue;\n                } else {\n                  value = hourValue % 12;\n                }\n              } else {\n                if (['k', 'kk'].includes(token)) {\n                  value = hourValue === 0 ? 24 : hourValue;\n                } else {\n                  value = hourValue % 24;\n                }\n              }\n\n              fullValues[token] = _this9.formatValue(token, value);\n              break;\n\n            case 'h':\n            case 'hh':\n              // h <-> hh\n              if (_this9.baseOn12Hours) {\n                value = hourValue;\n                apm = _apmValue || ''; // Read from other hour formats\n              } else {\n                if (hourValue > 11 && hourValue < 24) {\n                  apm = 'pm';\n                  value = hourValue === 12 ? 12 : hourValue % 12;\n                } else {\n                  apm = 'am';\n                  value = hourValue % 12 === 0 ? 12 : hourValue;\n                }\n              }\n\n              fullValues[token] = _this9.formatValue(token, value);\n              fullValues.a = apm;\n              fullValues.A = apm.toUpperCase();\n              break;\n          }\n        });\n      }\n\n      fullValues.m = this.formatValue('m', this.minute);\n      fullValues.mm = this.formatValue('mm', this.minute);\n      fullValues.s = this.formatValue('s', this.second);\n      fullValues.ss = this.formatValue('ss', this.second);\n      this.fullValues = fullValues; // On lazy mode, emit `input` and `change` events only when:\n      // - The user pick a new value and then close the dropdown\n      // - The user click the (\"x\") clear button\n\n      if (!this.lazy || forceEmit) {\n        this.emitTimeValue();\n      }\n\n      if (this.closeOnComplete && this.allValueSelected && this.showDropdown) {\n        this.toggleActive();\n      }\n    },\n    getFullData: function getFullData() {\n      if (!this.fullValues) {\n        this.fillValues();\n      }\n\n      return {\n        data: JSON.parse(JSON.stringify(this.fullValues)),\n        displayTime: this.inputIsEmpty ? '' : String(this.displayTime)\n      };\n    },\n    emitTimeValue: function emitTimeValue() {\n      if (this.lazy && this.bakDisplayTime === this.displayTime) {\n        if (this.debugMode) {\n          this.debugLog('The value does not change on `lazy` mode. Skip the emitting `input` and `change` event.');\n        }\n\n        return;\n      }\n\n      var fullData = this.getFullData();\n\n      if (this.useStringValue) {\n        this.$emit('input', fullData.displayTime);\n      } else {\n        var fullValues = fullData.data;\n        var tokensInUse = this.inUse.tokens || [];\n        var timeValue = {};\n        tokensInUse.forEach(function (token) {\n          timeValue[token] = fullValues[token] || '';\n        });\n        this.$emit('input', JSON.parse(JSON.stringify(timeValue)));\n      }\n\n      this.$emit('change', fullData);\n    },\n    translate12hRange: function translate12hRange(value) {\n      var valueT = this.match12hRange(value);\n\n      if (+valueT[1] === 12) {\n        return +valueT[1] + (valueT[2].toLowerCase() === 'p' ? 0 : 12);\n      }\n\n      return +valueT[1] + (valueT[2].toLowerCase() === 'p' ? 12 : 0);\n    },\n    isDisabled: function isDisabled(type, value) {\n      if (!this.isBasicType(type) || !this.inUse[type]) {\n        return true;\n      }\n\n      switch (type) {\n        case 'hour':\n          return this.isDisabledHour(value);\n\n        case 'minute':\n        case 'second':\n          if (!this[\"\".concat(type, \"RangeList\")]) {\n            return false;\n          }\n\n          return !this[\"\".concat(type, \"RangeList\")].includes(value);\n\n        case 'apm':\n          if (!this.restrictedHourRange) {\n            return false;\n          }\n\n          return !this.has[this.lowerCasedApm(value)];\n\n        default:\n          return true;\n      }\n    },\n    isDisabledHour: function isDisabledHour(value) {\n      if (!this.restrictedHourRange) {\n        return false;\n      }\n\n      if (this.baseOn12Hours) {\n        if (!this.apm || !this.apm.length) {\n          return false;\n        } else {\n          var token = this.apm.toLowerCase() === 'am' ? 'a' : 'p';\n          return !this.restrictedHourRange.includes(\"\".concat(+value).concat(token));\n        }\n      } // Fallback for 'HH' and 'H hour format with a `hour-range` in a 12-hour form\n\n\n      if ((this.hourType === 'HH' || this.hourType === 'H') && +value === 0 && this.restrictedHourRange.includes(24)) {\n        return false;\n      }\n\n      return !this.restrictedHourRange.includes(+value);\n    },\n    notInInterval: function notInInterval(section, value) {\n      if (!section || !this.isMinuteOrSecond(section)) {\n        return;\n      }\n\n      if (this.opts[\"\".concat(section, \"Interval\")] === 1) {\n        return false;\n      }\n\n      return +value % this.opts[\"\".concat(section, \"Interval\")] !== 0;\n    },\n    renderRangeList: function renderRangeList(rawRange, section) {\n      var _this10 = this;\n\n      if (!rawRange || !section || !this.isMinuteOrSecond(section)) {\n        return [];\n      }\n\n      var range = [];\n      var formatedValue;\n      rawRange.forEach(function (value) {\n        if (value instanceof Array) {\n          if (value.length > 2 && _this10.debugMode) {\n            _this10.debugLog(\"Nested array within \\\"\".concat(section, \"-range\\\" must contain no more than two items. Only the first two items of \").concat(JSON.stringify(value), \" will be taken into account.\"));\n          }\n\n          var start = value[0];\n          var end = value[1] || value[0];\n\n          for (var i = +start; i <= +end; i++) {\n            if (i < 0 || i > 59) {\n              continue;\n            }\n\n            formatedValue = _this10.formatValue(_this10.getTokenByType(section), i);\n\n            if (!range.includes(formatedValue)) {\n              range.push(formatedValue);\n            }\n          }\n        } else {\n          if (+value < 0 || +value > 59) {\n            return;\n          }\n\n          formatedValue = _this10.formatValue(_this10.getTokenByType(section), value);\n\n          if (!range.includes(formatedValue)) {\n            range.push(formatedValue);\n          }\n        }\n      });\n      range.sort(function (l, r) {\n        return l - r;\n      }); // Debug Mode\n\n      if (this.debugMode) {\n        var fullList = (section === 'minute' ? this.minutes : this.seconds) || [];\n        var validItems = fullList.filter(function (item) {\n          return range.includes(item);\n        });\n\n        if (!validItems || !validItems.length) {\n          if (section === 'minute') {\n            this.debugLog(\"The minute list is empty due to the \\\"minute-range\\\" config\\nminute-range: \".concat(JSON.stringify(this.minuteRange), \"\\nminute-interval: \").concat(this.opts.minuteInterval));\n          } else {\n            this.debugLog(\"The second list is empty due to the \\\"second-range\\\" config\\nsecond-range: \".concat(JSON.stringify(this.secondRange), \"\\nsecond-interval: \").concat(this.opts.secondInterval));\n          }\n        }\n      }\n\n      return range;\n    },\n    forceApmSelection: function forceApmSelection() {\n      if (this.manualInput) {\n        // Skip this to allow users to paste a string value from the clipboard in Manual Input mode\n        return;\n      }\n\n      if (this.apmType && !this.apm) {\n        if (this.has.am || this.has.pm) {\n          this.doClearApmChecking = true;\n          var apmValue = this.has.am ? 'am' : 'pm';\n          this.apm = this.apmType === 'A' ? apmValue.toUpperCase() : apmValue;\n        }\n      }\n    },\n    emptyApmSelection: function emptyApmSelection() {\n      if (this.doClearApmChecking && this.hour === '' && this.minute === '' && this.second === '') {\n        this.apm = '';\n      }\n\n      this.doClearApmChecking = false;\n    },\n    apmDisplayText: function apmDisplayText(apmValue) {\n      if (this.amText && this.lowerCasedApm(apmValue) === 'am') {\n        return this.amText;\n      }\n\n      if (this.pmText && this.lowerCasedApm(apmValue) === 'pm') {\n        return this.pmText;\n      }\n\n      return apmValue;\n    },\n    toggleActive: function toggleActive() {\n      var _this11 = this;\n\n      if (this.disabled) {\n        return;\n      }\n\n      this.isActive = !this.isActive;\n\n      if (this.isActive) {\n        this.isFocusing = true;\n\n        if (this.manualInput) {\n          this.$emit('focus');\n        }\n\n        if (!this.opts.hideDropdown) {\n          this.setDropdownState(true);\n        } // Record to check if value did change in the later phase\n\n\n        if (this.lazy) {\n          this.bakDisplayTime = String(this.displayTime || '');\n        }\n\n        if (this.manualInput && !this.inputIsEmpty) {\n          this.$nextTick(function () {\n            if (_this11.$refs.input && _this11.$refs.input.selectionStart === 0 && _this11.$refs.input.selectionEnd === _this11.displayTime.length) {\n              // Select the first slot instead of the whole value string when tabbed in\n              _this11.selectFirstSlot();\n            }\n          });\n        }\n      } else {\n        if (this.showDropdown) {\n          this.setDropdownState(false);\n        } else if (this.manualInput) {\n          this.$emit('blur', this.getFullData());\n        }\n\n        this.isFocusing = false;\n\n        if (this.lazy) {\n          this.fillValues(true);\n          this.bakDisplayTime = undefined;\n        }\n      }\n\n      if (this.restrictedHourRange && this.baseOn12Hours) {\n        this.showDropdown ? this.forceApmSelection() : this.emptyApmSelection();\n      }\n\n      if (this.showDropdown) {\n        this.checkForAutoScroll();\n      }\n    },\n    setDropdownState: function setDropdownState(toShow) {\n      var fromUserClick = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n      if (toShow) {\n        if (this.appendToBody) {\n          this.appendDropdownToBody();\n        }\n\n        this.keepFocusing();\n\n        if (this.autoDirectionEnabled) {\n          this.checkDropDirection();\n        }\n\n        this.showDropdown = true;\n        this.$emit('open');\n\n        if (fromUserClick) {\n          if (this.fixedDropdownButton) {\n            this.isActive = true;\n          }\n\n          this.$emit('blur', this.getFullData());\n          this.checkForAutoScroll();\n        }\n      } else {\n        this.showDropdown = false;\n        this.$emit('close', this.getFullData());\n\n        if (this.appendToBody) {\n          this.removeDropdownFromBody();\n        }\n      }\n    },\n    appendDropdownToBody: function appendDropdownToBody() {\n      var dropdown = this.$refs && this.$refs.dropdown;\n      var body = document.getElementsByTagName('body')[0];\n\n      if (body && dropdown) {\n        window.addEventListener('scroll', this.updateDropdownPos);\n        dropdown.classList.add('vue__time-picker-dropdown');\n        this.updateDropdownPos();\n        body.appendChild(dropdown);\n      }\n    },\n    updateDropdownPos: function updateDropdownPos() {\n      if (!this.appendToBody) {\n        return;\n      }\n\n      var dropdown = this.$refs && this.$refs.dropdown;\n      var body = document.getElementsByTagName('body')[0];\n\n      if (body && dropdown) {\n        var box = this.$el.getBoundingClientRect();\n\n        if (this.dropdownDirClass === 'drop-up') {\n          dropdown.style.bottom = \"\".concat(window.innerHeight - box.y, \"px\");\n          dropdown.style.top = 'auto';\n        } else {\n          dropdown.style.top = \"\".concat(box.y + box.height, \"px\");\n          dropdown.style.bottom = 'auto';\n        }\n\n        dropdown.style.left = \"\".concat(box.x, \"px\");\n      }\n    },\n    removeDropdownFromBody: function removeDropdownFromBody() {\n      var dropdown = this.$refs && this.$refs.dropdown;\n      var body = document.getElementsByTagName('body')[0];\n\n      if (body && dropdown && body.contains(dropdown)) {\n        body.removeChild(dropdown);\n      }\n\n      if (dropdown) {\n        dropdown.classList.remove('vue__time-picker-dropdown');\n        dropdown.style.top = '';\n        dropdown.style.bottom = '';\n        dropdown.style.left = '';\n        this.$el.appendChild(dropdown);\n      }\n\n      window.removeEventListener('scroll', this.updateDropdownPos);\n    },\n    blurEvent: function blurEvent() {\n      if (this.manualInput && !this.opts.hideDropdown) {\n        // hideDropdown's `blur` event is handled somewhere else\n        this.$emit('blur', this.getFullData());\n      }\n    },\n    select: function select(type, value) {\n      if (this.isBasicType(type) && !this.isDisabled(type, value)) {\n        this[type] = value;\n\n        if (this.doClearApmChecking) {\n          this.doClearApmChecking = false;\n        }\n      }\n    },\n    clearTime: function clearTime() {\n      if (this.disabled) {\n        return;\n      }\n\n      this.hour = '';\n      this.minute = '';\n      this.second = '';\n      this.apm = '';\n\n      if (this.manualInput && this.$refs && this.$refs.input && this.$refs.input.value.length) {\n        this.$refs.input.value = '';\n      }\n\n      if (this.lazy) {\n        this.fillValues(true);\n      }\n    },\n    //\n    // Auto-Scroll\n    //\n    checkForAutoScroll: function checkForAutoScroll() {\n      var _this12 = this;\n\n      if (this.inputIsEmpty) {\n        return;\n      }\n\n      if (this.autoScroll) {\n        this.$nextTick(function () {\n          _this12.scrollToSelectedValues();\n        });\n      } else if (this.advancedKeyboard) {\n        // Auto-focus on selected value in the first column for advanced-keyboard\n        this.$nextTick(function () {\n          var firstColumn = _this12.inUse.types[0];\n\n          _this12.scrollToSelected(firstColumn, true);\n        });\n      }\n    },\n    scrollToSelected: function scrollToSelected(column) {\n      var allowFallback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n      if (!this.timeValue || this.inputIsEmpty) {\n        return;\n      }\n\n      var targetList;\n\n      if (this.appendToBody && this.$refs && this.$refs.dropdown) {\n        targetList = this.$refs.dropdown.querySelectorAll(\"ul.\".concat(column, \"s\"))[0];\n      } else {\n        targetList = this.$el.querySelectorAll(\"ul.\".concat(column, \"s\"))[0];\n      }\n\n      var targetValue = this.activeItemInCol(column)[0];\n\n      if (!targetValue && allowFallback) {\n        // No value selected in the target column, fallback to the first found valid item\n        targetValue = this.validItemsInCol(column)[0];\n      }\n\n      if (targetList && targetValue) {\n        targetList.scrollTop = targetValue.offsetTop || 0;\n\n        if (this.advancedKeyboard) {\n          targetValue.focus();\n        }\n      }\n    },\n    scrollToSelectedValues: function scrollToSelectedValues() {\n      var _this13 = this;\n\n      if (!this.timeValue || this.inputIsEmpty) {\n        return;\n      }\n\n      this.inUse.types.forEach(function (section) {\n        _this13.scrollToSelected(section);\n      });\n    },\n    //\n    // Additional Keyboard Navigation\n    //\n    onFocus: function onFocus() {\n      if (this.disabled) {\n        return;\n      }\n\n      if (!this.isFocusing) {\n        this.isFocusing = true;\n      }\n\n      if (!this.isActive) {\n        this.toggleActive();\n      }\n    },\n    escBlur: function escBlur() {\n      if (this.disabled) {\n        return;\n      }\n\n      window.clearTimeout(this.debounceTimer);\n      this.isFocusing = false;\n      var inputBox = this.$el.querySelectorAll('input.display-time')[0];\n\n      if (inputBox) {\n        inputBox.blur();\n      }\n    },\n    debounceBlur: function debounceBlur() {\n      var _this14 = this;\n\n      if (this.disabled) {\n        return;\n      }\n\n      this.isFocusing = false;\n      window.clearTimeout(this.debounceTimer);\n      this.debounceTimer = window.setTimeout(function () {\n        window.clearTimeout(_this14.debounceTimer);\n\n        _this14.onBlur();\n      }, this.opts.blurDelay);\n    },\n    onBlur: function onBlur() {\n      if (!this.disabled && !this.isFocusing && this.isActive) {\n        this.toggleActive();\n      }\n    },\n    keepFocusing: function keepFocusing() {\n      if (this.disabled) {\n        return;\n      }\n\n      window.clearTimeout(this.debounceTimer);\n\n      if (!this.isFocusing) {\n        this.isFocusing = true;\n      }\n    },\n    onTab: function onTab(column, value, evt) {\n      if (this.appendToBody && evt.shiftKey) {\n        var firstColumn = this.inUse.types[0];\n\n        if (column !== firstColumn) {\n          return;\n        }\n\n        var firstValidValue = this.validItemsInCol(firstColumn)[0]; // Is the first valid item in the first column\n\n        if (firstValidValue && firstValidValue.getAttribute('data-key') === String(value)) {\n          evt.preventDefault(); // Focus back on <input>\n\n          if (this.$refs && this.$refs.input) {\n            this.$refs.input.focus();\n          }\n        }\n      }\n    },\n    validItemsInCol: function validItemsInCol(column) {\n      var columnClass = \"\".concat(column, \"s\");\n\n      if (this.appendToBody && this.$refs && this.$refs.dropdown) {\n        return this.$refs.dropdown.querySelectorAll(\"ul.\".concat(columnClass, \" > li:not(.hint):not([disabled])\"));\n      }\n\n      return this.$el.querySelectorAll(\"ul.\".concat(columnClass, \" > li:not(.hint):not([disabled])\"));\n    },\n    activeItemInCol: function activeItemInCol(column) {\n      var columnClass = \"\".concat(column, \"s\");\n\n      if (this.appendToBody && this.$refs && this.$refs.dropdown) {\n        return this.$refs.dropdown.querySelectorAll(\"ul.\".concat(columnClass, \" > li.active:not(.hint)\"));\n      }\n\n      return this.$el.querySelectorAll(\"ul.\".concat(columnClass, \" > li.active:not(.hint)\"));\n    },\n    getClosestSibling: function getClosestSibling(column, dataKey) {\n      var getPrevious = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n      var siblingsInCol = this.validItemsInCol(column);\n      var selfIndex = Array.prototype.findIndex.call(siblingsInCol, function (sbl) {\n        return sbl.getAttribute('data-key') === dataKey;\n      }); // Already the first item\n\n      if (getPrevious && selfIndex === 0) {\n        return siblingsInCol[siblingsInCol.length - 1];\n      } // Already the last item\n\n\n      if (!getPrevious && selfIndex === siblingsInCol.length - 1) {\n        return siblingsInCol[0];\n      } // Selected value not in the valid values list\n\n\n      if (selfIndex < 0) {\n        return siblingsInCol[0];\n      }\n\n      if (getPrevious) {\n        return siblingsInCol[selfIndex - 1];\n      }\n\n      return siblingsInCol[selfIndex + 1];\n    },\n    prevItem: function prevItem(column, dataKey) {\n      var isManualInput = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n      var targetItem = this.getClosestSibling(column, dataKey, true);\n\n      if (targetItem) {\n        return isManualInput ? targetItem : targetItem.focus();\n      }\n    },\n    nextItem: function nextItem(column, dataKey) {\n      var isManualInput = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n      var targetItem = this.getClosestSibling(column, dataKey, false);\n\n      if (targetItem) {\n        return isManualInput ? targetItem : targetItem.focus();\n      }\n    },\n    getSideColumnName: function getSideColumnName(currentColumn) {\n      var toLeft = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n      var currentColumnIndex = this.inUse.types.indexOf(currentColumn);\n\n      if (toLeft && currentColumnIndex <= 0) {\n        if (this.debugMode) {\n          this.debugLog('You\\'re in the leftmost list already');\n        }\n\n        return;\n      } else if (!toLeft && currentColumnIndex === this.inUse.types.length - 1) {\n        if (this.debugMode) {\n          this.debugLog('You\\'re in the rightmost list already');\n        }\n\n        return;\n      }\n\n      return this.inUse.types[toLeft ? currentColumnIndex - 1 : currentColumnIndex + 1];\n    },\n    getFirstItemInSideColumn: function getFirstItemInSideColumn(currentColumn) {\n      var toLeft = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n      var targetColumn = this.getSideColumnName(currentColumn, toLeft);\n\n      if (!targetColumn) {\n        return;\n      }\n\n      var listItems = this.validItemsInCol(targetColumn);\n\n      if (listItems && listItems[0]) {\n        return listItems[0];\n      }\n    },\n    getActiveItemInSideColumn: function getActiveItemInSideColumn(currentColumn) {\n      var toLeft = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n      var targetColumn = this.getSideColumnName(currentColumn, toLeft);\n\n      if (!targetColumn) {\n        return;\n      }\n\n      var activeItems = this.activeItemInCol(targetColumn);\n\n      if (activeItems && activeItems[0]) {\n        return activeItems[0];\n      }\n    },\n    toLeftColumn: function toLeftColumn(currentColumn) {\n      var targetItem = this.getActiveItemInSideColumn(currentColumn, true) || this.getFirstItemInSideColumn(currentColumn, true);\n\n      if (targetItem) {\n        targetItem.focus();\n      }\n    },\n    toRightColumn: function toRightColumn(currentColumn) {\n      var targetItem = this.getActiveItemInSideColumn(currentColumn, false) || this.getFirstItemInSideColumn(currentColumn, false);\n\n      if (targetItem) {\n        targetItem.focus();\n      }\n    },\n    //\n    // Manual Input\n    //\n    onMouseDown: function onMouseDown() {\n      var _this15 = this;\n\n      if (!this.manualInput) {\n        return;\n      }\n\n      window.clearTimeout(this.selectionTimer);\n      this.selectionTimer = window.setTimeout(function () {\n        window.clearTimeout(_this15.selectionTimer);\n\n        if (_this15.$refs && _this15.$refs.input) {\n          var nearestSlot = _this15.getNearestChunkByPos(_this15.$refs.input.selectionStart || 0);\n\n          _this15.debounceSetInputSelection(nearestSlot);\n        }\n      }, 50);\n    },\n    keyDownHandler: function keyDownHandler(evt) {\n      if (evt.isComposing || evt.keyCode === 229) {\n        // Skip IME inputs\n        evt.preventDefault();\n        evt.stopPropagation();\n        return false;\n      } // Numbers\n\n\n      if (evt.keyCode >= 48 && evt.keyCode <= 57 || evt.keyCode >= 96 && evt.keyCode <= 105) {\n        evt.preventDefault();\n        this.keyboardInput(evt.key); // A|P|M\n      } else if ([65, 80, 77].includes(evt.keyCode)) {\n        evt.preventDefault();\n        this.keyboardInput(evt.key, true); // Arrow keys\n      } else if (evt.keyCode >= 37 && evt.keyCode <= 40) {\n        evt.preventDefault();\n        this.clearKbInputLog();\n        this.arrowHandler(evt); // Delete|Backspace\n      } else if (evt.keyCode === 8 || evt.keyCode === 46) {\n        evt.preventDefault();\n        this.clearKbInputLog();\n        this.clearTime(); // Tab\n      } else if (evt.keyCode === 9) {\n        this.clearKbInputLog();\n        this.tabHandler(evt); // Colon|Space\n      } else if (evt.keyCode === 186 || evt.keyCode === 32) {\n        evt.preventDefault();\n        this.clearKbInputLog();\n        this.toNextSlot(); // Prevent any Non-ESC and non-pasting inputs\n      } else if (evt.keyCode !== 27 && !(evt.metaKey || evt.ctrlKey)) {\n        evt.preventDefault();\n      }\n    },\n    onCompostionStart: function onCompostionStart(evt) {\n      evt.preventDefault();\n      evt.stopPropagation();\n      this.bakCurrentPos = this.getCurrentTokenChunk();\n      return false;\n    },\n    onCompostionEnd: function onCompostionEnd(evt) {\n      var _this16 = this;\n\n      evt.preventDefault();\n      evt.stopPropagation();\n      var cpsData = evt.data;\n      var inputIsCustomApmText = false;\n\n      if (this.has.customApmText) {\n        inputIsCustomApmText = this.isCustomApmText(cpsData);\n      }\n\n      if (inputIsCustomApmText) {\n        this.setSanitizedValueToSection('apm', inputIsCustomApmText);\n      }\n\n      this.$refs.input.value = this.has.customApmText ? this.customDisplayTime : this.displayTime;\n      this.$nextTick(function () {\n        if (_this16.bakCurrentPos) {\n          var bakPos = JSON.parse(JSON.stringify(_this16.bakCurrentPos));\n\n          if (inputIsCustomApmText) {\n            bakPos.end = bakPos.start + cpsData.length;\n          }\n\n          _this16.debounceSetInputSelection(bakPos);\n\n          _this16.bakCurrentPos = null;\n        }\n      });\n      return false;\n    },\n    pasteHandler: function pasteHandler(evt) {\n      evt.preventDefault();\n      var pastingText = (evt.clipboardData || window.clipboardData).getData('text');\n\n      if (this.debugMode) {\n        this.debugLog(\"Pasting value \\\"\".concat(pastingText, \"\\\" from clipboard\"));\n      }\n\n      if (!pastingText || !pastingText.length) {\n        return;\n      } // Replace custom AM/PM text (if any)\n\n\n      if (this.has.customApmText) {\n        pastingText = this.replaceCustomApmText(pastingText);\n      }\n\n      if (this.inputIsEmpty) {\n        this.readStringValues(pastingText);\n      } else {\n        this.kbInputLog = pastingText.substr(-2, 2);\n        this.setKbInput();\n        this.debounceClearKbLog();\n      }\n    },\n    arrowHandler: function arrowHandler(evt) {\n      var direction = {\n        37: 'L',\n        38: 'U',\n        39: 'R',\n        40: 'D'\n      }[evt.keyCode];\n\n      if (direction === 'U' || direction === 'D') {\n        if (this.inputIsEmpty) {\n          this.selectFirstValidValue();\n        } else {\n          var currentChunk = this.getCurrentTokenChunk();\n\n          if (!currentChunk) {\n            this.selectFirstValidValue();\n            return;\n          }\n\n          var tokenType = currentChunk.type;\n          this.getClosestValidItemInCol(tokenType, this[tokenType], direction);\n          var newChunkPos = this.getCurrentTokenChunk();\n          this.debounceSetInputSelection(newChunkPos);\n        }\n      } else if (direction === 'R') {\n        this.toLateralToken(false);\n      } else if (direction === 'L') {\n        this.toLateralToken(true);\n      }\n    },\n    tabHandler: function tabHandler(evt) {\n      if (!this.inputIsEmpty && this.tokenChunksPos && this.tokenChunksPos.length) {\n        var currentChunk = this.getCurrentTokenChunk();\n\n        if (!currentChunk) {\n          return;\n        }\n\n        var firstChunk = this.tokenChunksPos[0];\n        var lastChunk = this.tokenChunksPos[this.tokenChunksPos.length - 1];\n\n        if (evt.shiftKey && currentChunk.token !== firstChunk.token || !evt.shiftKey && currentChunk.token !== lastChunk.token) {\n          evt.preventDefault();\n          this.toLateralToken(evt.shiftKey);\n        }\n      } else if (this.appendToBody && this.advancedKeyboard) {\n        if (evt.shiftKey) {\n          return;\n        }\n\n        evt.preventDefault();\n\n        if (this.inputIsEmpty) {\n          var firstColumn = this.inUse.types[0];\n          var targetValue = this.validItemsInCol(firstColumn)[0];\n\n          if (targetValue) {\n            targetValue.focus();\n          }\n        }\n      }\n    },\n    keyboardInput: function keyboardInput(newChar) {\n      var isApm = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n      var currentChunk = this.getCurrentTokenChunk();\n\n      if (!currentChunk || currentChunk.type !== 'apm' && isApm || currentChunk.type === 'apm' && !isApm) {\n        return;\n      }\n\n      this.kbInputLog = \"\".concat(this.kbInputLog.substr(-1)).concat(newChar);\n      this.setKbInput();\n      this.debounceClearKbLog();\n    },\n    clearKbInputLog: function clearKbInputLog() {\n      window.clearTimeout(this.kbInputTimer);\n      this.kbInputLog = '';\n    },\n    debounceClearKbLog: function debounceClearKbLog() {\n      var _this17 = this;\n\n      window.clearTimeout(this.kbInputTimer);\n      this.kbInputTimer = window.setTimeout(function () {\n        _this17.clearKbInputLog();\n      }, this.opts.manualInputTimeout);\n    },\n    setKbInput: function setKbInput(value) {\n      value = value || this.kbInputLog;\n      var currentChunk = this.getCurrentTokenChunk();\n\n      if (!currentChunk || !value || !value.length) {\n        return;\n      }\n\n      var chunkType = currentChunk.type;\n      var chunkToken = currentChunk.token;\n      var validValue;\n\n      if (chunkType === 'apm') {\n        if (this.lowerCasedApm(value).includes('a')) {\n          validValue = 'am';\n        } else if (this.lowerCasedApm(value).includes('p')) {\n          validValue = 'pm';\n        }\n\n        if (validValue) {\n          validValue = chunkToken === 'A' ? validValue.toUpperCase() : validValue;\n        }\n      } else {\n        if (this.isValidValue(chunkToken, value)) {\n          validValue = value;\n        } else {\n          var lastInputValue = this.formatValue(chunkToken, value.substr(-1));\n\n          if (this.isValidValue(chunkToken, lastInputValue)) {\n            validValue = lastInputValue;\n          }\n        }\n      }\n\n      if (validValue) {\n        this.setSanitizedValueToSection(chunkType, validValue);\n        var newChunkPos = this.getCurrentTokenChunk();\n        this.debounceSetInputSelection(newChunkPos);\n      }\n\n      if (this.debugMode) {\n        if (validValue) {\n          this.debugLog(\"Successfully set value \\\"\".concat(validValue, \"\\\" from latest input \\\"\").concat(value, \"\\\" for the \\\"\").concat(chunkType, \"\\\" slot\"));\n        } else {\n          this.debugLog(\"Value \\\"\".concat(value, \"\\\" is invalid in the \\\"\").concat(chunkType, \"\\\" slot\"));\n        }\n      }\n    },\n    // Form Autofill\n    onChange: function onChange() {\n      if (!this.manualInput || !this.$refs || !this.$refs.input) {\n        return;\n      }\n\n      var autoFillValue = this.$refs.input.value || '';\n\n      if (autoFillValue && autoFillValue.length) {\n        this.readStringValues(autoFillValue);\n      }\n    },\n    getNearestChunkByPos: function getNearestChunkByPos(startPos) {\n      if (!this.tokenChunksPos || !this.tokenChunksPos.length) {\n        return;\n      }\n\n      var nearest;\n      var nearestDelta = -1;\n\n      for (var i = 0; i < this.tokenChunksPos.length; i++) {\n        var chunk = JSON.parse(JSON.stringify(this.tokenChunksPos[i]));\n\n        if (chunk.start === startPos) {\n          return chunk;\n        }\n\n        var delta = Math.abs(chunk.start - startPos);\n\n        if (nearestDelta < 0) {\n          nearest = chunk;\n          nearestDelta = delta;\n        } else {\n          if (nearestDelta <= delta) {\n            return nearest;\n          }\n\n          nearestDelta = delta;\n          nearest = chunk;\n        }\n      }\n\n      return nearest;\n    },\n    selectFirstValidValue: function selectFirstValidValue() {\n      if (!this.tokenChunksPos || !this.tokenChunksPos.length) {\n        return;\n      }\n\n      var firstSlotType = this.tokenChunksPos[0].type;\n\n      if (firstSlotType === 'hour') {\n        this.getClosestHourItem();\n      } else {\n        this.getClosestValidItemInCol(firstSlotType, this[firstSlotType]);\n      }\n\n      this.selectFirstSlot();\n    },\n    getClosestHourItem: function getClosestHourItem(currentValue) {\n      var _this18 = this;\n\n      var direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'U';\n\n      if (!this.validHoursList || !this.validHoursList.length) {\n        if (this.debugMode) {\n          this.debugLog(\"No valid hour values found, please check your \\\"hour-range\\\" config\\nhour-range: \".concat(JSON.stringify(this.hourRange)));\n        }\n\n        return;\n      }\n\n      if (!currentValue) {\n        this.setManualHour(this.validHoursList[0]);\n        return;\n      }\n\n      var currentIndex = this.validHoursList.findIndex(function (item) {\n        if (!_this18.baseOn12Hours) {\n          return item === currentValue;\n        } else {\n          var valueKey = \"\".concat(currentValue).concat(_this18.lowerCasedApm(_this18.apm) === 'pm' ? 'p' : 'a');\n          return item === valueKey;\n        }\n      });\n      var nextIndex;\n\n      if (currentIndex === -1) {\n        nextIndex = 0;\n      } else if (direction === 'D') {\n        nextIndex = currentIndex === 0 ? this.validHoursList.length - 1 : currentIndex - 1;\n      } else {\n        nextIndex = (currentIndex + 1) % this.validHoursList.length;\n      }\n\n      var nextItem = this.validHoursList[nextIndex];\n      this.setManualHour(nextItem);\n    },\n    getClosestValidItemInCol: function getClosestValidItemInCol(column, currentValue) {\n      var direction = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'U';\n\n      if (column === 'hour') {\n        this.getClosestHourItem(currentValue, direction);\n      } else {\n        var nextItem = direction === 'D' ? this.prevItem(column, this[column], true) : this.nextItem(column, this[column], true);\n\n        if (nextItem) {\n          this.select(column, nextItem.getAttribute('data-key'));\n        }\n      }\n    },\n    setSanitizedValueToSection: function setSanitizedValueToSection(section, inputValue) {\n      if (!section || !this.getTokenByType(section)) {\n        return;\n      } // NOTE: Disabled values are allowed here, followed by an 'error' event, though\n\n\n      var sanitizedValue = this.sanitizedValue(this.getTokenByType(section), inputValue);\n      this[section] = sanitizedValue;\n    },\n    setManualHour: function setManualHour(nextItem) {\n      if (this.is12hRange(nextItem)) {\n        var hourT = this.match12hRange(nextItem);\n        var apmValue = hourT[2] === 'a' ? 'AM' : 'PM';\n        this.setSanitizedValueToSection('apm', this.apmType === 'a' ? apmValue.toLowerCase() : apmValue);\n        this.setSanitizedValueToSection('hour', hourT[1]);\n      } else {\n        this.setSanitizedValueToSection('hour', nextItem);\n      }\n    },\n    debounceSetInputSelection: function debounceSetInputSelection(_ref) {\n      var _this19 = this;\n\n      var _ref$start = _ref.start,\n          start = _ref$start === void 0 ? 0 : _ref$start,\n          _ref$end = _ref.end,\n          end = _ref$end === void 0 ? 0 : _ref$end;\n      this.$nextTick(function () {\n        _this19.setInputSelectionRange(start, end);\n      });\n      window.clearTimeout(this.selectionTimer);\n      this.selectionTimer = window.setTimeout(function () {\n        window.clearTimeout(_this19.selectionTimer); // Double-check selection for 12hr format\n\n        if (_this19.$refs.input && (_this19.$refs.input.selectionStart !== start || _this19.$refs.input.selectionEnd !== end)) {\n          _this19.setInputSelectionRange(start, end);\n        }\n      }, 30);\n    },\n    setInputSelectionRange: function setInputSelectionRange(start, end) {\n      if (this.$refs && this.$refs.input) {\n        this.$refs.input.setSelectionRange(start, end);\n      }\n    },\n    getCurrentTokenChunk: function getCurrentTokenChunk() {\n      return this.getNearestChunkByPos(this.$refs.input && this.$refs.input.selectionStart || 0);\n    },\n    selectFirstSlot: function selectFirstSlot() {\n      var firstChunkPos = this.getNearestChunkByPos(0);\n      this.debounceSetInputSelection(firstChunkPos);\n    },\n    toNextSlot: function toNextSlot() {\n      if (!this.inputIsEmpty && this.tokenChunksPos && this.tokenChunksPos.length) {\n        var currentChunk = this.getCurrentTokenChunk();\n\n        if (!currentChunk) {\n          return;\n        }\n\n        var lastChunk = this.tokenChunksPos[this.tokenChunksPos.length - 1];\n\n        if (currentChunk.token !== lastChunk.token) {\n          this.toLateralToken(false);\n        }\n      }\n    },\n    toLateralToken: function toLateralToken(toLeft) {\n      var currentChunk = this.getCurrentTokenChunk();\n\n      if (!currentChunk) {\n        this.selectFirstValidValue();\n        return;\n      }\n\n      var currentChunkIndex = this.tokenChunksPos.findIndex(function (chk) {\n        return chk.token === currentChunk.token;\n      });\n\n      if (!toLeft && currentChunkIndex >= this.tokenChunksPos.length - 1 || toLeft && currentChunkIndex === 0) {\n        if (this.debugMode) {\n          if (toLeft) {\n            this.debugLog('You\\'re in the leftmost slot already');\n          } else {\n            this.debugLog('You\\'re in the rightmost slot already');\n          }\n        }\n\n        return;\n      }\n\n      var targetSlotPos = toLeft ? this.tokenChunksPos[currentChunkIndex - 1] : this.tokenChunksPos[currentChunkIndex + 1];\n      this.debounceSetInputSelection(targetSlotPos);\n    },\n    isCustomApmText: function isCustomApmText(inputData) {\n      if (!inputData || !inputData.length) {\n        return false;\n      }\n\n      if (this.amText && this.amText === inputData) {\n        return this.apmType === 'A' ? 'AM' : 'am';\n      }\n\n      if (this.pmText && this.pmText === inputData) {\n        return this.apmType === 'A' ? 'PM' : 'pm';\n      }\n\n      return false;\n    },\n    replaceCustomApmText: function replaceCustomApmText(inputString) {\n      if (this.amText && this.amText.length && inputString.includes(this.amText)) {\n        return inputString.replace(new RegExp(this.amText, 'g'), this.apmType === 'A' ? 'AM' : 'am');\n      } else if (this.pmText && this.pmText.length && inputString.includes(this.pmText)) {\n        return inputString.replace(new RegExp(this.pmText, 'g'), this.apmType === 'A' ? 'PM' : 'pm');\n      }\n\n      return inputString;\n    },\n    checkDropDirection: function checkDropDirection() {\n      if (!this.$el) {\n        return;\n      }\n\n      var container;\n\n      if (this.containerId && this.containerId.length) {\n        container = document.getElementById(this.containerId);\n\n        if (!container && this.debugMode) {\n          this.debugLog(\"Container with id \\\"\".concat(this.containerId, \"\\\" not found. Fallback to document body.\"));\n        }\n      }\n\n      var el = this.$el;\n      var spaceDown;\n\n      if (container && container.offsetHeight) {\n        // Valid container found\n        spaceDown = container.offsetTop + container.offsetHeight - (el.offsetTop + el.offsetHeight);\n      } else {\n        // Fallback to document body\n        var docHeight = Math.max(document.body.scrollHeight, document.documentElement.scrollHeight, document.body.offsetHeight, document.documentElement.offsetHeight, document.body.clientHeight, document.documentElement.clientHeight);\n        spaceDown = docHeight - (el.offsetTop + el.offsetHeight);\n      }\n\n      this.forceDropOnTop = this.opts.dropOffsetHeight > spaceDown;\n    },\n    //\n    // Helpers\n    //\n    is12hRange: function is12hRange(value) {\n      return /^\\d{1,2}(a|p|A|P)$/.test(value);\n    },\n    match12hRange: function match12hRange(value) {\n      return value.match(/^(\\d{1,2})(a|p|A|P)$/);\n    },\n    isNumber: function isNumber(value) {\n      return !isNaN(parseFloat(value)) && isFinite(value);\n    },\n    isBasicType: function isBasicType(type) {\n      return CONFIG.BASIC_TYPES.includes(type);\n    },\n    lowerCasedApm: function lowerCasedApm(apmValue) {\n      return (apmValue || '').toLowerCase();\n    },\n    getTokenRegex: function getTokenRegex(token) {\n      switch (token) {\n        case 'HH':\n          return '([01][0-9]|2[0-3]|H{2})';\n\n        case 'H':\n          return '([0-9]{1}|1[0-9]|2[0-3]|H{1})';\n\n        case 'hh':\n          return '(0[1-9]|1[0-2]|h{2})';\n\n        case 'h':\n          return '([1-9]{1}|1[0-2]|h{1})';\n\n        case 'kk':\n          return '(0[1-9]|1[0-9]|2[0-4]|k{2})';\n\n        case 'k':\n          return '([1-9]{1}|1[0-9]|2[0-4]|k{1})';\n\n        case 'mm':\n          return '([0-5][0-9]|m{2})';\n\n        case 'ss':\n          return '([0-5][0-9]|s{2})';\n\n        case 'm':\n          return '([0-9]{1}|[1-5][0-9]|m{1})';\n\n        case 's':\n          return '([0-9]{1}|[1-5][0-9]|s{1})';\n\n        case 'A':\n          return '(AM|PM|A{1})';\n\n        case 'a':\n          return '(am|pm|a{1})';\n\n        default:\n          return '';\n      }\n    },\n    isEmptyValue: function isEmptyValue(targetToken, testValue) {\n      return !testValue || !testValue.length || testValue && testValue === targetToken;\n    },\n    isValidValue: function isValidValue(targetToken, testValue) {\n      if (!targetToken || this.isEmptyValue(targetToken, testValue)) {\n        return false;\n      }\n\n      var tokenRegexStr = this.getTokenRegex(targetToken);\n\n      if (!tokenRegexStr || !tokenRegexStr.length) {\n        return false;\n      }\n\n      return new RegExp(\"^\".concat(tokenRegexStr, \"$\")).test(testValue);\n    },\n    sanitizedValue: function sanitizedValue(targetToken, inputValue) {\n      if (this.isValidValue(targetToken, inputValue)) {\n        return inputValue;\n      }\n\n      return '';\n    },\n    getTokenType: function getTokenType(token) {\n      return this.inUse.types[this.inUse.tokens.indexOf(token)] || '';\n    },\n    getTokenByType: function getTokenByType(type) {\n      return this[\"\".concat(type, \"Type\")] || '';\n    },\n    isMinuteOrSecond: function isMinuteOrSecond(type) {\n      return ['minute', 'second'].includes(type);\n    },\n    debugLog: function debugLog(logText) {\n      var _this20 = this;\n\n      if (!logText || !logText.length) {\n        return;\n      }\n\n      var identifier = '';\n\n      if (this.id) {\n        identifier += \"#\".concat(this.id);\n      }\n\n      if (this.name) {\n        identifier += \"[name=\".concat(this.name, \"]\");\n      }\n\n      if (this.inputClass) {\n        var inputClasses = [];\n\n        if (typeof this.inputClass === 'string') {\n          inputClasses = this.inputClass.split(/\\s/g);\n        } else if (Array.isArray(this.inputClass)) {\n          inputClasses = [].concat([], this.inputClass);\n        } else if (_typeof(this.inputClass) === 'object') {\n          Object.keys(this.inputClass).forEach(function (clsName) {\n            if (_this20.inputClass[clsName]) {\n              inputClasses.push(clsName);\n            }\n          });\n        }\n\n        var _iterator4 = _createForOfIteratorHelper(inputClasses),\n            _step4;\n\n        try {\n          for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n            var inputClass = _step4.value;\n\n            if (inputClass && inputClass.trim().length) {\n              identifier += \".\".concat(inputClass.trim());\n            }\n          }\n        } catch (err) {\n          _iterator4.e(err);\n        } finally {\n          _iterator4.f();\n        }\n      }\n\n      var finalLogText = \"DEBUG: \".concat(logText).concat(identifier ? \"\\n\\t(\".concat(identifier, \")\") : '');\n\n      if (window.console.debug && typeof window.console.debug === 'function') {\n        window.console.debug(finalLogText);\n      } else {\n        window.console.log(finalLogText);\n      }\n    }\n  },\n  mounted: function mounted() {\n    window.clearTimeout(this.debounceTimer);\n    window.clearTimeout(this.selectionTimer);\n    window.clearTimeout(this.kbInputTimer);\n    this.renderFormat();\n  },\n  beforeDestroy: function beforeDestroy() {\n    window.clearTimeout(this.debounceTimer);\n    window.clearTimeout(this.selectionTimer);\n    window.clearTimeout(this.kbInputTimer);\n  }\n});\n// CONCATENATED MODULE: ./src/vue-timepicker.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_vue_timepickervue_type_script_lang_js_ = (vue_timepickervue_type_script_lang_js_); \n// EXTERNAL MODULE: ./src/vue-timepicker.vue?vue&type=style&index=0&lang=css&\nvar vue_timepickervue_type_style_index_0_lang_css_ = __webpack_require__(\"aab0\");\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js\n/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nfunction normalizeComponent (\n  scriptExports,\n  render,\n  staticRenderFns,\n  functionalTemplate,\n  injectStyles,\n  scopeId,\n  moduleIdentifier, /* server only */\n  shadowMode /* vue-cli only */\n) {\n  // Vue.extend constructor export interop\n  var options = typeof scriptExports === 'function'\n    ? scriptExports.options\n    : scriptExports\n\n  // render functions\n  if (render) {\n    options.render = render\n    options.staticRenderFns = staticRenderFns\n    options._compiled = true\n  }\n\n  // functional template\n  if (functionalTemplate) {\n    options.functional = true\n  }\n\n  // scopedId\n  if (scopeId) {\n    options._scopeId = 'data-v-' + scopeId\n  }\n\n  var hook\n  if (moduleIdentifier) { // server build\n    hook = function (context) {\n      // 2.3 injection\n      context =\n        context || // cached call\n        (this.$vnode && this.$vnode.ssrContext) || // stateful\n        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n      // 2.2 with runInNewContext: true\n      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n        context = __VUE_SSR_CONTEXT__\n      }\n      // inject component styles\n      if (injectStyles) {\n        injectStyles.call(this, context)\n      }\n      // register component module identifier for async chunk inferrence\n      if (context && context._registeredComponents) {\n        context._registeredComponents.add(moduleIdentifier)\n      }\n    }\n    // used by ssr in case component is cached and beforeCreate\n    // never gets called\n    options._ssrRegister = hook\n  } else if (injectStyles) {\n    hook = shadowMode\n      ? function () {\n        injectStyles.call(\n          this,\n          (options.functional ? this.parent : this).$root.$options.shadowRoot\n        )\n      }\n      : injectStyles\n  }\n\n  if (hook) {\n    if (options.functional) {\n      // for template-only hot-reload because in that case the render fn doesn't\n      // go through the normalizer\n      options._injectStyles = hook\n      // register for functional component in vue file\n      var originalRender = options.render\n      options.render = function renderWithStyleInjection (h, context) {\n        hook.call(context)\n        return originalRender(h, context)\n      }\n    } else {\n      // inject component registration as beforeCreate hook\n      var existing = options.beforeCreate\n      options.beforeCreate = existing\n        ? [].concat(existing, hook)\n        : [hook]\n    }\n  }\n\n  return {\n    exports: scriptExports,\n    options: options\n  }\n}\n\n// CONCATENATED MODULE: ./src/vue-timepicker.vue\n\n\n\n\n\n\n/* normalize component */\n\nvar component = normalizeComponent(\n  src_vue_timepickervue_type_script_lang_js_,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* harmony default export */ var vue_timepicker = (component.exports);\n// CONCATENATED MODULE: ./src/index.js\n\n/* harmony default export */ var src_0 = (vue_timepicker);\n// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js\n\n\n/* harmony default export */ var entry_lib = __webpack_exports__[\"default\"] = (src_0);\n\n\n\n/***/ }),\n\n/***/ \"fb6a\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(\"23e7\");\nvar isObject = __webpack_require__(\"861d\");\nvar isArray = __webpack_require__(\"e8b5\");\nvar toAbsoluteIndex = __webpack_require__(\"23cb\");\nvar toLength = __webpack_require__(\"50c4\");\nvar toIndexedObject = __webpack_require__(\"fc6a\");\nvar createProperty = __webpack_require__(\"8418\");\nvar wellKnownSymbol = __webpack_require__(\"b622\");\nvar arrayMethodHasSpeciesSupport = __webpack_require__(\"1dde\");\nvar arrayMethodUsesToLength = __webpack_require__(\"ae40\");\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('slice', { ACCESSORS: true, 0: 0, 1: 2 });\n\nvar SPECIES = wellKnownSymbol('species');\nvar nativeSlice = [].slice;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n  slice: function slice(start, end) {\n    var O = toIndexedObject(this);\n    var length = toLength(O.length);\n    var k = toAbsoluteIndex(start, length);\n    var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n    // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n    var Constructor, result, n;\n    if (isArray(O)) {\n      Constructor = O.constructor;\n      // cross-realm fallback\n      if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) {\n        Constructor = undefined;\n      } else if (isObject(Constructor)) {\n        Constructor = Constructor[SPECIES];\n        if (Constructor === null) Constructor = undefined;\n      }\n      if (Constructor === Array || Constructor === undefined) {\n        return nativeSlice.call(O, k, fin);\n      }\n    }\n    result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));\n    for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n    result.length = n;\n    return result;\n  }\n});\n\n\n/***/ }),\n\n/***/ \"fc6a\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = __webpack_require__(\"44ad\");\nvar requireObjectCoercible = __webpack_require__(\"1d80\");\n\nmodule.exports = function (it) {\n  return IndexedObject(requireObjectCoercible(it));\n};\n\n\n/***/ }),\n\n/***/ \"fd6f\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"fdbc\":\n/***/ (function(module, exports) {\n\n// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n  CSSRuleList: 0,\n  CSSStyleDeclaration: 0,\n  CSSValueList: 0,\n  ClientRectList: 0,\n  DOMRectList: 0,\n  DOMStringList: 0,\n  DOMTokenList: 1,\n  DataTransferItemList: 0,\n  FileList: 0,\n  HTMLAllCollection: 0,\n  HTMLCollection: 0,\n  HTMLFormElement: 0,\n  HTMLSelectElement: 0,\n  MediaList: 0,\n  MimeTypeArray: 0,\n  NamedNodeMap: 0,\n  NodeList: 1,\n  PaintRequestList: 0,\n  Plugin: 0,\n  PluginArray: 0,\n  SVGLengthList: 0,\n  SVGNumberList: 0,\n  SVGPathSegList: 0,\n  SVGPointList: 0,\n  SVGStringList: 0,\n  SVGTransformList: 0,\n  SourceBufferList: 0,\n  StyleSheetList: 0,\n  TextTrackCueList: 0,\n  TextTrackList: 0,\n  TouchList: 0\n};\n\n\n/***/ }),\n\n/***/ \"fdbf\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar NATIVE_SYMBOL = __webpack_require__(\"4930\");\n\nmodule.exports = NATIVE_SYMBOL\n  // eslint-disable-next-line no-undef\n  && !Symbol.sham\n  // eslint-disable-next-line no-undef\n  && typeof Symbol.iterator == 'symbol';\n\n\n/***/ })\n\n/******/ });\n});\n//# sourceMappingURL=VueTimepicker.umd.js.map"
  },
  {
    "path": "dist/demo.html",
    "content": "<meta charset=\"utf-8\">\n<title>VueTimepicker demo</title>\n<script src=\"./VueTimepicker.umd.js\"></script>\n\n<link rel=\"stylesheet\" href=\"./VueTimepicker.css\">\n\n\n<script>\nconsole.log(VueTimepicker)\n</script>\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"vue2-timepicker\",\n  \"version\": \"1.1.6\",\n  \"description\": \"A dropdown time picker (hour|minute|second) for Vue 2.x, with flexible time format support\",\n  \"author\": \"Phoenix Wong <phoenixyfwong@gmail.com>\",\n  \"scripts\": {\n    \"build\": \"vue-cli-service build --target lib --name VueTimepicker ./src/index.js\",\n    \"build:demo\": \"cd demo && yarn build\",\n    \"dev\": \"cd demo && yarn serve\",\n    \"dev:init\": \"cd demo && yarn install\"\n  },\n  \"main\": \"dist/VueTimepicker.umd.js\",\n  \"module\": \"dist/VueTimepicker.common.js\",\n  \"browser\": {\n    \"./sfc\": \"src/vue-timepicker.vue\"\n  },\n  \"unpkg\": \"dist/VueTimepicker.umd.min.js\",\n  \"files\": [\n    \"dist/*\",\n    \"src/*\",\n    \"*.json\",\n    \"*.md\"\n  ],\n  \"devDependencies\": {\n    \"@vue/cli-plugin-babel\": \"~4.3.1\",\n    \"@vue/cli-plugin-eslint\": \"~4.3.1\",\n    \"@vue/cli-service\": \"~4.3.1\",\n    \"babel-eslint\": \"^10.1.0\",\n    \"core-js\": \"^3.6.5\",\n    \"eslint\": \"^6.8.0\",\n    \"eslint-plugin-vue\": \"^6.2.2\",\n    \"vue\": \"^2.6.11\",\n    \"vue-template-compiler\": \"^2.6.11\"\n  },\n  \"peerDependencies\": {\n    \"vue\": \"^2.6.5\"\n  },\n  \"eslintConfig\": {\n    \"root\": true,\n    \"env\": {\n      \"node\": true\n    },\n    \"extends\": [\n      \"plugin:vue/essential\",\n      \"eslint:recommended\"\n    ],\n    \"rules\": {},\n    \"parserOptions\": {\n      \"parser\": \"babel-eslint\"\n    }\n  },\n  \"postcss\": {\n    \"plugins\": {\n      \"autoprefixer\": {}\n    }\n  },\n  \"browserslist\": [\n    \"> 1%\",\n    \"last 2 versions\"\n  ],\n  \"bugs\": {\n    \"url\": \"https://github.com/phoenixwong/vue2-timepicker/issues\"\n  },\n  \"css\": \"dist/VueTimepicker.css\",\n  \"homepage\": \"https://github.com/phoenixwong/vue2-timepicker#readme\",\n  \"keywords\": [\n    \"vue\",\n    \"vue2\",\n    \"time\",\n    \"picker\",\n    \"dropdown\",\n    \"input\",\n    \"UI\"\n  ],\n  \"license\": \"MIT\",\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/phoenixwong/vue2-timepicker.git\"\n  }\n}\n"
  },
  {
    "path": "src/index.js",
    "content": "import VueTimepicker from './vue-timepicker.vue'\nexport default VueTimepicker\n"
  },
  {
    "path": "src/vue-timepicker.vue",
    "content": "<script>\nconst CONFIG = {\n  HOUR_TOKENS: ['HH', 'H', 'hh', 'h', 'kk', 'k'],\n  MINUTE_TOKENS: ['mm', 'm'],\n  SECOND_TOKENS: ['ss', 's'],\n  APM_TOKENS: ['A', 'a'],\n  BASIC_TYPES: ['hour', 'minute', 'second', 'apm']\n}\n\nconst DEFAULT_OPTIONS = {\n  format: 'HH:mm',\n  minuteInterval: 1,\n  secondInterval: 1,\n  hourRange: null,\n  minuteRange: null,\n  secondRange: null,\n  hideDisabledHours: false,\n  hideDisabledMinutes: false,\n  hideDisabledSeconds: false,\n  hideDisabledItems: false,\n  hideDropdown: false,\n  blurDelay: 300,\n  manualInputTimeout: 1000,\n  dropOffsetHeight: 160\n}\n\nexport default {\n  name: 'VueTimepicker',\n  props: {\n    value: { type: [ Object, String ] },\n    format: { type: String },\n    minuteInterval: { type: [ Number, String ] },\n    secondInterval: { type: [ Number, String ] },\n\n    hourRange: { type: Array },\n    minuteRange: { type: Array },\n    secondRange: { type: Array },\n\n    hideDisabledHours: { type: Boolean, default: false },\n    hideDisabledMinutes: { type: Boolean, default: false },\n    hideDisabledSeconds: { type: Boolean, default: false },\n    hideDisabledItems: { type: Boolean, default: false },\n\n    hideClearButton: { type: Boolean, default: false },\n    disabled: { type: Boolean, default: false },\n    closeOnComplete: { type: Boolean, default: false },\n\n    id: { type: String },\n    name: { type: String },\n    inputClass: { type: [ String, Object, Array ] },\n    placeholder: { type: String },\n    tabindex: { type: [ Number, String ], default: 0 },\n    inputWidth: { type: String },\n    autocomplete: { type: String, default: 'off' },\n\n    hourLabel: { type: String },\n    minuteLabel: { type: String },\n    secondLabel: { type: String },\n    apmLabel: { type: String },\n    amText: { type: String },\n    pmText: { type: String },\n\n    blurDelay: { type: [ Number, String ] },\n    advancedKeyboard: { type: Boolean, default: false },\n\n    lazy: { type: Boolean, default: false },\n    autoScroll: { type: Boolean, default: false },\n\n    dropDirection: { type: String, default: 'down' },\n    dropOffsetHeight: { type: [ Number, String ] },\n    containerId: { type: String },\n    appendToBody: { type: Boolean, default: false },\n\n    manualInput: { type: Boolean, default: false },\n    manualInputTimeout: { type: [ Number, String ] },\n    hideDropdown: { type: Boolean, default: false },\n    fixedDropdownButton: { type: Boolean, default: false },\n\n    debugMode: { type: Boolean, default: false }\n  },\n\n  data () {\n    return {\n      timeValue: {},\n\n      hours: [],\n      minutes: [],\n      seconds: [],\n      apms: [],\n\n      isActive: false,\n      showDropdown: false,\n      isFocusing: false,\n      debounceTimer: undefined,\n\n      hourType: 'HH',\n      minuteType: 'mm',\n      secondType: '',\n      apmType: '',\n      hour: '',\n      minute: '',\n      second: '',\n      apm: '',\n      fullValues: undefined,\n      bakDisplayTime: undefined,\n      doClearApmChecking: false,\n\n      selectionTimer: undefined,\n      kbInputTimer: undefined,\n      kbInputLog: '',\n      bakCurrentPos: undefined,\n      forceDropOnTop: false\n    }\n  },\n\n  computed: {\n    opts () {\n      const options = Object.assign({}, DEFAULT_OPTIONS)\n\n      if (this.format && this.format.length) {\n        options.format = String(this.format)\n      }\n\n      if (this.isNumber(this.minuteInterval)) {\n        options.minuteInterval = +this.minuteInterval\n      }\n      // minuteInterval failsafe\n      if (!options.minuteInterval || options.minuteInterval < 1 || options.minuteInterval > 60) {\n        if (this.debugMode) {\n          if (options.minuteInterval > 60) {\n            this.debugLog(`\"minute-interval\" should be less than 60. Current value is ${this.minuteInterval}`)\n          } else if (options.minuteInterval === 0 || options.minuteInterval < 1) {\n            this.debugLog(`\"minute-interval\" should be NO less than 1. Current value is ${this.minuteInterval}`)\n          }\n        }\n        if (options.minuteInterval === 0) {\n          options.minuteInterval = 60\n        } else {\n          options.minuteInterval = 1\n        }\n      }\n\n      if (this.isNumber(this.secondInterval)) {\n        options.secondInterval = +this.secondInterval\n      }\n      // secondInterval failsafe\n      if (!options.secondInterval || options.secondInterval < 1 || options.secondInterval > 60) {\n        if (this.debugMode) {\n          if (options.secondInterval > 60) {\n            this.debugLog(`\"second-interval\" should be less than 60. Current value is ${this.secondInterval}`)\n          } else if (options.secondInterval === 0 || options.secondInterval < 1) {\n            this.debugLog(`\"second-interval\" should be NO less than 1. Current value is ${this.secondInterval}`)\n          }\n        }\n        if (options.secondInterval === 0) {\n          options.secondInterval = 60\n        } else {\n          options.secondInterval = 1\n        }\n      }\n\n      if (this.hourRange && Array.isArray(this.hourRange)) {\n        options.hourRange = JSON.parse(JSON.stringify(this.hourRange))\n        if (!this.hourRange.length && this.debugMode) {\n          this.debugLog('The \"hour-range\" array is empty (length === 0)')\n        }\n      }\n\n      if (this.minuteRange && Array.isArray(this.minuteRange)) {\n        options.minuteRange = JSON.parse(JSON.stringify(this.minuteRange))\n        if (!this.minuteRange.length && this.debugMode) {\n          this.debugLog('The \"minute-range\" array is empty (length === 0)')\n        }\n      }\n\n      if (this.secondRange && Array.isArray(this.secondRange)) {\n        options.secondRange = JSON.parse(JSON.stringify(this.secondRange))\n        if (!this.secondRange.length && this.debugMode) {\n          this.debugLog('The \"second-range\" array is empty (length === 0)')\n        }\n      }\n\n      if (this.hideDisabledItems) {\n        options.hideDisabledItems = true\n      }\n\n      if (this.hideDisabledHours || this.hideDisabledItems) {\n        options.hideDisabledHours = true\n      }\n      if (this.hideDisabledMinutes || this.hideDisabledItems) {\n        options.hideDisabledMinutes = true\n      }\n      if (this.hideDisabledSeconds || this.hideDisabledItems) {\n        options.hideDisabledSeconds = true\n      }\n\n      if (this.hideDropdown) {\n        if (this.manualInput) {\n          options.hideDropdown = true\n        } else if (this.debugMode) {\n          this.debugLog('\"hide-dropdown\" only works with \"manual-input\" mode')\n        }\n      }\n\n      if (this.blurDelay && +this.blurDelay > 0) {\n        options.blurDelay = +this.blurDelay\n      }\n\n      if (this.manualInputTimeout && +this.manualInputTimeout > 0) {\n        options.manualInputTimeout = +this.manualInputTimeout\n      }\n\n      if (this.dropOffsetHeight && +this.dropOffsetHeight > 0) {\n        options.dropOffsetHeight = +this.dropOffsetHeight\n      }\n\n      return options\n    },\n\n    useStringValue () {\n      return typeof this.value === 'string'\n    },\n\n    formatString () {\n      return this.opts.format || DEFAULT_OPTIONS.format\n    },\n\n    inUse () {\n      const typesInUse = CONFIG.BASIC_TYPES.filter(type => this.getTokenByType(type))\n      // Sort types and tokens by their sequence in the \"format\" string\n      typesInUse.sort((l, r) => {\n        return this.formatString.indexOf(this.getTokenByType(l) || null) - this.formatString.indexOf(this.getTokenByType(r) || null)\n      })\n      const tokensInUse = typesInUse.map(type => this.getTokenByType(type))\n      return {\n        hour: !!this.hourType,\n        minute: !!this.minuteType,\n        second: !!this.secondType,\n        apm: !!this.apmType,\n        types: typesInUse || [],\n        tokens: tokensInUse || []\n      }\n    },\n\n    displayTime () {\n      let formatString = String(this.formatString)\n      if (this.hour) {\n        formatString = formatString.replace(new RegExp(this.hourType, 'g'), this.hour)\n      }\n      if (this.minute) {\n        formatString = formatString.replace(new RegExp(this.minuteType, 'g'), this.minute)\n      }\n      if (this.second && this.secondType) {\n        formatString = formatString.replace(new RegExp(this.secondType, 'g'), this.second)\n      }\n      if (this.apm && this.apmType) {\n        formatString = formatString.replace(new RegExp(this.apmType, 'g'), this.apm)\n      }\n      return formatString\n    },\n\n    customDisplayTime () {\n      if (!this.amText && !this.pmText) {\n        return this.displayTime\n      }\n      return this.displayTime.replace(new RegExp(this.apm, 'g'), this.apmDisplayText(this.apm))\n    },\n\n    inputIsEmpty () {\n      return this.formatString === this.displayTime\n    },\n\n    allValueSelected () {\n      if (\n        (this.inUse.hour && !this.hour) ||\n        (this.inUse.minute && !this.minute) ||\n        (this.inUse.second && !this.second) ||\n        (this.inUse.apm && !this.apm)\n      ) {\n        return false\n      }\n      return true\n    },\n\n    columnsSequence () {\n      return this.inUse.types.map(type => type) || []\n    },\n\n    showClearBtn () {\n      if (this.hideClearButton || this.disabled) {\n        return false\n      }\n      return !this.inputIsEmpty\n    },\n\n    showDropdownBtn () {\n      if (this.fixedDropdownButton) { return true }\n      if (this.opts.hideDropdown && this.isActive && !this.showDropdown) {\n        return true\n      }\n      return false\n    },\n\n    baseOn12Hours () {\n      return this.hourType === 'h' || this.hourType === 'hh'\n    },\n\n    hourRangeIn24HrFormat () {\n      if (!this.hourType || !this.opts.hourRange) { return false }\n      if (!this.opts.hourRange.length) { return [] }\n\n      const range = []\n      this.opts.hourRange.forEach(value => {\n        if (value instanceof Array) {\n          if (value.length > 2 && this.debugMode) {\n            this.debugLog(`Nested array within \"hour-range\" must contain no more than two items. Only the first two items of ${JSON.stringify(value)} will be taken into account.`)\n          }\n\n          let start = value[0]\n          let end = value[1] || value[0]\n\n          if (this.is12hRange(start)) {\n            start = this.translate12hRange(start)\n          }\n          if (this.is12hRange(end)) {\n            end = this.translate12hRange(end)\n          }\n\n          for (let i = +start; i <= +end; i++) {\n            if (i < 0 || i > 24) { continue }\n            if (!range.includes(i)) {\n              range.push(i)\n            }\n          }\n        } else {\n          if (this.is12hRange(value)) {\n            value = this.translate12hRange(value)\n          } else {\n            value = +value\n          }\n          if (value < 0 || value > 24) { return }\n          if (!range.includes(value)) {\n            range.push(value)\n          }\n        }\n      })\n      range.sort((l, r) => { return l - r })\n      return range\n    },\n\n    restrictedHourRange () {\n      // No restriction\n      if (!this.hourRangeIn24HrFormat) { return false }\n      // 12-Hour\n      if (this.baseOn12Hours) {\n        const range = this.hourRangeIn24HrFormat.map((value) => {\n          if (value === 12) {\n            return '12p'\n          } else if (value === 24 || value === 0) {\n            return '12a'\n          }\n          return value > 12 ? `${value % 12}p` : `${value}a`\n        })\n        return range\n      }\n      // 24-Hour\n      return this.hourRangeIn24HrFormat\n    },\n\n    validHoursList () {\n      if (!this.manualInput) { return false }\n      if (this.restrictedHourRange) {\n        let list = []\n        if (this.baseOn12Hours) {\n          list = this.restrictedHourRange.map(hr => {\n            const l = hr.substr(0, hr.length - 1)\n            const r = hr.substr(-1)\n            return `${this.formatValue(this.hourType, l)}${r}`\n          })\n          const am12Index = list.indexOf('12a')\n          if (am12Index > 0) {\n            // Make '12a' the first item in h/hh\n            list.unshift(list.splice(am12Index, 1)[0])\n          }\n          return list\n        }\n        list = this.restrictedHourRange.map(hr => {\n          return this.formatValue(this.hourType, hr)\n        })\n        if (list.length > 1 && list[0] && list[0] === '24') {\n          // Make '24' the last item in k/kk\n          list.push(list.shift())\n        }\n        return list\n      }\n      if (this.baseOn12Hours) {\n        return [].concat([], this.hours.map(hr => `${hr}a`), this.hours.map(hr => `${hr}p`))\n      }\n      return this.hours\n    },\n\n    has () {\n      const result = {\n        customApmText: false\n      }\n      const apmEnabled = !!this.apmType\n\n      if (apmEnabled && this.hourRangeIn24HrFormat && this.hourRangeIn24HrFormat.length) {\n        const range = [].concat([], this.hourRangeIn24HrFormat)\n        result.am = range.some(value => value < 12 || value === 24)\n        result.pm = range.some(value => value >= 12 && value < 24)\n      } else {\n        result.am = apmEnabled\n        result.pm = apmEnabled\n      }\n      if ((this.amText && this.amText.length) || (this.pmText && this.pmText.length)) {\n        result.customApmText = true\n      }\n      return result\n    },\n\n    minuteRangeList () {\n      if (!this.minuteType || !this.opts.minuteRange) { return false }\n      if (!this.opts.minuteRange.length) { return [] }\n      return this.renderRangeList(this.opts.minuteRange, 'minute')\n    },\n\n    secondRangeList () {\n      if (!this.secondType || !this.opts.secondRange) { return false }\n      if (!this.opts.secondRange.length) { return [] }\n      return this.renderRangeList(this.opts.secondRange, 'second')\n    },\n    \n    hourLabelText () {\n      return this.hourLabel || this.hourType\n    },\n    minuteLabelText () {\n      return this.minuteLabel || this.minuteType\n    },\n    secondLabelText() {\n      return this.secondLabel || this.secondType\n    },\n    apmLabelText () {\n      return this.apmLabel || this.apmType\n    },\n\n    inputWidthStyle () {\n      if (!this.inputWidth || !this.inputWidth.length) { return }\n      return {\n        width: this.inputWidth\n      }\n    },\n\n    tokenRegexBase () {\n      return this.inUse.tokens.join('|')\n    },\n\n    tokenChunks () {\n      if (!this.manualInput && !this.useStringValue) { return false }\n\n      const formatString = String(this.formatString)\n      const tokensRegxStr = `(${this.tokenRegexBase})+?`\n      const tokensMatchAll = this.getMatchAllByRegex(formatString, tokensRegxStr)\n\n      const tokenChunks = []\n      for (let tkMatch of tokensMatchAll) {\n        const rawToken = tkMatch[0]\n        const tokenMatchItem = {\n          index: tkMatch.index,\n          token: rawToken,\n          type: this.getTokenType(rawToken),\n          needsCalibrate: rawToken.length < 2,\n          len: (rawToken || '').length\n        }\n        tokenChunks.push(tokenMatchItem)\n      }\n      return tokenChunks\n    },\n\n    needsPosCalibrate () {\n      if (!this.manualInput) { return false }\n      return this.tokenChunks.some(chk => chk.needsCalibrate)\n    },\n\n    tokenChunksPos () {\n      if (!this.manualInput) { return false }\n      if (!this.needsPosCalibrate) {\n        return this.tokenChunks.map(chk => {\n          return {\n            token: chk.token,\n            type: chk.type,\n            start: chk.index,\n            end: chk.index + chk.len\n          }\n        })\n      }\n      const list = []\n      let calibrateLen = 0\n      this.tokenChunks.forEach(chk => {\n        let chunkCurrentLen\n        // Adjust for customized AM/PM text\n        if (chk.type === 'apm' && this.has.customApmText) {\n          if (this.apm && this.apm.length) {\n            const customApmText = this.apm.toLowerCase() === 'am' ? this.amText : this.pmText\n            chunkCurrentLen = (customApmText && customApmText.length) ? customApmText.length : chk.len\n          } else {\n            chunkCurrentLen = chk.len\n          }\n        // Others\n        } else {\n          chunkCurrentLen = this[chk.type] && this[chk.type].length ? this[chk.type].length : chk.len\n        }\n        list.push({\n          token: chk.token,\n          type: chk.type,\n          start: chk.index + calibrateLen,\n          end: chk.index + calibrateLen + chunkCurrentLen\n        })\n        if (chk.needsCalibrate && chunkCurrentLen > chk.len) {\n          calibrateLen += (chunkCurrentLen - chk.len)\n        }\n      })\n      return list\n    },\n\n    invalidValues () {\n      if (this.inputIsEmpty) { return [] }\n      if (!this.restrictedHourRange && !this.minuteRangeList && !this.secondRangeList && this.opts.minuteInterval === 1 && this.opts.secondInterval === 1) { return [] }\n\n      const result = []\n      if (this.inUse.hour && !this.isEmptyValue(this.hourType, this.hour) && (!this.isValidValue(this.hourType, this.hour) || this.isDisabled('hour', this.hour))) {\n        result.push('hour')\n      }\n      if (this.inUse.minute && !this.isEmptyValue(this.minuteType, this.minute) && (!this.isValidValue(this.minuteType, this.minute) || this.isDisabled('minute', this.minute) || this.notInInterval('minute', this.minute))) {\n        result.push('minute')\n      }\n      if (this.inUse.second && !this.isEmptyValue(this.secondType, this.second) && (!this.isValidValue(this.secondType, this.second) || this.isDisabled('second', this.second) || this.notInInterval('second', this.second))) {\n        result.push('second')\n      }\n      if (this.inUse.apm && !this.isEmptyValue(this.apmType, this.apm) && (!this.isValidValue(this.apmType, this.apm) || this.isDisabled('apm', this.apm))) {\n        result.push('apm')\n      }\n      if (result.length) {\n        return result\n      }\n      return []\n    },\n\n    hasInvalidInput () {\n      return Boolean(this.invalidValues && this.invalidValues.length)\n    },\n\n    autoDirectionEnabled () {\n      return this.dropDirection === 'auto'\n    },\n\n    dropdownDirClass () {\n      if (this.autoDirectionEnabled) {\n        return this.forceDropOnTop ? 'drop-up' : 'drop-down'\n      }\n      return this.dropDirection === 'up' ? 'drop-up' : 'drop-down'      \n    }\n  },\n\n  watch: {\n    'opts.format' (newValue) {\n      this.renderFormat(newValue)\n    },\n    'opts.minuteInterval' (newInteval) {\n      this.renderList('minute', newInteval)\n    },\n    'opts.secondInterval' (newInteval) {\n      this.renderList('second', newInteval)\n    },\n    value: {\n      deep: true,\n      handler () {\n        this.readValues()\n      }\n    },\n    displayTime () {\n      this.fillValues()\n    },\n    disabled (toDisabled) {\n      if (toDisabled) {\n        // Force close dropdown and reset status when disabled\n        if (this.isActive) {\n          this.isActive = false\n        }\n        if (this.showDropdown) {\n          this.showDropdown = false\n        }\n      }\n    },\n    'invalidValues.length' (newLength, oldLength) {\n      if (newLength && newLength >= 1) {\n        this.$emit('error', this.invalidValues)\n      } else if (oldLength && oldLength >= 1) {\n        this.$emit('error', [])\n      }\n    }\n  },\n\n  methods: {\n    formatValue (token, i) {\n      if (!this.isNumber(i)) { return '' }\n      i = +i\n      switch (token) {\n        case 'H':\n        case 'h':\n        case 'k':\n        case 'm':\n        case 's':\n          if (['h', 'k'].includes(token) && i === 0) {\n            return token === 'k' ? '24' : '12'\n          }\n          return String(i)\n        case 'HH':\n        case 'mm':\n        case 'ss':\n        case 'hh':\n        case 'kk':\n          if (['hh', 'kk'].includes(token) && i === 0) {\n            return token === 'kk' ? '24' : '12'\n          }\n          return i < 10 ? `0${i}` : String(i)\n        default:\n          return ''\n      }\n    },\n\n    checkAcceptingType (validValues, formatString) {\n      if (!validValues || !formatString || !formatString.length) { return '' }\n      for (let i = 0; i < validValues.length; i++) {\n        if (formatString.indexOf(validValues[i]) > -1) {\n          return validValues[i]\n        }\n      }\n      return ''\n    },\n\n    renderFormat (newFormat) {\n      newFormat = newFormat || this.opts.format || DEFAULT_OPTIONS.format\n\n      let hourType = this.checkAcceptingType(CONFIG.HOUR_TOKENS, newFormat)\n      let minuteType = this.checkAcceptingType(CONFIG.MINUTE_TOKENS, newFormat)\n      this.secondType = this.checkAcceptingType(CONFIG.SECOND_TOKENS, newFormat)\n      this.apmType = this.checkAcceptingType(CONFIG.APM_TOKENS, newFormat)\n\n      // Failsafe checking\n      if (!hourType && !minuteType && !this.secondType && !this.apmType) {\n        if (this.debugMode && this.format) {\n          this.debugLog(`No valid tokens found in your defined \"format\" string \"${this.format}\". Fallback to the default \"HH:mm\" format.`)\n        }\n        hourType = 'HH'\n        minuteType = 'mm'\n      }\n      this.hourType = hourType\n      this.minuteType = minuteType\n\n      this.hourType ? this.renderHoursList() : this.hours = []\n      this.minuteType ? this.renderList('minute') : this.minutes = []\n      this.secondType ? this.renderList('second') : this.seconds = []\n      this.apmType ? this.renderApmList() : this.apms = []\n\n      this.$nextTick(() => {\n        this.readValues()\n      })\n    },\n\n    renderHoursList () {\n      const hoursCount = this.baseOn12Hours ? 12 : 24\n      const hours = []\n      for (let i = 0; i < hoursCount; i++) {\n        if (this.hourType === 'k' || this.hourType === 'kk') {\n          hours.push(this.formatValue(this.hourType, i + 1))\n        } else {\n          hours.push(this.formatValue(this.hourType, i))\n        }\n      }\n      this.hours = hours\n    },\n\n    renderList (listType, interval) {\n      if (!this.isMinuteOrSecond(listType)) { return }\n\n      const isMinute = listType === 'minute'\n      interval = interval || (isMinute ? (this.opts.minuteInterval || DEFAULT_OPTIONS.minuteInterval) : (this.opts.secondInterval || DEFAULT_OPTIONS.secondInterval))\n\n      const result = []\n      for (let i = 0; i < 60; i += interval) {\n        result.push(this.formatValue(isMinute ? this.minuteType : this.secondType, i))\n      }\n      isMinute ? this.minutes = result : this.seconds = result\n    },\n\n    renderApmList () {\n      this.apms = this.apmType === 'A' ? ['AM', 'PM'] : ['am', 'pm']\n    },\n\n    readValues () {\n      if (this.useStringValue) {\n        if (this.debugMode) {\n          this.debugLog(`Received a string value: \"${this.value}\"`)\n        }\n        this.readStringValues(this.value)\n      } else {\n        if (this.debugMode) {\n          this.debugLog(`Received an object value: \"${JSON.stringify(this.value || {})}\"`)\n        }\n        this.readObjectValues(this.value)\n      }\n    },\n\n    readObjectValues (objValue) {\n      const timeValue = JSON.parse(JSON.stringify(objValue || {}))\n      const values = Object.keys(timeValue)\n\n      // Failsafe for empty `v-model` object\n      if (values.length === 0) {\n        this.addFallbackValues()\n        return\n      }\n\n      CONFIG.BASIC_TYPES.forEach(type => {\n        const token = this.getTokenByType(type)\n        if (values.indexOf(token) > -1) {\n          const sanitizedValue = this.sanitizedValue(token, timeValue[token])\n          this[type] = sanitizedValue\n          timeValue[token] = sanitizedValue\n        } else {\n          this[type] = ''\n        }\n      })\n      this.timeValue = timeValue\n    },\n\n    getMatchAllByRegex (testString, regexString) {\n      const str = 'polyfillTest'\n      const needsPolyfill = Boolean(!str.matchAll || typeof str.matchAll !== 'function')\n      return needsPolyfill ? this.polyfillMatchAll(testString, regexString) : testString.matchAll(new RegExp(regexString, 'g'))\n    },\n\n    readStringValues (stringValue) {\n      // Failsafe for empty `v-model` string\n      if (!stringValue || !stringValue.length) {\n        this.addFallbackValues()\n        return\n      }\n\n      const formatString = String(this.formatString)\n      const tokensRegxStr = `(${this.tokenRegexBase})+?`\n      const othersRegxStr = `[^(${this.tokenRegexBase})]+`\n\n      const tokensMatchAll = this.getMatchAllByRegex(formatString, tokensRegxStr)\n      const othersMatchAll = this.getMatchAllByRegex(formatString, othersRegxStr)\n\n      const chunks = []\n      const tokenChunks = []\n\n      for (let tkMatch of tokensMatchAll) {\n        const tokenMatchItem = {\n          index: tkMatch.index,\n          token: tkMatch[0],\n          isValueToken: true\n        }\n        chunks.push(tokenMatchItem)\n        tokenChunks.push(tokenMatchItem)\n      }\n\n      for (let otMatch of othersMatchAll) {\n        chunks.push({\n          index: otMatch.index,\n          token: otMatch[0]\n        })\n      }\n\n      chunks.sort((l, r) => l.index < r.index ? -1 : 1)\n\n      let regexCombo = ''\n      chunks.forEach(chunk => {\n        if (chunk.isValueToken) {\n          const tokenRegex = this.getTokenRegex(chunk.token) || ''\n          regexCombo += tokenRegex\n        } else {\n          const safeChars = chunk.token.replace(/\\\\{0}(\\*|\\?|\\.|\\+)/g, '\\\\$1')\n          regexCombo += `(?:${safeChars})`\n        }\n      })\n\n      const comboReg = new RegExp(regexCombo)\n\n      // Do test before match\n      if (comboReg.test(stringValue)) {\n        const matchResults = stringValue.match(new RegExp(regexCombo))\n        const valueResults = matchResults.slice(1, tokenChunks.length + 1)\n        const timeValue = {}\n        valueResults.forEach((value, vrIndex) => {\n          if (tokenChunks[vrIndex]) {\n            const targetToken = tokenChunks[vrIndex].token\n            timeValue[targetToken] = this.setValueFromString(value, targetToken)\n          }\n        })\n        this.timeValue = timeValue\n\n        if (this.debugMode) {\n          const tokenChunksForLog = tokenChunks.map(tChunk => tChunk && tChunk.token)\n          this.debugLog(`Successfully parsed values ${JSON.stringify(valueResults)}\\nfor ${JSON.stringify(tokenChunksForLog)}\\nin format pattern '${this.formatString}'`)\n        }\n      } else {\n        if (this.debugMode) {\n          this.debugLog(`The input string in \"v-model\" does NOT match the \"format\" pattern\\nformat: ${this.formatString}\\nv-model: ${stringValue}`)\n        }\n      }\n    },\n\n    polyfillMatchAll (targetString, regxStr) {\n      const matchesList = targetString.match(new RegExp(regxStr, 'g'))\n      const result = []\n      const indicesReg = []\n      if (matchesList && matchesList.length) {\n        matchesList.forEach(matchedItem => {\n          const existIndex = indicesReg.findIndex(idxItem => idxItem.str === matchedItem)\n          let index\n          if (existIndex >= 0) {\n            if (indicesReg[existIndex] && indicesReg[existIndex].regex) {\n              index = indicesReg[existIndex].regex.exec(targetString).index\n            }\n          } else {\n            const itemIndicesRegex = new RegExp(matchedItem, 'g')\n            index = itemIndicesRegex.exec(targetString).index\n            indicesReg.push({\n              str: String(matchedItem),\n              regex: itemIndicesRegex\n            })\n          }\n          result.push({\n            0: String(matchedItem),\n            index: index\n          })\n        })\n      }\n      return result\n    },\n\n    addFallbackValues () {\n      const timeValue = {}\n      this.inUse.types.forEach(type => {\n        timeValue[this.getTokenByType(type)] = ''\n      })\n      this.timeValue = timeValue\n    },\n\n    setValueFromString (parsedValue, token) {\n      if (!token || !parsedValue) { return '' }\n      const tokenType = this.getTokenType(token)\n      if (!tokenType || !tokenType.length) { return '' }\n      const stdValue = (parsedValue !== this.getTokenByType(tokenType)) ? parsedValue : ''\n      this[tokenType] = stdValue\n      return stdValue\n    },\n\n    fillValues (forceEmit) {\n      const fullValues = {}\n\n      const baseHour = this.hour\n      const baseHourType = this.hourType\n\n      let apmValue\n\n      // Hour type or hour value is NOT set in the \"format\" string\n      if (!baseHourType || !this.isNumber(baseHour)) {\n        CONFIG.HOUR_TOKENS.forEach(token => fullValues[token] = '')\n        apmValue = this.lowerCasedApm(this.apm || '')\n        fullValues.a = apmValue\n        fullValues.A = apmValue.toUpperCase()\n\n      // Both Hour type and value are set\n      } else {\n        const hourValue = +baseHour\n        const apmValue = (this.baseOn12Hours && this.apm) ? this.lowerCasedApm(this.apm) : false\n\n        CONFIG.HOUR_TOKENS.forEach((token) => {\n          if (token === baseHourType) {\n            fullValues[token] = baseHour\n            return\n          }\n\n          let value\n          let apm\n          switch (token) {\n            case 'H':\n            case 'HH':\n            case 'k':\n            case 'kk':\n              if (this.baseOn12Hours) {\n                if (apmValue === 'pm') {\n                  value = hourValue < 12 ? hourValue + 12 : hourValue\n                } else if (['k', 'kk'].includes(token)) {\n                  value = hourValue === 12 ? 24 : hourValue\n                } else {\n                  value = hourValue % 12\n                }\n              } else {\n                if (['k', 'kk'].includes(token)) {\n                  value = hourValue === 0 ? 24 : hourValue\n                } else {\n                  value = hourValue % 24\n                }\n              }\n              fullValues[token] = this.formatValue(token, value)\n              break\n            case 'h':\n            case 'hh':\n              // h <-> hh\n              if (this.baseOn12Hours) {\n                value = hourValue\n                apm = apmValue || ''\n              // Read from other hour formats\n              } else {\n                if (hourValue > 11 && hourValue < 24) {\n                  apm = 'pm'\n                  value = hourValue === 12 ? 12 : hourValue % 12\n                } else {\n                  apm = 'am'\n                  value = hourValue % 12 === 0 ? 12 : hourValue\n                }\n              }\n              fullValues[token] = this.formatValue(token, value)\n              fullValues.a = apm\n              fullValues.A = apm.toUpperCase()\n              break\n          }\n        })\n      }\n\n      fullValues.m = this.formatValue('m', this.minute)\n      fullValues.mm = this.formatValue('mm', this.minute)\n      fullValues.s = this.formatValue('s', this.second)\n      fullValues.ss = this.formatValue('ss', this.second)\n\n      this.fullValues = fullValues\n\n      // On lazy mode, emit `input` and `change` events only when:\n      // - The user pick a new value and then close the dropdown\n      // - The user click the (\"x\") clear button\n      if (!this.lazy || forceEmit) {\n        this.emitTimeValue()\n      }\n\n      if (this.closeOnComplete && this.allValueSelected && this.showDropdown) {\n        this.toggleActive()\n      }\n    },\n\n    getFullData () {\n      if (!this.fullValues) {\n        this.fillValues()\n      }\n      return {\n        data: JSON.parse(JSON.stringify(this.fullValues)),\n        displayTime: this.inputIsEmpty ? '' : String(this.displayTime)\n      }\n    },\n\n    emitTimeValue () {\n      if (this.lazy && this.bakDisplayTime === this.displayTime) {\n        if (this.debugMode) {\n          this.debugLog('The value does not change on `lazy` mode. Skip the emitting `input` and `change` event.')\n        }\n        return\n      }\n\n      const fullData = this.getFullData()\n\n      if (this.useStringValue) {\n        this.$emit('input', fullData.displayTime)\n      } else {\n        const fullValues = fullData.data\n        const tokensInUse = this.inUse.tokens || []\n        const timeValue = {}\n        tokensInUse.forEach((token) => {\n          timeValue[token] = fullValues[token] || ''\n        })\n        this.$emit('input', JSON.parse(JSON.stringify(timeValue)))\n      }\n\n      this.$emit('change', fullData)\n    },\n\n    translate12hRange (value) {\n      const valueT = this.match12hRange(value)\n      if (+valueT[1] === 12) {\n        return +valueT[1] + (valueT[2].toLowerCase() === 'p' ? 0 : 12)\n      }\n      return +valueT[1] + (valueT[2].toLowerCase() === 'p' ? 12 : 0)\n    },\n\n    isDisabled (type, value) {\n      if (!this.isBasicType(type) || !this.inUse[type]) { return true }\n      switch (type) {\n        case 'hour':\n          return this.isDisabledHour(value)\n        case 'minute':\n        case 'second':\n          if (!this[`${type}RangeList`]) {\n            return false\n          }\n          return !this[`${type}RangeList`].includes(value)\n        case 'apm':\n          if (!this.restrictedHourRange) {\n            return false\n          }\n          return !this.has[this.lowerCasedApm(value)]\n        default:\n          return true\n      }\n    },\n\n    isDisabledHour (value) {\n      if (!this.restrictedHourRange) { return false }\n      if (this.baseOn12Hours) {\n        if (!this.apm || !this.apm.length) {\n          return false\n        } else {\n          const token = this.apm.toLowerCase() === 'am' ? 'a' : 'p'\n          return !this.restrictedHourRange.includes(`${+value}${token}`)\n        }\n      }\n      // Fallback for 'HH' and 'H hour format with a `hour-range` in a 12-hour form\n      if (\n        (this.hourType === 'HH' || this.hourType === 'H') &&\n        +value === 0 && this.restrictedHourRange.includes(24)\n      ) {\n        return false\n      }\n      return !this.restrictedHourRange.includes(+value)\n    },\n\n    notInInterval (section, value) {\n      if (!section || !this.isMinuteOrSecond(section)) { return }\n      if (this.opts[`${section}Interval`] === 1) { return false }\n      return +value % this.opts[`${section}Interval`] !== 0\n    },\n\n    renderRangeList (rawRange, section) {\n      if (!rawRange || !section || !this.isMinuteOrSecond(section)) { return [] }\n      const range = []\n      let formatedValue\n      rawRange.forEach(value => {\n        if (value instanceof Array) {\n          if (value.length > 2 && this.debugMode) {\n            this.debugLog(`Nested array within \"${section}-range\" must contain no more than two items. Only the first two items of ${JSON.stringify(value)} will be taken into account.`)\n          }\n          const start = value[0]\n          const end = value[1] || value[0]\n          for (let i = +start; i <= +end; i++) {\n            if (i < 0 || i > 59) { continue }\n            formatedValue = this.formatValue(this.getTokenByType(section), i)\n            if (!range.includes(formatedValue)) {\n              range.push(formatedValue)\n            }\n          }\n        } else {\n          if (+value < 0 || +value > 59) { return }\n          formatedValue = this.formatValue(this.getTokenByType(section), value)\n          if (!range.includes(formatedValue)) {\n            range.push(formatedValue)\n          }\n        }\n      })\n      range.sort((l, r) => { return l - r })\n      // Debug Mode\n      if (this.debugMode) {\n        const fullList = (section === 'minute' ? this.minutes : this.seconds) || []\n        const validItems = fullList.filter(item => range.includes(item))\n        if (!validItems || !validItems.length) {\n          if (section === 'minute') {\n            this.debugLog(`The minute list is empty due to the \"minute-range\" config\\nminute-range: ${JSON.stringify(this.minuteRange)}\\nminute-interval: ${this.opts.minuteInterval}`)\n          } else {\n            this.debugLog(`The second list is empty due to the \"second-range\" config\\nsecond-range: ${JSON.stringify(this.secondRange)}\\nsecond-interval: ${this.opts.secondInterval}`)\n          }\n        }\n      }\n      return range\n    },\n\n    forceApmSelection () {\n      if (this.manualInput) {\n        // Skip this to allow users to paste a string value from the clipboard in Manual Input mode\n        return\n      }\n      if (this.apmType && !this.apm) {\n        if (this.has.am || this.has.pm) {\n          this.doClearApmChecking = true\n          const apmValue = this.has.am ? 'am' : 'pm'\n          this.apm = this.apmType === 'A' ? apmValue.toUpperCase() : apmValue\n        }\n      }\n    },\n\n    emptyApmSelection () {\n      if (this.doClearApmChecking && this.hour === '' && this.minute === '' && this.second === '') {\n        this.apm = ''\n      }\n      this.doClearApmChecking = false\n    },\n\n    apmDisplayText (apmValue) {\n      if (this.amText && this.lowerCasedApm(apmValue) === 'am') {\n        return this.amText\n      }\n      if (this.pmText && this.lowerCasedApm(apmValue) === 'pm') {\n        return this.pmText\n      }\n      return apmValue\n    },\n\n    toggleActive () {\n      if (this.disabled) { return }\n      this.isActive = !this.isActive\n\n      if (this.isActive) {\n        this.isFocusing = true\n        if (this.manualInput) {\n          this.$emit('focus')\n        }\n        if (!this.opts.hideDropdown) {\n          this.setDropdownState(true)\n        }\n        // Record to check if value did change in the later phase\n        if (this.lazy) {\n          this.bakDisplayTime = String(this.displayTime || '')\n        }\n        if (this.manualInput && !this.inputIsEmpty) {\n          this.$nextTick(() => {\n            if (this.$refs.input && this.$refs.input.selectionStart === 0 && this.$refs.input.selectionEnd === this.displayTime.length) {\n              // Select the first slot instead of the whole value string when tabbed in\n              this.selectFirstSlot()\n            }\n          })\n        }\n      } else {\n        if (this.showDropdown) {\n          this.setDropdownState(false)\n        } else if (this.manualInput) {\n          this.$emit('blur', this.getFullData())\n        }\n        this.isFocusing = false\n        if (this.lazy) {\n          this.fillValues(true)\n          this.bakDisplayTime = undefined\n        }\n      }\n\n      if (this.restrictedHourRange && this.baseOn12Hours) {\n        this.showDropdown ? this.forceApmSelection() : this.emptyApmSelection()\n      }\n      if (this.showDropdown) {\n        this.checkForAutoScroll()\n      }\n    },\n\n    setDropdownState (toShow, fromUserClick = false) {\n      if (toShow) {\n        if (this.appendToBody) {\n          this.appendDropdownToBody()\n        }\n        this.keepFocusing()\n        if (this.autoDirectionEnabled) {\n          this.checkDropDirection()\n        }\n        this.showDropdown = true\n        this.$emit('open') \n        if (fromUserClick) {\n          if (this.fixedDropdownButton) {\n            this.isActive = true\n          }\n          this.$emit('blur', this.getFullData())\n          this.checkForAutoScroll()\n        }\n      } else {\n        this.showDropdown = false\n        this.$emit('close', this.getFullData())\n        if (this.appendToBody) {\n          this.removeDropdownFromBody()\n        }\n      }\n    },\n\n    appendDropdownToBody () {\n      const dropdown = this.$refs && this.$refs.dropdown\n      const body = document.getElementsByTagName('body')[0]\n      if (body && dropdown) {\n        window.addEventListener('scroll', this.updateDropdownPos)\n        dropdown.classList.add('vue__time-picker-dropdown')\n        this.updateDropdownPos()\n        body.appendChild(dropdown)\n      }\n    },\n\n    updateDropdownPos () {\n      if (!this.appendToBody) { return }\n      const dropdown = this.$refs && this.$refs.dropdown\n      const body = document.getElementsByTagName('body')[0]\n      if (body && dropdown) {\n        const box = this.$el.getBoundingClientRect()\n        if (this.dropdownDirClass === 'drop-up') {\n          dropdown.style.bottom = `${window.innerHeight - box.y}px`\n          dropdown.style.top = 'auto'\n        } else {\n          dropdown.style.top = `${box.y + box.height}px`\n          dropdown.style.bottom = 'auto'\n        }\n        dropdown.style.left = `${box.x}px`\n      }\n    },\n\n    removeDropdownFromBody () {\n      const dropdown = this.$refs && this.$refs.dropdown\n      const body = document.getElementsByTagName('body')[0]\n      if (body && dropdown && body.contains(dropdown)) {\n        body.removeChild(dropdown)\n      }\n      if (dropdown) {\n        dropdown.classList.remove('vue__time-picker-dropdown')\n        dropdown.style.top = ''\n        dropdown.style.bottom = ''\n        dropdown.style.left = ''\n        this.$el.appendChild(dropdown)\n      }\n      window.removeEventListener('scroll', this.updateDropdownPos)\n    },\n\n    blurEvent () {\n      if (this.manualInput && !this.opts.hideDropdown) {\n        // hideDropdown's `blur` event is handled somewhere else\n        this.$emit('blur', this.getFullData())\n      }\n    },\n\n    select (type, value) {\n      if (this.isBasicType(type) && !this.isDisabled(type, value)) {\n        this[type] = value\n        if (this.doClearApmChecking) {\n          this.doClearApmChecking = false\n        }\n      }\n    },\n\n    clearTime () {\n      if (this.disabled) { return }\n      this.hour = ''\n      this.minute = ''\n      this.second = ''\n      this.apm = ''\n\n      if (this.manualInput && this.$refs && this.$refs.input && this.$refs.input.value.length) {\n        this.$refs.input.value = ''\n      }\n\n      if (this.lazy) {\n        this.fillValues(true)\n      }\n    },\n\n    //\n    // Auto-Scroll\n    //\n\n    checkForAutoScroll () {\n      if (this.inputIsEmpty) { return }\n      if (this.autoScroll) {\n        this.$nextTick(() => {\n          this.scrollToSelectedValues()\n        })\n      } else if (this.advancedKeyboard) {\n        // Auto-focus on selected value in the first column for advanced-keyboard\n        this.$nextTick(() => {\n          const firstColumn = this.inUse.types[0]\n          this.scrollToSelected(firstColumn, true)\n        })\n      }\n    },\n\n    scrollToSelected (column, allowFallback = false) {\n      if (!this.timeValue || this.inputIsEmpty) { return }\n      let targetList\n      if (this.appendToBody && this.$refs && this.$refs.dropdown) {\n        targetList = this.$refs.dropdown.querySelectorAll(`ul.${column}s`)[0]\n      } else {\n        targetList = this.$el.querySelectorAll(`ul.${column}s`)[0]\n      }\n      let targetValue = this.activeItemInCol(column)[0]\n      if (!targetValue && allowFallback) {\n        // No value selected in the target column, fallback to the first found valid item\n        targetValue = this.validItemsInCol(column)[0]\n      }\n      if (targetList && targetValue) {\n        targetList.scrollTop = targetValue.offsetTop || 0\n        if (this.advancedKeyboard) {\n          targetValue.focus()\n        }\n      }\n    },\n\n    scrollToSelectedValues () {\n      if (!this.timeValue || this.inputIsEmpty) { return }\n      this.inUse.types.forEach(section => {\n        this.scrollToSelected(section)\n      })\n    },\n\n    //\n    // Additional Keyboard Navigation\n    //\n\n    onFocus () {\n      if (this.disabled) { return }\n      if (!this.isFocusing) {\n        this.isFocusing = true\n      }\n      if (!this.isActive) {\n        this.toggleActive()\n      }\n    },\n\n    escBlur () {\n      if (this.disabled) { return }\n      window.clearTimeout(this.debounceTimer)\n      this.isFocusing = false\n      const inputBox = this.$el.querySelectorAll('input.display-time')[0]\n      if (inputBox) {\n        inputBox.blur()\n      }\n    },\n\n    debounceBlur () {\n      if (this.disabled) { return }\n      this.isFocusing = false\n      window.clearTimeout(this.debounceTimer)\n      this.debounceTimer = window.setTimeout(() => {\n        window.clearTimeout(this.debounceTimer)\n        this.onBlur()\n      }, this.opts.blurDelay)\n    },\n\n    onBlur () {\n      if (!this.disabled && !this.isFocusing && this.isActive) {\n        this.toggleActive()\n      }\n    },\n\n    keepFocusing () {\n      if (this.disabled) { return }\n      window.clearTimeout(this.debounceTimer)\n      if (!this.isFocusing) {\n        this.isFocusing = true\n      }\n    },\n\n    onTab (column, value, evt) {\n      if (this.appendToBody && evt.shiftKey) {\n        const firstColumn = this.inUse.types[0]\n        if (column !== firstColumn) { return }\n        const firstValidValue = this.validItemsInCol(firstColumn)[0]\n        // Is the first valid item in the first column\n        if (firstValidValue && firstValidValue.getAttribute('data-key') === String(value)) {\n          evt.preventDefault()\n          // Focus back on <input>\n          if (this.$refs && this.$refs.input) {\n            this.$refs.input.focus()\n          }\n        }\n      }\n    },\n\n    validItemsInCol (column) {\n      const columnClass = `${column}s`\n      if (this.appendToBody && this.$refs && this.$refs.dropdown) {\n        return this.$refs.dropdown.querySelectorAll(`ul.${columnClass} > li:not(.hint):not([disabled])`)\n      }\n      return this.$el.querySelectorAll(`ul.${columnClass} > li:not(.hint):not([disabled])`)\n    },\n\n    activeItemInCol (column) {\n      const columnClass = `${column}s`\n      if (this.appendToBody && this.$refs && this.$refs.dropdown) {\n        return this.$refs.dropdown.querySelectorAll(`ul.${columnClass} > li.active:not(.hint)`)\n      }\n      return this.$el.querySelectorAll(`ul.${columnClass} > li.active:not(.hint)`)\n    },\n\n    getClosestSibling (column, dataKey, getPrevious = false) {\n      const siblingsInCol = this.validItemsInCol(column)\n      const selfIndex = Array.prototype.findIndex.call(siblingsInCol, (sbl) => {\n        return sbl.getAttribute('data-key') === dataKey\n      })\n\n      // Already the first item\n      if (getPrevious && selfIndex === 0) {\n        return siblingsInCol[siblingsInCol.length - 1]\n      }\n      // Already the last item\n      if (!getPrevious && selfIndex === siblingsInCol.length - 1) {\n        return siblingsInCol[0]\n      }\n      // Selected value not in the valid values list\n      if (selfIndex < 0) {\n        return siblingsInCol[0]\n      }\n\n      if (getPrevious) {\n        return siblingsInCol[selfIndex - 1]\n      }\n      return siblingsInCol[selfIndex + 1]\n    },\n\n    prevItem (column, dataKey, isManualInput = false) {\n      const targetItem = this.getClosestSibling(column, dataKey, true)\n      if (targetItem) {\n        return isManualInput ? targetItem : targetItem.focus()\n      }\n    },\n\n    nextItem (column, dataKey, isManualInput = false) {\n      const targetItem = this.getClosestSibling(column, dataKey, false)\n      if (targetItem) {\n        return isManualInput ? targetItem : targetItem.focus()\n      }\n    },\n\n    getSideColumnName (currentColumn, toLeft = false) {\n      const currentColumnIndex = this.inUse.types.indexOf(currentColumn)\n      if (toLeft && currentColumnIndex <= 0) {\n        if (this.debugMode) {\n          this.debugLog('You\\'re in the leftmost list already')\n        }\n        return\n      } else if (!toLeft && currentColumnIndex === (this.inUse.types.length - 1)) {\n        if (this.debugMode) {\n          this.debugLog('You\\'re in the rightmost list already')\n        }\n        return\n      }\n      return this.inUse.types[toLeft ? currentColumnIndex - 1 : currentColumnIndex + 1]\n    },\n\n    getFirstItemInSideColumn (currentColumn, toLeft = false) {\n      const targetColumn = this.getSideColumnName(currentColumn, toLeft)\n      if (!targetColumn) { return }\n      const listItems = this.validItemsInCol(targetColumn)\n      if (listItems && listItems[0]) {\n        return listItems[0]\n      }\n    },\n\n    getActiveItemInSideColumn (currentColumn, toLeft = false) {\n      const targetColumn = this.getSideColumnName(currentColumn, toLeft)\n      if (!targetColumn) { return }\n      const activeItems = this.activeItemInCol(targetColumn)\n      if (activeItems && activeItems[0]) {\n        return activeItems[0]\n      }\n    },\n\n    toLeftColumn (currentColumn) {\n      const targetItem = this.getActiveItemInSideColumn(currentColumn, true) || this.getFirstItemInSideColumn(currentColumn, true)\n      if (targetItem) {\n        targetItem.focus()\n      }\n    },\n\n    toRightColumn (currentColumn) {\n      const targetItem = this.getActiveItemInSideColumn(currentColumn, false) || this.getFirstItemInSideColumn(currentColumn, false)\n      if (targetItem) {\n        targetItem.focus()\n      }\n    },\n\n    //\n    // Manual Input\n    //\n\n    onMouseDown () {\n      if (!this.manualInput) { return }\n      window.clearTimeout(this.selectionTimer)\n      this.selectionTimer = window.setTimeout(() => {\n        window.clearTimeout(this.selectionTimer)\n        if (this.$refs && this.$refs.input) {\n          const nearestSlot = this.getNearestChunkByPos(this.$refs.input.selectionStart || 0)\n          this.debounceSetInputSelection(nearestSlot)\n        }\n      }, 50)\n    },\n\n    keyDownHandler (evt) {\n      if (evt.isComposing || evt.keyCode === 229) {\n        // Skip IME inputs\n        evt.preventDefault()\n        evt.stopPropagation()\n        return false\n      }\n      // Numbers\n      if ((evt.keyCode >= 48 && evt.keyCode <= 57) || (evt.keyCode >= 96 && evt.keyCode <= 105)) {\n        evt.preventDefault()\n        this.keyboardInput(evt.key)\n      // A|P|M\n      } else if ([65, 80, 77].includes(evt.keyCode)) {\n        evt.preventDefault()\n        this.keyboardInput(evt.key, true)\n      // Arrow keys\n      } else if (evt.keyCode >= 37 && evt.keyCode <= 40) {\n        evt.preventDefault()\n        this.clearKbInputLog()\n        this.arrowHandler(evt)\n      // Delete|Backspace\n      } else if (evt.keyCode === 8 || evt.keyCode === 46) {\n        evt.preventDefault()\n        this.clearKbInputLog()\n        this.clearTime()\n      // Tab\n      } else if (evt.keyCode === 9) {\n        this.clearKbInputLog()\n        this.tabHandler(evt)\n      // Colon|Space\n      } else if (evt.keyCode === 186 || evt.keyCode === 32) {\n        evt.preventDefault()\n        this.clearKbInputLog()\n        this.toNextSlot()\n      // Prevent any Non-ESC and non-pasting inputs\n      } else if (evt.keyCode !== 27 && !(evt.metaKey || evt.ctrlKey)) {\n        evt.preventDefault()\n      }\n    },\n\n    onCompostionStart (evt) {\n      evt.preventDefault()\n      evt.stopPropagation()\n      this.bakCurrentPos = this.getCurrentTokenChunk()\n      return false\n    },\n\n    onCompostionEnd (evt) {\n      evt.preventDefault()\n      evt.stopPropagation()\n\n      const cpsData = evt.data\n      let inputIsCustomApmText = false\n      if (this.has.customApmText) {\n        inputIsCustomApmText = this.isCustomApmText(cpsData)\n      }\n      if (inputIsCustomApmText) {\n        this.setSanitizedValueToSection('apm', inputIsCustomApmText)\n      }\n\n      this.$refs.input.value = this.has.customApmText ? this.customDisplayTime : this.displayTime\n\n      this.$nextTick(() => {\n        if (this.bakCurrentPos) {\n          const bakPos = JSON.parse(JSON.stringify(this.bakCurrentPos))\n          if (inputIsCustomApmText) {\n            bakPos.end = (bakPos.start + cpsData.length)\n          }\n          this.debounceSetInputSelection(bakPos)\n          this.bakCurrentPos = null\n        }\n      })\n      return false\n    },\n\n    pasteHandler (evt) {\n      evt.preventDefault()\n      let pastingText = (evt.clipboardData || window.clipboardData).getData('text')\n      if (this.debugMode) {\n        this.debugLog(`Pasting value \"${pastingText}\" from clipboard`)\n      }\n      if (!pastingText || !pastingText.length) { return }\n\n      // Replace custom AM/PM text (if any)\n      if (this.has.customApmText) {\n        pastingText = this.replaceCustomApmText(pastingText)\n      }\n\n      if (this.inputIsEmpty) {\n        this.readStringValues(pastingText)\n      } else {\n        this.kbInputLog = pastingText.substr(-2, 2)\n        this.setKbInput()\n        this.debounceClearKbLog()\n      }\n    },\n\n    arrowHandler (evt) {\n      const direction = { 37: 'L', 38: 'U', 39: 'R', 40: 'D' }[evt.keyCode]\n      if (direction === 'U' || direction === 'D') {\n        if (this.inputIsEmpty) {\n          this.selectFirstValidValue()\n        } else {\n          const currentChunk = this.getCurrentTokenChunk()\n          if (!currentChunk) {\n            this.selectFirstValidValue()\n            return\n          }\n          const tokenType = currentChunk.type\n          this.getClosestValidItemInCol(tokenType, this[tokenType], direction)\n          const newChunkPos = this.getCurrentTokenChunk()\n          this.debounceSetInputSelection(newChunkPos)\n        }\n      } else if (direction === 'R') {\n        this.toLateralToken(false)\n      } else if (direction === 'L') {\n        this.toLateralToken(true)\n      }\n    },\n\n    tabHandler (evt) {\n      if (!this.inputIsEmpty && this.tokenChunksPos && this.tokenChunksPos.length) {\n        const currentChunk = this.getCurrentTokenChunk()\n        if (!currentChunk) { return }\n        const firstChunk = this.tokenChunksPos[0]\n        const lastChunk = this.tokenChunksPos[this.tokenChunksPos.length - 1]\n        if ((evt.shiftKey && currentChunk.token !== firstChunk.token) || (!evt.shiftKey && currentChunk.token !== lastChunk.token)) {\n          evt.preventDefault()\n          this.toLateralToken(evt.shiftKey)\n        }\n      } else if (this.appendToBody && this.advancedKeyboard) {\n        if (evt.shiftKey) { return }\n        evt.preventDefault()\n        if (this.inputIsEmpty) {\n          const firstColumn = this.inUse.types[0]\n          const targetValue = this.validItemsInCol(firstColumn)[0]\n          if (targetValue) {\n            targetValue.focus()\n          }\n        }\n      }\n    },\n\n    keyboardInput (newChar, isApm = false) {\n      const currentChunk = this.getCurrentTokenChunk()\n      if (!currentChunk || (currentChunk.type !== 'apm' && isApm) || (currentChunk.type === 'apm' && !isApm)) { return }\n      this.kbInputLog = `${this.kbInputLog.substr(-1)}${newChar}`\n      this.setKbInput()\n      this.debounceClearKbLog()\n    },\n\n    clearKbInputLog () {\n      window.clearTimeout(this.kbInputTimer)\n      this.kbInputLog = ''\n    },\n\n    debounceClearKbLog () {\n      window.clearTimeout(this.kbInputTimer)\n      this.kbInputTimer = window.setTimeout(() => {\n        this.clearKbInputLog()\n      }, this.opts.manualInputTimeout)\n    },\n\n    setKbInput (value) {\n      value = value || this.kbInputLog\n      const currentChunk = this.getCurrentTokenChunk()\n      if (!currentChunk || !value || !value.length) { return }\n      const chunkType = currentChunk.type\n      const chunkToken = currentChunk.token\n\n      let validValue\n      if (chunkType === 'apm') {\n        if (this.lowerCasedApm(value).includes('a')) {\n          validValue = 'am'\n        } else if (this.lowerCasedApm(value).includes('p')) {\n          validValue = 'pm'\n        }\n        if (validValue) {\n          validValue = chunkToken === 'A' ? validValue.toUpperCase() : validValue\n        }\n      } else {\n        if (this.isValidValue(chunkToken, value)) {\n          validValue = value\n        } else {\n          const lastInputValue = this.formatValue(chunkToken, value.substr(-1))\n          if (this.isValidValue(chunkToken, lastInputValue)) {\n            validValue = lastInputValue\n          }\n        }\n      }\n\n      if (validValue) {\n        this.setSanitizedValueToSection(chunkType, validValue)\n        const newChunkPos = this.getCurrentTokenChunk()\n        this.debounceSetInputSelection(newChunkPos)      \n      }\n      if (this.debugMode) {\n        if (validValue) {\n          this.debugLog(`Successfully set value \"${validValue}\" from latest input \"${value}\" for the \"${chunkType}\" slot`)\n        } else {\n          this.debugLog(`Value \"${value}\" is invalid in the \"${chunkType}\" slot`)\n        }\n      }\n    },\n\n    // Form Autofill\n    onChange () {\n      if (!this.manualInput || !this.$refs || !this.$refs.input) { return }\n      const autoFillValue = this.$refs.input.value || ''\n      if (autoFillValue && autoFillValue.length) {\n        this.readStringValues(autoFillValue)\n      }\n    },\n\n    getNearestChunkByPos (startPos) {\n      if (!this.tokenChunksPos || !this.tokenChunksPos.length) { return }\n      let nearest\n      let nearestDelta = -1\n      for (let i = 0; i < this.tokenChunksPos.length; i++) {\n        const chunk = JSON.parse(JSON.stringify(this.tokenChunksPos[i]))\n        if (chunk.start === startPos) {\n          return chunk\n        }\n        const delta = Math.abs(chunk.start - startPos)\n        if (nearestDelta < 0) {\n          nearest = chunk\n          nearestDelta = delta\n        } else {\n          if (nearestDelta <= delta) {\n            return nearest\n          }\n          nearestDelta = delta\n          nearest = chunk\n        }\n      }\n      return nearest\n    },\n\n    selectFirstValidValue () {\n      if (!this.tokenChunksPos || !this.tokenChunksPos.length) { return }\n      const firstSlotType = this.tokenChunksPos[0].type\n      if (firstSlotType === 'hour') {\n        this.getClosestHourItem()\n      } else {\n        this.getClosestValidItemInCol(firstSlotType, this[firstSlotType])\n      }\n      this.selectFirstSlot()\n    },\n\n    getClosestHourItem (currentValue, direction = 'U') {\n      if (!this.validHoursList || !this.validHoursList.length) {\n        if (this.debugMode) {\n          this.debugLog(`No valid hour values found, please check your \"hour-range\" config\\nhour-range: ${JSON.stringify(this.hourRange)}`)\n        }\n        return\n      }\n      if (!currentValue) {\n        this.setManualHour(this.validHoursList[0])\n        return\n      }\n      const currentIndex = this.validHoursList.findIndex(item => {\n        if (!this.baseOn12Hours) {\n          return item === currentValue\n        } else {\n          const valueKey = `${currentValue}${this.lowerCasedApm(this.apm) === 'pm' ? 'p' : 'a'}` \n          return item === valueKey\n        }\n      })\n      let nextIndex\n      if (currentIndex === -1) {\n        nextIndex = 0\n      } else if (direction === 'D') {\n        nextIndex = currentIndex === 0 ? this.validHoursList.length - 1 : currentIndex - 1\n      } else {\n        nextIndex = (currentIndex + 1) % this.validHoursList.length\n      }\n      const nextItem = this.validHoursList[nextIndex]\n      this.setManualHour(nextItem)\n    },\n\n    getClosestValidItemInCol (column, currentValue, direction = 'U') {\n      if (column === 'hour') {\n        this.getClosestHourItem(currentValue, direction)\n      } else {\n        const nextItem = direction === 'D' ? this.prevItem(column, this[column], true) : this.nextItem(column, this[column], true)\n        if (nextItem) {\n          this.select(column, nextItem.getAttribute('data-key'))\n        }\n      }\n    },\n\n    setSanitizedValueToSection (section, inputValue) {\n      if (!section || !this.getTokenByType(section)) { return }\n      // NOTE: Disabled values are allowed here, followed by an 'error' event, though\n      const sanitizedValue = this.sanitizedValue(this.getTokenByType(section), inputValue)\n      this[section] = sanitizedValue\n    },\n\n    setManualHour (nextItem) {\n      if (this.is12hRange(nextItem)) {\n        const hourT = this.match12hRange(nextItem)\n        const apmValue = hourT[2] === 'a' ? 'AM' : 'PM'\n        this.setSanitizedValueToSection('apm', this.apmType === 'a' ? apmValue.toLowerCase() : apmValue)\n        this.setSanitizedValueToSection('hour', hourT[1])\n      } else {\n        this.setSanitizedValueToSection('hour', nextItem)\n      }\n    },\n\n    debounceSetInputSelection ({start = 0, end = 0 }) {\n      this.$nextTick(() => {\n        this.setInputSelectionRange(start, end)\n      })\n      window.clearTimeout(this.selectionTimer)\n      this.selectionTimer = window.setTimeout(() => {\n        window.clearTimeout(this.selectionTimer)\n        // Double-check selection for 12hr format\n        if (this.$refs.input && (this.$refs.input.selectionStart !== start || this.$refs.input.selectionEnd !== end)) {\n          this.setInputSelectionRange(start, end)\n        }\n      }, 30)\n    },\n\n    setInputSelectionRange (start, end) {\n      if (this.$refs && this.$refs.input) {\n        this.$refs.input.setSelectionRange(start, end)\n      }\n    },\n\n    getCurrentTokenChunk () {\n      return this.getNearestChunkByPos((this.$refs.input && this.$refs.input.selectionStart) || 0)\n    },\n\n    selectFirstSlot () {\n      const firstChunkPos = this.getNearestChunkByPos(0)\n      this.debounceSetInputSelection(firstChunkPos)\n    },\n\n    toNextSlot () {\n      if (!this.inputIsEmpty && this.tokenChunksPos && this.tokenChunksPos.length) {\n        const currentChunk = this.getCurrentTokenChunk()\n        if (!currentChunk) { return }\n        const lastChunk = this.tokenChunksPos[this.tokenChunksPos.length - 1]\n        if (currentChunk.token !== lastChunk.token) {\n          this.toLateralToken(false)\n        }\n      }\n    },\n\n    toLateralToken (toLeft) {\n      const currentChunk = this.getCurrentTokenChunk()\n      if (!currentChunk) {\n        this.selectFirstValidValue()\n        return\n      }\n      const currentChunkIndex = this.tokenChunksPos.findIndex(chk => chk.token === currentChunk.token)\n      if ((!toLeft && currentChunkIndex >= this.tokenChunksPos.length - 1) || (toLeft && currentChunkIndex === 0)) {\n        if (this.debugMode) {\n          if (toLeft) {\n            this.debugLog('You\\'re in the leftmost slot already')\n          } else {\n            this.debugLog('You\\'re in the rightmost slot already')\n          }\n        }\n        return\n      }\n      const targetSlotPos = toLeft ? this.tokenChunksPos[currentChunkIndex - 1] : this.tokenChunksPos[currentChunkIndex + 1]\n      this.debounceSetInputSelection(targetSlotPos)\n    },\n\n    isCustomApmText (inputData) {\n      if (!inputData || !inputData.length) { return false }\n      if (this.amText && this.amText === inputData) {\n        return this.apmType === 'A' ? 'AM' : 'am'\n      }\n      if (this.pmText && this.pmText === inputData) {\n        return this.apmType === 'A' ? 'PM' : 'pm'\n      }\n      return false\n    },\n\n    replaceCustomApmText (inputString) {\n      if (this.amText && this.amText.length && inputString.includes(this.amText)) {\n        return inputString.replace(new RegExp(this.amText, 'g'), this.apmType === 'A' ? 'AM' : 'am')\n      } else if (this.pmText && this.pmText.length && inputString.includes(this.pmText)) {\n        return inputString.replace(new RegExp(this.pmText, 'g'), this.apmType === 'A' ? 'PM' : 'pm')\n      }\n      return inputString\n    },\n\n    checkDropDirection () {\n      if (!this.$el) { return }\n      let container\n      if (this.containerId && this.containerId.length) {\n        container = document.getElementById(this.containerId)\n        if (!container && this.debugMode) {\n          this.debugLog(`Container with id \"${this.containerId}\" not found. Fallback to document body.`)\n        }\n      }\n      const el = this.$el\n      let spaceDown\n      if (container && container.offsetHeight) {\n        // Valid container found\n        spaceDown = (container.offsetTop + container.offsetHeight) - (el.offsetTop + el.offsetHeight)\n      } else {\n        // Fallback to document body\n        const docHeight = Math.max(document.body.scrollHeight, document.documentElement.scrollHeight, document.body.offsetHeight, document.documentElement.offsetHeight, document.body.clientHeight, document.documentElement.clientHeight)\n        spaceDown = docHeight - (el.offsetTop + el.offsetHeight)\n      }\n      this.forceDropOnTop = this.opts.dropOffsetHeight > spaceDown\n    },\n\n    //\n    // Helpers\n    //\n\n    is12hRange (value) {\n      return /^\\d{1,2}(a|p|A|P)$/.test(value)\n    },\n\n    match12hRange (value) {\n      return value.match(/^(\\d{1,2})(a|p|A|P)$/)\n    },\n\n    isNumber (value) {\n      return !isNaN(parseFloat(value)) && isFinite(value)\n    },\n\n    isBasicType (type) {\n      return CONFIG.BASIC_TYPES.includes(type)\n    },\n\n    lowerCasedApm (apmValue) {\n      return (apmValue || '').toLowerCase()\n    },\n\n    getTokenRegex (token) {\n      switch (token) {\n        case 'HH':\n          return '([01][0-9]|2[0-3]|H{2})'\n        case 'H':\n          return '([0-9]{1}|1[0-9]|2[0-3]|H{1})'\n        case 'hh':\n          return '(0[1-9]|1[0-2]|h{2})'\n        case 'h':\n          return '([1-9]{1}|1[0-2]|h{1})'\n        case 'kk':\n          return '(0[1-9]|1[0-9]|2[0-4]|k{2})'\n        case 'k':\n          return '([1-9]{1}|1[0-9]|2[0-4]|k{1})'\n        case 'mm':\n          return '([0-5][0-9]|m{2})'\n        case 'ss':\n          return '([0-5][0-9]|s{2})'\n        case 'm':\n          return '([0-9]{1}|[1-5][0-9]|m{1})'\n        case 's':\n          return '([0-9]{1}|[1-5][0-9]|s{1})'\n        case 'A':\n          return '(AM|PM|A{1})'\n        case 'a':\n          return '(am|pm|a{1})'\n        default:\n          return ''\n      }\n    },\n\n    isEmptyValue (targetToken, testValue) {\n      return (!testValue || !testValue.length) || (testValue && testValue === targetToken)\n    },\n\n    isValidValue (targetToken, testValue) {\n      if (!targetToken || this.isEmptyValue(targetToken, testValue)) { return false }\n      const tokenRegexStr = this.getTokenRegex(targetToken)\n      if (!tokenRegexStr || !tokenRegexStr.length) { return false }\n      return (new RegExp(`^${tokenRegexStr}$`)).test(testValue)\n    },\n\n    sanitizedValue (targetToken, inputValue) {\n      if (this.isValidValue(targetToken, inputValue)) {\n        return inputValue\n      }\n      return ''\n    },\n\n    getTokenType (token) {\n      return this.inUse.types[this.inUse.tokens.indexOf(token)] || ''\n    },\n\n    getTokenByType (type) {\n      return this[`${type}Type`] || ''\n    },\n\n    isMinuteOrSecond (type) {\n      return ['minute', 'second'].includes(type)\n    },\n\n    debugLog (logText) {\n      if (!logText || !logText.length) { return }\n      let identifier = ''\n      if (this.id) {\n        identifier += `#${this.id}`\n      }\n      if (this.name) {\n        identifier += `[name=${this.name}]`\n      }\n      if (this.inputClass) {\n        let inputClasses = []\n        if (typeof this.inputClass === 'string') {\n          inputClasses = this.inputClass.split(/\\s/g)\n        } else if (Array.isArray(this.inputClass)) {\n          inputClasses = [].concat([], this.inputClass)\n        } else if (typeof this.inputClass === 'object') {\n          Object.keys(this.inputClass).forEach(clsName => {\n            if (this.inputClass[clsName]) {\n              inputClasses.push(clsName)\n            }\n          })\n        }\n        for (let inputClass of inputClasses) {\n          if (inputClass && inputClass.trim().length) {\n            identifier += `.${inputClass.trim()}`\n          }\n        }\n      }\n      const finalLogText = `DEBUG: ${logText}${identifier ? `\\n\\t(${identifier})` : '' }`\n      if (window.console.debug && typeof window.console.debug === 'function') {\n        window.console.debug(finalLogText)\n      } else {\n        window.console.log(finalLogText)\n      }\n    }\n  },\n\n  mounted () {\n    window.clearTimeout(this.debounceTimer)\n    window.clearTimeout(this.selectionTimer)\n    window.clearTimeout(this.kbInputTimer)\n    this.renderFormat()\n  },\n\n  beforeDestroy () {\n    window.clearTimeout(this.debounceTimer)\n    window.clearTimeout(this.selectionTimer)\n    window.clearTimeout(this.kbInputTimer)\n  }\n}\n</script>\n\n<template>\n<span class=\"vue__time-picker time-picker\" :style=\"inputWidthStyle\">\n  <input type=\"text\" class=\"display-time\" ref=\"input\"\n         :class=\"[inputClass, {'is-empty': inputIsEmpty, 'invalid': hasInvalidInput, 'all-selected': allValueSelected, 'disabled': disabled, 'has-custom-icon': $slots && $slots.icon }]\"\n         :style=\"inputWidthStyle\"\n         :id=\"id\"\n         :name=\"name\"\n         :value=\"inputIsEmpty ? null : customDisplayTime\"\n         :placeholder=\"placeholder ? placeholder : formatString\"\n         :tabindex=\"disabled ? -1 : tabindex\"\n         :disabled=\"disabled\"\n         :readonly=\"!manualInput\"\n         :autocomplete=\"autocomplete\"\n         @focus=\"onFocus\"\n         @change=\"onChange\"\n         @blur=\"debounceBlur(); blurEvent()\"\n         @mousedown=\"onMouseDown\"\n         @keydown=\"keyDownHandler\"\n         @compositionstart=\"onCompostionStart\"\n         @compositionend=\"onCompostionEnd\"\n         @paste=\"pasteHandler\"\n         @keydown.esc.exact=\"escBlur\" />\n  <div class=\"controls\" v-if=\"showClearBtn || showDropdownBtn\" tabindex=\"-1\">\n    <span v-if=\"!isActive && showClearBtn\" class=\"clear-btn\" tabindex=\"-1\"\n          :class=\"{'has-custom-btn': $slots && $slots.clearButton }\"\n          @click=\"clearTime\">\n      <slot name=\"clearButton\"><span class=\"char\">&times;</span></slot>\n    </span>\n    <span v-if=\"showDropdownBtn\" class=\"dropdown-btn\" tabindex=\"-1\"\n          :class=\"{'has-custom-btn': $slots && $slots.dropdownButton }\"\n          @click=\"setDropdownState(fixedDropdownButton ? !showDropdown : true, true)\"\n          @mousedown=\"keepFocusing\">\n      <slot name=\"dropdownButton\"><span class=\"char\">&dtrif;</span></slot>\n    </span>\n  </div>\n  <div class=\"custom-icon\" v-if=\"$slots && $slots.icon\"><slot name=\"icon\"></slot></div>\n  <div class=\"time-picker-overlay\" v-if=\"showDropdown\" @click=\"toggleActive\" tabindex=\"-1\"></div>\n  <div class=\"dropdown\" ref=\"dropdown\" v-show=\"showDropdown\" tabindex=\"-1\"\n       :class=\"[dropdownDirClass]\" :style=\"inputWidthStyle\"\n       @mouseup=\"keepFocusing\" @click.stop=\"\">\n    <div class=\"select-list\" :style=\"inputWidthStyle\" tabindex=\"-1\">\n      <!-- Common Keyboard Support: less event listeners -->\n      <template v-if=\"!advancedKeyboard\">\n        <template v-for=\"column in columnsSequence\">\n          <ul v-if=\"column === 'hour'\" :key=\"column\" class=\"hours\" @scroll=\"keepFocusing\">\n            <li class=\"hint\" v-text=\"hourLabelText\"></li>\n            <template v-for=\"(hr, hIndex) in hours\">\n              <li v-if=\"!opts.hideDisabledHours || (opts.hideDisabledHours && !isDisabled('hour', hr))\"\n                  :key=\"hIndex\"\n                  :class=\"{active: hour === hr}\"\n                  :disabled=\"isDisabled('hour', hr)\"\n                  :data-key=\"hr\"\n                  v-text=\"hr\"\n                  @click=\"select('hour', hr)\"></li>\n            </template>\n          </ul>\n          <ul v-if=\"column === 'minute'\" :key=\"column\" class=\"minutes\" @scroll=\"keepFocusing\">\n            <li class=\"hint\" v-text=\"minuteLabelText\"></li>\n            <template v-for=\"(m, mIndex) in minutes\">\n              <li v-if=\"!opts.hideDisabledMinutes || (opts.hideDisabledMinutes && !isDisabled('minute', m))\"\n                  :key=\"mIndex\"\n                  :class=\"{active: minute === m}\"\n                  :disabled=\"isDisabled('minute', m)\"\n                  :data-key=\"m\"\n                  v-text=\"m\"\n                  @click=\"select('minute', m)\"></li>\n            </template>\n          </ul>\n          <ul v-if=\"column === 'second'\" :key=\"column\" class=\"seconds\" @scroll=\"keepFocusing\">\n            <li class=\"hint\" v-text=\"secondLabelText\"></li>\n            <template v-for=\"(s, sIndex) in seconds\">\n              <li v-if=\"!opts.hideDisabledSeconds || (opts.hideDisabledSeconds && !isDisabled('second', s))\"\n                  :key=\"sIndex\"\n                  :class=\"{active: second === s}\"\n                  :disabled=\"isDisabled('second', s)\"\n                  :data-key=\"s\"\n                  v-text=\"s\"\n                  @click=\"select('second', s)\"></li>\n            </template>\n          </ul>\n          <ul v-if=\"column === 'apm'\" :key=\"column\" class=\"apms\" @scroll=\"keepFocusing\">\n            <li class=\"hint\" v-text=\"apmLabelText\"></li>\n            <template v-for=\"(a, aIndex) in apms\">\n              <li v-if=\"!opts.hideDisabledHours || (opts.hideDisabledHours && !isDisabled('apm', a))\"\n                  :key=\"aIndex\"\n                  :class=\"{active: apm === a}\"\n                  :disabled=\"isDisabled('apm', a)\"\n                  :data-key=\"a\"\n                  v-text=\"apmDisplayText(a)\"\n                  @click=\"select('apm', a)\"></li>\n            </template>\n          </ul>\n        </template>\n      </template><!-- / Common Keyboard Support -->\n\n      <!--\n        Advanced Keyboard Support\n        Addeds hundreds of additional event lisenters\n      -->\n      <template v-if=\"advancedKeyboard\">\n        <template v-for=\"column in columnsSequence\">\n          <ul v-if=\"column === 'hour'\" :key=\"column\" class=\"hours\" tabindex=\"-1\" @scroll=\"keepFocusing\">\n            <li class=\"hint\" v-text=\"hourLabelText\" tabindex=\"-1\"></li>\n            <template v-for=\"(hr, hIndex) in hours\">\n              <li v-if=\"!opts.hideDisabledHours || (opts.hideDisabledHours && !isDisabled('hour', hr))\"\n                  :key=\"hIndex\"\n                  :class=\"{active: hour === hr}\"\n                  :tabindex=\"isDisabled('hour', hr) ? -1 : tabindex\"\n                  :data-key=\"hr\"\n                  :disabled=\"isDisabled('hour', hr)\"\n                  v-text=\"hr\"\n                  @click=\"select('hour', hr)\"\n                  @keydown.tab=\"onTab('hour', hr, $event)\"\n                  @keydown.space.prevent=\"select('hour', hr)\"\n                  @keydown.enter.prevent=\"select('hour', hr)\"\n                  @keydown.up.prevent=\"prevItem('hour', hr)\"\n                  @keydown.down.prevent=\"nextItem('hour', hr)\"\n                  @keydown.left.prevent=\"toLeftColumn('hour')\"\n                  @keydown.right.prevent=\"toRightColumn('hour')\"\n                  @keydown.esc.exact=\"debounceBlur\"\n                  @blur=\"debounceBlur\"\n                  @focus=\"keepFocusing\"></li>\n            </template>\n          </ul>\n          <ul v-if=\"column === 'minute'\" :key=\"column\" class=\"minutes\" tabindex=\"-1\" @scroll=\"keepFocusing\">\n            <li class=\"hint\" v-text=\"minuteLabelText\" tabindex=\"-1\"></li>\n            <template v-for=\"(m, mIndex) in minutes\">\n              <li v-if=\"!opts.hideDisabledMinutes || (opts.hideDisabledMinutes && !isDisabled('minute', m))\"\n                  :key=\"mIndex\"\n                  :class=\"{active: minute === m}\"\n                  :tabindex=\"isDisabled('minute', m) ? -1 : tabindex\"\n                  :data-key=\"m\"\n                  :disabled=\"isDisabled('minute', m)\"\n                  v-text=\"m\"\n                  @click=\"select('minute', m)\"\n                  @keydown.tab=\"onTab('minute', m, $event)\"\n                  @keydown.space.prevent=\"select('minute', m)\"\n                  @keydown.enter.prevent=\"select('minute', m)\"\n                  @keydown.up.prevent=\"prevItem('minute', m)\"\n                  @keydown.down.prevent=\"nextItem('minute', m)\"\n                  @keydown.left.prevent=\"toLeftColumn('minute')\"\n                  @keydown.right.prevent=\"toRightColumn('minute')\"\n                  @keydown.esc.exact=\"debounceBlur\"\n                  @blur=\"debounceBlur\"\n                  @focus=\"keepFocusing\"></li>\n            </template>\n          </ul>\n          <ul v-if=\"column === 'second'\" :key=\"column\" class=\"seconds\" tabindex=\"-1\" @scroll=\"keepFocusing\">\n            <li class=\"hint\" v-text=\"secondLabelText\" tabindex=\"-1\"></li>\n            <template v-for=\"(s, sIndex) in seconds\">\n              <li v-if=\"!opts.hideDisabledSeconds || (opts.hideDisabledSeconds && !isDisabled('second', s))\"\n                  :key=\"sIndex\"\n                  :class=\"{active: second === s}\"\n                  :tabindex=\"isDisabled('second', s) ? -1 : tabindex\"\n                  :data-key=\"s\"\n                  :disabled=\"isDisabled('second', s)\"\n                  v-text=\"s\"\n                  @click=\"select('second', s)\"\n                  @keydown.tab=\"onTab('second', s, $event)\"\n                  @keydown.space.prevent=\"select('second', s)\"\n                  @keydown.enter.prevent=\"select('second', s)\"\n                  @keydown.up.prevent=\"prevItem('second', s)\"\n                  @keydown.down.prevent=\"nextItem('second', s)\"\n                  @keydown.left.prevent=\"toLeftColumn('second')\"\n                  @keydown.right.prevent=\"toRightColumn('second')\"\n                  @keydown.esc.exact=\"debounceBlur\"\n                  @blur=\"debounceBlur\"\n                  @focus=\"keepFocusing\"></li>\n            </template>\n          </ul>\n          <ul v-if=\"column === 'apm'\" :key=\"column\" class=\"apms\" tabindex=\"-1\" @scroll=\"keepFocusing\">\n            <li class=\"hint\" v-text=\"apmLabelText\" tabindex=\"-1\"></li>\n            <template v-for=\"(a, aIndex) in apms\">\n              <li v-if=\"!opts.hideDisabledHours || (opts.hideDisabledHours && !isDisabled('apm', a))\"\n                  :key=\"aIndex\"\n                  :class=\"{active: apm === a}\"\n                  :tabindex=\"isDisabled('apm', a) ? -1 : tabindex\"\n                  :data-key=\"a\"\n                  :disabled=\"isDisabled('apm', a)\"\n                  v-text=\"apmDisplayText(a)\"\n                  @click=\"select('apm', a)\"\n                  @keydown.tab=\"onTab('apm', a, $event)\"\n                  @keydown.space.prevent=\"select('apm', a)\"\n                  @keydown.enter.prevent=\"select('apm', a)\"\n                  @keydown.up.prevent=\"prevItem('apm', a)\"\n                  @keydown.down.prevent=\"nextItem('apm', a)\"\n                  @keydown.left.prevent=\"toLeftColumn('apm')\"\n                  @keydown.right.prevent=\"toRightColumn('apm')\"\n                  @keydown.esc.exact=\"debounceBlur\"\n                  @blur=\"debounceBlur\"\n                  @focus=\"keepFocusing\"></li>\n            </template>\n          </ul>\n        </template>\n      </template><!-- / Advanced Keyboard Support -->\n    </div>\n  </div>\n</span>\n</template>\n\n<style>\n.vue__time-picker {\n  display: inline-block;\n  position: relative;\n  font-size: 1em;\n  width: 10em;\n  font-family: sans-serif;\n  vertical-align: middle;\n}\n\n.vue__time-picker * {\n  box-sizing: border-box;\n}\n\n.vue__time-picker input.display-time {\n  border: 1px solid #d2d2d2;\n  width: 10em;\n  height: 2.2em;\n  padding: 0.3em 0.5em;\n  font-size: 1em;\n}\n\n.vue__time-picker input.has-custom-icon {\n  padding-left: 1.8em;\n}\n\n.vue__time-picker input.display-time.invalid:not(.skip-error-style) {\n  border-color: #cc0033;\n  outline-color: #cc0033;\n}\n\n.vue__time-picker input.display-time:disabled,\n.vue__time-picker input.display-time.disabled {\n  color: #d2d2d2;\n}\n\n.vue__time-picker .controls {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  right: 0;\n  z-index: 3;\n\n  display: flex;\n  flex-flow: row nowrap;\n  justify-content: flex-end;\n  align-items: stretch;\n\n  /* Prevent browser focusing on the controls layer */\n  pointer-events: none;\n}\n\n.vue__time-picker .controls > * {\n  cursor: pointer;\n  \n  width: auto;\n  display: flex;\n  flex-flow: column nowrap;\n  justify-content: center;\n  align-items: center;\n\n  padding: 0 0.35em;\n\n  color: #d2d2d2;\n  line-height: 100%;\n  font-style: normal;\n\n  /* Resume pointer-events on children components */\n  pointer-events: initial;\n\n  transition: color .2s, opacity .2s;\n}\n\n.vue__time-picker .controls > *:hover {\n  color: #797979;\n}\n\n.vue__time-picker .controls > *:focus,\n.vue__time-picker .controls > *:active {\n  outline: 0;\n}\n\n.vue__time-picker .controls .char {\n  font-size: 1.1em;\n  line-height: 100%;\n\n  /* Vertical align fixes for webkit browsers only */\n  -webkit-margin-before: -0.15em;\n}\n\n.vue__time-picker .custom-icon {\n  z-index: 2;\n  position: absolute;\n  left: 0;\n  top: 0;\n  bottom: 0;\n  width: 1.8em;\n\n  display: flex;\n  flex-flow: column nowrap;\n  justify-content: center;\n  align-items: center;\n\n  /* pass down mouse events to the <input> underneath */\n  pointer-events: none;\n}\n\n.vue__time-picker .custom-icon img,\n.vue__time-picker .custom-icon svg,\n.vue__time-picker .controls img,\n.vue__time-picker .controls svg {\n  display: inline-block;\n  vertical-align: middle;\n  margin: 0;\n  border: 0;\n  outline: 0;\n  max-width: 1em;\n  height: auto;\n}\n\n.vue__time-picker .time-picker-overlay {\n  z-index: 4;\n  position: fixed;\n  top: 0;\n  left: 0;\n  right: 0;\n  bottom: 0;\n}\n\n.vue__time-picker .dropdown,\n.vue__time-picker-dropdown {\n  position: absolute;\n  z-index: 5;\n  top: calc(2.2em + 2px);\n  left: 0;\n  background: #fff;\n  box-shadow: 0 1px 6px rgba(0,0,0,0.15);\n  width: 10em;\n  height: 10em;\n  font-weight: normal;\n}\n\n/* Dropdown class when \"append-to-body\" is on */\n.vue__time-picker-dropdown {\n  position: fixed;\n  z-index: 100;\n}\n\n.vue__time-picker .dropdown.drop-up,\n.vue__time-picker-dropdown.drop-up {\n  top: auto;\n  bottom: calc(2.2em + 1px);\n}\n\n.vue__time-picker .dropdown .select-list,\n.vue__time-picker-dropdown .select-list {\n  width: 10em;\n  height: 10em;\n  overflow: hidden;\n  display: flex;\n  flex-flow: row nowrap;\n  align-items: stretch;\n  justify-content: space-between;\n}\n\n.vue__time-picker .dropdown .select-list:focus,\n.vue__time-picker .dropdown .select-list:active,\n.vue__time-picker-dropdown .select-list:focus,\n.vue__time-picker-dropdown .select-list:active {\n  outline: 0;\n}\n\n.vue__time-picker .dropdown ul,\n.vue__time-picker-dropdown ul {\n  padding: 0;\n  margin: 0;\n  list-style: none;\n  outline: 0;\n\n  flex: 1 1 0.00001px;\n  overflow-x: hidden;\n  overflow-y: auto;\n}\n\n.vue__time-picker .dropdown ul.minutes,\n.vue__time-picker .dropdown ul.seconds,\n.vue__time-picker .dropdown ul.apms,\n.vue__time-picker-dropdown ul.minutes,\n.vue__time-picker-dropdown ul.seconds,\n.vue__time-picker-dropdown ul.apms {\n  border-left: 1px solid #fff;\n}\n\n.vue__time-picker .dropdown ul li,\n.vue__time-picker-dropdown ul li {\n  list-style: none;\n  text-align: center;\n  padding: 0.3em 0;\n  color: #161616;\n}\n\n.vue__time-picker .dropdown ul li:not(.hint):not([disabled]):hover,\n.vue__time-picker .dropdown ul li:not(.hint):not([disabled]):focus,\n.vue__time-picker-dropdown ul li:not(.hint):not([disabled]):hover,\n.vue__time-picker-dropdown ul li:not(.hint):not([disabled]):focus  {\n  background: rgba(0,0,0,.08);\n  color: #161616;\n  cursor: pointer;\n}\n\n.vue__time-picker .dropdown ul li:not([disabled]).active,\n.vue__time-picker .dropdown ul li:not([disabled]).active:hover,\n.vue__time-picker .dropdown ul li:not([disabled]).active:focus,\n.vue__time-picker-dropdown ul li:not([disabled]).active,\n.vue__time-picker-dropdown ul li:not([disabled]).active:hover,\n.vue__time-picker-dropdown ul li:not([disabled]).active:focus {\n  background: #41B883;\n  color: #fff;\n}\n\n.vue__time-picker .dropdown ul li[disabled],\n.vue__time-picker .dropdown ul li[disabled]:hover,\n.vue__time-picker-dropdown ul li[disabled],\n.vue__time-picker-dropdown ul li[disabled]:hover {\n  background: transparent;\n  opacity: 0.3;\n  cursor: not-allowed;\n}\n\n.vue__time-picker .dropdown .hint,\n.vue__time-picker-dropdown .hint {\n  color: #a5a5a5;\n  cursor: default;\n  font-size: 0.8em;\n}\n</style>\n"
  }
]