WebFileServer
Changes
FileServer/.vs/FileServer/v15/.suo 0(+0 -0)
FileServer/Model/Entities/Base/BaseRepository.cs 31(+18 -13)
FileServer/Model/Entities/Users/User.cs 13(+12 -1)
FileServer/Model/Model.csproj.user 2(+1 -1)
FileServer/Model/UnitsOfWork/UOW.cs 45(+29 -16)
FileServer/SPA/index.html 3(+3 -0)
FileServer/SPA/package.json 1(+1 -0)
FileServer/SPA/SPA.njsproj 2(+1 -1)
FileServer/SPA/src/Tools/ApiQuery.js 3(+2 -1)
FileServer/SPA/webpack.config.js 6(+4 -2)
FileServer/Web/Controllers/API/UserController.cs 128(+118 -10)
FileServer/Web/Global.asax.cs 5(+3 -2)
FileServer/Web/Models/EditUserModel.cs 21(+14 -7)
FileServer/Web/Scripts/app_bundle.js 36(+27 -9)
FileServer/Web/Web.csproj.user 2(+1 -1)
Details
FileServer/.vs/FileServer/v15/.suo 0(+0 -0)
diff --git a/FileServer/.vs/FileServer/v15/.suo b/FileServer/.vs/FileServer/v15/.suo
index d785f49..d13f2c9 100644
Binary files a/FileServer/.vs/FileServer/v15/.suo and b/FileServer/.vs/FileServer/v15/.suo differ
diff --git a/FileServer/Model/Entities/Base/Base_FS_Repository.cs b/FileServer/Model/Entities/Base/Base_FS_Repository.cs
index b8c631c..f75d59a 100644
--- a/FileServer/Model/Entities/Base/Base_FS_Repository.cs
+++ b/FileServer/Model/Entities/Base/Base_FS_Repository.cs
@@ -15,26 +15,27 @@ namespace Model.Entities.Base
protected DbSet<FS_Item> Set_Fs => context.Set<FS_Item>();
protected readonly Enum_BaseDirectoryEntity RepoType;
+ public override void RepoInit() { }
public Base_FS_Repository(UOW UOW, Enum_BaseDirectoryEntity type) : base(UOW)
{
this.RepoType = type;
}
- public override T GetFromDBNoChange(T elem)
- {
- using (var context = new Context())
- {
- var en = context.Set<FS_Item>().
- FirstOrDefault(e => e.ID == elem.ID);//.
- //Include(e => e.Parent).
- //FirstOrDefault();
-
- //context.Entry(en).Reference(e => e.Parent).Load();
- var p = en.PhysicalPath;
-
- return (T)en;
- }
- }
+ //public override T GetFromDBNoChange(T elem)
+ //{
+ // using (var context = new Context())
+ // {
+ // var en = context.Set<FS_Item>().
+ // FirstOrDefault(e => e.ID == elem.ID);//.
+ // //Include(e => e.Parent).
+ // //FirstOrDefault();
+
+ // //context.Entry(en).Reference(e => e.Parent).Load();
+ // var p = en.PhysicalPath;
+
+ // return (T)en;
+ // }
+ //}
public override T Create(T elem)
{
FileServer/Model/Entities/Base/BaseRepository.cs 31(+18 -13)
diff --git a/FileServer/Model/Entities/Base/BaseRepository.cs b/FileServer/Model/Entities/Base/BaseRepository.cs
index 465a96b..480c10f 100644
--- a/FileServer/Model/Entities/Base/BaseRepository.cs
+++ b/FileServer/Model/Entities/Base/BaseRepository.cs
@@ -20,6 +20,8 @@ namespace Model.Entities.Base
protected readonly UOW UOW;
protected Context context => UOW.context;
+ //Иницилизация репозитория данного типа при первом запуске
+ public abstract void RepoInit();
public BaseRepository(UOW UOW)
{
//this.context = context;
@@ -47,14 +49,14 @@ namespace Model.Entities.Base
/// </summary>
/// <param name="elem"></param>
/// <returns></returns>
- public virtual T GetFromDBNoChange(T elem)
- {
- using (var context = new Context())
- {
- return context.Set<T>().
- FirstOrDefault(e => e.ID == elem.ID);
- }
- }
+ //public virtual T GetFromDBNoChange(T elem)
+ //{
+ // using (var context = new Context())
+ // {
+ // return context.Set<T>().
+ // FirstOrDefault(e => e.ID == elem.ID);
+ // }
+ //}
@@ -73,13 +75,16 @@ namespace Model.Entities.Base
protected abstract void Validation_Update(T old, T elem);
public virtual void Update(T elem)
{
- var change_entity = GetFromDBNoChange(elem);
-
- if (change_entity == null)
- throw new Exception("old value not found");
+ using (var ReadContext = new Context())
+ {
+ var change_entity = context.Set<T>().AsNoTracking().
+ FirstOrDefault(e => e.ID == elem.ID);
- Validation_Update(change_entity, elem);
+ if (change_entity == null)
+ throw new Exception("old value not found");
+ Validation_Update(change_entity, elem);
+ }
context.SaveChanges();
}
diff --git a/FileServer/Model/Entities/Users/Group.cs b/FileServer/Model/Entities/Users/Group.cs
index b5ca3b3..33899bb 100644
--- a/FileServer/Model/Entities/Users/Group.cs
+++ b/FileServer/Model/Entities/Users/Group.cs
@@ -57,7 +57,7 @@ namespace Model.Entities.Users
public class DirectoryPermissions
{
/// <summary>
- /// key - GroupID
+ /// key - Directory ID
/// </summary>
public Dictionary<int, Permission> Permissions { private set; get; } = new Dictionary<int, Permission>();
diff --git a/FileServer/Model/Entities/Users/Repo/Repo_Group.cs b/FileServer/Model/Entities/Users/Repo/Repo_Group.cs
index 3b66aa5..b64310c 100644
--- a/FileServer/Model/Entities/Users/Repo/Repo_Group.cs
+++ b/FileServer/Model/Entities/Users/Repo/Repo_Group.cs
@@ -29,19 +29,19 @@ namespace Model.Entities.Users
EnumDefaultGroups.Анонимные.ToString()
};
+ public override void RepoInit()
+ {
+ foreach (var elem in DefaultGroupsNames)
+ {
+ if (All_NoTrack.FirstOrDefault(e => e.Name == elem) == null)
+ Create(new Group() { Name = elem});
+ }
+ }
public Repo_Group(UOW UOW) : base(UOW) { }
public Group GetDefaultGroup(EnumDefaultGroups en)
{
- var group = All.FirstOrDefault(e => e.Name == en.ToString());
-
- if (group == null)
- group = Create(new Group()
- {
- Name = en.ToString()
- });
-
- return group;
+ return All.FirstOrDefault(e => e.Name == en.ToString()); ;
}
diff --git a/FileServer/Model/Entities/Users/Repo/Repo_User.cs b/FileServer/Model/Entities/Users/Repo/Repo_User.cs
index d334094..ef172d0 100644
--- a/FileServer/Model/Entities/Users/Repo/Repo_User.cs
+++ b/FileServer/Model/Entities/Users/Repo/Repo_User.cs
@@ -11,35 +11,53 @@ namespace Model.Entities.Users
{
public class Repo_User : BaseRepository<User>
{
+ public override void RepoInit()
+ {
+ if (All_NoTrack.Count() == 0)
+ {
+ Create(new User()
+ {
+ Login = "Admin",
+ Password = "Admin",
+ IsActive = true,
+ Groups = new List<Group>()
+ {
+ UOW.Repo_Group.GetDefaultGroup(EnumDefaultGroups.Администраторы)
+ }
+ });
+ }
+ }
public Repo_User(UOW UOW) : base(UOW) { }
protected override void Validation_Create(User elem)
{
if (string.IsNullOrEmpty(elem.Login) || string.IsNullOrEmpty(elem.Password))
- throw new Exception();
+ throw new Exception("Login or Password is null or empty");
if (All_NoTrack.FirstOrDefault(e => e.Login == elem.Login) != null)
- throw new Exception();
+ throw new Exception("login already exists");
if (elem.Groups.Count() == 0)
- throw new Exception();
+ throw new Exception("user groups is empty");
}
protected override void Validation_Update(User old, User elem)
{
if (string.IsNullOrEmpty(elem.Login) || string.IsNullOrEmpty(elem.Password))
- throw new Exception();
+ throw new Exception("Login or Password is null or empty");
- if (elem.Groups.Count() == 0)
- throw new Exception();
+ if (old.Login != elem.Login)
+ if (All_NoTrack.FirstOrDefault(e => e.Login == elem.Login) != null)
+ throw new Exception("Change login already exists");
- if (All_NoTrack.FirstOrDefault(e => e.Login == elem.Login) != null)
- throw new Exception();
+ if (elem.Groups.Count() == 0)
+ throw new Exception("user groups is empty");
}
protected override void Validation_Delete(User elem)
{
- throw new NotImplementedException();
+ if (elem.ID == 1)
+ throw new Exception("Error try admin delete");
}
}
}
FileServer/Model/Entities/Users/User.cs 13(+12 -1)
diff --git a/FileServer/Model/Entities/Users/User.cs b/FileServer/Model/Entities/Users/User.cs
index 9ed95d7..9b5acd8 100644
--- a/FileServer/Model/Entities/Users/User.cs
+++ b/FileServer/Model/Entities/Users/User.cs
@@ -9,6 +9,7 @@ using System.ComponentModel.DataAnnotations;
using Model.Entities.Base;
using Model.Entities.Files;
+using Model.ViewModel;
namespace Model.Entities.Users
{
@@ -29,10 +30,20 @@ namespace Model.Entities.Users
}
}
+ [Obsolete]
+ public User() { }
+ public User(string Login, string Password, bool IsActive, IEnumerable<Group> Groups)
+ {
+ this.Login = Login;
+ this.Password = Password;
+ this.IsActive = IsActive;
+
+ this. Groups = new List<Group>(Groups);
+ }
- public virtual List<Group> Groups { set; get; } = new List<Group>();
+ public virtual List<Group> Groups { set; get; } = new List<Group>();
public virtual List<FS_Item> FS_Items { set; get; } = new List<FS_Item>();
FileServer/Model/Model.csproj.user 2(+1 -1)
diff --git a/FileServer/Model/Model.csproj.user b/FileServer/Model/Model.csproj.user
index 944ec00..6cbe588 100644
--- a/FileServer/Model/Model.csproj.user
+++ b/FileServer/Model/Model.csproj.user
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
- <ProjectView>ShowAllFiles</ProjectView>
+ <ProjectView>ProjectFiles</ProjectView>
</PropertyGroup>
</Project>
\ No newline at end of file
FileServer/Model/UnitsOfWork/UOW.cs 45(+29 -16)
diff --git a/FileServer/Model/UnitsOfWork/UOW.cs b/FileServer/Model/UnitsOfWork/UOW.cs
index 3c9ac69..6c03089 100644
--- a/FileServer/Model/UnitsOfWork/UOW.cs
+++ b/FileServer/Model/UnitsOfWork/UOW.cs
@@ -14,7 +14,7 @@ namespace Model.UnitsOfWork
{
public class UOW
{
- public readonly Context context = new Context();
+ public readonly Context context;
public readonly Repo_SRootDirectory Repo_SRootDirectory;
public readonly Repo_SDirectory Repo_SDirectory;
@@ -37,28 +37,27 @@ namespace Model.UnitsOfWork
public UOW()
{
+ context = new Context();
+
Repo_Group = new Repo_Group(this);
Repo_User = new Repo_User(this);
Repo_SRootDirectory = new Repo_SRootDirectory(this);
Repo_SDirectory = new Repo_SDirectory(this);
Repo_SFile = new Repo_SFile(this);
- Repo_SFileUpload = new Repo_SFileUpload(this);
-
+ Repo_SFileUpload = new Repo_SFileUpload(this);
+ }
+ public UOW(bool clear)
+ {
+ context = new Context(clear);
- if (Repo_User.All_NoTrack.Count() == 0)
- {
- Repo_User.Create(new User()
- {
- Login = "Admin",
- Password = "Admin",
- IsActive = true,
- Groups = new List<Group>()
- {
- Repo_Group.GetDefaultGroup(EnumDefaultGroups.Администраторы)
- }
- });
- }
+ Repo_Group = new Repo_Group(this);
+ Repo_User = new Repo_User(this);
+
+ Repo_SRootDirectory = new Repo_SRootDirectory(this);
+ Repo_SDirectory = new Repo_SDirectory(this);
+ Repo_SFile = new Repo_SFile(this);
+ Repo_SFileUpload = new Repo_SFileUpload(this);
}
@@ -119,5 +118,19 @@ namespace Model.UnitsOfWork
}
}
+ public static UOW InitRepo(bool Clear)
+ {
+ var uow = new UOW(Clear);
+
+ uow.Repo_Group.RepoInit();
+ uow.Repo_User.RepoInit();
+
+ uow.Repo_SRootDirectory.RepoInit();
+ uow.Repo_SDirectory.RepoInit();
+ uow.Repo_SFile.RepoInit();
+ uow.Repo_SFileUpload.RepoInit();
+
+ return uow;
+ }
}
}
FileServer/SPA/index.html 3(+3 -0)
diff --git a/FileServer/SPA/index.html b/FileServer/SPA/index.html
index acc8ce4..6d6950f 100644
--- a/FileServer/SPA/index.html
+++ b/FileServer/SPA/index.html
@@ -14,6 +14,9 @@
<!-- toastr notification -->
<link rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/toastr.min.css" />
+
+ <!-- Tabulator -->
+ <link href="https://unpkg.com/tabulator-tables@4.3.0/dist/css/tabulator.min.css" rel="stylesheet">
</head>
<body>
FileServer/SPA/package.json 1(+1 -0)
diff --git a/FileServer/SPA/package.json b/FileServer/SPA/package.json
index 1f80e8b..92c4661 100644
--- a/FileServer/SPA/package.json
+++ b/FileServer/SPA/package.json
@@ -28,6 +28,7 @@
"react-bootstrap": "^1.0.0-beta.10",
"react-dom": "^16.8.6",
"react-router-dom": "^4.3.1",
+ "react-tabulator": "^0.9.1",
"toastr": "^2.1.4"
}
}
FileServer/SPA/SPA.njsproj 2(+1 -1)
diff --git a/FileServer/SPA/SPA.njsproj b/FileServer/SPA/SPA.njsproj
index 0254565..872cac6 100644
--- a/FileServer/SPA/SPA.njsproj
+++ b/FileServer/SPA/SPA.njsproj
@@ -4,7 +4,7 @@
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
<Name>SPA</Name>
<RootNamespace>SPA</RootNamespace>
- <LastActiveSolutionConfig>Debug|Any CPU</LastActiveSolutionConfig>
+ <LastActiveSolutionConfig>Release|Any CPU</LastActiveSolutionConfig>
<SaveNodeJsSettingsInProjectFile>True</SaveNodeJsSettingsInProjectFile>
</PropertyGroup>
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
diff --git a/FileServer/SPA/src/React/Controls/Admin/GroupListControl.jsx b/FileServer/SPA/src/React/Controls/Admin/GroupListControl.jsx
index 5f28270..612e747 100644
--- a/FileServer/SPA/src/React/Controls/Admin/GroupListControl.jsx
+++ b/FileServer/SPA/src/React/Controls/Admin/GroupListControl.jsx
@@ -1 +1,216 @@
-
\ No newline at end of file
+
+import React from 'react';
+import autoBind from 'react-autobind';
+import { ReactTabulator } from 'react-tabulator'
+import { Modal, Button } from 'react-bootstrap'
+
+import Log from '../../../Tools/LogTools'
+import Notification from '../../../Tools/Notification'
+
+import UserServices from '../../../Services/UserServices'
+
+export default class GroupListControl extends React.Component {
+
+ constructor(props) {
+ super(props);
+ autoBind(this);
+ Log("GroupListControl", "start");
+
+ this.state = {
+ Groups: [],
+ //ShoGroups: false,
+ //Заглушка
+ //UserGroups: {
+ // ID: -1,
+ // Name: "",
+ // Password: "",
+ // Active: false,
+ // Changes: -1,
+ // Groups: [{
+ // ID: -11,
+ // Name: "",
+ // EnterInGroup: false
+ // }]
+ //}
+ };
+
+ this.userServices = new UserServices();
+ //AutodecrementID
+ this.ID = -1;
+
+ this.columns = [
+ { title: "ID", field: "ID" },
+ { title: "Name", field: "Name", editor: "input" },
+ { title: "Password", field: "Password", editor: "input" },
+ { title: "Active", field: "Active", editor: "tick" },
+
+ { title: "Groups", formatter: this.ButtonFormatter, align: "center", cellClick: this.OnGroupsClick },
+ { title: "Delete", formatter: this.ButtonFormatter, align: "center", cellClick: this.DeleteUserClick },
+ ];
+
+ this.columns_groups = [
+ { title: "ID", field: "ID" },
+ { title: "Name", field: "Name" },
+ { title: "EnterInGroup", field: "EnterInGroup", editor: "tick" },
+ ];
+
+ this.DownloadUsers();
+ }
+
+ DownloadUsers() {
+ this.userServices.GetUsersAsync().
+ then(function (data) {
+ let users = data.Users;
+ this.Groups = data.Groups;
+ this.setState({ Users: users });
+ }.bind(this));
+ }
+ UploadUsers() {
+ this.userServices.SetUsersAsync(this.state.Users).
+ then(function (data) {
+ if (data.Successe)
+ Notification.MesOk(data.ResMessage, "Save");
+ else
+ Notification.MesEr(data.ResMessage, "Save");
+
+ this.DownloadUsers();
+ }.bind(this));
+ }
+
+ //custom formatter definition
+ ButtonFormatter(cell, formatterParams, onRendered) { //plain text value
+ return "<i class='fa fa-print'><button>Action</button></i>";
+ };
+
+ OnCellChange(cell) {
+ let users = this.state.Users;
+
+ let row = cell.getRow();
+ let ID = row._row.data.ID;
+
+ var data_row = users.filter(e => e.ID === ID)[0];
+
+ //Если NoChange то Update
+ if (data_row.Changes === 0)
+ data_row.Changes = 1;
+ }
+
+ OnCellChange_Groups(cell) {
+
+ //Если NoChange то Update
+ if (this.state.UserGroups.Changes === 0)
+ this.state.UserGroups.Changes = 1;
+ }
+
+ UpdateClick() {
+ this.DownloadUsers();
+ }
+
+
+ CreateUserCick() {
+ let new_user = {
+ ID: this.ID,
+ Name: "NewUser" + this.ID,
+ Password: "QWERTY",
+ Active: true,
+ Changes: 2, //Create
+
+ Groups: this.Groups.map((e) => {
+ return {
+ ID: e.ID,
+ Name: e.Name,
+ EnterInGroup: (e.Name == "Пользователи") ? true : false
+ };
+ })
+ };
+ this.ID--;
+
+ let users = this.state.Users;
+ users.push(new_user);
+
+ this.setState({ Users: users });
+ }
+
+ DeleteUserClick(e, cell) {
+ //let table = this.refs.table.table;
+ let row = cell.getRow();
+ let ID = row._row.data.ID;
+
+ let users = this.state.Users;
+
+ let user = users.filter(e => e.ID === ID)[0];
+
+ if (user.Changes === 2) {
+ users.splice(users.findIndex(e => e.ID === ID), 1);
+ }
+ else {
+ user.Changes = 3;
+ }
+
+ this.setState({ Users: users });
+ }
+
+ OnGroupsClick(e, cell) {
+ let row = cell.getRow();
+ let ID = row._row.data.ID;
+
+ let users = this.state.Users;
+
+ let user = users.filter(e => e.ID === ID)[0];
+
+ this.setState({ ShoGroups: true, UserGroups: user });
+ }
+ OnGroupsClose() {
+ this.setState({ ShoGroups: false });
+ }
+
+ render() {
+ return (
+ <div>
+ <button onClick={this.CreateUserCick}>CreateUser</button>
+ <button onClick={this.DownloadUsers}>Update(Изменения будут утеряны)</button>
+ <button onClick={this.UploadUsers}>SaveChanges</button>
+
+
+ <ReactTabulator ref="table"
+ data={this.state.Users.filter(e => e.Changes != 3)}
+ columns={this.columns}
+ tooltips={true}
+ layout={"fitData"}
+
+ cellEdited={this.OnCellChange}
+ />
+
+ <Modal ref="Modal"
+ show={this.state.ShoGroups}
+ onHide={this.OnGroupsClose}
+
+ size="lg"
+ aria-labelledby="contained-modal-title-vcenter"
+ centered
+ >
+ <Modal.Header closeButton>
+ <Modal.Title>User Groups: {this.state.UserGroups.ID + " " + this.state.UserGroups.Name}</Modal.Title>
+ </Modal.Header>
+ <Modal.Body>
+ <ReactTabulator ref="table_UserGroups"
+ data={this.state.UserGroups.Groups}
+ columns={this.columns_groups}
+ tooltips={true}
+ layout={"fitData"}
+
+ cellEdited={this.OnCellChange_Groups}
+ />
+ </Modal.Body>
+ <Modal.Footer>
+ <Button variant="secondary" onClick={this.OnGroupsClose}>
+ Close
+ </Button>
+ </Modal.Footer>
+ </Modal>
+
+ </div>
+ );
+ }
+}
+
diff --git a/FileServer/SPA/src/React/Controls/Admin/UserListControl.jsx b/FileServer/SPA/src/React/Controls/Admin/UserListControl.jsx
index caffb80..8f0f71f 100644
--- a/FileServer/SPA/src/React/Controls/Admin/UserListControl.jsx
+++ b/FileServer/SPA/src/React/Controls/Admin/UserListControl.jsx
@@ -1,55 +1,216 @@
+import React from 'react';
+import autoBind from 'react-autobind';
+import { ReactTabulator } from 'react-tabulator'
+import { Modal, Button } from 'react-bootstrap'
-//class UserListControl extends React.Component {
-
-// constructor(props) {
-// super(props);
-// Log("UserListControl", "start");
-
-// this.state = { data: null };
-// this.ChildRows = [];
-// //this.authServices = new AuthServices();
-// this.userServices = new UserServices();
-
-
-// }
-
-// DownloadUsers() {
-// this.userServices.GetUsersAsync().
-// then(function (data) {
-// this.setState({ data: data });
-// }.bind(this));
-// }
-// UploadUsers() {
-
-// }
-
-
-// render() {
-// let data = this.state.data;
-
-// return (
-// <div>
-// {
-// data.items.map(function (elem, i, arr) {
-// if (elem.Changes == 3)
-// return;
-
-// return [
-// <FileExplorerRow ref={row => {
-// if (row != null) this.ChildRows[i] = row;
-// else this.ChildRows.splice(i, 1);
-// }}
-// ShoSelect={false}
-// ID={i}
-// data={elem}
-// ParentComponent={this}
-// />
-// ];
-// }.bind(this))
-// }
-// </div>
-// );
-// }
-//}
+import Log from '../../../Tools/LogTools'
+import Notification from '../../../Tools/Notification'
+
+import UserServices from '../../../Services/UserServices'
+
+export default class UserListControl extends React.Component {
+
+ constructor(props) {
+ super(props);
+ autoBind(this);
+ Log("UserListControl", "start");
+
+ this.state = {
+ Users: [],
+ ShoGroups: false,
+ //Заглушка
+ UserGroups: {
+ ID: -1,
+ Name: "",
+ Password: "",
+ Active: false,
+ Changes: -1,
+ Groups: [{
+ ID: -11,
+ Name: "",
+ EnterInGroup: false
+ }]
+ }
+ };
+
+ this.userServices = new UserServices();
+ //AutodecrementID
+ this.ID = -1;
+
+ this.columns = [
+ { title: "ID", field: "ID" },
+ { title: "Name", field: "Name", editor: "input" },
+ { title: "Password", field: "Password", editor: "input" },
+ { title: "Active", field: "Active", editor: "tick" },
+
+ { title: "Groups", formatter: this.ButtonFormatter, align: "center", cellClick: this.OnGroupsClick },
+ { title: "Delete", formatter: this.ButtonFormatter, align: "center", cellClick: this.DeleteUserClick },
+ ];
+
+ this.columns_groups = [
+ { title: "ID", field: "ID" },
+ { title: "Name", field: "Name" },
+ { title: "EnterInGroup", field: "EnterInGroup", editor: "tick" },
+ ];
+
+ this.DownloadUsers();
+ }
+
+ DownloadUsers() {
+ this.userServices.GetUsersAsync().
+ then(function (data) {
+ let users = data.Users;
+ this.Groups = data.Groups;
+ this.setState({ Users: users });
+ }.bind(this));
+ }
+ UploadUsers() {
+ this.userServices.SetUsersAsync(this.state.Users).
+ then(function (data) {
+ if (data.Successe)
+ Notification.MesOk(data.ResMessage, "Save");
+ else
+ Notification.MesEr(data.ResMessage, "Save");
+
+ this.DownloadUsers();
+ }.bind(this));
+ }
+
+ //custom formatter definition
+ ButtonFormatter(cell, formatterParams, onRendered) { //plain text value
+ return "<i class='fa fa-print'><button>Action</button></i>";
+ };
+
+ OnCellChange(cell) {
+ let users = this.state.Users;
+
+ let row = cell.getRow();
+ let ID = row._row.data.ID;
+
+ var data_row = users.filter(e => e.ID === ID)[0];
+
+ //Если NoChange то Update
+ if (data_row.Changes === 0)
+ data_row.Changes = 1;
+ }
+
+ OnCellChange_Groups(cell) {
+
+ //Если NoChange то Update
+ if (this.state.UserGroups.Changes === 0)
+ this.state.UserGroups.Changes = 1;
+ }
+
+ UpdateClick() {
+ this.DownloadUsers();
+ }
+
+
+ CreateUserCick() {
+ let new_user = {
+ ID: this.ID,
+ Name: "NewUser" + this.ID,
+ Password: "QWERTY",
+ Active: true,
+ Changes: 2, //Create
+
+ Groups: this.Groups.map((e) => {
+ return {
+ ID: e.ID,
+ Name: e.Name,
+ EnterInGroup: (e.Name == "Пользователи") ? true : false
+ };
+ })
+ };
+ this.ID--;
+
+ let users = this.state.Users;
+ users.push(new_user);
+
+ this.setState({ Users: users });
+ }
+
+ DeleteUserClick(e, cell) {
+ //let table = this.refs.table.table;
+ let row = cell.getRow();
+ let ID = row._row.data.ID;
+
+ let users = this.state.Users;
+
+ let user = users.filter(e => e.ID === ID)[0];
+
+ if (user.Changes === 2) {
+ users.splice(users.findIndex(e => e.ID === ID), 1);
+ }
+ else {
+ user.Changes = 3;
+ }
+
+ this.setState({ Users: users });
+ }
+
+ OnGroupsClick(e, cell) {
+ let row = cell.getRow();
+ let ID = row._row.data.ID;
+
+ let users = this.state.Users;
+
+ let user = users.filter(e => e.ID === ID)[0];
+
+ this.setState({ ShoGroups: true, UserGroups: user });
+ }
+ OnGroupsClose() {
+ this.setState({ ShoGroups: false });
+ }
+
+ render() {
+ return (
+ <div>
+ <button onClick={this.CreateUserCick}>CreateUser</button>
+ <button onClick={this.DownloadUsers}>Update(Изменения будут утеряны)</button>
+ <button onClick={this.UploadUsers}>SaveChanges</button>
+
+
+ <ReactTabulator ref="table"
+ data={this.state.Users.filter(e => e.Changes != 3)}
+ columns={this.columns}
+ tooltips={true}
+ layout={"fitData"}
+
+ cellEdited={this.OnCellChange}
+ />
+
+ <Modal ref="Modal"
+ show={this.state.ShoGroups}
+ onHide={this.OnGroupsClose}
+
+ size="lg"
+ aria-labelledby="contained-modal-title-vcenter"
+ centered
+ >
+ <Modal.Header closeButton>
+ <Modal.Title>User Groups: {this.state.UserGroups.ID + " " + this.state.UserGroups.Name}</Modal.Title>
+ </Modal.Header>
+ <Modal.Body>
+ <ReactTabulator ref="table_UserGroups"
+ data={this.state.UserGroups.Groups}
+ columns={this.columns_groups}
+ tooltips={true}
+ layout={"fitData"}
+
+ cellEdited={this.OnCellChange_Groups}
+ />
+ </Modal.Body>
+ <Modal.Footer>
+ <Button variant="secondary" onClick={this.OnGroupsClose}>
+ Close
+ </Button>
+ </Modal.Footer>
+ </Modal>
+
+ </div>
+ );
+ }
+}
diff --git a/FileServer/SPA/src/React/Controls/FileExplorer/ExplorerActionsControl.jsx b/FileServer/SPA/src/React/Controls/FileExplorer/ExplorerActionsControl.jsx
index 1b4f660..b547c48 100644
--- a/FileServer/SPA/src/React/Controls/FileExplorer/ExplorerActionsControl.jsx
+++ b/FileServer/SPA/src/React/Controls/FileExplorer/ExplorerActionsControl.jsx
@@ -2,6 +2,7 @@
import React from 'react';
import autoBind from 'react-autobind';
import { Modal, Button } from 'react-bootstrap'
+import { ReactTabulator } from 'react-tabulator'
import Log from '../../../Tools/LogTools'
import Notification from '../../../Tools/Notification'
@@ -23,6 +24,14 @@ export default class ExplorerActionsControl extends React.Component {
}
+ GetUserList() {
+
+ }
+ SaveUserList() {
+
+ }
+
+
OnDownloadClick(sender) {
let selected = this.props.ParentComponent.refs.
diff --git a/FileServer/SPA/src/React/Pages/AdministratorPage.jsx b/FileServer/SPA/src/React/Pages/AdministratorPage.jsx
index 6b104aa..2a7c385 100644
--- a/FileServer/SPA/src/React/Pages/AdministratorPage.jsx
+++ b/FileServer/SPA/src/React/Pages/AdministratorPage.jsx
@@ -1,11 +1,15 @@
import React from 'react';
import autoBind from 'react-autobind';
+import { Nav } from 'react-bootstrap'
import Log from '../../Tools/LogTools'
import AuthServices from '../../Services/AuthServices'
+import MenuControl from '../Controls/MenuControl.jsx'
+import UserListControl from '../Controls/Admin/UserListControl.jsx'
+
export default class AdministratorPage extends React.Component {
@@ -43,7 +47,7 @@ export default class AdministratorPage extends React.Component {
<div>
<Nav variant="tabs">
<Nav.Item>
- <Nav.Link onClick={this.OnUsersClick}> Users</Nav.Link>
+ <Nav.Link onClick={this.OnUsersClick}>Users</Nav.Link>
</Nav.Item>
<Nav.Item>
<Nav.Link onClick={this.OnGroupsClick}> Groups</Nav.Link>
@@ -53,7 +57,7 @@ export default class AdministratorPage extends React.Component {
{this.state.ActiveWindows == 0
?
<div>
- UsersWindows
+ <UserListControl ref="UserListControl" />
</div>
:
<div>
diff --git a/FileServer/SPA/src/Services/UserServices.js b/FileServer/SPA/src/Services/UserServices.js
index 4aa71a2..92cf68d 100644
--- a/FileServer/SPA/src/Services/UserServices.js
+++ b/FileServer/SPA/src/Services/UserServices.js
@@ -14,6 +14,14 @@ export default class UserServices {
return await ApiQuery(this.URL_GetUsers, "Post")
.then(function (data) {
return data;
+ });
+ }
+
+ async SetUsersAsync(users) {
+
+ return await ApiQuery(this.URL_SetUsers, "Post", users)
+ .then(function (data) {
+ return data;
}.bind(this));
}
FileServer/SPA/src/Tools/ApiQuery.js 3(+2 -1)
diff --git a/FileServer/SPA/src/Tools/ApiQuery.js b/FileServer/SPA/src/Tools/ApiQuery.js
index 9237efb..fb1b71b 100644
--- a/FileServer/SPA/src/Tools/ApiQuery.js
+++ b/FileServer/SPA/src/Tools/ApiQuery.js
@@ -8,7 +8,8 @@ import Log from './LogTools'
//data: данные
export default function ApiQuery(url, method, data){
Log("ApiQuery", "query to " + url);
-
+ //let json = JSON.stringify(data);
+ //debugger;
return fetch(
url,
{
FileServer/SPA/webpack.config.js 6(+4 -2)
diff --git a/FileServer/SPA/webpack.config.js b/FileServer/SPA/webpack.config.js
index f974acf..aa96d11 100644
--- a/FileServer/SPA/webpack.config.js
+++ b/FileServer/SPA/webpack.config.js
@@ -55,8 +55,10 @@ module.exports = {
overlay: true,
//��������� ��������
openPage: 'build/index.html',
- //��� ��������� �������������
- //historyApiFallback: true,
+ //SPA route. ���������� index ���� ���� �������� �� ������
+ historyApiFallback: {
+ index: 'index.html'
+ },
proxy: {
//historyApiFallback: true,
diff --git a/FileServer/Web/Controllers/API/AuthController.cs b/FileServer/Web/Controllers/API/AuthController.cs
index 727f083..9026c00 100644
--- a/FileServer/Web/Controllers/API/AuthController.cs
+++ b/FileServer/Web/Controllers/API/AuthController.cs
@@ -43,7 +43,7 @@ namespace Web.Controllers.API
var j = Json(new AuthResult(
false,
- "Пользователь не найден или заблокирован",
+ "Пользователь не найден или заблокирован/Время авторизации истекло",
"", ""));
if (user != null)
@@ -59,7 +59,7 @@ namespace Web.Controllers.API
{
return Json(new AuthResult(
false,
- "Пользователь не найден или заблокирован",
+ "Пользователь не найден или заблокирован/Время авторизации истекло",
"", ""));
}
}
FileServer/Web/Controllers/API/UserController.cs 128(+118 -10)
diff --git a/FileServer/Web/Controllers/API/UserController.cs b/FileServer/Web/Controllers/API/UserController.cs
index 406bdd4..7a541bf 100644
--- a/FileServer/Web/Controllers/API/UserController.cs
+++ b/FileServer/Web/Controllers/API/UserController.cs
@@ -4,6 +4,7 @@ using System.Linq;
using System.Web;
using System.Web.Mvc;
+using System.Text;
using System.Data.Entity;
using Model.Entities.Users;
@@ -39,7 +40,7 @@ namespace Web.Controllers.API
{
UserListMode json;
- if (CurrentUser.IsAdmin)
+ if (CurrentUser != null && CurrentUser.IsAdmin)
{
var users = UOW.Repo_User.All_NoTrack.Include(e => e.Groups).ToList();
var groups = UOW.Repo_Group.All_NoTrack_List;
@@ -56,14 +57,19 @@ namespace Web.Controllers.API
{
ID = e2.ID,
Name = e2.Name,
- EnterInGroup = e.Groups.Contains(e2)
+ EnterInGroup = e.Groups.FirstOrDefault(e3 => e3.ID == e2.ID)!=null
}).ToList()
- }).ToList();
+ }).ToList();
json = new UserListMode(true)
{
- Users = model
+ Users = model,
+ Groups = groups.Select(e => new GroupInfo()
+ {
+ ID = e.ID,
+ Name = e.Name
+ }).ToList()
};
}
@@ -80,26 +86,128 @@ namespace Web.Controllers.API
}
[HttpPost]
- public JsonResult SetUserList(UserListMode model)
+ public JsonResult SetUserList(List<EditUserModel> model)
{
- if (CurrentUser.IsAdmin)
- {
-
+ if (!CurrentUser.IsAdmin)
+ return Json(new BaseApiResult(false, "", ""));
+ var groups = UOW.Repo_Group.All_List;
+ StringBuilder res = new StringBuilder();
+ bool HaveErr = false;
- return Json(true);
+ foreach (var elem in model)
+ {
+ var groups_id = elem.Groups.
+ Where(g => g.EnterInGroup).
+ Select(g => g.ID);
+
+ try
+ {
+ switch (elem.Changes)
+ {
+ case EnumChanges.Create:
+ UOW.Repo_User.Create(
+ new User(elem.Name, elem.Password, elem.Active,
+ groups.Where(e => groups_id.Contains(e.ID))));
+
+ res.Append(elem.ID + "Ok");
+ break;
+ case EnumChanges.Update:
+ var edited = UOW.Repo_User.All.
+ FirstOrDefault(e => e.ID == elem.ID);
+ edited.Login = elem.Name;
+ edited.Password = string.IsNullOrEmpty(elem.Password) ? edited.Password : elem.Password;
+ edited.IsActive = elem.Active;
+ edited.Groups = new List<Group>(
+ groups.Where(e => groups_id.Contains(e.ID)));
+ UOW.Repo_User.Update(edited);
+
+ res.Append(elem.ID + "Ok");
+ break;
+ case EnumChanges.Delete:
+ UOW.Repo_User.Delete(
+ UOW.Repo_User.All.
+ FirstOrDefault(e => e.ID == elem.ID));
+
+ res.Append(elem.Name + "|Ok|");
+ break;
+ }
+ }
+ catch (Exception ex)
+ {
+ res.Append(elem.Name + "|Error|" + ex.Message);
+ HaveErr = true;
+ }
}
- return Json(false);
+ return Json(new BaseApiResult(!HaveErr, res.ToString(), "SetUserList"));
}
+
public class UserListMode : BaseApiResult
{
public UserListMode(bool Successe) : base(Successe, "", "UserList") { }
public List<EditUserModel> Users;
+ public List<GroupInfo> Groups;
}
+
+ //[HttpPost]
+ //public JsonResult GetGroupList()
+ //{
+ // GroupListMode json;
+
+ // if (CurrentUser != null && CurrentUser.IsAdmin)
+ // {
+ // var groups = UOW.Repo_Group.All_NoTrack_List;
+
+ // var model = users.Select(e => new EditUserModel()
+ // {
+ // ID = e.ID,
+ // Name = e.Login,
+ // Password = "",
+ // Changes = EnumChanges.NoChange,
+ // Active = e.IsActive,
+ // Groups = groups.Select(e2 => new GroupInfo()
+ // {
+ // ID = e2.ID,
+ // Name = e2.Name,
+ // EnterInGroup = e.Groups.FirstOrDefault(e3 => e3.ID == e2.ID) != null
+ // }).ToList()
+ // }).ToList();
+
+
+ // json = new UserListMode(true)
+ // {
+ // Users = model,
+ // Groups = groups.Select(e => new GroupInfo()
+ // {
+ // ID = e.ID,
+ // Name = e.Name
+ // }).ToList()
+ // };
+
+ // }
+ // else
+ // {
+ // json = new UserListMode(false)
+ // {
+ // PermissionError = true,
+ // ResMessage = "Need admin"
+ // };
+ // }
+
+ // return Json(json);
+ //}
+ //[HttpPost]
+ //public JsonResult SetGroupList() { }
+
+ public class GroupListMode
+ {
+
+ }
+
}
}
\ No newline at end of file
diff --git a/FileServer/Web/Controllers/Base/BaseApiController.cs b/FileServer/Web/Controllers/Base/BaseApiController.cs
index dc17c0a..7b5c980 100644
--- a/FileServer/Web/Controllers/Base/BaseApiController.cs
+++ b/FileServer/Web/Controllers/Base/BaseApiController.cs
@@ -58,11 +58,11 @@ namespace Web.Controllers.Base
{
TokenData data = null;
- //try
- //{
+ try
+ {
data = TokenServices.GetData(auth.Value);
- //}
- //catch { return; }
+ }
+ catch { return; }
if (!data.IsValid)
return;
FileServer/Web/Global.asax.cs 5(+3 -2)
diff --git a/FileServer/Web/Global.asax.cs b/FileServer/Web/Global.asax.cs
index b27a5f7..eccb9f9 100644
--- a/FileServer/Web/Global.asax.cs
+++ b/FileServer/Web/Global.asax.cs
@@ -30,8 +30,9 @@ namespace Web
ValueProviderFactories.Factories.Add(new JsonValueProviderFactory());
//Очистить базу данных
- new Context(true);
- var UOW = new UOW();
+ //Проинициализирвоать базу
+ var UOW = Model.UnitsOfWork.UOW.InitRepo(true);
+
//Прочитать корневые папки
new ConfigurationServices(UOW).ReadConfiguration();
//Просканировать все папки
FileServer/Web/Models/EditUserModel.cs 21(+14 -7)
diff --git a/FileServer/Web/Models/EditUserModel.cs b/FileServer/Web/Models/EditUserModel.cs
index ad42820..45e099f 100644
--- a/FileServer/Web/Models/EditUserModel.cs
+++ b/FileServer/Web/Models/EditUserModel.cs
@@ -5,13 +5,6 @@ using System.Web;
namespace Web.Models
{
- public class GroupInfo
- {
- public int ID { set; get; }
- public string Name { set; get; }
- public bool EnterInGroup { set; get; }
- }
-
public enum EnumChanges
{
@@ -21,6 +14,20 @@ namespace Web.Models
Delete
}
+ public class RootDirInfo
+ {
+ public int ID { set; get; }
+ public string Name { set; get; }
+
+ }
+
+ public class GroupInfo
+ {
+ public int ID { set; get; }
+ public string Name { set; get; }
+ public bool EnterInGroup { set; get; }
+ }
+
public class EditUserModel
{
public int ID { set; get; }
FileServer/Web/Scripts/app_bundle.js 36(+27 -9)
diff --git a/FileServer/Web/Scripts/app_bundle.js b/FileServer/Web/Scripts/app_bundle.js
index ccdec1b..22941e0 100644
--- a/FileServer/Web/Scripts/app_bundle.js
+++ b/FileServer/Web/Scripts/app_bundle.js
@@ -1,4 +1,4 @@
-!function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/build",n(n.s=67)}([function(e,t,n){"use strict";e.exports=n(37)},function(e,t,n){e.exports=n(43)()},function(e,t,n){"use strict";function r(){return(r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}n.d(t,"a",function(){return r})},function(e,t,n){var r;
+!function(e){var t={};function n(o){if(t[o])return t[o].exports;var r=t[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(o,r,function(t){return e[t]}.bind(null,r));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/build",n(n.s=87)}([function(e,t,n){"use strict";e.exports=n(44)},function(e,t,n){"use strict";function o(){return(o=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e}).apply(this,arguments)}n.d(t,"a",function(){return o})},function(e,t,n){e.exports=n(50)()},function(e,t,n){"use strict";function o(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o<i.length;o++)n=i[o],t.indexOf(n)>=0||(r[n]=e[n]);return r}n.d(t,"a",function(){return o})},function(e,t,n){var o;
/*!
Copyright (c) 2017 Jed Watson.
Licensed under the MIT License (MIT), see
@@ -9,12 +9,22 @@
Licensed under the MIT License (MIT), see
http://jedwatson.github.io/classnames
*/
-!function(){"use strict";var n={}.hasOwnProperty;function o(){for(var e=[],t=0;t<arguments.length;t++){var r=arguments[t];if(r){var i=typeof r;if("string"===i||"number"===i)e.push(r);else if(Array.isArray(r)&&r.length){var a=o.apply(null,r);a&&e.push(a)}else if("object"===i)for(var l in r)n.call(r,l)&&r[l]&&e.push(l)}}return e.join(" ")}e.exports?(o.default=o,e.exports=o):void 0===(r=function(){return o}.apply(t,[]))||(e.exports=r)}()},function(e,t,n){"use strict";function r(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}n.d(t,"a",function(){return r})},function(e,t,n){e.exports=n(42)},function(e,t){e.exports=function(e){return e&&e.__esModule?e:{default:e}}},function(e,t,n){"use strict";var r=function(){};e.exports=r},function(e,t,n){"use strict";function r(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}n.d(t,"a",function(){return r})},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var r=!("undefined"==typeof window||!window.document||!window.document.createElement);t.default=r,e.exports=t.default},function(e,t,n){"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}(),e.exports=n(38)},function(e,t,n){"use strict";e.exports=function(e,t,n,r,o,i,a,l){if(!e){var u;if(void 0===t)u=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var s=[n,r,o,i,a,l],c=0;(u=new Error(t.replace(/%s/g,function(){return s[c++]}))).name="Invariant Violation"}throw u.framesToPop=1,u}}},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t){var n,i="#"===t[0],a="."===t[0],l=i||a?t.slice(1):t;if(r.test(l))return i?(e=e.getElementById?e:document,(n=e.getElementById(l))?[n]:[]):e.getElementsByClassName&&a?o(e.getElementsByClassName(l)):o(e.getElementsByTagName(t));return o(e.querySelectorAll(t))};var r=/^[\w-]*$/,o=Function.prototype.bind.call(Function.prototype.call,[].slice);e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e){return e&&e.ownerDocument||document},e.exports=t.default},function(e,t,n){"use strict";var r=n(6);t.__esModule=!0,t.default=function(e){if((!o&&0!==o||e)&&i.default){var t=document.createElement("div");t.style.position="absolute",t.style.top="-9999px",t.style.width="50px",t.style.height="50px",t.style.overflow="scroll",document.body.appendChild(t),o=t.offsetWidth-t.clientWidth,document.body.removeChild(t)}return o};var o,i=r(n(9));e.exports=t.default},function(e,t,n){"use strict";var r=n(6);t.__esModule=!0,t.default=function(e,t,n){var r="",c="",f=t;if("string"==typeof t){if(void 0===n)return e.style[(0,o.default)(t)]||(0,a.default)(e).getPropertyValue((0,i.default)(t));(f={})[t]=n}Object.keys(f).forEach(function(t){var n=f[t];n||0===n?(0,s.default)(t)?c+=t+"("+n+") ":r+=(0,i.default)(t)+": "+n+";":(0,l.default)(e,(0,i.default)(t))}),c&&(r+=u.transform+": "+c+";");e.style.cssText+=";"+r};var o=r(n(30)),i=r(n(55)),a=r(n(57)),l=r(n(58)),u=n(31),s=r(n(59));e.exports=t.default},function(e,t,n){var r,o;n(46),r=[n(45)],void 0===(o=function(e){return function(){var t,n,r,o=0,i={error:"error",info:"info",success:"success",warning:"warning"},a={clear:function(n,r){var o=f();t||l(o),u(n,o,r)||function(n){for(var r=t.children(),o=r.length-1;o>=0;o--)u(e(r[o]),n)}(o)},remove:function(n){var r=f();t||l(r),n&&0===e(":focus",n).length?d(n):t.children().length&&t.remove()},error:function(e,t,n){return c({type:i.error,iconClass:f().iconClasses.error,message:e,optionsOverride:n,title:t})},getContainer:l,info:function(e,t,n){return c({type:i.info,iconClass:f().iconClasses.info,message:e,optionsOverride:n,title:t})},options:{},subscribe:function(e){n=e},success:function(e,t,n){return c({type:i.success,iconClass:f().iconClasses.success,message:e,optionsOverride:n,title:t})},version:"2.1.4",warning:function(e,t,n){return c({type:i.warning,iconClass:f().iconClasses.warning,message:e,optionsOverride:n,title:t})}};return a;function l(n,r){return n||(n=f()),(t=e("#"+n.containerId)).length?t:(r&&(t=function(n){return(t=e("<div/>").attr("id",n.containerId).addClass(n.positionClass)).appendTo(e(n.target)),t}(n)),t)}function u(t,n,r){var o=!(!r||!r.force)&&r.force;return!(!t||!o&&0!==e(":focus",t).length||(t[n.hideMethod]({duration:n.hideDuration,easing:n.hideEasing,complete:function(){d(t)}}),0))}function s(e){n&&n(e)}function c(n){var i=f(),a=n.iconClass||i.iconClass;if(void 0!==n.optionsOverride&&(i=e.extend(i,n.optionsOverride),a=n.optionsOverride.iconClass||a),!function(e,t){if(e.preventDuplicates){if(t.message===r)return!0;r=t.message}return!1}(i,n)){o++,t=l(i,!0);var u=null,c=e("<div/>"),p=e("<div/>"),h=e("<div/>"),m=e("<div/>"),v=e(i.closeHtml),y={intervalId:null,hideEta:null,maxHideTime:null},g={toastId:o,state:"visible",startTime:new Date,options:i,map:n};return n.iconClass&&c.addClass(i.toastClass).addClass(a),function(){if(n.title){var e=n.title;i.escapeHtml&&(e=b(n.title)),p.append(e).addClass(i.titleClass),c.append(p)}}(),function(){if(n.message){var e=n.message;i.escapeHtml&&(e=b(n.message)),h.append(e).addClass(i.messageClass),c.append(h)}}(),i.closeButton&&(v.addClass(i.closeClass).attr("role","button"),c.prepend(v)),i.progressBar&&(m.addClass(i.progressClass),c.prepend(m)),i.rtl&&c.addClass("rtl"),i.newestOnTop?t.prepend(c):t.append(c),function(){var e="";switch(n.iconClass){case"toast-success":case"toast-info":e="polite";break;default:e="assertive"}c.attr("aria-live",e)}(),c.hide(),c[i.showMethod]({duration:i.showDuration,easing:i.showEasing,complete:i.onShown}),i.timeOut>0&&(u=setTimeout(x,i.timeOut),y.maxHideTime=parseFloat(i.timeOut),y.hideEta=(new Date).getTime()+y.maxHideTime,i.progressBar&&(y.intervalId=setInterval(C,10))),i.closeOnHover&&c.hover(E,w),!i.onclick&&i.tapToDismiss&&c.click(x),i.closeButton&&v&&v.click(function(e){e.stopPropagation?e.stopPropagation():void 0!==e.cancelBubble&&!0!==e.cancelBubble&&(e.cancelBubble=!0),i.onCloseClick&&i.onCloseClick(e),x(!0)}),i.onclick&&c.click(function(e){i.onclick(e),x()}),s(g),i.debug&&console&&console.log(g),c}function b(e){return null==e&&(e=""),e.replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(/</g,"<").replace(/>/g,">")}function x(t){var n=t&&!1!==i.closeMethod?i.closeMethod:i.hideMethod,r=t&&!1!==i.closeDuration?i.closeDuration:i.hideDuration,o=t&&!1!==i.closeEasing?i.closeEasing:i.hideEasing;if(!e(":focus",c).length||t)return clearTimeout(y.intervalId),c[n]({duration:r,easing:o,complete:function(){d(c),clearTimeout(u),i.onHidden&&"hidden"!==g.state&&i.onHidden(),g.state="hidden",g.endTime=new Date,s(g)}})}function w(){(i.timeOut>0||i.extendedTimeOut>0)&&(u=setTimeout(x,i.extendedTimeOut),y.maxHideTime=parseFloat(i.extendedTimeOut),y.hideEta=(new Date).getTime()+y.maxHideTime)}function E(){clearTimeout(u),y.hideEta=0,c.stop(!0,!0)[i.showMethod]({duration:i.showDuration,easing:i.showEasing})}function C(){var e=(y.hideEta-(new Date).getTime())/y.maxHideTime*100;m.width(e+"%")}}function f(){return e.extend({},{tapToDismiss:!0,toastClass:"toast",containerId:"toast-container",debug:!1,showMethod:"fadeIn",showDuration:300,showEasing:"swing",onShown:void 0,hideMethod:"fadeOut",hideDuration:1e3,hideEasing:"swing",onHidden:void 0,closeMethod:!1,closeDuration:!1,closeEasing:!1,closeOnHover:!0,extendedTimeOut:1e3,iconClasses:{error:"toast-error",info:"toast-info",success:"toast-success",warning:"toast-warning"},iconClass:"toast-info",positionClass:"toast-top-right",timeOut:5e3,titleClass:"toast-title",messageClass:"toast-message",escapeHtml:!1,target:"body",closeHtml:'<button type="button">×</button>',closeClass:"toast-close-button",newestOnTop:!0,preventDuplicates:!1,progressBar:!1,progressClass:"toast-progress",rtl:!1},a.options)}function d(e){t||(t=l()),e.is(":visible")||(e.remove(),e=null,0===t.children().length&&(t.remove(),r=void 0))}}()}.apply(t,r))||(e.exports=o)},function(e,t,n){"use strict";var r=n(6);t.__esModule=!0,t.default=void 0;var o=r(n(24));t.on=o.default;var i=r(n(25));t.off=i.default;var a=r(n(47));t.filter=a.default;var l=r(n(27));t.listen=l.default;var u={on:o.default,off:i.default,filter:a.default,listen:l.default};t.default=u},,,function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=a(n(0)),i=a(n(28));function a(e){return e&&e.__esModule?e:{default:e}}t.default=(0,i.default)(function(e,t,n,i,a){var l=e[t],u=void 0===l?"undefined":r(l);return o.default.isValidElement(l)?new Error("Invalid "+i+" `"+a+"` of type ReactElement supplied to `"+n+"`, expected a ReactComponent or a DOMElement. You can usually obtain a ReactComponent or DOMElement from a ReactElement by attaching a ref to it."):"object"===u&&"function"==typeof l.render||1===l.nodeType?null:new Error("Invalid "+i+" `"+a+"` of value `"+l+"` supplied to `"+n+"`, expected a ReactComponent or a DOMElement.")}),e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e){return e.replace(r,function(e,t){return t.toUpperCase()})};var r=/-(.)/g;e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var r=u(n(52)),o=u(n(15)),i=u(n(14)),a=u(n(60)),l=n(62);function u(e){return e&&e.__esModule?e:{default:e}}var s=function(){function e(e){var t=void 0===e?{}:e,n=t.hideSiblingNodes,r=void 0===n||n,o=t.handleContainerOverflow,a=void 0===o||o;this.hideSiblingNodes=r,this.handleContainerOverflow=a,this.modals=[],this.containers=[],this.data=[],this.scrollbarSize=(0,i.default)()}var t=e.prototype;return t.isContainerOverflowing=function(e){var t=this.data[this.containerIndexFromModal(e)];return t&&t.overflowing},t.containerIndexFromModal=function(e){return t=this.data,n=function(t){return-1!==t.modals.indexOf(e)},r=-1,t.some(function(e,t){if(n(e,t))return r=t,!0}),r;var t,n,r},t.setContainerStyle=function(e,t){var n={overflow:"hidden"};e.style={overflow:t.style.overflow,paddingRight:t.style.paddingRight},e.overflowing&&(n.paddingRight=parseInt((0,o.default)(t,"paddingRight")||0,10)+this.scrollbarSize+"px"),(0,o.default)(t,n)},t.removeContainerStyle=function(e,t){var n=e.style;Object.keys(n).forEach(function(e){t.style[e]=n[e]})},t.add=function(e,t,n){var o=this.modals.indexOf(e),i=this.containers.indexOf(t);if(-1!==o)return o;if(o=this.modals.length,this.modals.push(e),this.hideSiblingNodes&&(0,l.hideSiblings)(t,e),-1!==i)return this.data[i].modals.push(e),o;var u={modals:[e],classes:n?n.split(/\s+/):[],overflowing:(0,a.default)(t)};return this.handleContainerOverflow&&this.setContainerStyle(u,t),u.classes.forEach(r.default.addClass.bind(null,t)),this.containers.push(t),this.data.push(u),o},t.remove=function(e){var t=this.modals.indexOf(e);if(-1!==t){var n=this.containerIndexFromModal(e),o=this.data[n],i=this.containers[n];if(o.modals.splice(o.modals.indexOf(e),1),this.modals.splice(t,1),0===o.modals.length)o.classes.forEach(r.default.removeClass.bind(null,i)),this.handleContainerOverflow&&this.removeContainerStyle(o,i),this.hideSiblingNodes&&(0,l.showSiblings)(i,e),this.containers.splice(n,1),this.data.splice(n,1);else if(this.hideSiblingNodes){var a=o.modals[o.modals.length-1],u=a.backdrop,s=a.dialog;(0,l.ariaHidden)(!1,s),(0,l.ariaHidden)(!1,u)}}},t.isTopModal=function(e){return!!this.modals.length&&this.modals[this.modals.length-1]===e},e}();t.default=s,e.exports=t.default},function(e,t,n){"use strict";
+!function(){"use strict";var n={}.hasOwnProperty;function r(){for(var e=[],t=0;t<arguments.length;t++){var o=arguments[t];if(o){var i=typeof o;if("string"===i||"number"===i)e.push(o);else if(Array.isArray(o)&&o.length){var a=r.apply(null,o);a&&e.push(a)}else if("object"===i)for(var s in o)n.call(o,s)&&o[s]&&e.push(s)}}return e.join(" ")}e.exports?(r.default=r,e.exports=r):void 0===(o=function(){return r}.apply(t,[]))||(e.exports=o)}()},function(e,t,n){e.exports=n(49)},function(e,t){e.exports=function(e){return e&&e.__esModule?e:{default:e}}},function(e,t,n){"use strict";function o(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}n.d(t,"a",function(){return o})},function(e,t,n){"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}(),e.exports=n(45)},function(e,t,n){"use strict";var o=function(){};e.exports=o},function(e,t,n){"use strict";e.exports=function(e,t,n,o,r,i,a,s){if(!e){var l;if(void 0===t)l=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var u=[n,o,r,i,a,s],c=0;(l=new Error(t.replace(/%s/g,function(){return u[c++]}))).name="Invariant Violation"}throw l.framesToPop=1,l}}},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var o=!("undefined"==typeof window||!window.document||!window.document.createElement);t.default=o,e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t){var n,i="#"===t[0],a="."===t[0],s=i||a?t.slice(1):t;if(o.test(s))return i?(e=e.getElementById?e:document,(n=e.getElementById(s))?[n]:[]):e.getElementsByClassName&&a?r(e.getElementsByClassName(s)):r(e.getElementsByTagName(t));return r(e.querySelectorAll(t))};var o=/^[\w-]*$/,r=Function.prototype.bind.call(Function.prototype.call,[].slice);e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e){return e&&e.ownerDocument||document},e.exports=t.default},function(e,t,n){"use strict";var o=n(6);t.__esModule=!0,t.default=function(e){if((!r&&0!==r||e)&&i.default){var t=document.createElement("div");t.style.position="absolute",t.style.top="-9999px",t.style.width="50px",t.style.height="50px",t.style.overflow="scroll",document.body.appendChild(t),r=t.offsetWidth-t.clientWidth,document.body.removeChild(t)}return r};var r,i=o(n(11));e.exports=t.default},function(e,t,n){"use strict";var o=n(6);t.__esModule=!0,t.default=function(e,t,n){var o="",c="",d=t;if("string"==typeof t){if(void 0===n)return e.style[(0,r.default)(t)]||(0,a.default)(e).getPropertyValue((0,i.default)(t));(d={})[t]=n}Object.keys(d).forEach(function(t){var n=d[t];n||0===n?(0,u.default)(t)?c+=t+"("+n+") ":o+=(0,i.default)(t)+": "+n+";":(0,s.default)(e,(0,i.default)(t))}),c&&(o+=l.transform+": "+c+";");e.style.cssText+=";"+o};var r=o(n(37)),i=o(n(73)),a=o(n(75)),s=o(n(76)),l=n(38),u=o(n(77));e.exports=t.default},,function(e,t,n){"use strict";t.__esModule=!0;var o=n(0),r=n(8);t.clone=function(e){return JSON.parse(JSON.stringify(e))},t.isSameArray=function(e,t){var n=e.length;if(n!==t.length)return!1;for(;n--;)if(e[n]!==t[n])return!1;return!0},t.reactFormatter=function(e){return function(t,n,i){return i(function(){var n=t.getElement(),i=o.cloneElement(e,{cell:t});r.render(i,n.querySelector(".formatterCell"))}),'<div class="formatterCell"></div>'}}},function(e,t,n){var o,r;n(53),o=[n(52)],void 0===(r=function(e){return function(){var t,n,o,r=0,i={error:"error",info:"info",success:"success",warning:"warning"},a={clear:function(n,o){var r=d();t||s(r),l(n,r,o)||function(n){for(var o=t.children(),r=o.length-1;r>=0;r--)l(e(o[r]),n)}(r)},remove:function(n){var o=d();t||s(o),n&&0===e(":focus",n).length?p(n):t.children().length&&t.remove()},error:function(e,t,n){return c({type:i.error,iconClass:d().iconClasses.error,message:e,optionsOverride:n,title:t})},getContainer:s,info:function(e,t,n){return c({type:i.info,iconClass:d().iconClasses.info,message:e,optionsOverride:n,title:t})},options:{},subscribe:function(e){n=e},success:function(e,t,n){return c({type:i.success,iconClass:d().iconClasses.success,message:e,optionsOverride:n,title:t})},version:"2.1.4",warning:function(e,t,n){return c({type:i.warning,iconClass:d().iconClasses.warning,message:e,optionsOverride:n,title:t})}};return a;function s(n,o){return n||(n=d()),(t=e("#"+n.containerId)).length?t:(o&&(t=function(n){return(t=e("<div/>").attr("id",n.containerId).addClass(n.positionClass)).appendTo(e(n.target)),t}(n)),t)}function l(t,n,o){var r=!(!o||!o.force)&&o.force;return!(!t||!r&&0!==e(":focus",t).length||(t[n.hideMethod]({duration:n.hideDuration,easing:n.hideEasing,complete:function(){p(t)}}),0))}function u(e){n&&n(e)}function c(n){var i=d(),a=n.iconClass||i.iconClass;if(void 0!==n.optionsOverride&&(i=e.extend(i,n.optionsOverride),a=n.optionsOverride.iconClass||a),!function(e,t){if(e.preventDuplicates){if(t.message===o)return!0;o=t.message}return!1}(i,n)){r++,t=s(i,!0);var l=null,c=e("<div/>"),h=e("<div/>"),f=e("<div/>"),m=e("<div/>"),g=e(i.closeHtml),v={intervalId:null,hideEta:null,maxHideTime:null},y={toastId:r,state:"visible",startTime:new Date,options:i,map:n};return n.iconClass&&c.addClass(i.toastClass).addClass(a),function(){if(n.title){var e=n.title;i.escapeHtml&&(e=b(n.title)),h.append(e).addClass(i.titleClass),c.append(h)}}(),function(){if(n.message){var e=n.message;i.escapeHtml&&(e=b(n.message)),f.append(e).addClass(i.messageClass),c.append(f)}}(),i.closeButton&&(g.addClass(i.closeClass).attr("role","button"),c.prepend(g)),i.progressBar&&(m.addClass(i.progressClass),c.prepend(m)),i.rtl&&c.addClass("rtl"),i.newestOnTop?t.prepend(c):t.append(c),function(){var e="";switch(n.iconClass){case"toast-success":case"toast-info":e="polite";break;default:e="assertive"}c.attr("aria-live",e)}(),c.hide(),c[i.showMethod]({duration:i.showDuration,easing:i.showEasing,complete:i.onShown}),i.timeOut>0&&(l=setTimeout(w,i.timeOut),v.maxHideTime=parseFloat(i.timeOut),v.hideEta=(new Date).getTime()+v.maxHideTime,i.progressBar&&(v.intervalId=setInterval(x,10))),i.closeOnHover&&c.hover(C,E),!i.onclick&&i.tapToDismiss&&c.click(w),i.closeButton&&g&&g.click(function(e){e.stopPropagation?e.stopPropagation():void 0!==e.cancelBubble&&!0!==e.cancelBubble&&(e.cancelBubble=!0),i.onCloseClick&&i.onCloseClick(e),w(!0)}),i.onclick&&c.click(function(e){i.onclick(e),w()}),u(y),i.debug&&console&&console.log(y),c}function b(e){return null==e&&(e=""),e.replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(/</g,"<").replace(/>/g,">")}function w(t){var n=t&&!1!==i.closeMethod?i.closeMethod:i.hideMethod,o=t&&!1!==i.closeDuration?i.closeDuration:i.hideDuration,r=t&&!1!==i.closeEasing?i.closeEasing:i.hideEasing;if(!e(":focus",c).length||t)return clearTimeout(v.intervalId),c[n]({duration:o,easing:r,complete:function(){p(c),clearTimeout(l),i.onHidden&&"hidden"!==y.state&&i.onHidden(),y.state="hidden",y.endTime=new Date,u(y)}})}function E(){(i.timeOut>0||i.extendedTimeOut>0)&&(l=setTimeout(w,i.extendedTimeOut),v.maxHideTime=parseFloat(i.extendedTimeOut),v.hideEta=(new Date).getTime()+v.maxHideTime)}function C(){clearTimeout(l),v.hideEta=0,c.stop(!0,!0)[i.showMethod]({duration:i.showDuration,easing:i.showEasing})}function x(){var e=(v.hideEta-(new Date).getTime())/v.maxHideTime*100;m.width(e+"%")}}function d(){return e.extend({},{tapToDismiss:!0,toastClass:"toast",containerId:"toast-container",debug:!1,showMethod:"fadeIn",showDuration:300,showEasing:"swing",onShown:void 0,hideMethod:"fadeOut",hideDuration:1e3,hideEasing:"swing",onHidden:void 0,closeMethod:!1,closeDuration:!1,closeEasing:!1,closeOnHover:!0,extendedTimeOut:1e3,iconClasses:{error:"toast-error",info:"toast-info",success:"toast-success",warning:"toast-warning"},iconClass:"toast-info",positionClass:"toast-top-right",timeOut:5e3,titleClass:"toast-title",messageClass:"toast-message",escapeHtml:!1,target:"body",closeHtml:'<button type="button">×</button>',closeClass:"toast-close-button",newestOnTop:!0,preventDuplicates:!1,progressBar:!1,progressClass:"toast-progress",rtl:!1},a.options)}function p(e){t||(t=s()),e.is(":visible")||(e.remove(),e=null,0===t.children().length&&(t.remove(),o=void 0))}}()}.apply(t,o))||(e.exports=r)},function(e,t,n){"use strict";t.__esModule=!0;var o=n(28),r=n(56),i=n(57),a=n(17);e.exports={ReactTabulator:o.default,React15Tabulator:r.default,ReactTabulatorExample:i.default,reactFormatter:a.reactFormatter}},function(e,t,n){"use strict";var o=n(6);t.__esModule=!0,t.default=void 0;var r=o(n(32));t.on=r.default;var i=o(n(33));t.off=i.default;var a=o(n(65));t.filter=a.default;var s=o(n(35));t.listen=s.default;var l={on:r.default,off:i.default,filter:a.default,listen:s.default};t.default=l},,function(e,t,n){"use strict";
/*
object-assign
(c) Sindre Sorhus
@license MIT
-*/var r=Object.getOwnPropertySymbols,o=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable;function a(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(e){return t[e]}).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach(function(e){r[e]=e}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(var n,l,u=a(e),s=1;s<arguments.length;s++){for(var c in n=Object(arguments[s]))o.call(n,c)&&(u[c]=n[c]);if(r){l=r(n);for(var f=0;f<l.length;f++)i.call(n,l[f])&&(u[l[f]]=n[l[f]])}}return u}},function(e,t,n){"use strict";var r=n(6);t.__esModule=!0,t.default=void 0;var o=function(){};r(n(9)).default&&(o=document.addEventListener?function(e,t,n,r){return e.addEventListener(t,n,r||!1)}:document.attachEvent?function(e,t,n){return e.attachEvent("on"+t,function(t){(t=t||window.event).target=t.target||t.srcElement,t.currentTarget=e,n.call(e,t)})}:void 0);var i=o;t.default=i,e.exports=t.default},function(e,t,n){"use strict";var r=n(6);t.__esModule=!0,t.default=void 0;var o=function(){};r(n(9)).default&&(o=document.addEventListener?function(e,t,n,r){return e.removeEventListener(t,n,r||!1)}:document.attachEvent?function(e,t,n){return e.detachEvent("on"+t,n)}:void 0);var i=o;t.default=i,e.exports=t.default},function(e,t,n){"use strict";var r=n(6);t.__esModule=!0,t.default=void 0;var o=r(n(9)).default?function(e,t){return e.contains?e.contains(t):e.compareDocumentPosition?e===t||!!(16&e.compareDocumentPosition(t)):i(e,t)}:i;function i(e,t){if(t)do{if(t===e)return!0}while(t=t.parentNode);return!1}t.default=o,e.exports=t.default},function(e,t,n){"use strict";var r=n(6);t.__esModule=!0,t.default=void 0;var o=r(n(9)),i=r(n(24)),a=r(n(25)),l=function(){};o.default&&(l=function(e,t,n,r){return(0,i.default)(e,t,n,r),function(){(0,a.default)(e,t,n,r)}});var u=l;t.default=u,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){function t(t,n,r,o,i,a){var l=o||"<<anonymous>>",u=a||r;if(null==n[r])return t?new Error("Required "+i+" `"+u+"` was not specified in `"+l+"`."):null;for(var s=arguments.length,c=Array(s>6?s-6:0),f=6;f<s;f++)c[f-6]=arguments[f];return e.apply(void 0,[n,r,l,i,u].concat(c))}var n=t.bind(null,!1);return n.isRequired=t.bind(null,!0),n},e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t){return e.classList?!!t&&e.classList.contains(t):-1!==(" "+(e.className.baseVal||e.className)+" ").indexOf(" "+t+" ")},e.exports=t.default},function(e,t,n){"use strict";var r=n(6);t.__esModule=!0,t.default=function(e){return(0,o.default)(e.replace(i,"ms-"))};var o=r(n(21)),i=/^-ms-/;e.exports=t.default},function(e,t,n){"use strict";var r=n(6);t.__esModule=!0,t.default=t.animationEnd=t.animationDelay=t.animationTiming=t.animationDuration=t.animationName=t.transitionEnd=t.transitionDuration=t.transitionDelay=t.transitionTiming=t.transitionProperty=t.transform=void 0;var o,i,a,l,u,s,c,f,d,p,h,m=r(n(9)),v="transform";if(t.transform=v,t.animationEnd=a,t.transitionEnd=i,t.transitionDelay=c,t.transitionTiming=s,t.transitionDuration=u,t.transitionProperty=l,t.animationDelay=h,t.animationTiming=p,t.animationDuration=d,t.animationName=f,m.default){var y=function(){for(var e,t,n=document.createElement("div").style,r={O:function(e){return"o"+e.toLowerCase()},Moz:function(e){return e.toLowerCase()},Webkit:function(e){return"webkit"+e},ms:function(e){return"MS"+e}},o=Object.keys(r),i="",a=0;a<o.length;a++){var l=o[a];if(l+"TransitionProperty"in n){i="-"+l.toLowerCase(),e=r[l]("TransitionEnd"),t=r[l]("AnimationEnd");break}}!e&&"transitionProperty"in n&&(e="transitionend");!t&&"animationName"in n&&(t="animationend");return n=null,{animationEnd:t,transitionEnd:e,prefix:i}}();o=y.prefix,t.transitionEnd=i=y.transitionEnd,t.animationEnd=a=y.animationEnd,t.transform=v=o+"-"+v,t.transitionProperty=l=o+"-transition-property",t.transitionDuration=u=o+"-transition-duration",t.transitionDelay=c=o+"-transition-delay",t.transitionTiming=s=o+"-transition-timing-function",t.animationName=f=o+"-animation-name",t.animationDuration=d=o+"-animation-duration",t.animationTiming=p=o+"-animation-delay",t.animationDelay=h=o+"-animation-timing-function"}var g={transform:v,end:i,property:l,timing:s,delay:c,duration:u};t.default=g},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t){return null==e?t:(e="function"==typeof e?e():e,o.default.findDOMNode(e)||null)};var r,o=(r=n(10))&&r.__esModule?r:{default:r};e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t){var n=void 0===t?{}:t,r=n.propTypes,i=n.defaultProps,a=n.allowFallback,l=void 0!==a&&a,u=n.displayName,s=void 0===u?e.name||e.displayName:u,c=function(t,n){return e(t,n)};return Object.assign(o.default.forwardRef||!l?o.default.forwardRef(c):function(e){return c(e,null)},{displayName:s,propTypes:r,defaultProps:i})};var r,o=(r=n(0))&&r.__esModule?r:{default:r}},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var r=v(n(48)),o=v(n(26)),i=v(n(9)),a=v(n(27)),l=v(n(1)),u=v(n(20)),s=v(n(49)),c=v(n(0)),f=v(n(10)),d=v(n(22)),p=v(n(63)),h=v(n(32)),m=v(n(65));function v(e){return e&&e.__esModule?e:{default:e}}function y(){return(y=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function g(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}var b=new d.default;var x=function(e){var t,n;function l(){for(var t,n=arguments.length,i=new Array(n),l=0;l<n;l++)i[l]=arguments[l];return(t=e.call.apply(e,[this].concat(i))||this).state={exited:!t.props.show},t.onPortalRendered=function(){t.props.onShow&&t.props.onShow(),t.autoFocus()},t.onShow=function(){var e=(0,m.default)(g(g(t))),n=(0,h.default)(t.props.container,e.body);t.props.manager.add(g(g(t)),n,t.props.containerClassName),t.removeKeydownListener=(0,a.default)(e,"keydown",t.handleDocumentKeyDown),t.removeFocusListener=(0,a.default)(e,"focus",function(){return setTimeout(t.enforceFocus)},!0)},t.onHide=function(){t.props.manager.remove(g(g(t))),t.removeKeydownListener(),t.removeFocusListener(),t.props.restoreFocus&&t.restoreLastFocus()},t.setDialogRef=function(e){t.dialog=e},t.setBackdropRef=function(e){t.backdrop=e&&f.default.findDOMNode(e)},t.handleHidden=function(){var e;(t.setState({exited:!0}),t.onHide(),t.props.onExited)&&(e=t.props).onExited.apply(e,arguments)},t.handleBackdropClick=function(e){e.target===e.currentTarget&&(t.props.onBackdropClick&&t.props.onBackdropClick(e),!0===t.props.backdrop&&t.props.onHide())},t.handleDocumentKeyDown=function(e){t.props.keyboard&&27===e.keyCode&&t.isTopModal()&&(t.props.onEscapeKeyDown&&t.props.onEscapeKeyDown(e),t.props.onHide())},t.enforceFocus=function(){if(t.props.enforceFocus&&t._isMounted&&t.isTopModal()){var e=(0,r.default)((0,m.default)(g(g(t))));t.dialog&&!(0,o.default)(t.dialog,e)&&t.dialog.focus()}},t.renderBackdrop=function(){var e=t.props,n=e.renderBackdrop,r=e.backdropTransition,o=n({ref:t.setBackdropRef,onClick:t.handleBackdropClick});return r&&(o=c.default.createElement(r,{appear:!0,in:t.props.show},o)),o},t}n=e,(t=l).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n,l.getDerivedStateFromProps=function(e){return e.show?{exited:!1}:e.transition?null:{exited:!0}};var u=l.prototype;return u.getSnapshotBeforeUpdate=function(e){return i.default&&!e.show&&this.props.show&&(this.lastFocus=(0,r.default)()),null},u.componentDidMount=function(){this._isMounted=!0,this.props.show&&this.onShow()},u.componentDidUpdate=function(e){var t=this.props.transition;!e.show||this.props.show||t?!e.show&&this.props.show&&this.onShow():this.onHide()},u.componentWillUnmount=function(){var e=this.props,t=e.show,n=e.transition;this._isMounted=!1,(t||n&&!this.state.exited)&&this.onHide()},u.autoFocus=function(){if(this.props.autoFocus){var e=(0,r.default)((0,m.default)(this));this.dialog&&!(0,o.default)(this.dialog,e)&&(this.lastFocus=e,this.dialog.focus())}},u.restoreLastFocus=function(){this.lastFocus&&this.lastFocus.focus&&(this.lastFocus.focus(),this.lastFocus=null)},u.isTopModal=function(){return this.props.manager.isTopModal(this)},u.render=function(){var e=this.props,t=e.show,n=e.container,r=e.children,o=e.renderDialog,i=e.role,a=void 0===i?"dialog":i,u=e.transition,s=e.backdrop,f=e.className,d=e.style,h=e.onExit,m=e.onExiting,v=e.onEnter,g=e.onEntering,b=e.onEntered,x=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,["show","container","children","renderDialog","role","transition","backdrop","className","style","onExit","onExiting","onEnter","onEntering","onEntered"]);if(!(t||u&&!this.state.exited))return null;var w=y({role:a,ref:this.setDialogRef,"aria-modal":"dialog"===a||void 0},function(e,t){var n=Object.keys(e),r={};return n.map(function(n){Object.prototype.hasOwnProperty.call(t,n)||(r[n]=e[n])}),r}(x,l.propTypes),{style:d,className:f,tabIndex:"-1"}),E=o?o(w):c.default.createElement("div",w,c.default.cloneElement(r,{role:"document"}));return u&&(E=c.default.createElement(u,{appear:!0,unmountOnExit:!0,in:t,onExit:h,onExiting:m,onExited:this.handleHidden,onEnter:v,onEntering:g,onEntered:b},E)),c.default.createElement(p.default,{container:n,onRendered:this.onPortalRendered},c.default.createElement(c.default.Fragment,null,s&&this.renderBackdrop(),E))},l}(c.default.Component);x.propTypes={show:l.default.bool,container:l.default.oneOfType([u.default,l.default.func]),onShow:l.default.func,onHide:l.default.func,backdrop:l.default.oneOfType([l.default.bool,l.default.oneOf(["static"])]),renderDialog:l.default.func,renderBackdrop:l.default.func,onEscapeKeyDown:l.default.func,onBackdropClick:l.default.func,containerClassName:l.default.string,keyboard:l.default.bool,transition:s.default,backdropTransition:s.default,autoFocus:l.default.bool,enforceFocus:l.default.bool,restoreFocus:l.default.bool,onEnter:l.default.func,onEntering:l.default.func,onEntered:l.default.func,onExit:l.default.func,onExiting:l.default.func,onExited:l.default.func,manager:l.default.object.isRequired},x.defaultProps={show:!1,role:"dialog",backdrop:!0,keyboard:!0,autoFocus:!0,enforceFocus:!0,restoreFocus:!0,onHide:function(){},manager:b,renderBackdrop:function(e){return c.default.createElement("div",e)}},x.Manager=d.default;var w=x;t.default=w,e.exports=t.default},function(e,t,n){"use strict";var r=n(6);t.__esModule=!0,t.default=void 0;var o=r(n(31)),i=r(n(15));function a(e,t,n){var r,i={target:e,currentTarget:e};function a(e){e.target===e.currentTarget&&(clearTimeout(r),e.target.removeEventListener(o.default.end,a),t.call(this))}o.default.end?null==n&&(n=u(e)||0):n=0,o.default.end?(e.addEventListener(o.default.end,a,!1),r=setTimeout(function(){return a(i)},1.5*(n||100))):setTimeout(a.bind(null,i),0)}a._parseDuration=u;var l=a;function u(e){var t=(0,i.default)(e,o.default.duration),n=-1===t.indexOf("ms")?1e3:1;return parseFloat(t)*n}t.default=l,e.exports=t.default},function(e,t,n){var r=n(66);e.exports=p,e.exports.parse=i,e.exports.compile=function(e,t){return l(i(e,t))},e.exports.tokensToFunction=l,e.exports.tokensToRegExp=d;var o=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function i(e,t){for(var n,r=[],i=0,a=0,l="",c=t&&t.delimiter||"/";null!=(n=o.exec(e));){var f=n[0],d=n[1],p=n.index;if(l+=e.slice(a,p),a=p+f.length,d)l+=d[1];else{var h=e[a],m=n[2],v=n[3],y=n[4],g=n[5],b=n[6],x=n[7];l&&(r.push(l),l="");var w=null!=m&&null!=h&&h!==m,E="+"===b||"*"===b,C="?"===b||"*"===b,k=n[2]||c,T=y||g;r.push({name:v||i++,prefix:m||"",delimiter:k,optional:C,repeat:E,partial:w,asterisk:!!x,pattern:T?s(T):x?".*":"[^"+u(k)+"]+?"})}}return a<e.length&&(l+=e.substr(a)),l&&r.push(l),r}function a(e){return encodeURI(e).replace(/[\/?#]/g,function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})}function l(e){for(var t=new Array(e.length),n=0;n<e.length;n++)"object"==typeof e[n]&&(t[n]=new RegExp("^(?:"+e[n].pattern+")$"));return function(n,o){for(var i="",l=n||{},u=(o||{}).pretty?a:encodeURIComponent,s=0;s<e.length;s++){var c=e[s];if("string"!=typeof c){var f,d=l[c.name];if(null==d){if(c.optional){c.partial&&(i+=c.prefix);continue}throw new TypeError('Expected "'+c.name+'" to be defined')}if(r(d)){if(!c.repeat)throw new TypeError('Expected "'+c.name+'" to not repeat, but received `'+JSON.stringify(d)+"`");if(0===d.length){if(c.optional)continue;throw new TypeError('Expected "'+c.name+'" to not be empty')}for(var p=0;p<d.length;p++){if(f=u(d[p]),!t[s].test(f))throw new TypeError('Expected all "'+c.name+'" to match "'+c.pattern+'", but received `'+JSON.stringify(f)+"`");i+=(0===p?c.prefix:c.delimiter)+f}}else{if(f=c.asterisk?encodeURI(d).replace(/[?#]/g,function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}):u(d),!t[s].test(f))throw new TypeError('Expected "'+c.name+'" to match "'+c.pattern+'", but received "'+f+'"');i+=c.prefix+f}}else i+=c}return i}}function u(e){return e.replace(/([.+*?=^!:${}()[\]|\/\\])/g,"\\$1")}function s(e){return e.replace(/([=!:$\/()])/g,"\\$1")}function c(e,t){return e.keys=t,e}function f(e){return e.sensitive?"":"i"}function d(e,t,n){r(t)||(n=t||n,t=[]);for(var o=(n=n||{}).strict,i=!1!==n.end,a="",l=0;l<e.length;l++){var s=e[l];if("string"==typeof s)a+=u(s);else{var d=u(s.prefix),p="(?:"+s.pattern+")";t.push(s),s.repeat&&(p+="(?:"+d+p+")*"),a+=p=s.optional?s.partial?d+"("+p+")?":"(?:"+d+"("+p+"))?":d+"("+p+")"}}var h=u(n.delimiter||"/"),m=a.slice(-h.length)===h;return o||(a=(m?a.slice(0,-h.length):a)+"(?:"+h+"(?=$))?"),a+=i?"$":o&&m?"":"(?="+h+"|$)",c(new RegExp("^"+a,f(n)),t)}function p(e,t,n){return r(t)||(n=t||n,t=[]),n=n||{},e instanceof RegExp?function(e,t){var n=e.source.match(/\((?!\?)/g);if(n)for(var r=0;r<n.length;r++)t.push({name:r,prefix:null,delimiter:null,optional:!1,repeat:!1,partial:!1,asterisk:!1,pattern:null});return c(e,t)}(e,t):r(e)?function(e,t,n){for(var r=[],o=0;o<e.length;o++)r.push(p(e[o],t,n).source);return c(new RegExp("(?:"+r.join("|")+")",f(n)),t)}(e,t,n):function(e,t,n){return d(i(e,n),t,n)}(e,t,n)}},function(e,t,n){"use strict";
+*/var o=Object.getOwnPropertySymbols,r=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable;function a(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(e){return t[e]}).join(""))return!1;var o={};return"abcdefghijklmnopqrst".split("").forEach(function(e){o[e]=e}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},o)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(var n,s,l=a(e),u=1;u<arguments.length;u++){for(var c in n=Object(arguments[u]))r.call(n,c)&&(l[c]=n[c]);if(o){s=o(n);for(var d=0;d<s.length;d++)i.call(n,s[d])&&(l[s[d]]=n[s[d]])}}return l}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=a(n(0)),i=a(n(24));function a(e){return e&&e.__esModule?e:{default:e}}t.default=(0,i.default)(function(e,t,n,i,a){var s=e[t],l=void 0===s?"undefined":o(s);return r.default.isValidElement(s)?new Error("Invalid "+i+" `"+a+"` of type ReactElement supplied to `"+n+"`, expected a ReactComponent or a DOMElement. You can usually obtain a ReactComponent or DOMElement from a ReactElement by attaching a ref to it."):"object"===l&&"function"==typeof s.render||1===s.nodeType?null:new Error("Invalid "+i+" `"+a+"` of value `"+s+"` supplied to `"+n+"`, expected a ReactComponent or a DOMElement.")}),e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){function t(t,n,o,r,i,a){var s=r||"<<anonymous>>",l=a||o;if(null==n[o])return t?new Error("Required "+i+" `"+l+"` was not specified in `"+s+"`."):null;for(var u=arguments.length,c=Array(u>6?u-6:0),d=6;d<u;d++)c[d-6]=arguments[d];return e.apply(void 0,[n,o,s,i,l].concat(c))}var n=t.bind(null,!1);return n.isRequired=t.bind(null,!0),n},e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t){var n=void 0===t?{}:t,o=n.propTypes,i=n.defaultProps,a=n.allowFallback,s=void 0!==a&&a,l=n.displayName,u=void 0===l?e.name||e.displayName:l,c=function(t,n){return e(t,n)};return Object.assign(r.default.forwardRef||!s?r.default.forwardRef(c):function(e){return c(e,null)},{displayName:u,propTypes:o,defaultProps:i})};var o,r=(o=n(0))&&o.__esModule?o:{default:o}},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e){return e.replace(o,function(e,t){return t.toUpperCase()})};var o=/-(.)/g;e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var o=l(n(70)),r=l(n(15)),i=l(n(14)),a=l(n(78)),s=n(80);function l(e){return e&&e.__esModule?e:{default:e}}var u=function(){function e(e){var t=void 0===e?{}:e,n=t.hideSiblingNodes,o=void 0===n||n,r=t.handleContainerOverflow,a=void 0===r||r;this.hideSiblingNodes=o,this.handleContainerOverflow=a,this.modals=[],this.containers=[],this.data=[],this.scrollbarSize=(0,i.default)()}var t=e.prototype;return t.isContainerOverflowing=function(e){var t=this.data[this.containerIndexFromModal(e)];return t&&t.overflowing},t.containerIndexFromModal=function(e){return t=this.data,n=function(t){return-1!==t.modals.indexOf(e)},o=-1,t.some(function(e,t){if(n(e,t))return o=t,!0}),o;var t,n,o},t.setContainerStyle=function(e,t){var n={overflow:"hidden"};e.style={overflow:t.style.overflow,paddingRight:t.style.paddingRight},e.overflowing&&(n.paddingRight=parseInt((0,r.default)(t,"paddingRight")||0,10)+this.scrollbarSize+"px"),(0,r.default)(t,n)},t.removeContainerStyle=function(e,t){var n=e.style;Object.keys(n).forEach(function(e){t.style[e]=n[e]})},t.add=function(e,t,n){var r=this.modals.indexOf(e),i=this.containers.indexOf(t);if(-1!==r)return r;if(r=this.modals.length,this.modals.push(e),this.hideSiblingNodes&&(0,s.hideSiblings)(t,e),-1!==i)return this.data[i].modals.push(e),r;var l={modals:[e],classes:n?n.split(/\s+/):[],overflowing:(0,a.default)(t)};return this.handleContainerOverflow&&this.setContainerStyle(l,t),l.classes.forEach(o.default.addClass.bind(null,t)),this.containers.push(t),this.data.push(l),r},t.remove=function(e){var t=this.modals.indexOf(e);if(-1!==t){var n=this.containerIndexFromModal(e),r=this.data[n],i=this.containers[n];if(r.modals.splice(r.modals.indexOf(e),1),this.modals.splice(t,1),0===r.modals.length)r.classes.forEach(o.default.removeClass.bind(null,i)),this.handleContainerOverflow&&this.removeContainerStyle(r,i),this.hideSiblingNodes&&(0,s.showSiblings)(i,e),this.containers.splice(n,1),this.data.splice(n,1);else if(this.hideSiblingNodes){var a=r.modals[r.modals.length-1],l=a.backdrop,u=a.dialog;(0,s.ariaHidden)(!1,u),(0,s.ariaHidden)(!1,l)}}},t.isTopModal=function(e){return!!this.modals.length&&this.modals[this.modals.length-1]===e},e}();t.default=u,e.exports=t.default},function(e,t,n){"use strict";var o,r=this&&this.__extends||(o=function(e,t){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)},function(e,t){function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),i=this&&this.__assign||function(){return(i=Object.assign||function(e){for(var t,n=1,o=arguments.length;n<o;n++)for(var r in t=arguments[n])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e}).apply(this,arguments)};t.__esModule=!0;var a=n(0),s=n(8),l=n(29),u=n(30),c=n(17),d=n(31),p=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.state={data:[]},t.ref=null,t.htmlProps=null,t.mainId="tabulator-"+ +new Date+"-"+Math.floor(9999999*Math.random()),t.table=null,t.pickValidHTMLProps=function(){t.htmlProps||(t.htmlProps=l.pickHTMLProps(t.props),delete t.htmlProps.data,delete t.htmlProps.columns)},t}return r(t,e),t.prototype.componentDidMount=function(){var e=s.findDOMNode(this.ref),t=this,n=this.props,o=n.columns,r=n.data,a=n.options,l=u.propsToOptions(this.props);new d(e,i({columns:o},l,{layout:"fitColumns",tableBuilding:function(){t.table=this,t.props.tableBuilding&&t.props.tableBuilding()},dataLoaded:function(){t.props.dataLoaded&&t.props.dataLoaded()}},a,{data:r})),r&&r.length>0&&this.setState({data:r})},t.prototype.componentWillUnmount=function(){this.table.destroy()},t.getDerivedStateFromProps=function(e,t){var n=!e.data||0===e.data.length;return!t&&n?null:t&&0===t.data.length&&0===e.data.length?null:t&&e.data&&!c.isSameArray(t.data,e.data)?i({},t,{data:e.data}):{}},t.prototype.componentDidUpdate=function(){this.table.setData(this.state.data)},t.prototype.render=function(){var e=this;this.pickValidHTMLProps();var t=this.props.className;return a.createElement("div",i({ref:function(t){return e.ref=t},"data-instance":this.mainId},this.htmlProps,{className:t}))},t}(a.Component);t.default=p},function(e,t){e.exports=function(e){var t={};function n(o){if(t[o])return t[o].exports;var r=t[o]={exports:{},id:o,loaded:!1};return e[o].call(r.exports,r,r.exports,n),r.loaded=!0,r.exports}return n.m=e,n.c=t,n.p="",n(0)}([function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.pickSVGProps=t.pickHTMLProps=void 0;var o=i(n(1)),r=i(n(5));function i(e){return e&&e.__esModule?e:{default:e}}t.pickHTMLProps=o.default,t.pickSVGProps=r.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},r=a(n(2)),i=a(n(3));function a(e){return e&&e.__esModule?e:{default:e}}var s=o({},r.default,["about","datatype","defaultChecked","defaultValue","inlist","prefix","property","resource","typeof","vocab","autoCapitalize","autoCorrect","color","itemProp","itemScope","itemType","itemRef","itemID","security","unselectable","results","autoSave","allowtransparency","charSet","ismap","typemustmatch","onBlur","onChange","onClick","onContextMenu","onCopy","onCut","onDoubleClick","onDrag","onDragEnd","onDragEnter","onDragExit","onDragLeave","onDragOver","onDragStart","onDrop","onFocus","onInput","onKeyDown","onKeyPress","onKeyUp","onMouseDown","onMouseEnter","onMouseLeave","onMouseMove","onMouseOut","onMouseOver","onMouseUp","onPaste","onScroll","onSubmit","onTouchCancel","onTouchEnd","onTouchMove","onTouchStart","onWheel","onCompositionEnd","onCompositionStart","onCompositionUpdate","onInvalid","onPointerDown","onPointerMove","onPointerUp","onPointerCancel","onGotPointerCapture","onLostPointerCapture","onPointerEnter","onPointerLeave","onPointerOver","onPointerOut","onSelect","onAbort","onCanPlay","onCanPlayThrough","onDurationChange","onEmptied","onEncrypted","onEnded","onError","onLoadedData","onLoadedMetadata","onLoadStart","onPause","onPlay","onPlaying","onProgress","onRateChange","onSeeked","onSeeking","onStalled","onSuspend","onTimeUpdate","onVolumeChange","onWaiting","onLoad","onError","onAnimationStart","onAnimationEnd","onAnimationIteration","onTransitionEnd","onToggle"].reduce(function(e,t){return e[t]=t,e},{}));t.default=(0,i.default)(function(e){return Boolean(s[e])||/^(data|aria)-/.test(e)})},function(e,t){
+/*!
+ * html-attributes
+ * https://github.com/alexmingoia/html-attributes
+ */
+"use strict";e.exports={abbr:"abbr",accept:"accept",acceptCharset:"accept-charset",accessKey:"accesskey",action:"action",allowFullScreen:"allowfullscreen",allowTransparency:"allowtransparency",alt:"alt",async:"async",autoComplete:"autocomplete",autoFocus:"autofocus",autoPlay:"autoplay",cellPadding:"cellpadding",cellSpacing:"cellspacing",challenge:"challenge",charset:"charset",checked:"checked",cite:"cite",class:"class",className:"class",cols:"cols",colSpan:"colspan",command:"command",content:"content",contentEditable:"contenteditable",contextMenu:"contextmenu",controls:"controls",coords:"coords",crossOrigin:"crossorigin",data:"data",dateTime:"datetime",default:"default",defer:"defer",dir:"dir",disabled:"disabled",download:"download",draggable:"draggable",dropzone:"dropzone",encType:"enctype",for:"for",form:"form",formAction:"formaction",formEncType:"formenctype",formMethod:"formmethod",formNoValidate:"formnovalidate",formTarget:"formtarget",frameBorder:"frameBorder",headers:"headers",height:"height",hidden:"hidden",high:"high",href:"href",hrefLang:"hreflang",htmlFor:"for",httpEquiv:"http-equiv",icon:"icon",id:"id",inputMode:"inputmode",isMap:"ismap",itemId:"itemid",itemProp:"itemprop",itemRef:"itemref",itemScope:"itemscope",itemType:"itemtype",kind:"kind",label:"label",lang:"lang",list:"list",loop:"loop",manifest:"manifest",max:"max",maxLength:"maxlength",media:"media",mediaGroup:"mediagroup",method:"method",min:"min",minLength:"minlength",multiple:"multiple",muted:"muted",name:"name",noValidate:"novalidate",open:"open",optimum:"optimum",pattern:"pattern",ping:"ping",placeholder:"placeholder",poster:"poster",preload:"preload",radioGroup:"radiogroup",readOnly:"readonly",rel:"rel",required:"required",role:"role",rows:"rows",rowSpan:"rowspan",sandbox:"sandbox",scope:"scope",scoped:"scoped",scrolling:"scrolling",seamless:"seamless",selected:"selected",shape:"shape",size:"size",sizes:"sizes",sortable:"sortable",span:"span",spellCheck:"spellcheck",src:"src",srcDoc:"srcdoc",srcSet:"srcset",start:"start",step:"step",style:"style",tabIndex:"tabindex",target:"target",title:"title",translate:"translate",type:"type",typeMustMatch:"typemustmatch",useMap:"usemap",value:"value",width:"width",wmode:"wmode",wrap:"wrap"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o,r=n(4),i=(o=r)&&o.__esModule?o:{default:o};t.default=function(e){return function(t){if(!(0,i.default)(t))throw new Error("props should be a plain object");var n={};for(var o in t)t.hasOwnProperty(o)&&e(o)&&(n[o]=t[o]);return n}}},function(e,t){var n="[object Object]";var o,r,i=Function.prototype,a=Object.prototype,s=i.toString,l=a.hasOwnProperty,u=s.call(Object),c=a.toString,d=(o=Object.getPrototypeOf,r=Object,function(e){return o(r(e))});e.exports=function(e){if(!function(e){return!!e&&"object"==typeof e}(e)||c.call(e)!=n||function(e){var t=!1;if(null!=e&&"function"!=typeof e.toString)try{t=!!(e+"")}catch(e){}return t}(e))return!1;var t=d(e);if(null===t)return!0;var o=l.call(t,"constructor")&&t.constructor;return"function"==typeof o&&o instanceof o&&s.call(o)==u}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=i(n(3)),r=i(n(6));function i(e){return e&&e.__esModule?e:{default:e}}t.default=(0,o.default)(function(e){return Boolean(r.default[e])})},function(e,t){
+/*!
+ * svg-attributes
+ * https://github.com/alexmingoia/svg-attributes
+ */
+"use strict";e.exports={accentHeight:"accent-height",accumulate:"accumulate",additive:"additive",alphabetic:"alphabetic",amplitude:"amplitude",arabicForm:"arabic-form",ascent:"ascent",attributeName:"attributeName",attributeType:"attributeType",azimuth:"azimuth",baseFrequency:"baseFrequency",baseProfile:"baseProfile",bbox:"bbox",begin:"begin",bias:"bias",by:"by",calcMode:"calcMode",capHeight:"cap-height",class:"class",clipPathUnits:"clipPathUnits",contentScriptType:"contentScriptType",contentStyleType:"contentStyleType",cx:"cx",cy:"cy",d:"d",descent:"descent",diffuseConstant:"diffuseConstant",divisor:"divisor",dur:"dur",dx:"dx",dy:"dy",edgeMode:"edgeMode",elevation:"elevation",end:"end",exponent:"exponent",externalResourcesRequired:"externalResourcesRequired",fill:"fill",filterRes:"filterRes",filterUnits:"filterUnits",fontFamily:"font-family",fontSize:"font-size",fontStretch:"font-stretch",fontStyle:"font-style",format:"format",from:"from",fx:"fx",fy:"fy",g1:"g1",g2:"g2",glyphame:"glyph-name",glyphRef:"glyphRef",gradientTransform:"gradientTransform",gradientUnits:"gradientUnits",hanging:"hanging",height:"height",horizAdvX:"horiz-adv-x",horizOriginX:"horiz-origin-x",horizOriginY:"horiz-origin-y",id:"id",ideographic:"ideographic",in:"in",in2:"in2",intercept:"intercept",k:"k",k1:"k1",k2:"k2",k3:"k3",k4:"k4",kernelMatrix:"kernelMatrix",kernelUnitLength:"kernelUnitLength",keyPoints:"keyPoints",keySplines:"keySplines",keyTimes:"keyTimes",lang:"lang",lengthAdjust:"lengthAdjust",limitingConeAngle:"limitingConeAngle",local:"local",markerHeight:"markerHeight",markerUnits:"markerUnits",markerWidth:"markerWidth",maskContentUnits:"maskContentUnits",maskUnits:"maskUnits",mathematical:"mathematical",max:"max",media:"media",method:"method",min:"min",mode:"mode",name:"name",numOctaves:"numOctaves",offset:"offset",onAbort:"onabort",onActivate:"onactivate",onBegin:"onbegin",onClick:"onclick",onEnd:"onend",onError:"onerror",onFocusIn:"onfocusin",onFocusOut:"onfocusout",onLoad:"onload",onMouseDown:"onmousedown",onMouseMove:"onmousemove",onMouseOut:"onmouseout",onMouseOver:"onmouseover",onMouseUp:"onmouseup",onRepeat:"onrepeat",onResize:"onresize",onScroll:"onscroll",onUnload:"onunload",onZoom:"onzoom",operator:"operator",order:"order",orient:"orient",orientation:"orientation",origin:"origin",overlinePosition:"overline-position",overlineThickness:"overline-thickness",panose1:"panose-1",path:"path",pathLength:"pathLength",patternContentUnits:"patternContentUnits",patternTransform:"patternTransform",patternUnits:"patternUnits",points:"points",pointsAtX:"pointsAtX",pointsAtY:"pointsAtY",pointsAtZ:"pointsAtZ",preserveAlpha:"preserveAlpha",preserveAspectRatio:"preserveAspectRatio",primitiveUnits:"primitiveUnits",r:"r",radius:"radius",refX:"refX",refY:"refY",renderingIntent:"rendering-intent",repeatCount:"repeatCount",repeatDur:"repeatDur",requiredExtensions:"requiredExtensions",requiredFeatures:"requiredFeatures",restart:"restart",result:"result",rotate:"rotate",rx:"rx",ry:"ry",scale:"scale",seed:"seed",slope:"slope",spacing:"spacing",specularConstant:"specularConstant",specularExponent:"specularExponent",spreadMethod:"spreadMethod",startOffset:"startOffset",stdDeviation:"stdDeviation",stemh:"stemh",stemv:"stemv",stitchTiles:"stitchTiles",strikethroughPosition:"strikethrough-position",strikethroughThickness:"strikethrough-thickness",string:"string",style:"style",surfaceScale:"surfaceScale",systemLanguage:"systemLanguage",tableValues:"tableValues",target:"target",targetX:"targetX",targetY:"targetY",textLength:"textLength",title:"title",to:"to",transform:"transform",type:"type",u1:"u1",u2:"u2",underlinePosition:"underline-position",underlineThickness:"underline-thickness",unicode:"unicode",unicodeRange:"unicode-range",unitsPerEm:"units-per-em",vAlphabetic:"v-alphabetic",vHanging:"v-hanging",vIdeographic:"v-ideographic",vMathematical:"v-mathematical",values:"values",version:"version",vertAdvY:"vert-adv-y",vertOriginX:"vert-origin-x",vertOriginY:"vert-origin-y",viewBox:"viewBox",viewTarget:"viewTarget",width:"width",widths:"widths",x:"x",xHeight:"x-height",x1:"x1",x2:"x2",xChannelSelector:"xChannelSelector",xlink:"xlink",xml:"xml",y:"y",y1:"y1",y2:"y2",yChannelSelector:"yChannelSelector",z:"z",zoomAndPan:"zoomAndPan",alignmentBaseline:"alignment-baseline",baselineShift:"baseline-shift",clipPath:"clip-path",clipRule:"clip-rule",clip:"clip",colorInterpolationFilters:"color-interpolation-filters",colorInterpolation:"color-interpolation",colorProfile:"color-profile",colorRendering:"color-rendering",color:"color",cursor:"cursor",direction:"direction",display:"display",dominantBaseline:"dominant-baseline",enableBackground:"enable-background",fillOpacity:"fill-opacity",fillRule:"fill-rule",filter:"filter",floodColor:"flood-color",floodOpacity:"flood-opacity",fontSizeAdjust:"font-size-adjust",fontVariant:"font-variant",fontWeight:"font-weight",glyphOrientationHorizontal:"glyph-orientation-horizontal",glyphOrientationVertical:"glyph-orientation-vertical",imageRendering:"image-rendering",kerning:"kerning",letterSpacing:"letter-spacing",lightingColor:"lighting-color",markerEnd:"marker-end",markerMid:"marker-mid",markerStart:"marker-start",mask:"mask",opacity:"opacity",overflow:"overflow",pointerEvents:"pointer-events",shapeRendering:"shape-rendering",stopColor:"stop-color",stopOpacity:"stop-opacity",strokeDasharray:"stroke-dasharray",strokeDashoffset:"stroke-dashoffset",strokeLinecap:"stroke-linecap",strokeLinejoin:"stroke-linejoin",strokeMiterlimit:"stroke-miterlimit",strokeOpacity:"stroke-opacity",strokeWidth:"stroke-width",stroke:"stroke",textAnchor:"text-anchor",textDecoration:"text-decoration",textRendering:"text-rendering",unicodeBidi:"unicode-bidi",visibility:"visibility",wordSpacing:"word-spacing",writingMode:"writing-mode"}}])},function(e,t,n){"use strict";t.__esModule=!0;var o=n(54),r=function(){};t.propsToOptions=function(e){for(var t={},n=0,i=["height","layout","layoutColumnsOnNewData","columnMinWidth","columnVertAlign","resizableColumns","resizableRows","autoResize","tooltips","tooltipsHeader","tooltipGenerationMode","initialSort","initialFilter","footerElement","index","keybindings","clipboard","clipboardCopyStyled","clipboardCopySelector","clipboardCopyFormatter","clipboardCopyHeader","clipboardPasteParser","clipboardPasteAction","rowFormatter","placeholder"];n<i.length;n++){var a=i[n];void 0!==e[a]&&(t[a]=e[a])}for(var s=0,l=["tableBuilt","rowClick","rowDblClick","rowContext","rowTap","rowDblTap","rowTapHold","rowAdded","rowDeleted","rowMoved","rowUpdated","rowSelectionChanged","rowSelected","rowDeselected","rowResized","cellClick","cellDblClick","cellContext","cellTap","cellDblTap","cellTapHold","cellEditing","cellEdited","cellEditCancelled","columnMoved","columnResized","columnTitleChanged","columnVisibilityChanged","headerClick","headerDblClick","headerContext","headerTap","headerDblTap","headerTapHold","htmlImporting","htmlImported","dataLoading","dataLoaded","dataEdited","ajaxRequesting","ajaxResponse","ajaxError","dataFiltering","dataFiltered","dataSorting","dataSorted","renderStarted","renderComplete","pageLoaded","localized","dataGrouping","dataGrouped","groupVisibilityChanged","groupClick","groupDblClick","groupContext","groupTap","groupDblTap","groupTapHold","movableRowsSendingStart","movableRowsSent","movableRowsSentFailed","movableRowsSendingStop","movableRowsReceivingStart","movableRowsReceived","movableRowsReceivedFailed","movableRowsReceivingStop","validationFailed","clipboardCopied","clipboardPasted","clipboardPasteError","downloadDataFormatter","downloadReady","downloadComplete"];s<l.length;s++){var u=l[s];t[u]=e[u]||r}return"object"==typeof e.footerElement&&(t.footerElement=o.renderToString(e.footerElement)),t}},function(t,n,o){var r,i,a,s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};a=function(){"use strict";Array.prototype.findIndex||Object.defineProperty(Array.prototype,"findIndex",{value:function(e){if(null==this)throw new TypeError('"this" is null or not defined');var t=Object(this),n=t.length>>>0;if("function"!=typeof e)throw new TypeError("predicate must be a function");for(var o=arguments[1],r=0;r<n;){var i=t[r];if(e.call(o,i,r,t))return r;r++}return-1}}),Array.prototype.find||Object.defineProperty(Array.prototype,"find",{value:function(e){if(null==this)throw new TypeError('"this" is null or not defined');var t=Object(this),n=t.length>>>0;if("function"!=typeof e)throw new TypeError("predicate must be a function");for(var o=arguments[1],r=0;r<n;){var i=t[r];if(e.call(o,i,r,t))return i;r++}}});var t=function(e){this.table=e,this.blockHozScrollEvent=!1,this.headersElement=this.createHeadersElement(),this.element=this.createHeaderElement(),this.rowManager=null,this.columns=[],this.columnsByIndex=[],this.columnsByField={},this.scrollLeft=0,this.element.insertBefore(this.headersElement,this.element.firstChild)};t.prototype.createHeadersElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-headers"),e},t.prototype.createHeaderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-header"),this.table.options.headerVisible||e.classList.add("tabulator-header-hidden"),e},t.prototype.initialize=function(){},t.prototype.setRowManager=function(e){this.rowManager=e},t.prototype.getElement=function(){return this.element},t.prototype.getHeadersElement=function(){return this.headersElement},t.prototype.scrollHorizontal=function(e){var t=0,n=this.element.scrollWidth-this.table.element.clientWidth;this.element.scrollLeft=e,e>n?(t=e-n,this.element.style.marginLeft=-t+"px"):this.element.style.marginLeft=0,this.scrollLeft=e,this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.scrollHorizontal()},t.prototype.generateColumnsFromRowData=function(e){var t,n,o=[];if(e&&e.length){for(var r in t=e[0]){var i={field:r,title:r},a=t[r];switch(void 0===a?"undefined":s(a)){case"undefined":n="string";break;case"boolean":n="boolean";break;case"object":n=Array.isArray(a)?"array":"string";break;default:n=isNaN(a)||""===a?a.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)?"alphanum":"string":"number"}i.sorter=n,o.push(i)}this.table.options.columns=o,this.setColumns(this.table.options.columns)}},t.prototype.setColumns=function(e,t){for(var n=this;n.headersElement.firstChild;)n.headersElement.removeChild(n.headersElement.firstChild);n.columns=[],n.columnsByIndex=[],n.columnsByField={},n.table.modExists("frozenColumns")&&n.table.modules.frozenColumns.reset(),e.forEach(function(e,t){n._addColumn(e)}),n._reIndexColumns(),n.table.options.responsiveLayout&&n.table.modExists("responsiveLayout",!0)&&n.table.modules.responsiveLayout.initialize(),n.redraw(!0)},t.prototype._addColumn=function(e,t,n){var r=new o(e,this),i=r.getElement(),a=n?this.findColumnIndex(n):n;if(n&&a>-1){var s=this.columns.indexOf(n.getTopColumn()),l=n.getElement();t?(this.columns.splice(s,0,r),l.parentNode.insertBefore(i,l)):(this.columns.splice(s+1,0,r),l.parentNode.insertBefore(i,l.nextSibling))}else t?(this.columns.unshift(r),this.headersElement.insertBefore(r.getElement(),this.headersElement.firstChild)):(this.columns.push(r),this.headersElement.appendChild(r.getElement()));return r},t.prototype.registerColumnField=function(e){e.definition.field&&(this.columnsByField[e.definition.field]=e)},t.prototype.registerColumnPosition=function(e){this.columnsByIndex.push(e)},t.prototype._reIndexColumns=function(){this.columnsByIndex=[],this.columns.forEach(function(e){e.reRegisterPosition()})},t.prototype._verticalAlignHeaders=function(){var e=this,t=0;e.columns.forEach(function(e){var n;e.clearVerticalAlign(),(n=e.getHeight())>t&&(t=n)}),e.columns.forEach(function(n){n.verticalAlign(e.table.options.columnVertAlign,t)}),e.rowManager.adjustTableSize()},t.prototype.findColumn=function(e){return"object"!=(void 0===e?"undefined":s(e))?this.columnsByField[e]||!1:e instanceof o?e:e instanceof n?e._getSelf()||!1:"undefined"!=typeof HTMLElement&&e instanceof HTMLElement&&this.columns.find(function(t){return t.element===e})||!1},t.prototype.getColumnByField=function(e){return this.columnsByField[e]},t.prototype.getColumnByIndex=function(e){return this.columnsByIndex[e]},t.prototype.getFirstVisibileColumn=function(e){return(e=this.columnsByIndex.findIndex(function(e){return e.visible}))>-1&&this.columnsByIndex[e]},t.prototype.getColumns=function(){return this.columns},t.prototype.findColumnIndex=function(e){return this.columnsByIndex.findIndex(function(t){return e===t})},t.prototype.getRealColumns=function(){return this.columnsByIndex},t.prototype.traverse=function(e){this.columnsByIndex.forEach(function(t,n){e(t,n)})},t.prototype.getDefinitions=function(e){var t=[];return this.columnsByIndex.forEach(function(n){(!e||e&&n.visible)&&t.push(n.getDefinition())}),t},t.prototype.getDefinitionTree=function(){var e=[];return this.columns.forEach(function(t){e.push(t.getDefinition(!0))}),e},t.prototype.getComponents=function(e){var t=[];return(e?this.columns:this.columnsByIndex).forEach(function(e){t.push(e.getComponent())}),t},t.prototype.getWidth=function(){var e=0;return this.columnsByIndex.forEach(function(t){t.visible&&(e+=t.getWidth())}),e},t.prototype.moveColumn=function(e,t,n){this._moveColumnInArray(this.columns,e,t,n),this._moveColumnInArray(this.columnsByIndex,e,t,n,!0),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.table.options.columnMoved&&this.table.options.columnMoved.call(this.table,e.getComponent(),this.table.columnManager.getComponents()),this.table.options.persistentLayout&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("columns")},t.prototype._moveColumnInArray=function(e,t,n,o,r){var i,a=e.indexOf(t);a>-1&&(e.splice(a,1),(i=e.indexOf(n))>-1?o&&(i+=1):i=a,e.splice(i,0,t),r&&this.table.rowManager.rows.forEach(function(e){if(e.cells.length){var t=e.cells.splice(a,1)[0];e.cells.splice(i,0,t)}}))},t.prototype.scrollToColumn=function(e,t,n){var o=this,r=0,i=0,a=0,s=e.getElement();return new Promise(function(l,u){if(void 0===t&&(t=o.table.options.scrollToColumnPosition),void 0===n&&(n=o.table.options.scrollToColumnIfVisible),e.visible){switch(t){case"middle":case"center":a=-o.element.clientWidth/2;break;case"right":a=s.clientWidth-o.headersElement.clientWidth}if(!n&&(i=s.offsetLeft)>0&&i+s.offsetWidth<o.element.clientWidth)return!1;r=s.offsetLeft+o.element.scrollLeft+a,r=Math.max(Math.min(r,o.table.rowManager.element.scrollWidth-o.table.rowManager.element.clientWidth),0),o.table.rowManager.scrollHorizontal(r),o.scrollHorizontal(r),l()}else console.warn("Scroll Error - Column not visible"),u("Scroll Error - Column not visible")})},t.prototype.generateCells=function(e){var t=[];return this.columnsByIndex.forEach(function(n){t.push(n.generateCell(e))}),t},t.prototype.getFlexBaseWidth=function(){var e=this,t=e.table.element.clientWidth,n=0;return e.rowManager.element.scrollHeight>e.rowManager.element.clientHeight&&(t-=e.rowManager.element.offsetWidth-e.rowManager.element.clientWidth),this.columnsByIndex.forEach(function(o){var r,i,a;o.visible&&(r=o.definition.width||0,i=void 0===o.minWidth?e.table.options.columnMinWidth:parseInt(o.minWidth),a="string"==typeof r?r.indexOf("%")>-1?t/100*parseInt(r):parseInt(r):r,n+=a>i?a:i)}),n},t.prototype.addColumn=function(e,t,n){var o=this._addColumn(e,t,n);this._reIndexColumns(),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),this.redraw(),"fitColumns"!=this.table.modules.layout.getMode()&&o.reinitializeWidth(),this._verticalAlignHeaders(),this.table.rowManager.reinitialize()},t.prototype.deregisterColumn=function(e){var t,n=e.getField();n&&delete this.columnsByField[n],(t=this.columnsByIndex.indexOf(e))>-1&&this.columnsByIndex.splice(t,1),(t=this.columns.indexOf(e))>-1&&this.columns.splice(t,1),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.redraw()},t.prototype.redraw=function(e){e&&(d.prototype.helpers.elVisible(this.element)&&this._verticalAlignHeaders(),this.table.rowManager.resetScroll(),this.table.rowManager.reinitialize()),"fitColumns"==this.table.modules.layout.getMode()?this.table.modules.layout.layout():e?this.table.modules.layout.layout():this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout(),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),e&&(this.table.options.persistentLayout&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("columns"),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.redraw()),this.table.footerManager.redraw()};var n=function(e){this._column=e,this.type="ColumnComponent"};n.prototype.getElement=function(){return this._column.getElement()},n.prototype.getDefinition=function(){return this._column.getDefinition()},n.prototype.getField=function(){return this._column.getField()},n.prototype.getCells=function(){var e=[];return this._column.cells.forEach(function(t){e.push(t.getComponent())}),e},n.prototype.getVisibility=function(){return this._column.visible},n.prototype.show=function(){this._column.isGroup?this._column.columns.forEach(function(e){e.show()}):this._column.show()},n.prototype.hide=function(){this._column.isGroup?this._column.columns.forEach(function(e){e.hide()}):this._column.hide()},n.prototype.toggle=function(){this._column.visible?this.hide():this.show()},n.prototype.delete=function(){this._column.delete()},n.prototype.getSubColumns=function(){var e=[];return this._column.columns.length&&this._column.columns.forEach(function(t){e.push(t.getComponent())}),e},n.prototype.getParentColumn=function(){return this._column.parent instanceof o&&this._column.parent.getComponent()},n.prototype._getSelf=function(){return this._column},n.prototype.scrollTo=function(){return this._column.table.columnManager.scrollToColumn(this._column)},n.prototype.getTable=function(){return this._column.table},n.prototype.headerFilterFocus=function(){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.setHeaderFilterFocus(this._column)},n.prototype.reloadHeaderFilter=function(){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.reloadHeaderFilter(this._column)},n.prototype.setHeaderFilterValue=function(e){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.setHeaderFilterValue(this._column,e)},n.prototype.getNextColumn=function(){var e=this._column.nextColumn();return!!e&&e.getComponent()},n.prototype.getPrevColumn=function(){var e=this._column.prevColumn();return!!e&&e.getComponent()};var o=function e(t,n){var o=this;this.table=n.table,this.definition=t,this.parent=n,this.type="column",this.columns=[],this.cells=[],this.element=this.createElement(),this.contentElement=!1,this.groupElement=this.createGroupElement(),this.isGroup=!1,this.tooltip=!1,this.hozAlign="",this.field="",this.fieldStructure="",this.getFieldValue="",this.setFieldValue="",this.setField(this.definition.field),this.checkDefinition(),this.modules={},this.cellEvents={cellClick:!1,cellDblClick:!1,cellContext:!1,cellTap:!1,cellDblTap:!1,cellTapHold:!1,cellMouseEnter:!1,cellMouseLeave:!1,cellMouseOver:!1,cellMouseOut:!1,cellMouseMove:!1},this.width=null,this.widthStyled="",this.minWidth=null,this.minWidthStyled="",this.widthFixed=!1,this.visible=!0,this._mapDepricatedFunctionality(),t.columns?(this.isGroup=!0,t.columns.forEach(function(t,n){var r=new e(t,o);o.attachColumn(r)}),o.checkColumnVisibility()):n.registerColumnField(this),t.rowHandle&&!1!==this.table.options.movableRows&&this.table.modExists("moveRow")&&this.table.modules.moveRow.setHandle(!0),this._buildHeader()};o.prototype.createElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-col"),e.setAttribute("role","columnheader"),e.setAttribute("aria-sort","none"),e},o.prototype.createGroupElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-col-group-cols"),e},o.prototype.checkDefinition=function(){var e=this;Object.keys(this.definition).forEach(function(t){-1===e.defaultOptionList.indexOf(t)&&console.warn("Invalid column definition option in '"+(e.field||e.definition.title)+"' column:",t)})},o.prototype.setField=function(e){this.field=e,this.fieldStructure=e?this.table.options.nestedFieldSeparator?e.split(this.table.options.nestedFieldSeparator):[e]:[],this.getFieldValue=this.fieldStructure.length>1?this._getNestedData:this._getFlatData,this.setFieldValue=this.fieldStructure.length>1?this._setNesteData:this._setFlatData},o.prototype.registerColumnPosition=function(e){this.parent.registerColumnPosition(e)},o.prototype.registerColumnField=function(e){this.parent.registerColumnField(e)},o.prototype.reRegisterPosition=function(){this.isGroup?this.columns.forEach(function(e){e.reRegisterPosition()}):this.registerColumnPosition(this)},o.prototype._mapDepricatedFunctionality=function(){void 0!==this.definition.hideInHtml&&(this.definition.htmlOutput=!this.definition.hideInHtml,console.warn("hideInHtml column definition property is depricated, you should now use htmlOutput"))},o.prototype.setTooltip=function(){var e=this,t=e.definition,n=t.headerTooltip||!1===t.tooltip?t.headerTooltip:e.table.options.tooltipsHeader;n?!0===n?t.field?e.table.modules.localize.bind("columns|"+t.field,function(n){e.element.setAttribute("title",n||t.title)}):e.element.setAttribute("title",t.title):("function"==typeof n&&!1===(n=n(e.getComponent()))&&(n=""),e.element.setAttribute("title",n)):e.element.setAttribute("title","")},o.prototype._buildHeader=function(){for(var e=this,t=e.definition;e.element.firstChild;)e.element.removeChild(e.element.firstChild);t.headerVertical&&(e.element.classList.add("tabulator-col-vertical"),"flip"===t.headerVertical&&e.element.classList.add("tabulator-col-vertical-flip")),e.contentElement=e._bindEvents(),e.contentElement=e._buildColumnHeaderContent(),e.element.appendChild(e.contentElement),e.isGroup?e._buildGroupHeader():e._buildColumnHeader(),e.setTooltip(),e.table.options.resizableColumns&&e.table.modExists("resizeColumns")&&e.table.modules.resizeColumns.initializeColumn("header",e,e.element),t.headerFilter&&e.table.modExists("filter")&&e.table.modExists("edit")&&(void 0!==t.headerFilterPlaceholder&&t.field&&e.table.modules.localize.setHeaderFilterColumnPlaceholder(t.field,t.headerFilterPlaceholder),e.table.modules.filter.initializeColumn(e)),e.table.modExists("frozenColumns")&&e.table.modules.frozenColumns.initializeColumn(e),e.table.options.movableColumns&&!e.isGroup&&e.table.modExists("moveColumn")&&e.table.modules.moveColumn.initializeColumn(e),(t.topCalc||t.bottomCalc)&&e.table.modExists("columnCalcs")&&e.table.modules.columnCalcs.initializeColumn(e),e.element.addEventListener("mouseenter",function(t){e.setTooltip()})},o.prototype._bindEvents=function(){var e,t,n,o=this,r=o.definition;"function"==typeof r.headerClick&&o.element.addEventListener("click",function(e){r.headerClick(e,o.getComponent())}),"function"==typeof r.headerDblClick&&o.element.addEventListener("dblclick",function(e){r.headerDblClick(e,o.getComponent())}),"function"==typeof r.headerContext&&o.element.addEventListener("contextmenu",function(e){r.headerContext(e,o.getComponent())}),"function"==typeof r.headerTap&&(n=!1,o.element.addEventListener("touchstart",function(e){n=!0},{passive:!0}),o.element.addEventListener("touchend",function(e){n&&r.headerTap(e,o.getComponent()),n=!1})),"function"==typeof r.headerDblTap&&(e=null,o.element.addEventListener("touchend",function(t){e?(clearTimeout(e),e=null,r.headerDblTap(t,o.getComponent())):e=setTimeout(function(){clearTimeout(e),e=null},300)})),"function"==typeof r.headerTapHold&&(t=null,o.element.addEventListener("touchstart",function(e){clearTimeout(t),t=setTimeout(function(){clearTimeout(t),t=null,n=!1,r.headerTapHold(e,o.getComponent())},1e3)},{passive:!0}),o.element.addEventListener("touchend",function(e){clearTimeout(t),t=null})),"function"==typeof r.cellClick&&(o.cellEvents.cellClick=r.cellClick),"function"==typeof r.cellDblClick&&(o.cellEvents.cellDblClick=r.cellDblClick),"function"==typeof r.cellContext&&(o.cellEvents.cellContext=r.cellContext),"function"==typeof r.cellMouseEnter&&(o.cellEvents.cellMouseEnter=r.cellMouseEnter),"function"==typeof r.cellMouseLeave&&(o.cellEvents.cellMouseLeave=r.cellMouseLeave),"function"==typeof r.cellMouseOver&&(o.cellEvents.cellMouseOver=r.cellMouseOver),"function"==typeof r.cellMouseOut&&(o.cellEvents.cellMouseOut=r.cellMouseOut),"function"==typeof r.cellMouseMove&&(o.cellEvents.cellMouseMove=r.cellMouseMove),"function"==typeof r.cellTap&&(o.cellEvents.cellTap=r.cellTap),"function"==typeof r.cellDblTap&&(o.cellEvents.cellDblTap=r.cellDblTap),"function"==typeof r.cellTapHold&&(o.cellEvents.cellTapHold=r.cellTapHold),"function"==typeof r.cellEdited&&(o.cellEvents.cellEdited=r.cellEdited),"function"==typeof r.cellEditing&&(o.cellEvents.cellEditing=r.cellEditing),"function"==typeof r.cellEditCancelled&&(o.cellEvents.cellEditCancelled=r.cellEditCancelled)},o.prototype._buildColumnHeader=function(){var e=this,t=e.definition,n=e.table;(n.modExists("sort")&&n.modules.sort.initializeColumn(e,e.contentElement),n.modExists("format")&&n.modules.format.initializeColumn(e),void 0!==t.editor&&n.modExists("edit")&&n.modules.edit.initializeColumn(e),void 0!==t.validator&&n.modExists("validate")&&n.modules.validate.initializeColumn(e),n.modExists("mutator")&&n.modules.mutator.initializeColumn(e),n.modExists("accessor")&&n.modules.accessor.initializeColumn(e),s(n.options.responsiveLayout)&&n.modExists("responsiveLayout")&&n.modules.responsiveLayout.initializeColumn(e),void 0!==t.visible&&(t.visible?e.show(!0):e.hide(!0)),t.cssClass)&&t.cssClass.split(" ").forEach(function(t){e.element.classList.add(t)});t.field&&this.element.setAttribute("tabulator-field",t.field),e.setMinWidth(void 0===t.minWidth?e.table.options.columnMinWidth:parseInt(t.minWidth)),e.reinitializeWidth(),e.tooltip=e.definition.tooltip||!1===e.definition.tooltip?e.definition.tooltip:e.table.options.tooltips,e.hozAlign=void 0===e.definition.align?"":e.definition.align},o.prototype._buildColumnHeaderContent=function(){this.definition,this.table;var e=document.createElement("div");return e.classList.add("tabulator-col-content"),e.appendChild(this._buildColumnHeaderTitle()),e},o.prototype._buildColumnHeaderTitle=function(){var e=this,t=e.definition,n=e.table,o=document.createElement("div");if(o.classList.add("tabulator-col-title"),t.editableTitle){var r=document.createElement("input");r.classList.add("tabulator-title-editor"),r.addEventListener("click",function(e){e.stopPropagation(),r.focus()}),r.addEventListener("change",function(){t.title=r.value,n.options.columnTitleChanged.call(e.table,e.getComponent())}),o.appendChild(r),t.field?n.modules.localize.bind("columns|"+t.field,function(e){r.value=e||t.title||" "}):r.value=t.title||" "}else t.field?n.modules.localize.bind("columns|"+t.field,function(n){e._formatColumnHeaderTitle(o,n||t.title||" ")}):e._formatColumnHeaderTitle(o,t.title||" ");return o},o.prototype._formatColumnHeaderTitle=function(e,t){var n,o,r,i;if(this.definition.titleFormatter&&this.table.modExists("format"))switch(n=this.table.modules.format.getFormatter(this.definition.titleFormatter),i={getValue:function(){return t},getElement:function(){return e}},r="function"==typeof(r=this.definition.titleFormatterParams||{})?r():r,void 0===(o=n.call(this.table.modules.format,i,r))?"undefined":s(o)){case"object":o instanceof Node?e.appendChild(o):(e.innerHTML="",console.warn("Format Error - Title formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:",o));break;case"undefined":case"null":e.innerHTML="";break;default:e.innerHTML=o}else e.innerHTML=t},o.prototype._buildGroupHeader=function(){this.element.classList.add("tabulator-col-group"),this.element.setAttribute("role","columngroup"),this.element.setAttribute("aria-title",this.definition.title),this.element.appendChild(this.groupElement)},o.prototype._getFlatData=function(e){return e[this.field]},o.prototype._getNestedData=function(e){for(var t,n=e,o=this.fieldStructure,r=o.length,i=0;i<r&&(t=n=n[o[i]],n);i++);return t},o.prototype._setFlatData=function(e,t){this.field&&(e[this.field]=t)},o.prototype._setNesteData=function(e,t){for(var n=e,o=this.fieldStructure,r=o.length,i=0;i<r;i++)i==r-1?n[o[i]]=t:(n[o[i]]||(n[o[i]]={}),n=n[o[i]])},o.prototype.attachColumn=function(e){this.groupElement?(this.columns.push(e),this.groupElement.appendChild(e.getElement())):console.warn("Column Warning - Column being attached to another column instead of column group")},o.prototype.verticalAlign=function(e,t){var n=this.parent.isGroup?this.parent.getGroupElement().clientHeight:t||this.parent.getHeadersElement().clientHeight;this.element.style.height=n+"px",this.isGroup&&(this.groupElement.style.minHeight=n-this.contentElement.offsetHeight+"px"),this.isGroup||"top"===e||(this.element.style.paddingTop="bottom"===e?this.element.clientHeight-this.contentElement.offsetHeight+"px":(this.element.clientHeight-this.contentElement.offsetHeight)/2+"px"),this.columns.forEach(function(t){t.verticalAlign(e)})},o.prototype.clearVerticalAlign=function(){this.element.style.paddingTop="",this.element.style.height="",this.element.style.minHeight="",this.groupElement.style.minHeight="",this.columns.forEach(function(e){e.clearVerticalAlign()})},o.prototype.getElement=function(){return this.element},o.prototype.getGroupElement=function(){return this.groupElement},o.prototype.getField=function(){return this.field},o.prototype.getFirstColumn=function(){return this.isGroup?!!this.columns.length&&this.columns[0].getFirstColumn():this},o.prototype.getLastColumn=function(){return this.isGroup?!!this.columns.length&&this.columns[this.columns.length-1].getLastColumn():this},o.prototype.getColumns=function(){return this.columns},o.prototype.getCells=function(){return this.cells},o.prototype.getTopColumn=function(){return this.parent.isGroup?this.parent.getTopColumn():this},o.prototype.getDefinition=function(e){var t=[];return this.isGroup&&e&&(this.columns.forEach(function(e){t.push(e.getDefinition(!0))}),this.definition.columns=t),this.definition},o.prototype.checkColumnVisibility=function(){var e=!1;this.columns.forEach(function(t){t.visible&&(e=!0)}),e?(this.show(),this.parent.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!1)):this.hide()},o.prototype.show=function(e,t){this.visible||(this.visible=!0,this.element.style.display="",this.parent.isGroup&&this.parent.checkColumnVisibility(),this.cells.forEach(function(e){e.show()}),this.isGroup||null!==this.width||this.reinitializeWidth(),this.table.columnManager._verticalAlignHeaders(),this.table.options.persistentLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.persistence.save("columns"),!t&&this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.updateColumnVisibility(this,this.visible),e||this.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!0),this.parent.isGroup&&this.parent.matchChildWidths())},o.prototype.hide=function(e,t){this.visible&&(this.visible=!1,this.element.style.display="none",this.table.columnManager._verticalAlignHeaders(),this.parent.isGroup&&this.parent.checkColumnVisibility(),this.cells.forEach(function(e){e.hide()}),this.table.options.persistentLayout&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("columns"),!t&&this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.updateColumnVisibility(this,this.visible),e||this.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!1),this.parent.isGroup&&this.parent.matchChildWidths())},o.prototype.matchChildWidths=function(){var e=0;this.contentElement&&this.columns.length&&(this.columns.forEach(function(t){t.visible&&(e+=t.getWidth())}),this.contentElement.style.maxWidth=e-1+"px")},o.prototype.setWidth=function(e){this.widthFixed=!0,this.setWidthActual(e)},o.prototype.setWidthActual=function(e){isNaN(e)&&(e=Math.floor(this.table.element.clientWidth/100*parseInt(e))),e=Math.max(this.minWidth,e),this.width=e,this.widthStyled=e?e+"px":"",this.element.style.width=this.widthStyled,this.isGroup||this.cells.forEach(function(e){e.setWidth()}),this.parent.isGroup&&this.parent.matchChildWidths(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout()},o.prototype.checkCellHeights=function(){var e=[];this.cells.forEach(function(t){t.row.heightInitialized&&(null!==t.row.getElement().offsetParent?(e.push(t.row),t.row.clearCellHeight()):t.row.heightInitialized=!1)}),e.forEach(function(e){e.calcHeight()}),e.forEach(function(e){e.setCellHeight()})},o.prototype.getWidth=function(){return this.width},o.prototype.getHeight=function(){return this.element.offsetHeight},o.prototype.setMinWidth=function(e){this.minWidth=e,this.minWidthStyled=e?e+"px":"",this.element.style.minWidth=this.minWidthStyled,this.cells.forEach(function(e){e.setMinWidth()})},o.prototype.delete=function(){this.isGroup&&this.columns.forEach(function(e){e.delete()});for(var e=this.cells.length,t=0;t<e;t++)this.cells[0].delete();this.element.parentNode.removeChild(this.element),this.table.columnManager.deregisterColumn(this)},o.prototype.generateCell=function(e){var t=new u(this,e);return this.cells.push(t),t},o.prototype.nextColumn=function(){var e=this.table.columnManager.findColumnIndex(this);return e>-1&&this.table.columnManager.getColumnByIndex(e+1)},o.prototype.prevColumn=function(){var e=this.table.columnManager.findColumnIndex(this);return e>-1&&this.table.columnManager.getColumnByIndex(e-1)},o.prototype.reinitializeWidth=function(e){this.widthFixed=!1,void 0===this.definition.width||e||this.setWidth(this.definition.width),this.table.modExists("filter")&&this.table.modules.filter.hideHeaderFilterElements(),this.fitToData(),this.table.modExists("filter")&&this.table.modules.filter.showHeaderFilterElements()},o.prototype.fitToData=function(){this.widthFixed||(this.element.style.width="",this.cells.forEach(function(e){e.clearWidth()}));var e=this.element.offsetWidth;this.width&&this.widthFixed||(this.cells.forEach(function(t){var n=t.getWidth();n>e&&(e=n)}),e&&this.setWidthActual(e+1))},o.prototype.deleteCell=function(e){var t=this.cells.indexOf(e);t>-1&&this.cells.splice(t,1)},o.prototype.defaultOptionList=["title","field","columns","visible","align","width","minWidth","widthGrow","widthShrink","resizable","frozen","responsive","tooltip","cssClass","rowHandle","hideInHtml","print","htmlOutput","sorter","sorterParams","formatter","formatterParams","variableHeight","editable","editor","editorParams","validator","mutator","mutatorParams","mutatorData","mutatorDataParams","mutatorEdit","mutatorEditParams","mutatorClipboard","mutatorClipboardParams","accessor","accessorParams","accessorData","accessorDataParams","accessorDownload","accessorDownloadParams","accessorClipboard","accessorClipboardParams","download","downloadTitle","topCalc","topCalcParams","topCalcFormatter","topCalcFormatterParams","bottomCalc","bottomCalcParams","bottomCalcFormatter","bottomCalcFormatterParams","cellClick","cellDblClick","cellContext","cellTap","cellDblTap","cellTapHold","cellMouseEnter","cellMouseLeave","cellMouseOver","cellMouseOut","cellMouseMove","cellEditing","cellEdited","cellEditCancelled","headerSort","headerSortStartingDir","headerSortTristate","headerClick","headerDblClick","headerContext","headerTap","headerDblTap","headerTapHold","headerTooltip","headerVertical","editableTitle","titleFormatter","titleFormatterParams","headerFilter","headerFilterPlaceholder","headerFilterParams","headerFilterEmptyCheck","headerFilterFunc","headerFilterFuncParams","headerFilterLiveFilter","print"],o.prototype.getComponent=function(){return new n(this)};var r=function(e){this.table=e,this.element=this.createHolderElement(),this.tableElement=this.createTableElement(),this.columnManager=null,this.height=0,this.firstRender=!1,this.renderMode="classic",this.rows=[],this.activeRows=[],this.activeRowsCount=0,this.displayRows=[],this.displayRowsCount=0,this.scrollTop=0,this.scrollLeft=0,this.vDomRowHeight=20,this.vDomTop=0,this.vDomBottom=0,this.vDomScrollPosTop=0,this.vDomScrollPosBottom=0,this.vDomTopPad=0,this.vDomBottomPad=0,this.vDomMaxRenderChain=90,this.vDomWindowBuffer=0,this.vDomWindowMinTotalRows=20,this.vDomWindowMinMarginRows=5,this.vDomTopNewRows=[],this.vDomBottomNewRows=[]};r.prototype.createHolderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-tableHolder"),e.setAttribute("tabindex",0),e},r.prototype.createTableElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-table"),e},r.prototype.getElement=function(){return this.element},r.prototype.getTableElement=function(){return this.tableElement},r.prototype.getRowPosition=function(e,t){return t?this.activeRows.indexOf(e):this.rows.indexOf(e)},r.prototype.setColumnManager=function(e){this.columnManager=e},r.prototype.initialize=function(){var e=this;e.setRenderMode(),e.element.appendChild(e.tableElement),e.firstRender=!0,e.element.addEventListener("scroll",function(){var t=e.element.scrollLeft;e.scrollLeft!=t&&(e.columnManager.scrollHorizontal(t),e.table.options.groupBy&&e.table.modules.groupRows.scrollHeaders(t),e.table.modExists("columnCalcs")&&e.table.modules.columnCalcs.scrollHorizontal(t)),e.scrollLeft=t}),"virtual"===this.renderMode&&e.element.addEventListener("scroll",function(){var t=e.element.scrollTop,n=e.scrollTop>t;e.scrollTop!=t?(e.scrollTop=t,e.scrollVertical(n),"scroll"==e.table.options.ajaxProgressiveLoad&&e.table.modules.ajax.nextPage(e.element.scrollHeight-e.element.clientHeight-t)):e.scrollTop=t})},r.prototype.findRow=function(e){var t=this;return"object"!=(void 0===e?"undefined":s(e))?null!=e&&(t.rows.find(function(n){return n.data[t.table.options.index]==e})||!1):e instanceof a?e:e instanceof i?e._getSelf()||!1:"undefined"!=typeof HTMLElement&&e instanceof HTMLElement&&t.rows.find(function(t){return t.element===e})||!1},r.prototype.getRowFromDataObject=function(e){return this.rows.find(function(t){return t.data===e})||!1},r.prototype.getRowFromPosition=function(e,t){return t?this.activeRows[e]:this.rows[e]},r.prototype.scrollToRow=function(e,t,n){var o,r=this,i=this.getDisplayRows().indexOf(e),a=e.getElement(),s=0;return new Promise(function(e,l){if(i>-1){if(void 0===t&&(t=r.table.options.scrollToRowPosition),void 0===n&&(n=r.table.options.scrollToRowIfVisible),"nearest"===t)switch(r.renderMode){case"classic":o=d.prototype.helpers.elOffset(a).top,t=Math.abs(r.element.scrollTop-o)>Math.abs(r.element.scrollTop+r.element.clientHeight-o)?"bottom":"top";break;case"virtual":t=Math.abs(r.vDomTop-i)>Math.abs(r.vDomBottom-i)?"bottom":"top"}if(!n&&d.prototype.helpers.elVisible(a)&&(s=d.prototype.helpers.elOffset(a).top-d.prototype.helpers.elOffset(r.element).top)>0&&s<r.element.clientHeight-a.offsetHeight)return!1;switch(r.renderMode){case"classic":r.element.scrollTop=d.prototype.helpers.elOffset(a).top-d.prototype.helpers.elOffset(r.element).top+r.element.scrollTop;break;case"virtual":r._virtualRenderFill(i,!0)}switch(t){case"middle":case"center":r.element.scrollTop=r.element.scrollTop-r.element.clientHeight/2;break;case"bottom":r.element.scrollTop=r.element.scrollTop-r.element.clientHeight+a.offsetHeight}e()}else console.warn("Scroll Error - Row not visible"),l("Scroll Error - Row not visible")})},r.prototype.setData=function(e,t){var n=this,o=this;return new Promise(function(r,i){t&&n.getDisplayRows().length?o.table.options.pagination?o._setDataActual(e,!0):n.reRenderInPosition(function(){o._setDataActual(e)}):(n.table.options.autoColumns&&n.table.columnManager.generateColumnsFromRowData(e),n.resetScroll(),n._setDataActual(e)),r()})},r.prototype._setDataActual=function(e,t){var n=this;n.table.options.dataLoading.call(this.table,e),this._wipeElements(),this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.clear(),Array.isArray(e)?(this.table.modExists("selectRow")&&this.table.modules.selectRow.clearSelectionData(),this.table.options.reactiveData&&this.table.modExists("reactiveData",!0)&&this.table.modules.reactiveData.watchData(e),e.forEach(function(e,t){if(e&&"object"===(void 0===e?"undefined":s(e))){var o=new a(e,n);n.rows.push(o)}else console.warn("Data Loading Warning - Invalid row data detected and ignored, expecting object but received:",e)}),n.table.options.dataLoaded.call(this.table,e),n.refreshActiveData(!1,!1,t)):console.error("Data Loading Error - Unable to process data due to invalid data type \nExpecting: array \nReceived: ",void 0===e?"undefined":s(e),"\nData: ",e)},r.prototype._wipeElements=function(){this.rows.forEach(function(e){e.wipe()}),this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.wipe(),this.rows=[]},r.prototype.deleteRow=function(e,t){var n=this.rows.indexOf(e),o=this.activeRows.indexOf(e);o>-1&&this.activeRows.splice(o,1),n>-1&&this.rows.splice(n,1),this.setActiveRows(this.activeRows),this.displayRowIterator(function(t){var n=t.indexOf(e);n>-1&&t.splice(n,1)}),t||this.reRenderInPosition(),this.table.options.rowDeleted.call(this.table,e.getComponent()),this.table.options.dataEdited.call(this.table,this.getData()),this.table.options.groupBy&&this.table.modExists("groupRows")?this.table.modules.groupRows.updateGroupRows(!0):this.table.options.pagination&&this.table.modExists("page")?this.refreshActiveData(!1,!1,!0):this.table.options.pagination&&this.table.modExists("page")&&this.refreshActiveData("page")},r.prototype.addRow=function(e,t,n,o){var r=this.addRowActual(e,t,n,o);return this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("rowAdd",r,{data:e,pos:t,index:n}),r},r.prototype.addRows=function(e,t,n){var o=this,r=this,i=[];return new Promise(function(a,s){t=o.findAddRowPos(t),Array.isArray(e)||(e=[e]),e.length-1,(void 0===n&&t||void 0!==n&&!t)&&e.reverse(),e.forEach(function(e,o){var a=r.addRow(e,t,n,!0);i.push(a)}),o.table.options.groupBy&&o.table.modExists("groupRows")?o.table.modules.groupRows.updateGroupRows(!0):o.table.options.pagination&&o.table.modExists("page")?o.refreshActiveData(!1,!1,!0):o.reRenderInPosition(),o.table.modExists("columnCalcs")&&o.table.modules.columnCalcs.recalc(o.table.rowManager.activeRows),a(i)})},r.prototype.findAddRowPos=function(e){return void 0===e&&(e=this.table.options.addRowPos),"pos"===e&&(e=!0),"bottom"===e&&(e=!1),e},r.prototype.addRowActual=function(e,t,n,o){var r,i=e instanceof a?e:new a(e||{},this),s=this.findAddRowPos(t);if(!n&&this.table.options.pagination&&"page"==this.table.options.paginationAddRow&&(r=this.getDisplayRows(),s?r.length?n=r[0]:this.activeRows.length&&(n=this.activeRows[this.activeRows.length-1],s=!1):r.length&&(n=r[r.length-1],s=!(r.length<this.table.modules.page.getPageSize()))),n&&(n=this.findRow(n)),this.table.options.groupBy&&this.table.modExists("groupRows")){this.table.modules.groupRows.assignRowToGroup(i);var l=i.getGroup().rows;l.length>1&&(!n||n&&-1==l.indexOf(n)?s?l[0]!==i&&(n=l[0],this._moveRowInArray(i.getGroup().rows,i,n,s)):l[l.length-1]!==i&&(n=l[l.length-1],this._moveRowInArray(i.getGroup().rows,i,n,s)):this._moveRowInArray(i.getGroup().rows,i,n,s))}if(n){var u=this.rows.indexOf(n),c=this.activeRows.indexOf(n);this.displayRowIterator(function(e){var t=e.indexOf(n);t>-1&&e.splice(s?t:t+1,0,i)}),c>-1&&this.activeRows.splice(s?c:c+1,0,i),u>-1&&this.rows.splice(s?u:u+1,0,i)}else s?(this.displayRowIterator(function(e){e.unshift(i)}),this.activeRows.unshift(i),this.rows.unshift(i)):(this.displayRowIterator(function(e){e.push(i)}),this.activeRows.push(i),this.rows.push(i));return this.setActiveRows(this.activeRows),this.table.options.rowAdded.call(this.table,i.getComponent()),this.table.options.dataEdited.call(this.table,this.getData()),o||this.reRenderInPosition(),i},r.prototype.moveRow=function(e,t,n){this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("rowMove",e,{pos:this.getRowPosition(e),to:t,after:n}),this.moveRowActual(e,t,n),this.table.options.rowMoved.call(this.table,e.getComponent())},r.prototype.moveRowActual=function(e,t,n){var o=this;if(this._moveRowInArray(this.rows,e,t,n),this._moveRowInArray(this.activeRows,e,t,n),this.displayRowIterator(function(r){o._moveRowInArray(r,e,t,n)}),this.table.options.groupBy&&this.table.modExists("groupRows")){var r=t.getGroup(),i=e.getGroup();r===i?this._moveRowInArray(r.rows,e,t,n):(i&&i.removeRow(e),r.insertRow(e,t,n))}},r.prototype._moveRowInArray=function(e,t,n,o){var r,i,a;if(t!==n&&((r=e.indexOf(t))>-1&&(e.splice(r,1),(i=e.indexOf(n))>-1?o?e.splice(i+1,0,t):e.splice(i,0,t):e.splice(r,0,t)),e===this.getDisplayRows())){a=i>r?i:r+1;for(var s=r<i?r:i;s<=a;s++)e[s]&&this.styleRow(e[s],s)}},r.prototype.clearData=function(){this.setData([])},r.prototype.getRowIndex=function(e){return this.findRowIndex(e,this.rows)},r.prototype.getDisplayRowIndex=function(e){var t=this.getDisplayRows().indexOf(e);return t>-1&&t},r.prototype.nextDisplayRow=function(e,t){var n=this.getDisplayRowIndex(e),o=!1;return!1!==n&&n<this.displayRowsCount-1&&(o=this.getDisplayRows()[n+1]),!o||o instanceof a&&"row"==o.type?o:this.nextDisplayRow(o,t)},r.prototype.prevDisplayRow=function(e,t){var n=this.getDisplayRowIndex(e),o=!1;return n&&(o=this.getDisplayRows()[n-1]),!o||o instanceof a&&"row"==o.type?o:this.prevDisplayRow(o,t)},r.prototype.findRowIndex=function(e,t){var n;return!!((e=this.findRow(e))&&(n=t.indexOf(e))>-1)&&n},r.prototype.getData=function(e,t){var n=[];return(e?this.activeRows:this.rows).forEach(function(e){n.push(e.getData(t||"data"))}),n},r.prototype.getComponents=function(e){var t=[];return(e?this.activeRows:this.rows).forEach(function(e){t.push(e.getComponent())}),t},r.prototype.getDataCount=function(e){return e?this.activeRows.length:this.rows.length},r.prototype._genRemoteRequest=function(){var e=this,t=e.table,n=t.options,o={};if(t.modExists("page")){if(n.ajaxSorting){var r=e.table.modules.sort.getSort();r.forEach(function(e){delete e.column}),o[e.table.modules.page.paginationDataSentNames.sorters]=r}if(n.ajaxFiltering){var i=e.table.modules.filter.getFilters(!0,!0);o[e.table.modules.page.paginationDataSentNames.filters]=i}e.table.modules.ajax.setParams(o,!0)}t.modules.ajax.sendRequest().then(function(t){e.setData(t)}).catch(function(e){})},r.prototype.filterRefresh=function(){var e=this.table,t=e.options,n=this.scrollLeft;t.ajaxFiltering?"remote"==t.pagination&&e.modExists("page")?(e.modules.page.reset(!0),e.modules.page.setPage(1).then(function(){}).catch(function(){})):t.ajaxProgressiveLoad?e.modules.ajax.loadData().then(function(){}).catch(function(){}):this._genRemoteRequest():this.refreshActiveData("filter"),this.scrollHorizontal(n)},r.prototype.sorterRefresh=function(e){var t=this.table,n=this.table.options,o=this.scrollLeft;n.ajaxSorting?("remote"==n.pagination||n.progressiveLoad)&&t.modExists("page")?(t.modules.page.reset(!0),t.modules.page.setPage(1).then(function(){}).catch(function(){})):n.ajaxProgressiveLoad?t.modules.ajax.loadData().then(function(){}).catch(function(){}):this._genRemoteRequest():this.refreshActiveData(e?"filter":"sort"),this.scrollHorizontal(o)},r.prototype.scrollHorizontal=function(e){this.scrollLeft=e,this.element.scrollLeft=e,this.table.options.groupBy&&this.table.modules.groupRows.scrollHeaders(e),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.scrollHorizontal(e)},r.prototype.refreshActiveData=function(e,t,n){var o,r=this.table;switch(this.table.modExists("edit")&&this.table.modules.edit.cancelEdit(),e||(e="all"),r.options.selectable&&!r.options.selectablePersistence&&r.modExists("selectRow")&&r.modules.selectRow.deselectRows(),e){case"all":case"filter":t?t=!1:r.modExists("filter")?this.setActiveRows(r.modules.filter.filter(this.rows)):this.setActiveRows(this.rows.slice(0));case"sort":t?t=!1:r.modExists("sort")&&r.modules.sort.sort(this.activeRows);case"display":this.resetDisplayRows();case"freeze":t?t=!1:this.table.modExists("frozenRows")&&r.modules.frozenRows.isFrozen()&&(r.modules.frozenRows.getDisplayIndex()||r.modules.frozenRows.setDisplayIndex(this.getNextDisplayIndex()),o=r.modules.frozenRows.getDisplayIndex(),!0!==(o=this.setDisplayRows(r.modules.frozenRows.getRows(this.getDisplayRows(o-1)),o))&&r.modules.frozenRows.setDisplayIndex(o));case"group":t?t=!1:r.options.groupBy&&r.modExists("groupRows")&&(r.modules.groupRows.getDisplayIndex()||r.modules.groupRows.setDisplayIndex(this.getNextDisplayIndex()),o=r.modules.groupRows.getDisplayIndex(),!0!==(o=this.setDisplayRows(r.modules.groupRows.getRows(this.getDisplayRows(o-1)),o))&&r.modules.groupRows.setDisplayIndex(o));case"tree":t?t=!1:r.options.dataTree&&r.modExists("dataTree")&&(r.modules.dataTree.getDisplayIndex()||r.modules.dataTree.setDisplayIndex(this.getNextDisplayIndex()),o=r.modules.dataTree.getDisplayIndex(),!0!==(o=this.setDisplayRows(r.modules.dataTree.getRows(this.getDisplayRows(o-1)),o))&&r.modules.dataTree.setDisplayIndex(o)),r.options.pagination&&r.modExists("page")&&!n&&"local"==r.modules.page.getMode()&&r.modules.page.reset();case"page":t?t=!1:r.options.pagination&&r.modExists("page")&&(r.modules.page.getDisplayIndex()||r.modules.page.setDisplayIndex(this.getNextDisplayIndex()),o=r.modules.page.getDisplayIndex(),"local"==r.modules.page.getMode()&&r.modules.page.setMaxRows(this.getDisplayRows(o-1).length),!0!==(o=this.setDisplayRows(r.modules.page.getRows(this.getDisplayRows(o-1)),o))&&r.modules.page.setDisplayIndex(o))}d.prototype.helpers.elVisible(this.element)&&(n?this.reRenderInPosition():(this.renderTable(),r.options.layoutColumnsOnNewData&&this.table.columnManager.redraw(!0))),r.modExists("columnCalcs")&&r.modules.columnCalcs.recalc(this.activeRows)},r.prototype.setActiveRows=function(e){this.activeRows=e,this.activeRowsCount=this.activeRows.length},r.prototype.resetDisplayRows=function(){this.displayRows=[],this.displayRows.push(this.activeRows.slice(0)),this.displayRowsCount=this.displayRows[0].length,this.table.modExists("frozenRows")&&this.table.modules.frozenRows.setDisplayIndex(0),this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.setDisplayIndex(0),this.table.options.pagination&&this.table.modExists("page")&&this.table.modules.page.setDisplayIndex(0)},r.prototype.getNextDisplayIndex=function(){return this.displayRows.length},r.prototype.setDisplayRows=function(e,t){var n=!0;return t&&void 0!==this.displayRows[t]?(this.displayRows[t]=e,n=!0):(this.displayRows.push(e),n=t=this.displayRows.length-1),t==this.displayRows.length-1&&(this.displayRowsCount=this.displayRows[this.displayRows.length-1].length),n},r.prototype.getDisplayRows=function(e){return void 0===e?this.displayRows.length?this.displayRows[this.displayRows.length-1]:[]:this.displayRows[e]||[]},r.prototype.getVisibleRows=function(e){var t=this.element.scrollTop,n=this.element.clientHeight+t,o=!1,r=0,i=0,a=this.getDisplayRows();if(e){this.getDisplayRows();for(var s=this.vDomTop;s<=this.vDomBottom;s++)if(a[s])if(o){if(!(n-a[s].getElement().offsetTop>=0))break;i=s}else t-a[s].getElement().offsetTop>=0?r=s:o=!0}else r=this.vDomTop,i=this.vDomBottom;return a.slice(r,i+1)},r.prototype.displayRowIterator=function(e){this.displayRows.forEach(e),this.displayRowsCount=this.displayRows[this.displayRows.length-1].length},r.prototype.getRows=function(){return this.rows},r.prototype.reRenderInPosition=function(e){if("virtual"==this.getRenderMode()){for(var t=this.element.scrollTop,n=!1,o=!1,r=this.scrollLeft,i=this.getDisplayRows(),a=this.vDomTop;a<=this.vDomBottom;a++)if(i[a]){var s=t-i[a].getElement().offsetTop;if(!(!1===o||Math.abs(s)<o))break;o=s,n=a}e&&e(),this._virtualRenderFill(!1===n?this.displayRowsCount-1:n,!0,o||0),this.scrollHorizontal(r)}else this.renderTable(),e&&e()},r.prototype.setRenderMode=function(){(this.table.element.clientHeight||this.table.options.height)&&this.table.options.virtualDom?this.renderMode="virtual":this.renderMode="classic"},r.prototype.getRenderMode=function(){return this.renderMode},r.prototype.renderTable=function(){switch(this.table.options.renderStarted.call(this.table),this.element.scrollTop=0,this.renderMode){case"classic":this._simpleRender();break;case"virtual":this._virtualRenderFill()}this.firstRender&&(this.displayRowsCount?(this.firstRender=!1,this.table.modules.layout.layout()):this.renderEmptyScroll()),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout(),this.displayRowsCount||this.table.options.placeholder&&(this.renderMode&&this.table.options.placeholder.setAttribute("tabulator-render-mode",this.renderMode),this.getElement().appendChild(this.table.options.placeholder)),this.table.options.renderComplete.call(this.table)},r.prototype._simpleRender=function(){this._clearVirtualDom(),this.displayRowsCount?this.checkClassicModeGroupHeaderWidth():this.renderEmptyScroll()},r.prototype.checkClassicModeGroupHeaderWidth=function(){var e=this,t=this.tableElement,n=!0;e.getDisplayRows().forEach(function(o,r){e.styleRow(o,r),t.appendChild(o.getElement()),o.initialize(!0),"group"!==o.type&&(n=!1)}),t.style.minWidth=n?e.table.columnManager.getWidth()+"px":""},r.prototype.renderEmptyScroll=function(){this.tableElement.style.minWidth=this.table.columnManager.getWidth()+"px",this.tableElement.style.minHeight="1px",this.tableElement.style.visibility="hidden"},r.prototype._clearVirtualDom=function(){var e=this.tableElement;for(this.table.options.placeholder&&this.table.options.placeholder.parentNode&&this.table.options.placeholder.parentNode.removeChild(this.table.options.placeholder);e.firstChild;)e.removeChild(e.firstChild);e.style.paddingTop="",e.style.paddingBottom="",e.style.minWidth="",e.style.minHeight="",e.style.visibility="",this.scrollTop=0,this.scrollLeft=0,this.vDomTop=0,this.vDomBottom=0,this.vDomTopPad=0,this.vDomBottomPad=0},r.prototype.styleRow=function(e,t){var n=e.getElement();t%2?(n.classList.add("tabulator-row-even"),n.classList.remove("tabulator-row-odd")):(n.classList.add("tabulator-row-odd"),n.classList.remove("tabulator-row-even"))},r.prototype._virtualRenderFill=function(e,t,n){var o=this.tableElement,r=this.element,i=0,a=0,s=0,l=0,u=!0,c=this.getDisplayRows();if(n=n||0,e=e||0){for(;o.firstChild;)o.removeChild(o.firstChild);var p=(this.displayRowsCount-e+1)*this.vDomRowHeight;p<this.height&&(e-=Math.ceil((this.height-p)/this.vDomRowHeight))<0&&(e=0),e-=i=Math.min(Math.max(Math.floor(this.vDomWindowBuffer/this.vDomRowHeight),this.vDomWindowMinMarginRows),e)}else this._clearVirtualDom();if(this.displayRowsCount&&d.prototype.helpers.elVisible(this.element)){for(this.vDomTop=e,this.vDomBottom=e-1;(a<=this.height+this.vDomWindowBuffer||l<this.vDomWindowMinTotalRows)&&this.vDomBottom<this.displayRowsCount-1;){var h,f=this.vDomBottom+1,m=c[f];this.styleRow(m,f),o.appendChild(m.getElement()),m.initialized?m.heightInitialized||m.normalizeHeight(!0):m.initialize(!0),h=m.getHeight(),l<i?s+=h:a+=h,h>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*h),"group"!==m.type&&(u=!1),this.vDomBottom++,l++}e?(this.vDomTopPad=t?this.vDomRowHeight*this.vDomTop+n:this.scrollTop-s,this.vDomBottomPad=this.vDomBottom==this.displayRowsCount-1?0:Math.max(this.vDomScrollHeight-this.vDomTopPad-a-s,0)):(this.vDomTopPad=0,this.vDomRowHeight=Math.floor((a+s)/l),this.vDomBottomPad=this.vDomRowHeight*(this.displayRowsCount-this.vDomBottom-1),this.vDomScrollHeight=s+a+this.vDomBottomPad-this.height),o.style.paddingTop=this.vDomTopPad+"px",o.style.paddingBottom=this.vDomBottomPad+"px",t&&(this.scrollTop=this.vDomTopPad+s+n-(this.element.scrollWidth>this.element.clientWidth?this.element.offsetHeight-this.element.clientHeight:0)),this.scrollTop=Math.min(this.scrollTop,this.element.scrollHeight-this.height),this.element.scrollWidth>this.element.offsetWidth&&t&&(this.scrollTop+=this.element.offsetHeight-this.element.clientHeight),this.vDomScrollPosTop=this.scrollTop,this.vDomScrollPosBottom=this.scrollTop,r.scrollTop=this.scrollTop,o.style.minWidth=u?this.table.columnManager.getWidth()+"px":"",this.table.options.groupBy&&"fitDataFill"!=this.table.modules.layout.getMode()&&this.displayRowsCount==this.table.modules.groupRows.countGroups()&&(this.tableElement.style.minWidth=this.table.columnManager.getWidth())}else this.renderEmptyScroll()},r.prototype.scrollVertical=function(e){var t=this.scrollTop-this.vDomScrollPosTop,n=this.scrollTop-this.vDomScrollPosBottom,o=2*this.vDomWindowBuffer;if(-t>o||n>o){var r=this.scrollLeft;this._virtualRenderFill(Math.floor(this.element.scrollTop/this.element.scrollHeight*this.displayRowsCount)),this.scrollHorizontal(r)}else e?(t<0&&this._addTopRow(-t),n<0&&this.vDomScrollHeight-this.scrollTop>this.vDomWindowBuffer&&this._removeBottomRow(-n)):(t>=0&&this.scrollTop>this.vDomWindowBuffer&&this._removeTopRow(t),n>=0&&this._addBottomRow(n))},r.prototype._addTopRow=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=this.tableElement,o=this.getDisplayRows();if(this.vDomTop){var r=this.vDomTop-1,i=o[r],a=i.getHeight()||this.vDomRowHeight;e>=a&&(this.styleRow(i,r),n.insertBefore(i.getElement(),n.firstChild),i.initialized&&i.heightInitialized||(this.vDomTopNewRows.push(i),i.heightInitialized||i.clearCellHeight()),i.initialize(),this.vDomTopPad-=a,this.vDomTopPad<0&&(this.vDomTopPad=r*this.vDomRowHeight),r||(this.vDomTopPad=0),n.style.paddingTop=this.vDomTopPad+"px",this.vDomScrollPosTop-=a,this.vDomTop--),e=-(this.scrollTop-this.vDomScrollPosTop),i.getHeight()>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*i.getHeight()),t<this.vDomMaxRenderChain&&this.vDomTop&&e>=(o[this.vDomTop-1].getHeight()||this.vDomRowHeight)?this._addTopRow(e,t+1):this._quickNormalizeRowHeight(this.vDomTopNewRows)}},r.prototype._removeTopRow=function(e){var t=this.tableElement,n=this.getDisplayRows()[this.vDomTop],o=n.getHeight()||this.vDomRowHeight;if(e>=o){var r=n.getElement();r.parentNode.removeChild(r),this.vDomTopPad+=o,t.style.paddingTop=this.vDomTopPad+"px",this.vDomScrollPosTop+=this.vDomTop?o:o+this.vDomWindowBuffer,this.vDomTop++,e=this.scrollTop-this.vDomScrollPosTop,this._removeTopRow(e)}},r.prototype._addBottomRow=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=this.tableElement,o=this.getDisplayRows();if(this.vDomBottom<this.displayRowsCount-1){var r=this.vDomBottom+1,i=o[r],a=i.getHeight()||this.vDomRowHeight;e>=a&&(this.styleRow(i,r),n.appendChild(i.getElement()),i.initialized&&i.heightInitialized||(this.vDomBottomNewRows.push(i),i.heightInitialized||i.clearCellHeight()),i.initialize(),this.vDomBottomPad-=a,(this.vDomBottomPad<0||r==this.displayRowsCount-1)&&(this.vDomBottomPad=0),n.style.paddingBottom=this.vDomBottomPad+"px",this.vDomScrollPosBottom+=a,this.vDomBottom++),e=this.scrollTop-this.vDomScrollPosBottom,i.getHeight()>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*i.getHeight()),t<this.vDomMaxRenderChain&&this.vDomBottom<this.displayRowsCount-1&&e>=(o[this.vDomBottom+1].getHeight()||this.vDomRowHeight)?this._addBottomRow(e,t+1):this._quickNormalizeRowHeight(this.vDomBottomNewRows)}},r.prototype._removeBottomRow=function(e){var t=this.tableElement,n=this.getDisplayRows()[this.vDomBottom],o=n.getHeight()||this.vDomRowHeight;if(e>=o){var r=n.getElement();r.parentNode&&r.parentNode.removeChild(r),this.vDomBottomPad+=o,this.vDomBottomPad<0&&(this.vDomBottomPad=0),t.style.paddingBottom=this.vDomBottomPad+"px",this.vDomScrollPosBottom-=o,this.vDomBottom--,e=-(this.scrollTop-this.vDomScrollPosBottom),this._removeBottomRow(e)}},r.prototype._quickNormalizeRowHeight=function(e){e.forEach(function(e){e.calcHeight()}),e.forEach(function(e){e.setCellHeight()}),e.length=0},r.prototype.normalizeHeight=function(){this.activeRows.forEach(function(e){e.normalizeHeight()})},r.prototype.adjustTableSize=function(){if("virtual"===this.renderMode){this.height=this.element.clientHeight,this.vDomWindowBuffer=this.table.options.virtualDomBuffer||this.height;var e=this.columnManager.getElement().offsetHeight+(this.table.footerManager&&!this.table.footerManager.external?this.table.footerManager.getElement().offsetHeight:0);this.element.style.minHeight="calc(100% - "+e+"px)",this.element.style.height="calc(100% - "+e+"px)",this.element.style.maxHeight="calc(100% - "+e+"px)"}},r.prototype.reinitialize=function(){this.rows.forEach(function(e){e.reinitialize()})},r.prototype.redraw=function(e){var t=this.scrollLeft;this.adjustTableSize(),this.table.tableWidth=this.table.element.clientWidth,e?this.renderTable():("classic"==self.renderMode?self.table.options.groupBy?self.refreshActiveData("group",!1,!1):this._simpleRender():(this.reRenderInPosition(),this.scrollHorizontal(t)),this.displayRowsCount||this.table.options.placeholder&&this.getElement().appendChild(this.table.options.placeholder))},r.prototype.resetScroll=function(){if(this.element.scrollLeft=0,this.element.scrollTop=0,"ie"===this.table.browser){var e=document.createEvent("Event");e.initEvent("scroll",!1,!0),this.element.dispatchEvent(e)}else this.element.dispatchEvent(new Event("scroll"))};var i=function(e){this._row=e};i.prototype.getData=function(e){return this._row.getData(e)},i.prototype.getElement=function(){return this._row.getElement()},i.prototype.getCells=function(){var e=[];return this._row.getCells().forEach(function(t){e.push(t.getComponent())}),e},i.prototype.getCell=function(e){var t=this._row.getCell(e);return!!t&&t.getComponent()},i.prototype.getIndex=function(){return this._row.getData("data")[this._row.table.options.index]},i.prototype.getPosition=function(e){return this._row.table.rowManager.getRowPosition(this._row,e)},i.prototype.delete=function(){return this._row.delete()},i.prototype.scrollTo=function(){return this._row.table.rowManager.scrollToRow(this._row)},i.prototype.pageTo=function(){if(this._row.table.modExists("page",!0))return this._row.table.modules.page.setPageToRow(this._row)},i.prototype.move=function(e,t){this._row.moveToRow(e,t)},i.prototype.update=function(e){return this._row.updateData(e)},i.prototype.normalizeHeight=function(){this._row.normalizeHeight(!0)},i.prototype.select=function(){this._row.table.modules.selectRow.selectRows(this._row)},i.prototype.deselect=function(){this._row.table.modules.selectRow.deselectRows(this._row)},i.prototype.toggleSelect=function(){this._row.table.modules.selectRow.toggleRow(this._row)},i.prototype.isSelected=function(){return this._row.table.modules.selectRow.isRowSelected(this._row)},i.prototype._getSelf=function(){return this._row},i.prototype.freeze=function(){this._row.table.modExists("frozenRows",!0)&&this._row.table.modules.frozenRows.freezeRow(this._row)},i.prototype.unfreeze=function(){this._row.table.modExists("frozenRows",!0)&&this._row.table.modules.frozenRows.unfreezeRow(this._row)},i.prototype.treeCollapse=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.collapseRow(this._row)},i.prototype.treeExpand=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.expandRow(this._row)},i.prototype.treeToggle=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.toggleRow(this._row)},i.prototype.getTreeParent=function(){return!!this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.getTreeParent(this._row)},i.prototype.getTreeChildren=function(){return!!this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.getTreeChildren(this._row)},i.prototype.reformat=function(){return this._row.reinitialize()},i.prototype.getGroup=function(){return this._row.getGroup().getComponent()},i.prototype.getTable=function(){return this._row.table},i.prototype.getNextRow=function(){var e=this._row.nextRow();return e?e.getComponent():e},i.prototype.getPrevRow=function(){var e=this._row.prevRow();return e?e.getComponent():e};var a=function(e,t){this.table=t.table,this.parent=t,this.data={},this.type="row",this.element=this.createElement(),this.modules={},this.cells=[],this.height=0,this.heightStyled="",this.manualHeight=!1,this.outerHeight=0,this.initialized=!1,this.heightInitialized=!1,this.setData(e),this.generateElement()};a.prototype.createElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-row"),e.setAttribute("role","row"),e},a.prototype.getElement=function(){return this.element},a.prototype.detachElement=function(){this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element)},a.prototype.generateElement=function(){var e,t,n,o=this;!1!==o.table.options.selectable&&o.table.modExists("selectRow")&&o.table.modules.selectRow.initializeRow(this),!1!==o.table.options.movableRows&&o.table.modExists("moveRow")&&o.table.modules.moveRow.initializeRow(this),!1!==o.table.options.dataTree&&o.table.modExists("dataTree")&&o.table.modules.dataTree.initializeRow(this),o.table.options.rowClick&&o.element.addEventListener("click",function(e){o.table.options.rowClick(e,o.getComponent())}),o.table.options.rowDblClick&&o.element.addEventListener("dblclick",function(e){o.table.options.rowDblClick(e,o.getComponent())}),o.table.options.rowContext&&o.element.addEventListener("contextmenu",function(e){o.table.options.rowContext(e,o.getComponent())}),o.table.options.rowMouseEnter&&o.element.addEventListener("mouseenter",function(e){o.table.options.rowMouseEnter(e,o.getComponent())}),o.table.options.rowMouseLeave&&o.element.addEventListener("mouseleave",function(e){o.table.options.rowMouseLeave(e,o.getComponent())}),o.table.options.rowMouseOver&&o.element.addEventListener("mouseover",function(e){o.table.options.rowMouseOver(e,o.getComponent())}),o.table.options.rowMouseOut&&o.element.addEventListener("mouseout",function(e){o.table.options.rowMouseOut(e,o.getComponent())}),o.table.options.rowMouseMove&&o.element.addEventListener("mousemove",function(e){o.table.options.rowMouseMove(e,o.getComponent())}),o.table.options.rowTap&&(n=!1,o.element.addEventListener("touchstart",function(e){n=!0},{passive:!0}),o.element.addEventListener("touchend",function(e){n&&o.table.options.rowTap(e,o.getComponent()),n=!1})),o.table.options.rowDblTap&&(e=null,o.element.addEventListener("touchend",function(t){e?(clearTimeout(e),e=null,o.table.options.rowDblTap(t,o.getComponent())):e=setTimeout(function(){clearTimeout(e),e=null},300)})),o.table.options.rowTapHold&&(t=null,o.element.addEventListener("touchstart",function(e){clearTimeout(t),t=setTimeout(function(){clearTimeout(t),t=null,n=!1,o.table.options.rowTapHold(e,o.getComponent())},1e3)},{passive:!0}),o.element.addEventListener("touchend",function(e){clearTimeout(t),t=null}))},a.prototype.generateCells=function(){this.cells=this.table.columnManager.generateCells(this)},a.prototype.initialize=function(e){var t=this;if(!t.initialized||e){for(t.deleteCells();t.element.firstChild;)t.element.removeChild(t.element.firstChild);this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layoutRow(this),this.generateCells(),t.cells.forEach(function(e){t.element.appendChild(e.getElement()),e.cellRendered()}),e&&t.normalizeHeight(),t.table.options.dataTree&&t.table.modExists("dataTree")&&t.table.modules.dataTree.layoutRow(this),"collapse"===t.table.options.responsiveLayout&&t.table.modExists("responsiveLayout")&&t.table.modules.responsiveLayout.layoutRow(this),t.table.options.rowFormatter&&t.table.options.rowFormatter(t.getComponent()),t.table.options.resizableRows&&t.table.modExists("resizeRows")&&t.table.modules.resizeRows.initializeRow(t),t.initialized=!0}},a.prototype.reinitializeHeight=function(){this.heightInitialized=!1,null!==this.element.offsetParent&&this.normalizeHeight(!0)},a.prototype.reinitialize=function(){this.initialized=!1,this.heightInitialized=!1,this.manualHeight||(this.height=0,this.heightStyled=""),null!==this.element.offsetParent&&this.initialize(!0)},a.prototype.calcHeight=function(e){var t=0,n=this.table.options.resizableRows?this.element.clientHeight:0;this.cells.forEach(function(e){var n=e.getHeight();n>t&&(t=n)}),this.height=e?Math.max(t,n):this.manualHeight?this.height:Math.max(t,n),this.heightStyled=this.height?this.height+"px":"",this.outerHeight=this.element.offsetHeight},a.prototype.setCellHeight=function(){this.cells.forEach(function(e){e.setHeight()}),this.heightInitialized=!0},a.prototype.clearCellHeight=function(){this.cells.forEach(function(e){e.clearHeight()})},a.prototype.normalizeHeight=function(e){e&&this.clearCellHeight(),this.calcHeight(e),this.setCellHeight()},a.prototype.setHeight=function(e,t){(this.height!=e||t)&&(this.manualHeight=!0,this.height=e,this.heightStyled=e?e+"px":"",this.setCellHeight(),this.outerHeight=this.element.offsetHeight)},a.prototype.getHeight=function(){return this.outerHeight},a.prototype.getWidth=function(){return this.element.offsetWidth},a.prototype.deleteCell=function(e){var t=this.cells.indexOf(e);t>-1&&this.cells.splice(t,1)},a.prototype.setData=function(e){this.table.modExists("mutator")&&(e=this.table.modules.mutator.transformRow(e,"data")),this.data=e,this.table.options.reactiveData&&this.table.modExists("reactiveData",!0)&&this.table.modules.reactiveData.watchRow(this)},a.prototype.updateData=function(e){var t=this,n=this,o=d.prototype.helpers.elVisible(this.element);return new Promise(function(r,i){for(var a in"string"==typeof e&&(e=JSON.parse(e)),t.table.options.reactiveData&&t.table.modExists("reactiveData",!0)&&t.table.modules.reactiveData.block(),n.table.modExists("mutator")&&(e=n.table.modules.mutator.transformRow(e,"data",!0)),e)n.data[a]=e[a];for(var a in t.table.options.reactiveData&&t.table.modExists("reactiveData",!0)&&t.table.modules.reactiveData.unblock(),e){var s=t.getCell(a);s&&s.getValue()!=e[a]&&(s.setValueProcessData(e[a]),o&&s.cellRendered())}o?(n.normalizeHeight(),n.table.options.rowFormatter&&n.table.options.rowFormatter(n.getComponent())):(t.initialized=!1,t.height=0,t.heightStyled=""),!1!==n.table.options.dataTree&&n.table.modExists("dataTree")&&void 0!==e[t.table.modules.dataTree.getChildField()]&&(t.table.modules.dataTree.initializeRow(t),t.table.rowManager.refreshActiveData("tree",!1,!0)),n.table.options.rowUpdated.call(t.table,n.getComponent()),r()})},a.prototype.getData=function(e){return e?this.table.modExists("accessor")?this.table.modules.accessor.transformRow(this.data,e):void 0:this.data},a.prototype.getCell=function(e){return e=this.table.columnManager.findColumn(e),this.cells.find(function(t){return t.column===e})},a.prototype.getCellIndex=function(e){return this.cells.findIndex(function(t){return t===e})},a.prototype.findNextEditableCell=function(e){var t=!1;if(e<this.cells.length-1)for(var n=e+1;n<this.cells.length;n++){var o=this.cells[n];if(o.column.modules.edit&&d.prototype.helpers.elVisible(o.getElement())){var r=!0;if("function"==typeof o.column.modules.edit.check&&(r=o.column.modules.edit.check(o.getComponent())),r){t=o;break}}}return t},a.prototype.findPrevEditableCell=function(e){var t=!1;if(e>0)for(var n=e-1;n>=0;n--){var o=this.cells[n],r=!0;if(o.column.modules.edit&&d.prototype.helpers.elVisible(o.getElement())&&("function"==typeof o.column.modules.edit.check&&(r=o.column.modules.edit.check(o.getComponent())),r)){t=o;break}}return t},a.prototype.getCells=function(){return this.cells},a.prototype.nextRow=function(){return this.table.rowManager.nextDisplayRow(this,!0)||!1},a.prototype.prevRow=function(){return this.table.rowManager.prevDisplayRow(this,!0)||!1},a.prototype.moveToRow=function(e,t){var n=this.table.rowManager.findRow(e);n?(this.table.rowManager.moveRowActual(this,n,!t),this.table.rowManager.refreshActiveData("display",!1,!0)):console.warn("Move Error - No matching row found:",e)},a.prototype.delete=function(){var e=this;return new Promise(function(t,n){var o=e.table.rowManager.getRowIndex(e);e.deleteActual(),e.table.options.history&&e.table.modExists("history")&&(o&&(o=e.table.rowManager.rows[o-1]),e.table.modules.history.action("rowDelete",e,{data:e.getData(),pos:!o,index:o})),t()})},a.prototype.deleteActual=function(e){this.table.rowManager.getRowIndex(this);this.table.modExists("selectRow")&&this.table.modules.selectRow._deselectRow(this,!0),this.table.options.reactiveData&&this.table.modExists("reactiveData",!0),this.modules.group&&this.modules.group.removeRow(this),this.table.rowManager.deleteRow(this,e),this.deleteCells(),this.initialized=!1,this.heightInitialized=!1,this.table.modExists("columnCalcs")&&(this.table.options.groupBy&&this.table.modExists("groupRows")?this.table.modules.columnCalcs.recalcRowGroup(this):this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows))},a.prototype.deleteCells=function(){for(var e=this.cells.length,t=0;t<e;t++)this.cells[0].delete()},a.prototype.wipe=function(){for(this.deleteCells();this.element.firstChild;)this.element.removeChild(this.element.firstChild);this.element=!1,this.modules={},this.element.parentNode&&this.element.parentNode.removeChild(this.element)},a.prototype.getGroup=function(){return this.modules.group||!1},a.prototype.getComponent=function(){return new i(this)};var l=function(e){this._cell=e};l.prototype.getValue=function(){return this._cell.getValue()},l.prototype.getOldValue=function(){return this._cell.getOldValue()},l.prototype.getElement=function(){return this._cell.getElement()},l.prototype.getRow=function(){return this._cell.row.getComponent()},l.prototype.getData=function(){return this._cell.row.getData()},l.prototype.getField=function(){return this._cell.column.getField()},l.prototype.getColumn=function(){return this._cell.column.getComponent()},l.prototype.setValue=function(e,t){void 0===t&&(t=!0),this._cell.setValue(e,t)},l.prototype.restoreOldValue=function(){this._cell.setValueActual(this._cell.getOldValue())},l.prototype.edit=function(e){return this._cell.edit(e)},l.prototype.cancelEdit=function(){this._cell.cancelEdit()},l.prototype.nav=function(){return this._cell.nav()},l.prototype.checkHeight=function(){this._cell.checkHeight()},l.prototype.getTable=function(){return this._cell.table},l.prototype._getSelf=function(){return this._cell};var u=function(e,t){this.table=e.table,this.column=e,this.row=t,this.element=null,this.value=null,this.oldValue=null,this.height=null,this.width=null,this.minWidth=null,this.build()};u.prototype.build=function(){this.generateElement(),this.setWidth(),this._configureCell(),this.setValueActual(this.column.getFieldValue(this.row.data))},u.prototype.generateElement=function(){this.element=document.createElement("div"),this.element.className="tabulator-cell",this.element.setAttribute("role","gridcell"),this.element=this.element},u.prototype._configureCell=function(){var e=this,t=e.column.cellEvents,n=e.element,o=this.column.getField();(n.style.textAlign=e.column.hozAlign,o&&n.setAttribute("tabulator-field",o),e.column.definition.cssClass)&&e.column.definition.cssClass.split(" ").forEach(function(e){n.classList.add(e)});"hover"===this.table.options.tooltipGenerationMode&&n.addEventListener("mouseenter",function(t){e._generateTooltip()}),e._bindClickEvents(t),e._bindTouchEvents(t),e._bindMouseEvents(t),e.column.modules.edit&&e.table.modules.edit.bindEditor(e),e.column.definition.rowHandle&&!1!==e.table.options.movableRows&&e.table.modExists("moveRow")&&e.table.modules.moveRow.initializeCell(e),e.column.visible||e.hide()},u.prototype._bindClickEvents=function(e){var t=this,n=t.element;(e.cellClick||t.table.options.cellClick)&&n.addEventListener("click",function(n){var o=t.getComponent();e.cellClick&&e.cellClick.call(t.table,n,o),t.table.options.cellClick&&t.table.options.cellClick.call(t.table,n,o)}),e.cellDblClick||this.table.options.cellDblClick?n.addEventListener("dblclick",function(n){var o=t.getComponent();e.cellDblClick&&e.cellDblClick.call(t.table,n,o),t.table.options.cellDblClick&&t.table.options.cellDblClick.call(t.table,n,o)}):n.addEventListener("dblclick",function(e){if(e.preventDefault(),document.selection)(n=document.body.createTextRange()).moveToElementText(t.element),n.select();else if(window.getSelection){var n;(n=document.createRange()).selectNode(t.element),window.getSelection().removeAllRanges(),window.getSelection().addRange(n)}}),(e.cellContext||this.table.options.cellContext)&&n.addEventListener("contextmenu",function(n){var o=t.getComponent();e.cellContext&&e.cellContext.call(t.table,n,o),t.table.options.cellContext&&t.table.options.cellContext.call(t.table,n,o)})},u.prototype._bindMouseEvents=function(e){var t=this,n=t.element;(e.cellMouseEnter||t.table.options.cellMouseEnter)&&n.addEventListener("mouseenter",function(n){var o=t.getComponent();e.cellMouseEnter&&e.cellMouseEnter.call(t.table,n,o),t.table.options.cellMouseEnter&&t.table.options.cellMouseEnter.call(t.table,n,o)}),(e.cellMouseLeave||t.table.options.cellMouseLeave)&&n.addEventListener("mouseleave",function(n){var o=t.getComponent();e.cellMouseLeave&&e.cellMouseLeave.call(t.table,n,o),t.table.options.cellMouseLeave&&t.table.options.cellMouseLeave.call(t.table,n,o)}),(e.cellMouseOver||t.table.options.cellMouseOver)&&n.addEventListener("mouseover",function(n){var o=t.getComponent();e.cellMouseOver&&e.cellMouseOver.call(t.table,n,o),t.table.options.cellMouseOver&&t.table.options.cellMouseOver.call(t.table,n,o)}),(e.cellMouseOut||t.table.options.cellMouseOut)&&n.addEventListener("mouseout",function(n){var o=t.getComponent();e.cellMouseOut&&e.cellMouseOut.call(t.table,n,o),t.table.options.cellMouseOut&&t.table.options.cellMouseOut.call(t.table,n,o)}),(e.cellMouseMove||t.table.options.cellMouseMove)&&n.addEventListener("mousemove",function(n){var o=t.getComponent();e.cellMouseMove&&e.cellMouseMove.call(t.table,n,o),t.table.options.cellMouseMove&&t.table.options.cellMouseMove.call(t.table,n,o)})},u.prototype._bindTouchEvents=function(e){var t,n,o,r=this,i=r.element;(e.cellTap||this.table.options.cellTap)&&(o=!1,i.addEventListener("touchstart",function(e){o=!0},{passive:!0}),i.addEventListener("touchend",function(t){if(o){var n=r.getComponent();e.cellTap&&e.cellTap.call(r.table,t,n),r.table.options.cellTap&&r.table.options.cellTap.call(r.table,t,n)}o=!1})),(e.cellDblTap||this.table.options.cellDblTap)&&(t=null,i.addEventListener("touchend",function(n){if(t){clearTimeout(t),t=null;var o=r.getComponent();e.cellDblTap&&e.cellDblTap.call(r.table,n,o),r.table.options.cellDblTap&&r.table.options.cellDblTap.call(r.table,n,o)}else t=setTimeout(function(){clearTimeout(t),t=null},300)})),(e.cellTapHold||this.table.options.cellTapHold)&&(n=null,i.addEventListener("touchstart",function(t){clearTimeout(n),n=setTimeout(function(){clearTimeout(n),n=null,o=!1;var i=r.getComponent();e.cellTapHold&&e.cellTapHold.call(r.table,t,i),r.table.options.cellTapHold&&r.table.options.cellTapHold.call(r.table,t,i)},1e3)},{passive:!0}),i.addEventListener("touchend",function(e){clearTimeout(n),n=null}))},u.prototype._generateContents=function(){var e;switch(void 0===(e=this.table.modExists("format")?this.table.modules.format.formatValue(this):this.element.innerHTML=this.value)?"undefined":s(e)){case"object":if(e instanceof Node){for(;this.element.firstChild;)this.element.removeChild(this.element.firstChild);this.element.appendChild(e)}else this.element.innerHTML="",null!=e&&console.warn("Format Error - Formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:",e);break;case"undefined":case"null":this.element.innerHTML="";break;default:this.element.innerHTML=e}},u.prototype.cellRendered=function(){this.table.modExists("format")&&this.table.modules.format.cellRendered&&this.table.modules.format.cellRendered(this)},u.prototype._generateTooltip=function(){var e=this.column.tooltip;e?(!0===e?e=this.value:"function"==typeof e&&!1===(e=e(this.getComponent()))&&(e=""),void 0===e&&(e=""),this.element.setAttribute("title",e)):this.element.setAttribute("title","")},u.prototype.getElement=function(){return this.element},u.prototype.getValue=function(){return this.value},u.prototype.getOldValue=function(){return this.oldValue},u.prototype.setValue=function(e,t){var n;this.setValueProcessData(e,t)&&(this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("cellEdit",this,{oldValue:this.oldValue,newValue:this.value}),n=this.getComponent(),this.column.cellEvents.cellEdited&&this.column.cellEvents.cellEdited.call(this.table,n),this.table.options.cellEdited.call(this.table,n),this.table.options.dataEdited.call(this.table,this.table.rowManager.getData()))},u.prototype.setValueProcessData=function(e,t){var n=!1;return this.value!=e&&(n=!0,t&&this.column.modules.mutate&&(e=this.table.modules.mutator.transformCell(this,e))),this.setValueActual(e),n&&this.table.modExists("columnCalcs")&&(this.column.definition.topCalc||this.column.definition.bottomCalc)&&(this.table.options.groupBy&&this.table.modExists("groupRows")?("table"!=this.table.options.columnCalcs&&"both"!=this.table.options.columnCalcs||this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),"table"!=this.table.options.columnCalcs&&this.table.modules.columnCalcs.recalcRowGroup(this.row)):this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows)),n},u.prototype.setValueActual=function(e){this.oldValue=this.value,this.value=e,this.table.options.reactiveData&&this.table.modExists("reactiveData")&&this.table.modules.reactiveData.block(),this.column.setFieldValue(this.row.data,e),this.table.options.reactiveData&&this.table.modExists("reactiveData")&&this.table.modules.reactiveData.unblock(),this._generateContents(),this._generateTooltip(),this.table.options.resizableColumns&&this.table.modExists("resizeColumns")&&this.table.modules.resizeColumns.initializeColumn("cell",this.column,this.element),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layoutElement(this.element,this.column)},u.prototype.setWidth=function(){this.width=this.column.width,this.element.style.width=this.column.widthStyled},u.prototype.clearWidth=function(){this.width="",this.element.style.width=""},u.prototype.getWidth=function(){return this.width||this.element.offsetWidth},u.prototype.setMinWidth=function(){this.minWidth=this.column.minWidth,this.element.style.minWidth=this.column.minWidthStyled},u.prototype.checkHeight=function(){this.row.reinitializeHeight()},u.prototype.clearHeight=function(){this.element.style.height="",this.height=null},u.prototype.setHeight=function(){this.height=this.row.height,this.element.style.height=this.row.heightStyled},u.prototype.getHeight=function(){return this.height||this.element.offsetHeight},u.prototype.show=function(){this.element.style.display=""},u.prototype.hide=function(){this.element.style.display="none"},u.prototype.edit=function(e){if(this.table.modExists("edit",!0))return this.table.modules.edit.editCell(this,e)},u.prototype.cancelEdit=function(){if(this.table.modExists("edit",!0)){var e=this.table.modules.edit.getCurrentCell();e&&e._getSelf()===this?this.table.modules.edit.cancelEdit():console.warn("Cancel Editor Error - This cell is not currently being edited ")}},u.prototype.delete=function(){this.element.parentNode.removeChild(this.element),this.element=!1,this.column.deleteCell(this),this.row.deleteCell(this),this.calcs={}},u.prototype.nav=function(){var e=this,t=!1,n=this.row.getCellIndex(this);return{next:function(){var t,n=this.right();return!!n||!(!(t=e.table.rowManager.nextDisplayRow(e.row,!0))||!(n=t.findNextEditableCell(-1)))&&(n.edit(),!0)},prev:function(){var t,n=this.left();return!!n||!(!(t=e.table.rowManager.prevDisplayRow(e.row,!0))||!(n=t.findPrevEditableCell(t.cells.length)))&&(n.edit(),!0)},left:function(){return!!(t=e.row.findPrevEditableCell(n))&&(t.edit(),!0)},right:function(){return!!(t=e.row.findNextEditableCell(n))&&(t.edit(),!0)},up:function(){var t=e.table.rowManager.prevDisplayRow(e.row,!0);t&&t.cells[n].edit()},down:function(){var t=e.table.rowManager.nextDisplayRow(e.row,!0);t&&t.cells[n].edit()}}},u.prototype.getIndex=function(){this.row.getCellIndex(this)},u.prototype.getComponent=function(){return new l(this)};var c=function(e){this.table=e,this.active=!1,this.element=this.createElement(),this.external=!1,this.links=[],this._initialize()};c.prototype.createElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-footer"),e},c.prototype._initialize=function(e){if(this.table.options.footerElement)switch(s(this.table.options.footerElement)){case"string":"<"===this.table.options.footerElement[0]?this.element.innerHTML=this.table.options.footerElement:(this.external=!0,this.element=document.querySelector(this.table.options.footerElement));break;default:this.element=this.table.options.footerElement}},c.prototype.getElement=function(){return this.element},c.prototype.append=function(e,t){this.activate(t),this.element.appendChild(e),this.table.rowManager.adjustTableSize()},c.prototype.prepend=function(e,t){this.activate(t),this.element.insertBefore(e,this.element.firstChild),this.table.rowManager.adjustTableSize()},c.prototype.remove=function(e){e.parentNode.removeChild(e),this.deactivate()},c.prototype.deactivate=function(e){this.element.firstChild&&!e||(this.external||this.element.parentNode.removeChild(this.element),this.active=!1)},c.prototype.activate=function(e){this.active||(this.active=!0,this.external||(this.table.element.appendChild(this.getElement()),this.table.element.style.display="")),e&&this.links.push(e)},c.prototype.redraw=function(){this.links.forEach(function(e){e.footerRedraw()})};var d=function e(t,n){this.options={},this.columnManager=null,this.rowManager=null,this.footerManager=null,this.browser="",this.browserSlow=!1,this.modules={},this.initializeElement(t),this.initializeOptions(n||{}),this._create(),e.prototype.comms.register(this)};d.prototype.defaultOptions={height:!1,layout:"fitData",layoutColumnsOnNewData:!1,columnMinWidth:40,columnVertAlign:"top",resizableColumns:!0,resizableRows:!1,autoResize:!0,columns:[],data:[],autoColumns:!1,reactiveData:!1,nestedFieldSeparator:".",tooltips:!1,tooltipsHeader:!1,tooltipGenerationMode:"load",initialSort:!1,initialFilter:!1,initialHeaderFilter:!1,columnHeaderSortMulti:!0,sortOrderReverse:!1,footerElement:!1,index:"id",keybindings:[],clipboard:!1,clipboardCopyStyled:!0,clipboardCopySelector:"active",clipboardCopyFormatter:"table",clipboardPasteParser:"table",clipboardPasteAction:"insert",clipboardCopyConfig:!1,clipboardCopied:function(){},clipboardPasted:function(){},clipboardPasteError:function(){},downloadDataFormatter:!1,downloadReady:function(e,t){return t},downloadComplete:!1,downloadConfig:!1,dataTree:!1,dataTreeElementColumn:!1,dataTreeBranchElement:!0,dataTreeChildIndent:9,dataTreeChildField:"_children",dataTreeCollapseElement:!1,dataTreeExpandElement:!1,dataTreeStartExpanded:!1,dataTreeRowExpanded:function(){},dataTreeRowCollapsed:function(){},printAsHtml:!1,printFormatter:!1,printHeader:!1,printFooter:!1,printCopyStyle:!0,printVisibleRows:!0,printConfig:{},addRowPos:"bottom",selectable:"highlight",selectableRangeMode:"drag",selectableRollingSelection:!0,selectablePersistence:!0,selectableCheck:function(e,t){return!0},headerFilterPlaceholder:!1,headerVisible:!0,history:!1,locale:!1,langs:{},virtualDom:!0,virtualDomBuffer:0,persistentLayout:!1,persistentSort:!1,persistentFilter:!1,persistenceID:"",persistenceMode:!0,responsiveLayout:!1,responsiveLayoutCollapseStartOpen:!0,responsiveLayoutCollapseUseFormatters:!0,responsiveLayoutCollapseFormatter:!1,pagination:!1,paginationSize:!1,paginationButtonCount:5,paginationSizeSelector:!1,paginationElement:!1,paginationDataSent:{},paginationDataReceived:{},paginationAddRow:"page",ajaxURL:!1,ajaxURLGenerator:!1,ajaxParams:{},ajaxConfig:"get",ajaxContentType:"form",ajaxRequestFunc:!1,ajaxLoader:!0,ajaxLoaderLoading:!1,ajaxLoaderError:!1,ajaxFiltering:!1,ajaxSorting:!1,ajaxProgressiveLoad:!1,ajaxProgressiveLoadDelay:0,ajaxProgressiveLoadScrollMargin:0,groupBy:!1,groupStartOpen:!0,groupValues:!1,groupHeader:!1,htmlOutputConfig:!1,movableColumns:!1,movableRows:!1,movableRowsConnectedTables:!1,movableRowsSender:!1,movableRowsReceiver:"insert",movableRowsSendingStart:function(){},movableRowsSent:function(){},movableRowsSentFailed:function(){},movableRowsSendingStop:function(){},movableRowsReceivingStart:function(){},movableRowsReceived:function(){},movableRowsReceivedFailed:function(){},movableRowsReceivingStop:function(){},scrollToRowPosition:"top",scrollToRowIfVisible:!0,scrollToColumnPosition:"left",scrollToColumnIfVisible:!0,rowFormatter:!1,placeholder:!1,tableBuilding:function(){},tableBuilt:function(){},renderStarted:function(){},renderComplete:function(){},rowClick:!1,rowDblClick:!1,rowContext:!1,rowTap:!1,rowDblTap:!1,rowTapHold:!1,rowMouseEnter:!1,rowMouseLeave:!1,rowMouseOver:!1,rowMouseOut:!1,rowMouseMove:!1,rowAdded:function(){},rowDeleted:function(){},rowMoved:function(){},rowUpdated:function(){},rowSelectionChanged:function(){},rowSelected:function(){},rowDeselected:function(){},rowResized:function(){},cellClick:!1,cellDblClick:!1,cellContext:!1,cellTap:!1,cellDblTap:!1,cellTapHold:!1,cellMouseEnter:!1,cellMouseLeave:!1,cellMouseOver:!1,cellMouseOut:!1,cellMouseMove:!1,cellEditing:function(){},cellEdited:function(){},cellEditCancelled:function(){},columnMoved:!1,columnResized:function(){},columnTitleChanged:function(){},columnVisibilityChanged:function(){},htmlImporting:function(){},htmlImported:function(){},dataLoading:function(){},dataLoaded:function(){},dataEdited:function(){},ajaxRequesting:function(){},ajaxResponse:!1,ajaxError:function(){},dataFiltering:!1,dataFiltered:!1,dataSorting:function(){},dataSorted:function(){},groupToggleElement:"arrow",groupClosedShowCalcs:!1,dataGrouping:function(){},dataGrouped:!1,groupVisibilityChanged:function(){},groupClick:!1,groupDblClick:!1,groupContext:!1,groupTap:!1,groupDblTap:!1,groupTapHold:!1,columnCalcs:!0,pageLoaded:function(){},localized:function(){},validationFailed:function(){},historyUndo:function(){},historyRedo:function(){}},d.prototype.initializeOptions=function(e){for(var t in e)void 0===this.defaultOptions[t]&&console.warn("Invalid table constructor option:",t);for(var t in this.defaultOptions)t in e?this.options[t]=e[t]:Array.isArray(this.defaultOptions[t])?this.options[t]=[]:"object"===s(this.defaultOptions[t])?this.options[t]={}:this.options[t]=this.defaultOptions[t]},d.prototype.initializeElement=function(e){return"undefined"!=typeof HTMLElement&&e instanceof HTMLElement?(this.element=e,!0):"string"==typeof e?(this.element=document.querySelector(e),!!this.element||(console.error("Tabulator Creation Error - no element found matching selector: ",e),!1)):(console.error("Tabulator Creation Error - Invalid element provided:",e),!1)},d.prototype._mapDepricatedFunctionality=function(){},d.prototype._clearSelection=function(){this.element.classList.add("tabulator-block-select"),window.getSelection?window.getSelection().empty?window.getSelection().empty():window.getSelection().removeAllRanges&&window.getSelection().removeAllRanges():document.selection&&document.selection.empty(),this.element.classList.remove("tabulator-block-select")},d.prototype._create=function(){this._clearObjectPointers(),this._mapDepricatedFunctionality(),this.bindModules(),"TABLE"===this.element.tagName&&this.modExists("htmlTableImport",!0)&&this.modules.htmlTableImport.parseTable(),this.columnManager=new t(this),this.rowManager=new r(this),this.footerManager=new c(this),this.columnManager.setRowManager(this.rowManager),this.rowManager.setColumnManager(this.columnManager),this._buildElement(),this._loadInitialData()},d.prototype._clearObjectPointers=function(){this.options.columns=this.options.columns.slice(0),this.options.reactiveData||(this.options.data=this.options.data.slice(0))},d.prototype._buildElement=function(){var e=this,t=this.element,n=this.modules,o=this.options;for(o.tableBuilding.call(this),t.classList.add("tabulator"),t.setAttribute("role","grid");t.firstChild;)t.removeChild(t.firstChild);for(var r in o.height&&(o.height=isNaN(o.height)?o.height:o.height+"px",t.style.height=o.height),this.columnManager.initialize(),this.rowManager.initialize(),this._detectBrowser(),this.modExists("layout",!0)&&n.layout.initialize(o.layout),!1!==o.headerFilterPlaceholder&&n.localize.setHeaderFilterPlaceholder(o.headerFilterPlaceholder),o.langs)n.localize.installLang(r,o.langs[r]);if(n.localize.setLocale(o.locale),"string"==typeof o.placeholder){var i=document.createElement("div");i.classList.add("tabulator-placeholder");var a=document.createElement("span");a.innerHTML=o.placeholder,i.appendChild(a),o.placeholder=i}if(t.appendChild(this.columnManager.getElement()),t.appendChild(this.rowManager.getElement()),o.footerElement&&this.footerManager.activate(),(o.persistentLayout||o.persistentSort||o.persistentFilter)&&this.modExists("persistence",!0)&&n.persistence.initialize(o.persistenceMode,o.persistenceID),o.persistentLayout&&this.modExists("persistence",!0)&&(o.columns=n.persistence.load("columns",o.columns)),o.movableRows&&this.modExists("moveRow")&&n.moveRow.initialize(),o.autoColumns&&this.options.data&&this.columnManager.generateColumnsFromRowData(this.options.data),this.modExists("columnCalcs")&&n.columnCalcs.initialize(),this.columnManager.setColumns(o.columns),o.dataTree&&this.modExists("dataTree",!0)&&n.dataTree.initialize(),this.modExists("frozenRows")&&this.modules.frozenRows.initialize(),(o.persistentSort||o.initialSort)&&this.modExists("sort",!0)){var s=[];o.persistentSort&&this.modExists("persistence",!0)?!1===(s=n.persistence.load("sort"))&&o.initialSort&&(s=o.initialSort):o.initialSort&&(s=o.initialSort),n.sort.setSort(s)}if((o.persistentFilter||o.initialFilter)&&this.modExists("filter",!0)){var l=[];o.persistentFilter&&this.modExists("persistence",!0)?!1===(l=n.persistence.load("filter"))&&o.initialFilter&&(l=o.initialFilter):o.initialFilter&&(l=o.initialFilter),n.filter.setFilter(l)}o.initialHeaderFilter&&this.modExists("filter",!0)&&o.initialHeaderFilter.forEach(function(t){var o=e.columnManager.findColumn(t.field);if(!o)return console.warn("Column Filter Error - No matching column found:",t.field),!1;n.filter.setHeaderFilterValue(o,t.value)}),this.modExists("ajax")&&n.ajax.initialize(),o.pagination&&this.modExists("page",!0)&&n.page.initialize(),o.groupBy&&this.modExists("groupRows",!0)&&n.groupRows.initialize(),this.modExists("keybindings")&&n.keybindings.initialize(),this.modExists("selectRow")&&n.selectRow.clearSelectionData(!0),o.autoResize&&this.modExists("resizeTable")&&n.resizeTable.initialize(),this.modExists("clipboard")&&n.clipboard.initialize(),o.printAsHtml&&this.modExists("print")&&n.print.initialize(),o.tableBuilt.call(this)},d.prototype._loadInitialData=function(){this.options.pagination&&this.modExists("page")?(this.modules.page.reset(!0),"local"==this.options.pagination?this.options.data.length?this.rowManager.setData(this.options.data):(this.options.ajaxURL||this.options.ajaxURLGenerator)&&this.modExists("ajax")?this.modules.ajax.loadData().then(function(){}).catch(function(){}):this.rowManager.setData(this.options.data):this.options.ajaxURL?this.modules.page.setPage(1).then(function(){}).catch(function(){}):this.rowManager.setData([])):this.options.data.length?this.rowManager.setData(this.options.data):(this.options.ajaxURL||this.options.ajaxURLGenerator)&&this.modExists("ajax")?this.modules.ajax.loadData().then(function(){}).catch(function(){}):this.rowManager.setData(this.options.data)},d.prototype.destroy=function(){var e=this.element;for(d.prototype.comms.deregister(this),this.options.reactiveData&&this.modExists("reactiveData",!0)&&this.modules.reactiveData.unwatchData(),this.rowManager.rows.forEach(function(e){e.wipe()}),this.rowManager.rows=[],this.rowManager.activeRows=[],this.rowManager.displayRows=[],this.options.autoResize&&this.modExists("resizeTable")&&this.modules.resizeTable.clearBindings(),this.modExists("keybindings")&&this.modules.keybindings.clearBindings();e.firstChild;)e.removeChild(e.firstChild);e.classList.remove("tabulator")},d.prototype._detectBrowser=function(){var e=navigator.userAgent;e.indexOf("Trident")>-1?(this.browser="ie",this.browserSlow=!0):e.indexOf("Edge")>-1?(this.browser="edge",this.browserSlow=!0):e.indexOf("Firefox")>-1?(this.browser="firefox",this.browserSlow=!1):(this.browser="other",this.browserSlow=!1)},d.prototype.setDataFromLocalFile=function(e){var t=this;return new Promise(function(n,o){var r=document.createElement("input");r.type="file",r.accept=e||".json,application/json",r.addEventListener("change",function(e){var i,a=r.files[0],s=new FileReader;s.readAsText(a),s.onload=function(e){try{i=JSON.parse(s.result)}catch(e){return console.warn("File Load Error - File contents is invalid JSON",e),void o(e)}t._setData(i).then(function(e){n(e)}).catch(function(e){n(e)})},s.onerror=function(e){console.warn("File Load Error - Unable to read file"),o()}}),r.click()})},d.prototype.setData=function(e,t,n){return this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this._setData(e,t,n)},d.prototype._setData=function(e,t,n,o){return"string"!=typeof e?e?this.rowManager.setData(e,o):this.modExists("ajax")&&(this.modules.ajax.getUrl||this.options.ajaxURLGenerator)?"remote"==this.options.pagination&&this.modExists("page",!0)?(this.modules.page.reset(!0),this.modules.page.setPage(1)):this.modules.ajax.loadData(o):this.rowManager.setData([],o):0==e.indexOf("{")||0==e.indexOf("[")?this.rowManager.setData(JSON.parse(e),o):this.modExists("ajax",!0)?(t&&this.modules.ajax.setParams(t),n&&this.modules.ajax.setConfig(n),this.modules.ajax.setUrl(e),"remote"==this.options.pagination&&this.modExists("page",!0)?(this.modules.page.reset(!0),this.modules.page.setPage(1)):this.modules.ajax.loadData(o)):void 0},d.prototype.clearData=function(){this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this.rowManager.clearData()},d.prototype.getData=function(e){return this.rowManager.getData(e)},d.prototype.getDataCount=function(e){return this.rowManager.getDataCount(e)},d.prototype.searchRows=function(e,t,n){if(this.modExists("filter",!0))return this.modules.filter.search("rows",e,t,n)},d.prototype.searchData=function(e,t,n){if(this.modExists("filter",!0))return this.modules.filter.search("data",e,t,n)},d.prototype.getHtml=function(e,t,n){if(this.modExists("htmlTableExport",!0))return this.modules.htmlTableExport.getHtml(e,t,n)},d.prototype.print=function(e,t,n){if(this.modExists("print",!0))return this.modules.print.printFullscreen(e,t,n)},d.prototype.getAjaxUrl=function(){if(this.modExists("ajax",!0))return this.modules.ajax.getUrl()},d.prototype.replaceData=function(e,t,n){return this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this._setData(e,t,n,!0)},d.prototype.updateData=function(e){var t=this,n=this,o=0;return new Promise(function(r,i){t.modExists("ajax")&&t.modules.ajax.blockActiveRequest(),"string"==typeof e&&(e=JSON.parse(e)),e?e.forEach(function(e){var t=n.rowManager.findRow(e[n.options.index]);t&&(o++,t.updateData(e).then(function(){--o||r()}))}):(console.warn("Update Error - No data provided"),i("Update Error - No data provided"))})},d.prototype.addData=function(e,t,n){var o=this;return new Promise(function(r,i){o.modExists("ajax")&&o.modules.ajax.blockActiveRequest(),"string"==typeof e&&(e=JSON.parse(e)),e?o.rowManager.addRows(e,t,n).then(function(e){var t=[];e.forEach(function(e){t.push(e.getComponent())}),r(t)}):(console.warn("Update Error - No data provided"),i("Update Error - No data provided"))})},d.prototype.updateOrAddData=function(e){var t=this,n=this,o=[],r=0;return new Promise(function(i,a){t.modExists("ajax")&&t.modules.ajax.blockActiveRequest(),"string"==typeof e&&(e=JSON.parse(e)),e?e.forEach(function(e){var t=n.rowManager.findRow(e[n.options.index]);r++,t?t.updateData(e).then(function(){r--,o.push(t.getComponent()),r||i(o)}):n.rowManager.addRows(e).then(function(e){r--,o.push(e[0].getComponent()),r||i(o)})}):(console.warn("Update Error - No data provided"),a("Update Error - No data provided"))})},d.prototype.getRow=function(e){var t=this.rowManager.findRow(e);return t?t.getComponent():(console.warn("Find Error - No matching row found:",e),!1)},d.prototype.getRowFromPosition=function(e,t){var n=this.rowManager.getRowFromPosition(e,t);return n?n.getComponent():(console.warn("Find Error - No matching row found:",e),!1)},d.prototype.deleteRow=function(e){var t=this;return new Promise(function(n,o){var r=t.rowManager.findRow(e);r?r.delete().then(function(){n()}).catch(function(e){o(e)}):(console.warn("Delete Error - No matching row found:",e),o("Delete Error - No matching row found"))})},d.prototype.addRow=function(e,t,n){var o=this;return new Promise(function(r,i){"string"==typeof e&&(e=JSON.parse(e)),o.rowManager.addRows(e,t,n).then(function(e){o.modExists("columnCalcs")&&o.modules.columnCalcs.recalc(o.rowManager.activeRows),r(e[0].getComponent())})})},d.prototype.updateOrAddRow=function(e,t){var n=this;return new Promise(function(o,r){var i=n.rowManager.findRow(e);"string"==typeof t&&(t=JSON.parse(t)),i?i.updateData(t).then(function(){n.modExists("columnCalcs")&&n.modules.columnCalcs.recalc(n.rowManager.activeRows),o(i.getComponent())}).catch(function(e){r(e)}):i=n.rowManager.addRows(t).then(function(e){n.modExists("columnCalcs")&&n.modules.columnCalcs.recalc(n.rowManager.activeRows),o(e[0].getComponent())}).catch(function(e){r(e)})})},d.prototype.updateRow=function(e,t){var n=this;return new Promise(function(o,r){var i=n.rowManager.findRow(e);"string"==typeof t&&(t=JSON.parse(t)),i?i.updateData(t).then(function(){o(i.getComponent())}).catch(function(e){r(e)}):(console.warn("Update Error - No matching row found:",e),r("Update Error - No matching row found"))})},d.prototype.scrollToRow=function(e,t,n){var o=this;return new Promise(function(r,i){var a=o.rowManager.findRow(e);a?o.rowManager.scrollToRow(a,t,n).then(function(){r()}).catch(function(e){i(e)}):(console.warn("Scroll Error - No matching row found:",e),i("Scroll Error - No matching row found"))})},d.prototype.moveRow=function(e,t,n){var o=this.rowManager.findRow(e);o?o.moveToRow(t,n):console.warn("Move Error - No matching row found:",e)},d.prototype.getRows=function(e){return this.rowManager.getComponents(e)},d.prototype.getRowPosition=function(e,t){var n=this.rowManager.findRow(e);return n?this.rowManager.getRowPosition(n,t):(console.warn("Position Error - No matching row found:",e),!1)},d.prototype.copyToClipboard=function(e,t,n,o){this.modExists("clipboard",!0)&&this.modules.clipboard.copy(e,t,n,o)},d.prototype.setColumns=function(e){this.columnManager.setColumns(e)},d.prototype.getColumns=function(e){return this.columnManager.getComponents(e)},d.prototype.getColumn=function(e){var t=this.columnManager.findColumn(e);return t?t.getComponent():(console.warn("Find Error - No matching column found:",e),!1)},d.prototype.getColumnDefinitions=function(){return this.columnManager.getDefinitionTree()},d.prototype.getColumnLayout=function(){if(this.modExists("persistence",!0))return this.modules.persistence.parseColumns(this.columnManager.getColumns())},d.prototype.setColumnLayout=function(e){return!!this.modExists("persistence",!0)&&(this.columnManager.setColumns(this.modules.persistence.mergeDefinition(this.options.columns,e)),!0)},d.prototype.showColumn=function(e){var t=this.columnManager.findColumn(e);if(!t)return console.warn("Column Show Error - No matching column found:",e),!1;t.show(),this.options.responsiveLayout&&this.modExists("responsiveLayout",!0)&&this.modules.responsiveLayout.update()},d.prototype.hideColumn=function(e){var t=this.columnManager.findColumn(e);if(!t)return console.warn("Column Hide Error - No matching column found:",e),!1;t.hide(),this.options.responsiveLayout&&this.modExists("responsiveLayout",!0)&&this.modules.responsiveLayout.update()},d.prototype.toggleColumn=function(e){var t=this.columnManager.findColumn(e);if(!t)return console.warn("Column Visibility Toggle Error - No matching column found:",e),!1;t.visible?t.hide():t.show()},d.prototype.addColumn=function(e,t,n){var o=this.columnManager.findColumn(n);this.columnManager.addColumn(e,t,o)},d.prototype.deleteColumn=function(e){var t=this.columnManager.findColumn(e);if(!t)return console.warn("Column Delete Error - No matching column found:",e),!1;t.delete()},d.prototype.scrollToColumn=function(e,t,n){var o=this;return new Promise(function(r,i){var a=o.columnManager.findColumn(e);a?o.columnManager.scrollToColumn(a,t,n).then(function(){r()}).catch(function(e){i(e)}):(console.warn("Scroll Error - No matching column found:",e),i("Scroll Error - No matching column found"))})},d.prototype.setLocale=function(e){this.modules.localize.setLocale(e)},d.prototype.getLocale=function(){return this.modules.localize.getLocale()},d.prototype.getLang=function(e){return this.modules.localize.getLang(e)},d.prototype.redraw=function(e){this.columnManager.redraw(e),this.rowManager.redraw(e)},d.prototype.setHeight=function(e){this.options.height=isNaN(e)?e:e+"px",this.element.style.height=this.options.height,this.rowManager.redraw()},d.prototype.setSort=function(e,t){this.modExists("sort",!0)&&(this.modules.sort.setSort(e,t),this.rowManager.sorterRefresh())},d.prototype.getSorters=function(){if(this.modExists("sort",!0))return this.modules.sort.getSort()},d.prototype.clearSort=function(){this.modExists("sort",!0)&&(this.modules.sort.clear(),this.rowManager.sorterRefresh())},d.prototype.setFilter=function(e,t,n){this.modExists("filter",!0)&&(this.modules.filter.setFilter(e,t,n),this.rowManager.filterRefresh())},d.prototype.addFilter=function(e,t,n){this.modExists("filter",!0)&&(this.modules.filter.addFilter(e,t,n),this.rowManager.filterRefresh())},d.prototype.getFilters=function(e){if(this.modExists("filter",!0))return this.modules.filter.getFilters(e)},d.prototype.setHeaderFilterFocus=function(e){if(this.modExists("filter",!0)){var t=this.columnManager.findColumn(e);if(!t)return console.warn("Column Filter Focus Error - No matching column found:",e),!1;this.modules.filter.setHeaderFilterFocus(t)}},d.prototype.setHeaderFilterValue=function(e,t){if(this.modExists("filter",!0)){var n=this.columnManager.findColumn(e);if(!n)return console.warn("Column Filter Error - No matching column found:",e),!1;this.modules.filter.setHeaderFilterValue(n,t)}},d.prototype.getHeaderFilters=function(){if(this.modExists("filter",!0))return this.modules.filter.getHeaderFilters()},d.prototype.removeFilter=function(e,t,n){this.modExists("filter",!0)&&(this.modules.filter.removeFilter(e,t,n),this.rowManager.filterRefresh())},d.prototype.clearFilter=function(e){this.modExists("filter",!0)&&(this.modules.filter.clearFilter(e),this.rowManager.filterRefresh())},d.prototype.clearHeaderFilter=function(){this.modExists("filter",!0)&&(this.modules.filter.clearHeaderFilter(),this.rowManager.filterRefresh())},d.prototype.selectRow=function(e){this.modExists("selectRow",!0)&&this.modules.selectRow.selectRows(e)},d.prototype.deselectRow=function(e){this.modExists("selectRow",!0)&&this.modules.selectRow.deselectRows(e)},d.prototype.toggleSelectRow=function(e){this.modExists("selectRow",!0)&&this.modules.selectRow.toggleRow(e)},d.prototype.getSelectedRows=function(){if(this.modExists("selectRow",!0))return this.modules.selectRow.getSelectedRows()},d.prototype.getSelectedData=function(){if(this.modExists("selectRow",!0))return this.modules.selectRow.getSelectedData()},d.prototype.setMaxPage=function(e){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.setMaxPage(e)},d.prototype.setPage=function(e){return this.options.pagination&&this.modExists("page")?this.modules.page.setPage(e):new Promise(function(e,t){t()})},d.prototype.setPageToRow=function(e){var t=this;return new Promise(function(n,o){t.options.pagination&&t.modExists("page")&&(e=t.rowManager.findRow(e))?t.modules.page.setPageToRow(e).then(function(){n()}).catch(function(){o()}):o()})},d.prototype.setPageSize=function(e){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.setPageSize(e),this.modules.page.setPage(1).then(function(){}).catch(function(){})},d.prototype.getPageSize=function(){if(this.options.pagination&&this.modExists("page",!0))return this.modules.page.getPageSize()},d.prototype.previousPage=function(){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.previousPage()},d.prototype.nextPage=function(){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.nextPage()},d.prototype.getPage=function(){return!(!this.options.pagination||!this.modExists("page"))&&this.modules.page.getPage()},d.prototype.getPageMax=function(){return!(!this.options.pagination||!this.modExists("page"))&&this.modules.page.getPageMax()},d.prototype.setGroupBy=function(e){if(!this.modExists("groupRows",!0))return!1;this.options.groupBy=e,this.modules.groupRows.initialize(),this.rowManager.refreshActiveData("display")},d.prototype.setGroupStartOpen=function(e){if(!this.modExists("groupRows",!0))return!1;this.options.groupStartOpen=e,this.modules.groupRows.initialize(),this.options.groupBy?this.rowManager.refreshActiveData("group"):console.warn("Grouping Update - cant refresh view, no groups have been set")},d.prototype.setGroupHeader=function(e){if(!this.modExists("groupRows",!0))return!1;this.options.groupHeader=e,this.modules.groupRows.initialize(),this.options.groupBy?this.rowManager.refreshActiveData("group"):console.warn("Grouping Update - cant refresh view, no groups have been set")},d.prototype.getGroups=function(e){return!!this.modExists("groupRows",!0)&&this.modules.groupRows.getGroups(!0)},d.prototype.getGroupedData=function(){if(this.modExists("groupRows",!0))return this.options.groupBy?this.modules.groupRows.getGroupedData():this.getData()},d.prototype.getCalcResults=function(){return!!this.modExists("columnCalcs",!0)&&this.modules.columnCalcs.getResults()},d.prototype.navigatePrev=function(){var e=!1;return!(!this.modExists("edit",!0)||!(e=this.modules.edit.currentCell))&&e.nav().prev()},d.prototype.navigateNext=function(){var e=!1;return!(!this.modExists("edit",!0)||!(e=this.modules.edit.currentCell))&&e.nav().next()},d.prototype.navigateLeft=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().left())},d.prototype.navigateRight=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().right())},d.prototype.navigateUp=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().up())},d.prototype.navigateDown=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().down())},d.prototype.undo=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.undo()},d.prototype.redo=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.redo()},d.prototype.getHistoryUndoSize=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.getHistoryUndoSize()},d.prototype.getHistoryRedoSize=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.getHistoryRedoSize()},d.prototype.download=function(e,t,n){this.modExists("download",!0)&&this.modules.download.download(e,t,n)},d.prototype.downloadToTab=function(e,t,n){this.modExists("download",!0)&&this.modules.download.download(e,t,n,!0)},d.prototype.tableComms=function(e,t,n,o){this.modules.comms.receive(e,t,n,o)},d.prototype.moduleBindings={},d.prototype.extendModule=function(e,t,n){if(d.prototype.moduleBindings[e]){var o=d.prototype.moduleBindings[e].prototype[t];if(o)if("object"==(void 0===n?"undefined":s(n)))for(var r in n)o[r]=n[r];else console.warn("Module Error - Invalid value type, it must be an object");else console.warn("Module Error - property does not exist:",t)}else console.warn("Module Error - module does not exist:",e)},d.prototype.registerModule=function(e,t){d.prototype.moduleBindings[e]=t},d.prototype.bindModules=function(){for(var e in this.modules={},d.prototype.moduleBindings)this.modules[e]=new d.prototype.moduleBindings[e](this)},d.prototype.modExists=function(e,t){return!!this.modules[e]||(t&&console.error("Tabulator Module Not Installed: "+e),!1)},d.prototype.helpers={elVisible:function(e){return!(e.offsetWidth<=0&&e.offsetHeight<=0)},elOffset:function(e){var t=e.getBoundingClientRect();return{top:t.top+window.pageYOffset-document.documentElement.clientTop,left:t.left+window.pageXOffset-document.documentElement.clientLeft}},deepClone:function(e){var t=Array.isArray(e)?[]:{};for(var n in e)null!=e[n]&&"object"===s(e[n])?e[n]instanceof Date?t[n]=new Date(e[n]):t[n]=this.deepClone(e[n]):t[n]=e[n];return t}},d.prototype.comms={tables:[],register:function(e){d.prototype.comms.tables.push(e)},deregister:function(e){var t=d.prototype.comms.tables.indexOf(e);t>-1&&d.prototype.comms.tables.splice(t,1)},lookupTable:function(e){var t,n,o=[];if("string"==typeof e){if((t=document.querySelectorAll(e)).length)for(var r=0;r<t.length;r++)(n=d.prototype.comms.matchElement(t[r]))&&o.push(n)}else"undefined"!=typeof HTMLElement&&e instanceof HTMLElement||e instanceof d?(n=d.prototype.comms.matchElement(e))&&o.push(n):Array.isArray(e)?e.forEach(function(e){o=o.concat(d.prototype.comms.lookupTable(e))}):console.warn("Table Connection Error - Invalid Selector",e);return o},matchElement:function(e){return d.prototype.comms.tables.find(function(t){return e instanceof d?t===e:t.element===e})}};var p=function(e){this.table=e,this.mode=null};p.prototype.initialize=function(e){this.modes[e]?this.mode=e:(console.warn("Layout Error - invalid mode set, defaulting to 'fitData' : "+e),this.mode="fitData"),this.table.element.setAttribute("tabulator-layout",this.mode)},p.prototype.getMode=function(){return this.mode},p.prototype.layout=function(){this.modes[this.mode].call(this,this.table.columnManager.columnsByIndex)},p.prototype.modes={fitData:function(e){e.forEach(function(e){e.reinitializeWidth()}),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitDataFill:function(e){e.forEach(function(e){e.reinitializeWidth()}),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitColumns:function(e){var t,n,o=this.table.element.clientWidth,r=0,i=0,a=0,s=[],l=[],u=0,c=0;function d(e){return"string"==typeof e?e.indexOf("%")>-1?o/100*parseInt(e):parseInt(e):e}function p(e,t,n,o){var r=[],i=0,a=0,s=0,l=0,u=0,c=[];function h(e){return n*(e.column.definition.widthGrow||1)}function f(e){return d(e.width)-n*(e.column.definition.widthShrink||0)}return e.forEach(function(e,t){var n=o?f(e):h(e);e.column.minWidth>=n?r.push(e):(c.push(e),u+=o?e.column.definition.widthShrink||1:e.column.definition.widthGrow||1)}),r.length?(r.forEach(function(e){i+=o?e.width-e.column.minWidth:e.column.minWidth,e.width=e.column.minWidth}),l=(a=t-i)-(s=u?Math.floor(a/u):a)*u,l+=p(c,a,s,o)):(l=u?t-Math.floor(t/u)*u:t,c.forEach(function(e){e.width=o?f(e):h(e)})),l}this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update(),this.table.rowManager.element.scrollHeight>this.table.rowManager.element.clientHeight&&(o-=this.table.rowManager.element.offsetWidth-this.table.rowManager.element.clientWidth),e.forEach(function(e){var t,n,o;e.visible&&(t=e.definition.width,n=parseInt(e.minWidth),t?(o=d(t),r+=o>n?o:n,e.definition.widthShrink&&(l.push({column:e,width:o>n?o:n}),u+=e.definition.widthShrink)):(s.push({column:e,width:0}),a+=e.definition.widthGrow||1))}),i=o-r,t=Math.floor(i/a);c=p(s,i,t,!1);s.length&&c>0&&(s[s.length-1].width+=+c),s.forEach(function(e){i-=e.width}),(n=Math.abs(c)+i)>0&&u&&(c=p(l,n,Math.floor(n/u),!0)),l.length&&(l[l.length-1].width-=c),s.forEach(function(e){e.column.setWidth(e.width)}),l.forEach(function(e){e.column.setWidth(e.width)})}},d.prototype.registerModule("layout",p);var h=function(e){this.table=e,this.locale="default",this.lang=!1,this.bindings={}};h.prototype.setHeaderFilterPlaceholder=function(e){this.langs.default.headerFilters.default=e},h.prototype.setHeaderFilterColumnPlaceholder=function(e,t){this.langs.default.headerFilters.columns[e]=t,this.lang&&!this.lang.headerFilters.columns[e]&&(this.lang.headerFilters.columns[e]=t)},h.prototype.installLang=function(e,t){this.langs[e]?this._setLangProp(this.langs[e],t):this.langs[e]=t},h.prototype._setLangProp=function(e,t){for(var n in t)e[n]&&"object"==s(e[n])?this._setLangProp(e[n],t[n]):e[n]=t[n]},h.prototype.setLocale=function(e){if(!0===(e=e||"default")&&navigator.language&&(e=navigator.language.toLowerCase()),e&&!this.langs[e]){var t=e.split("-")[0];this.langs[t]?(console.warn("Localization Error - Exact matching locale not found, using closest match: ",e,t),e=t):(console.warn("Localization Error - Matching locale not found, using default: ",e),e="default")}this.locale=e,this.lang=d.prototype.helpers.deepClone(this.langs.default||{}),"default"!=e&&function e(t,n){for(var o in t)"object"==s(t[o])?(n[o]||(n[o]={}),e(t[o],n[o])):n[o]=t[o]}(this.langs[e],this.lang),this.table.options.localized.call(this.table,this.locale,this.lang),this._executeBindings()},h.prototype.getLocale=function(e){return self.locale},h.prototype.getLang=function(e){return e?this.langs[e]:this.lang},h.prototype.getText=function(e,t){var n=(e=t?e+"|"+t:e).split("|");return this._getLangElement(n,this.locale)||""},h.prototype._getLangElement=function(e,t){var n=this.lang;return e.forEach(function(e){var t;n&&(t=n[e],n=void 0!==t&&t)}),n},h.prototype.bind=function(e,t){this.bindings[e]||(this.bindings[e]=[]),this.bindings[e].push(t),t(this.getText(e),this.lang)},h.prototype._executeBindings=function(){var e=this,t=function(t){e.bindings[t].forEach(function(n){n(e.getText(t),e.lang)})};for(var n in e.bindings)t(n)},h.prototype.langs={default:{groups:{item:"item",items:"items"},columns:{},ajax:{loading:"Loading",error:"Error"},pagination:{page_size:"Page Size",first:"First",first_title:"First Page",last:"Last",last_title:"Last Page",prev:"Prev",prev_title:"Prev Page",next:"Next",next_title:"Next Page"},headerFilters:{default:"filter column...",columns:{}}}},d.prototype.registerModule("localize",h);var f=function(e){this.table=e};f.prototype.getConnections=function(e){var t=this,n=[];return d.prototype.comms.lookupTable(e).forEach(function(e){t.table!==e&&n.push(e)}),n},f.prototype.send=function(e,t,n,o){var r=this,i=this.getConnections(e);i.forEach(function(e){e.tableComms(r.table.element,t,n,o)}),!i.length&&e&&console.warn("Table Connection Error - No tables matching selector found",e)},f.prototype.receive=function(e,t,n,o){if(this.table.modExists(t))return this.table.modules[t].commsReceived(e,n,o);console.warn("Inter-table Comms Error - no such module:",t)},d.prototype.registerModule("comms",f);var m=function(e){this.table=e,this.allowedTypes=["","data","download","clipboard"]};m.prototype.initializeColumn=function(e){var t=this,n=!1,o={};this.allowedTypes.forEach(function(r){var i,a="accessor"+(r.charAt(0).toUpperCase()+r.slice(1));e.definition[a]&&(i=t.lookupAccessor(e.definition[a]))&&(n=!0,o[a]={accessor:i,params:e.definition[a+"Params"]||{}})}),n&&(e.modules.accessor=o)},m.prototype.lookupAccessor=function(e){var t=!1;switch(void 0===e?"undefined":s(e)){case"string":this.accessors[e]?t=this.accessors[e]:console.warn("Accessor Error - No such accessor found, ignoring: ",e);break;case"function":t=e}return t},m.prototype.transformRow=function(e,t){var n="accessor"+(t.charAt(0).toUpperCase()+t.slice(1)),o=d.prototype.helpers.deepClone(e||{});return this.table.columnManager.traverse(function(e){var r,i,a,s;e.modules.accessor&&(i=e.modules.accessor[n]||e.modules.accessor.accessor||!1)&&"undefined"!=(r=e.getFieldValue(o))&&(s=e.getComponent(),a="function"==typeof i.params?i.params(r,o,t,s):i.params,e.setFieldValue(o,i.accessor(r,o,t,a,s)))}),o},m.prototype.accessors={},d.prototype.registerModule("accessor",m);var g=function(e){this.table=e,this.config=!1,this.url="",this.urlGenerator=!1,this.params=!1,this.loaderElement=this.createLoaderElement(),this.msgElement=this.createMsgElement(),this.loadingElement=!1,this.errorElement=!1,this.loaderPromise=!1,this.progressiveLoad=!1,this.loading=!1,this.requestOrder=0};g.prototype.initialize=function(){var e;this.loaderElement.appendChild(this.msgElement),this.table.options.ajaxLoaderLoading&&("string"==typeof this.table.options.ajaxLoaderLoading?((e=document.createElement("template")).innerHTML=this.table.options.ajaxLoaderLoading.trim(),this.loadingElement=e.content.firstChild):this.loadingElement=this.table.options.ajaxLoaderLoading),this.loaderPromise=this.table.options.ajaxRequestFunc||this.defaultLoaderPromise,this.urlGenerator=this.table.options.ajaxURLGenerator||this.defaultURLGenerator,this.table.options.ajaxLoaderError&&("string"==typeof this.table.options.ajaxLoaderError?((e=document.createElement("template")).innerHTML=this.table.options.ajaxLoaderError.trim(),this.errorElement=e.content.firstChild):this.errorElement=this.table.options.ajaxLoaderError),this.table.options.ajaxParams&&this.setParams(this.table.options.ajaxParams),this.table.options.ajaxConfig&&this.setConfig(this.table.options.ajaxConfig),this.table.options.ajaxURL&&this.setUrl(this.table.options.ajaxURL),this.table.options.ajaxProgressiveLoad&&(this.table.options.pagination?(this.progressiveLoad=!1,console.error("Progressive Load Error - Pagination and progressive load cannot be used at the same time")):this.table.modExists("page")?(this.progressiveLoad=this.table.options.ajaxProgressiveLoad,this.table.modules.page.initializeProgressive(this.progressiveLoad)):console.error("Pagination plugin is required for progressive ajax loading"))},g.prototype.createLoaderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-loader"),e},g.prototype.createMsgElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-loader-msg"),e.setAttribute("role","alert"),e},g.prototype.setParams=function(e,t){if(t)for(var n in this.params=this.params||{},e)this.params[n]=e[n];else this.params=e},g.prototype.getParams=function(){return this.params||{}},g.prototype.setConfig=function(e){if(this._loadDefaultConfig(),"string"==typeof e)this.config.method=e;else for(var t in e)this.config[t]=e[t]},g.prototype._loadDefaultConfig=function(e){if(!this.config||e)for(var t in this.config={},this.defaultConfig)this.config[t]=this.defaultConfig[t]},g.prototype.setUrl=function(e){this.url=e},g.prototype.getUrl=function(){return this.url},g.prototype.loadData=function(e){return this.progressiveLoad?this._loadDataProgressive():this._loadDataStandard(e)},g.prototype.nextPage=function(e){this.loading||e<(this.table.options.ajaxProgressiveLoadScrollMargin||2*this.table.rowManager.getElement().clientHeight)&&this.table.modules.page.nextPage().then(function(){}).catch(function(){})},g.prototype.blockActiveRequest=function(){this.requestOrder++},g.prototype._loadDataProgressive=function(){return this.table.rowManager.setData([]),this.table.modules.page.setPage(1)},g.prototype._loadDataStandard=function(e){var t=this;return new Promise(function(n,o){t.sendRequest(e).then(function(r){t.table.rowManager.setData(r,e).then(function(){n()}).catch(function(e){o(e)})}).catch(function(e){o(e)})})},g.prototype.generateParamsList=function(e,t){var n=this,o=[];if(t=t||"",Array.isArray(e))e.forEach(function(e,r){o=o.concat(n.generateParamsList(e,t?t+"["+r+"]":r))});else if("object"===(void 0===e?"undefined":s(e)))for(var r in e)o=o.concat(n.generateParamsList(e[r],t?t+"["+r+"]":r));else o.push({key:t,value:e});return o},g.prototype.serializeParams=function(e){var t=this.generateParamsList(e),n=[];return t.forEach(function(e){n.push(encodeURIComponent(e.key)+"="+encodeURIComponent(e.value))}),n.join("&")},g.prototype.sendRequest=function(e){var t,n=this,o=this,r=o.url;return o.requestOrder++,t=o.requestOrder,o._loadDefaultConfig(),new Promise(function(i,a){!1!==o.table.options.ajaxRequesting.call(n.table,o.url,o.params)?(o.loading=!0,e||o.showLoader(),n.loaderPromise(r,o.config,o.params).then(function(e){t===o.requestOrder?(o.table.options.ajaxResponse&&(e=o.table.options.ajaxResponse.call(o.table,o.url,o.params,e)),i(e)):console.warn("Ajax Response Blocked - An active ajax request was blocked by an attempt to change table data while the request was being made"),o.hideLoader(),o.loading=!1}).catch(function(e){console.error("Ajax Load Error: ",e),o.table.options.ajaxError.call(o.table,e),o.showError(),setTimeout(function(){o.hideLoader()},3e3),o.loading=!1,a()})):a()})},g.prototype.showLoader=function(){if("function"==typeof this.table.options.ajaxLoader?this.table.options.ajaxLoader():this.table.options.ajaxLoader){for(this.hideLoader();this.msgElement.firstChild;)this.msgElement.removeChild(this.msgElement.firstChild);this.msgElement.classList.remove("tabulator-error"),this.msgElement.classList.add("tabulator-loading"),this.loadingElement?this.msgElement.appendChild(this.loadingElement):this.msgElement.innerHTML=this.table.modules.localize.getText("ajax|loading"),this.table.element.appendChild(this.loaderElement)}},g.prototype.showError=function(){for(this.hideLoader();this.msgElement.firstChild;)this.msgElement.removeChild(this.msgElement.firstChild);this.msgElement.classList.remove("tabulator-loading"),this.msgElement.classList.add("tabulator-error"),this.errorElement?this.msgElement.appendChild(this.errorElement):this.msgElement.innerHTML=this.table.modules.localize.getText("ajax|error"),this.table.element.appendChild(this.loaderElement)},g.prototype.hideLoader=function(){this.loaderElement.parentNode&&this.loaderElement.parentNode.removeChild(this.loaderElement)},g.prototype.defaultConfig={method:"GET"},g.prototype.defaultURLGenerator=function(e,t,n){return e&&n&&Object.keys(n).length&&(t.method&&"get"!=t.method.toLowerCase()||(t.method="get",e+="?"+this.serializeParams(n))),e},g.prototype.defaultLoaderPromise=function(e,t,n){var o,r=this;return new Promise(function(i,a){if(e=r.urlGenerator(e,t,n),"GET"!=t.method.toUpperCase())if(o="object"===s(r.table.options.ajaxContentType)?r.table.options.ajaxContentType:r.contentTypeFormatters[r.table.options.ajaxContentType]){for(var l in o.headers)t.headers||(t.headers={}),void 0===t.headers[l]&&(t.headers[l]=o.headers[l]);t.body=o.body.call(r,e,t,n)}else console.warn("Ajax Error - Invalid ajaxContentType value:",r.table.options.ajaxContentType);e?(void 0===t.headers&&(t.headers={}),void 0===t.headers.Accept&&(t.headers.Accept="application/json"),void 0===t.headers["X-Requested-With"]&&(t.headers["X-Requested-With"]="XMLHttpRequest"),void 0===t.mode&&(t.mode="cors"),"cors"==t.mode?(void 0===t.headers["Access-Control-Allow-Origin"]&&(t.headers["Access-Control-Allow-Origin"]=window.location.origin),void 0===t.credentials&&(t.credentials="same-origin")):void 0===t.credentials&&(t.credentials="include"),fetch(e,t).then(function(e){e.ok?e.json().then(function(e){i(e)}).catch(function(e){a(e),console.warn("Ajax Load Error - Invalid JSON returned",e)}):(console.error("Ajax Load Error - Connection Error: "+e.status,e.statusText),a(e))}).catch(function(e){console.error("Ajax Load Error - Connection Error: ",e),a(e)})):(console.warn("Ajax Load Error - No URL Set"),i([]))})},g.prototype.contentTypeFormatters={json:{headers:{"Content-Type":"application/json"},body:function(e,t,n){return JSON.stringify(n)}},form:{headers:{},body:function(e,t,n){var o=this.generateParamsList(n),r=new FormData;return o.forEach(function(e){r.append(e.key,e.value)}),r}}},d.prototype.registerModule("ajax",g);var v=function(e){this.table=e,this.topCalcs=[],this.botCalcs=[],this.genColumn=!1,this.topElement=this.createElement(),this.botElement=this.createElement(),this.topRow=!1,this.botRow=!1,this.topInitialized=!1,this.botInitialized=!1,this.initialize()};v.prototype.createElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-calcs-holder"),e},v.prototype.initialize=function(){this.genColumn=new o({field:"value"},this)},v.prototype.registerColumnField=function(){},v.prototype.initializeColumn=function(e){var t=e.definition,n={topCalcParams:t.topCalcParams||{},botCalcParams:t.bottomCalcParams||{}};if(t.topCalc){switch(s(t.topCalc)){case"string":this.calculations[t.topCalc]?n.topCalc=this.calculations[t.topCalc]:console.warn("Column Calc Error - No such calculation found, ignoring: ",t.topCalc);break;case"function":n.topCalc=t.topCalc}n.topCalc&&(e.modules.columnCalcs=n,this.topCalcs.push(e),"group"!=this.table.options.columnCalcs&&this.initializeTopRow())}if(t.bottomCalc){switch(s(t.bottomCalc)){case"string":this.calculations[t.bottomCalc]?n.botCalc=this.calculations[t.bottomCalc]:console.warn("Column Calc Error - No such calculation found, ignoring: ",t.bottomCalc);break;case"function":n.botCalc=t.bottomCalc}n.botCalc&&(e.modules.columnCalcs=n,this.botCalcs.push(e),"group"!=this.table.options.columnCalcs&&this.initializeBottomRow())}},v.prototype.removeCalcs=function(){var e=!1;this.topInitialized&&(this.topInitialized=!1,this.topElement.parentNode.removeChild(this.topElement),e=!0),this.botInitialized&&(this.botInitialized=!1,this.table.footerManager.remove(this.botElement),e=!0),e&&this.table.rowManager.adjustTableSize()},v.prototype.initializeTopRow=function(){this.topInitialized||(this.table.columnManager.getElement().insertBefore(this.topElement,this.table.columnManager.headersElement.nextSibling),this.topInitialized=!0)},v.prototype.initializeBottomRow=function(){this.botInitialized||(this.table.footerManager.prepend(this.botElement),this.botInitialized=!0)},v.prototype.scrollHorizontal=function(e){this.table.columnManager.getElement().scrollWidth,this.table.element.clientWidth;this.botInitialized&&(this.botRow.getElement().style.marginLeft=-e+"px")},v.prototype.recalc=function(e){var t;if(this.topInitialized||this.botInitialized){if(this.rowsToData(e),this.topInitialized){for(this.topRow&&this.topRow.deleteCells(),t=this.generateRow("top",this.rowsToData(e)),this.topRow=t;this.topElement.firstChild;)this.topElement.removeChild(this.topElement.firstChild);this.topElement.appendChild(t.getElement()),t.initialize(!0)}if(this.botInitialized){for(this.botRow&&this.botRow.deleteCells(),t=this.generateRow("bottom",this.rowsToData(e)),this.botRow=t;this.botElement.firstChild;)this.botElement.removeChild(this.botElement.firstChild);this.botElement.appendChild(t.getElement()),t.initialize(!0)}this.table.rowManager.adjustTableSize(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout()}},v.prototype.recalcRowGroup=function(e){this.recalcGroup(this.table.modules.groupRows.getRowGroup(e))},v.prototype.recalcGroup=function(e){var t,n;e&&e.calcs&&(e.calcs.bottom&&(t=this.rowsToData(e.rows),n=this.generateRowData("bottom",t),e.calcs.bottom.updateData(n),e.calcs.bottom.reinitialize()),e.calcs.top&&(t=this.rowsToData(e.rows),n=this.generateRowData("top",t),e.calcs.top.updateData(n),e.calcs.top.reinitialize()))},v.prototype.generateTopRow=function(e){return this.generateRow("top",this.rowsToData(e))},v.prototype.generateBottomRow=function(e){return this.generateRow("bottom",this.rowsToData(e))},v.prototype.rowsToData=function(e){var t=[];return e.forEach(function(e){t.push(e.getData())}),t},v.prototype.generateRow=function(e,t){var n,o=this,r=this.generateRowData(e,t);return o.table.modExists("mutator")&&o.table.modules.mutator.disable(),n=new a(r,this),o.table.modExists("mutator")&&o.table.modules.mutator.enable(),n.getElement().classList.add("tabulator-calcs","tabulator-calcs-"+e),n.type="calc",n.generateCells=function(){var t=[];o.table.columnManager.columnsByIndex.forEach(function(r){o.genColumn.setField(r.getField()),o.genColumn.hozAlign=r.hozAlign,r.definition[e+"CalcFormatter"]&&o.table.modExists("format")?o.genColumn.modules.format={formatter:o.table.modules.format.getFormatter(r.definition[e+"CalcFormatter"]),params:r.definition[e+"CalcFormatterParams"]}:o.genColumn.modules.format={formatter:o.table.modules.format.getFormatter("plaintext"),params:{}},o.genColumn.definition.cssClass=r.definition.cssClass;var i=new u(o.genColumn,n);i.column=r,i.setWidth(),r.cells.push(i),t.push(i),r.visible||i.hide()}),this.cells=t},n},v.prototype.generateRowData=function(e,t){var n,o,r={},i="top"==e?this.topCalcs:this.botCalcs,a="top"==e?"topCalc":"botCalc";return i.forEach(function(e){var i=[];e.modules.columnCalcs&&e.modules.columnCalcs[a]&&(t.forEach(function(t){i.push(e.getFieldValue(t))}),o=a+"Params",n="function"==typeof e.modules.columnCalcs[o]?e.modules.columnCalcs[o](i,t):e.modules.columnCalcs[o],e.setFieldValue(r,e.modules.columnCalcs[a](i,t,n)))}),r},v.prototype.hasTopCalcs=function(){return!!this.topCalcs.length},v.prototype.hasBottomCalcs=function(){return!!this.botCalcs.length},v.prototype.redraw=function(){this.topRow&&this.topRow.normalizeHeight(!0),this.botRow&&this.botRow.normalizeHeight(!0)},v.prototype.getResults=function(){var e=this,t={};return this.table.options.groupBy&&this.table.modExists("groupRows")?this.table.modules.groupRows.getGroups(!0).forEach(function(n){t[n.getKey()]=e.getGroupResults(n)}):t={top:this.topRow?this.topRow.getData():{},bottom:this.botRow?this.botRow.getData():{}},t},v.prototype.getGroupResults=function(e){var t=this,n=e._getSelf(),o=e.getSubGroups(),r={};return o.forEach(function(e){r[e.getKey()]=t.getGroupResults(e)}),{top:n.calcs.top?n.calcs.top.getData():{},bottom:n.calcs.bottom?n.calcs.bottom.getData():{},groups:r}},v.prototype.calculations={avg:function(e,t,n){var o=0,r=void 0!==n.precision?n.precision:2;return e.length&&(o=e.reduce(function(e,t){return e+(t=Number(t))}),o/=e.length,o=!1!==r?o.toFixed(r):o),parseFloat(o).toString()},max:function(e,t,n){var o=null,r=void 0!==n.precision&&n.precision;return e.forEach(function(e){((e=Number(e))>o||null===o)&&(o=e)}),null!==o?!1!==r?o.toFixed(r):o:""},min:function(e,t,n){var o=null,r=void 0!==n.precision&&n.precision;return e.forEach(function(e){((e=Number(e))<o||null===o)&&(o=e)}),null!==o?!1!==r?o.toFixed(r):o:""},sum:function(e,t,n){var o=0,r=void 0!==n.precision&&n.precision;return e.length&&e.forEach(function(e){e=Number(e),o+=isNaN(e)?0:Number(e)}),!1!==r?o.toFixed(r):o},concat:function(e,t,n){var o=0;return e.length&&(o=e.reduce(function(e,t){return String(e)+String(t)})),o},count:function(e,t,n){var o=0;return e.length&&e.forEach(function(e){e&&o++}),o}},d.prototype.registerModule("columnCalcs",v);var y=function(e){this.table=e,this.mode=!0,this.copySelector=!1,this.copySelectorParams={},this.copyFormatter=!1,this.copyFormatterParams={},this.pasteParser=function(){},this.pasteAction=function(){},this.htmlElement=!1,this.config={},this.blocked=!0};y.prototype.initialize=function(){var e=this;this.mode=this.table.options.clipboard,!0!==this.mode&&"copy"!==this.mode||this.table.element.addEventListener("copy",function(t){var n;e.processConfig(),e.blocked||(t.preventDefault(),n=e.generateContent(),window.clipboardData&&window.clipboardData.setData?window.clipboardData.setData("Text",n):t.clipboardData&&t.clipboardData.setData?(t.clipboardData.setData("text/plain",n),e.htmlElement&&t.clipboardData.setData("text/html",e.htmlElement.outerHTML)):t.originalEvent&&t.originalEvent.clipboardData.setData&&(t.originalEvent.clipboardData.setData("text/plain",n),e.htmlElement&&t.originalEvent.clipboardData.setData("text/html",e.htmlElement.outerHTML)),e.table.options.clipboardCopied.call(this.table,n),e.reset())}),!0!==this.mode&&"paste"!==this.mode||this.table.element.addEventListener("paste",function(t){e.paste(t)}),this.setPasteParser(this.table.options.clipboardPasteParser),this.setPasteAction(this.table.options.clipboardPasteAction)},y.prototype.processConfig=function(){var e={columnHeaders:"groups",rowGroups:!0,columnCalcs:!0};if(void 0!==this.table.options.clipboardCopyHeader&&(e.columnHeaders=this.table.options.clipboardCopyHeader,console.warn("DEPRECATION WANRING - clipboardCopyHeader option has been depricated, please use the columnHeaders property on the clipboardCopyConfig option")),this.table.options.clipboardCopyConfig)for(var t in this.table.options.clipboardCopyConfig)e[t]=this.table.options.clipboardCopyConfig[t];e.rowGroups&&this.table.options.groupBy&&this.table.modExists("groupRows")&&(this.config.rowGroups=!0),e.columnHeaders?"groups"!==e.columnHeaders&&!0!==e||this.table.columnManager.columns.length==this.table.columnManager.columnsByIndex.length?this.config.columnHeaders="columns":this.config.columnHeaders="groups":this.config.columnHeaders=!1,e.columnCalcs&&this.table.modExists("columnCalcs")&&(this.config.columnCalcs=!0)},y.prototype.reset=function(){this.blocked=!1,this.originalSelectionText=""},y.prototype.setPasteAction=function(e){switch(void 0===e?"undefined":s(e)){case"string":this.pasteAction=this.pasteActions[e],this.pasteAction||console.warn("Clipboard Error - No such paste action found:",e);break;case"function":this.pasteAction=e}},y.prototype.setPasteParser=function(e){switch(void 0===e?"undefined":s(e)){case"string":this.pasteParser=this.pasteParsers[e],this.pasteParser||console.warn("Clipboard Error - No such paste parser found:",e);break;case"function":this.pasteParser=e}},y.prototype.paste=function(e){var t,n,o;this.checkPaseOrigin(e)&&(t=this.getPasteData(e),(n=this.pasteParser.call(this,t))?(e.preventDefault(),this.table.modExists("mutator")&&(n=this.mutateData(n)),o=this.pasteAction.call(this,n),this.table.options.clipboardPasted.call(this.table,t,n,o)):this.table.options.clipboardPasteError.call(this.table,t))},y.prototype.mutateData=function(e){var t=this,n=[];return Array.isArray(e)?e.forEach(function(e){n.push(t.table.modules.mutator.transformRow(e,"clipboard"))}):n=e,n},y.prototype.checkPaseOrigin=function(e){var t=!0;return("DIV"!=e.target.tagName||this.table.modules.edit.currentCell)&&(t=!1),t},y.prototype.getPasteData=function(e){var t;return window.clipboardData&&window.clipboardData.getData?t=window.clipboardData.getData("Text"):e.clipboardData&&e.clipboardData.getData?t=e.clipboardData.getData("text/plain"):e.originalEvent&&e.originalEvent.clipboardData.getData&&(t=e.originalEvent.clipboardData.getData("text/plain")),t},y.prototype.copy=function(e,t,n,o,r){var i,a,s;this.blocked=!1,!0!==this.mode&&"copy"!==this.mode||(void 0!==window.getSelection&&void 0!==document.createRange?((i=document.createRange()).selectNodeContents(this.table.element),(a=window.getSelection()).toString()&&r&&(e="userSelection",n="raw",t=a.toString()),a.removeAllRanges(),a.addRange(i)):void 0!==document.selection&&void 0!==document.body.createTextRange&&((s=document.body.createTextRange()).moveToElementText(this.table.element),s.select()),this.setSelector(e),this.copySelectorParams=void 0!==t&&null!=t?t:this.config.columnHeaders,this.setFormatter(n),this.copyFormatterParams=void 0!==o&&null!=o?o:{},document.execCommand("copy"),a&&a.removeAllRanges())},y.prototype.setSelector=function(e){switch(void 0===(e=e||this.table.options.clipboardCopySelector)?"undefined":s(e)){case"string":this.copySelectors[e]?this.copySelector=this.copySelectors[e]:console.warn("Clipboard Error - No such selector found:",e);break;case"function":this.copySelector=e}},y.prototype.setFormatter=function(e){switch(void 0===(e=e||this.table.options.clipboardCopyFormatter)?"undefined":s(e)){case"string":this.copyFormatters[e]?this.copyFormatter=this.copyFormatters[e]:console.warn("Clipboard Error - No such formatter found:",e);break;case"function":this.copyFormatter=e}},y.prototype.generateContent=function(){var e;return this.htmlElement=!1,e=this.copySelector.call(this,this.config,this.copySelectorParams),this.copyFormatter.call(this,e,this.config,this.copyFormatterParams)},y.prototype.generateSimpleHeaders=function(e){var t=[];return e.forEach(function(e){t.push(e.definition.title)}),t},y.prototype.generateColumnGroupHeaders=function(e){var t=this,n=[];return this.table.columnManager.columns.forEach(function(e){var o=t.processColumnGroup(e);o&&n.push(o)}),n},y.prototype.processColumnGroup=function(e){var t=this,n=e.columns,o={type:"group",title:e.definition.title,column:e};if(n.length){if(o.subGroups=[],o.width=0,n.forEach(function(e){var n=t.processColumnGroup(e);n&&(o.width+=n.width,o.subGroups.push(n))}),!o.width)return!1}else{if(!e.field||!e.visible)return!1;o.width=1}return o},y.prototype.groupHeadersToRows=function(e){var t=[];function n(e,o){var r;void 0===t[o]&&(t[o]=[]),t[o].push(e.title),e.subGroups?e.subGroups.forEach(function(e){n(e,o+1)}):(r=0,t.forEach(function(e){var t=e.length;t>r&&(r=t)}),t.forEach(function(e){var t=e.length;if(t<r)for(var n=t;n<r;n++)e.push("")}))}return e.forEach(function(e){n(e,0)}),t},y.prototype.rowsToData=function(e,t,n){var o=this.table.columnManager.columnsByIndex,r=[];return e.forEach(function(e){var t=[],n=e instanceof i?e.getData("clipboard"):e;o.forEach(function(e){var o=e.getFieldValue(n);switch(void 0===o?"undefined":s(o)){case"object":o=JSON.stringify(o);break;case"undefined":case"null":o="";break;default:o=o}t.push(o)}),r.push(t)}),r},y.prototype.buildComplexRows=function(e){var t=this,n=[];return this.table.modules.groupRows.getGroups().forEach(function(e){n.push(t.processGroupData(e))}),n},y.prototype.processGroupData=function(e){var t=this,n=e.getSubGroups(),o={type:"group",key:e.key};return n.length?(o.subGroups=[],n.forEach(function(e){o.subGroups.push(t.processGroupData(e))})):o.rows=e.getRows(!0),o},y.prototype.getCalcRow=function(e,t,n){var o=e[t];return o&&(n&&(o=o[n]),Object.keys(o).length)?this.rowsToData([o]):[]},y.prototype.buildOutput=function(e,t,n){var o,r=this,i=[],a=this.table.columnManager.columnsByIndex;return t.columnHeaders&&("groups"==t.columnHeaders?(a=this.generateColumnGroupHeaders(this.table.columnManager.columns),i=i.concat(this.groupHeadersToRows(a))):i.push(this.generateSimpleHeaders(a))),this.config.columnCalcs&&(o=this.table.getCalcResults()),this.table.options.clipboardCopyStyled&&this.generateHTML(e,a,o,t,n),t.rowGroups?e.forEach(function(e){i=i.concat(r.parseRowGroupData(e,t,n,o||{}))}):(t.columnCalcs&&(i=i.concat(this.getCalcRow(o,"top"))),i=i.concat(this.rowsToData(e,t,n)),t.columnCalcs&&(i=i.concat(this.getCalcRow(o,"bottom")))),i},y.prototype.parseRowGroupData=function(e,t,n,o){var r=this,i=[];return i.push([e.key]),e.subGroups?e.subGroups.forEach(function(a){i=i.concat(r.parseRowGroupData(a,t,n,o[e.key]&&o[e.key].groups||{}))}):(t.columnCalcs&&(i=i.concat(this.getCalcRow(o,e.key,"top"))),i=i.concat(this.rowsToData(e.rows,t,n)),t.columnCalcs&&(i=i.concat(this.getCalcRow(o,e.key,"bottom")))),i},y.prototype.generateHTML=function(e,t,n,o,r){var a,l,u,c,d,p,h,f,m,g=this,v=[];function y(e,t,n){var o=e[t];o&&(n&&(o=o[n]),Object.keys(o).length&&b([o]))}function b(e){e.forEach(function(e,n){var o,r=document.createElement("tr"),h=d,f=!1;e instanceof i?o=e.getData("clipboard"):(o=e,f=!0),t.forEach(function(e,n){var i=document.createElement("td"),a=e.getFieldValue(o);switch(void 0===a?"undefined":s(a)){case"object":a=JSON.stringify(a);break;case"undefined":case"null":a="";break;default:a=a}i.innerHTML=a,e.definition.align&&(i.style.textAlign=e.definition.align),t.length,p&&g.mapElementStyles(p,i,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size"]),r.appendChild(i)}),f?h=c:(n%2||!l||(h=l),n%2&&u&&(h=u)),h&&g.mapElementStyles(h,r,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),a.appendChild(r)})}this.htmlElement=document.createElement("table"),g.mapElementStyles(this.table.element,this.htmlElement,["border-top","border-left","border-right","border-bottom"]),o.columnHeaders&&("groups"==o.columnHeaders?(t.forEach(function(e){!function e(t,n){void 0===v[n]&&(v[n]=[]),v[n].push({title:t.title,width:t.width,height:1,children:!!t.subGroups,element:t.column.getElement()}),t.subGroups&&t.subGroups.forEach(function(t){e(t,n+1)})}(e,0)}),v.forEach(function(e,t){e.forEach(function(e){e.children||(e.height=v.length-t)})}),function(e){var t=document.createElement("thead");e.forEach(function(e){var n=document.createElement("tr");e.forEach(function(e){var t=document.createElement("th");e.width>1&&(t.colSpan=e.width),e.height>1&&(t.rowSpan=e.height),t.innerHTML=e.title,g.mapElementStyles(e.element,t,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),n.appendChild(t)}),g.mapElementStyles(g.table.columnManager.getHeadersElement(),n,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),t.appendChild(n)}),g.htmlElement.appendChild(t)}(v)):(m=document.createElement("tr"),t.forEach(function(e){var t=document.createElement("th");t.innerHTML=e.definition.title,g.mapElementStyles(e.getElement(),t,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),m.appendChild(t)}),g.mapElementStyles(g.table.columnManager.getHeadersElement(),m,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),g.htmlElement.appendChild(document.createElement("thead").appendChild(m)))),t=this.table.columnManager.columnsByIndex,a=document.createElement("tbody"),window.getComputedStyle&&(l=this.table.element.querySelector(".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)"),u=this.table.element.querySelector(".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)"),c=this.table.element.querySelector(".tabulator-row.tabulator-calcs"),d=this.table.element.querySelector(".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)"),h=this.table.element.getElementsByClassName("tabulator-group")[0],d&&(f=d.getElementsByClassName("tabulator-cell"),p=f[0],f[f.length-1])),o.rowGroups?e.forEach(function(e){!function e(n,r){var i=document.createElement("tr"),s=document.createElement("td");s.colSpan=t.length,s.innerHTML=n.key,i.appendChild(s),a.appendChild(i),g.mapElementStyles(h,i,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),n.subGroups?n.subGroups.forEach(function(t){e(t,r[n.key]&&r[n.key].groups||{})}):(o.columnCalcs&&y(r,n.key,"top"),b(n.rows),o.columnCalcs&&y(r,n.key,"bottom"))}(e,n||{})}):(o.columnCalcs&&y(n,"top"),b(e),o.columnCalcs&&y(n,"bottom")),this.htmlElement.appendChild(a)},y.prototype.mapElementStyles=function(e,t,n){var o={"background-color":"backgroundColor",color:"fontColor","font-weight":"fontWeight","font-family":"fontFamily","font-size":"fontSize","border-top":"borderTop","border-left":"borderLeft","border-right":"borderRight","border-bottom":"borderBottom"};if(window.getComputedStyle){var r=window.getComputedStyle(e);n.forEach(function(e){t.style[o[e]]=r.getPropertyValue(e)})}},y.prototype.copySelectors={userSelection:function(e,t){return t},selected:function(e,t){var n=[];return this.table.modExists("selectRow",!0)&&(n=this.table.modules.selectRow.getSelectedRows()),e.rowGroups&&console.warn("Clipboard Warning - select coptSelector does not support row groups"),this.buildOutput(n,e,t)},table:function(e,t){return e.rowGroups&&console.warn("Clipboard Warning - table coptSelector does not support row groups"),this.buildOutput(this.table.rowManager.getComponents(),e,t)},active:function(e,t){var n;return n=e.rowGroups?this.buildComplexRows(e):this.table.rowManager.getComponents(!0),this.buildOutput(n,e,t)}},y.prototype.copyFormatters={raw:function(e,t){return e},table:function(e,t){var n=[];return e.forEach(function(e){e.forEach(function(e){void 0===e&&(e=""),(e=null==e?"":e.toString()).match(/\r|\n/)&&(e='"'+(e=e.split('"').join('""'))+'"')}),n.push(e.join("\t"))}),n.join("\n")}},y.prototype.pasteParsers={table:function(e){var t=[],n=!0,o=this.table.columnManager.columns,r=[],i=[];return(e=e.split("\n")).forEach(function(e){t.push(e.split("\t"))}),!(!t.length||1===t.length&&t[0].length<2)&&(!0,t[0].forEach(function(e){var t=o.find(function(t){return e&&t.definition.title&&e.trim()&&t.definition.title.trim()===e.trim()});t?r.push(t):n=!1}),n||(n=!0,r=[],t[0].forEach(function(e){var t=o.find(function(t){return e&&t.field&&e.trim()&&t.field.trim()===e.trim()});t?r.push(t):n=!1}),n||(r=this.table.columnManager.columnsByIndex)),n&&t.shift(),t.forEach(function(e){var t={};e.forEach(function(e,n){r[n]&&(t[r[n].field]=e)}),i.push(t)}),i)}},y.prototype.pasteActions={replace:function(e){return this.table.setData(e)},update:function(e){return this.table.updateOrAddData(e)},insert:function(e){return this.table.addData(e)}},d.prototype.registerModule("clipboard",y);var b=function(e){this.table=e,this.indent=10,this.field="",this.collapseEl=null,this.expandEl=null,this.branchEl=null,this.elementField=!1,this.startOpen=function(){},this.displayIndex=0};b.prototype.initialize=function(){var e=null,t=this.table.columnManager.getFirstVisibileColumn(),n=this.table.options;switch(this.field=n.dataTreeChildField,this.indent=n.dataTreeChildIndent,this.elementField=n.dataTreeElementColumn||!!t&&t.field,n.dataTreeBranchElement&&(!0===n.dataTreeBranchElement?(this.branchEl=document.createElement("div"),this.branchEl.classList.add("tabulator-data-tree-branch")):"string"==typeof n.dataTreeBranchElement?((e=document.createElement("div")).innerHTML=n.dataTreeBranchElement,this.branchEl=e.firstChild):this.branchEl=n.dataTreeBranchElement),n.dataTreeCollapseElement?"string"==typeof n.dataTreeCollapseElement?((e=document.createElement("div")).innerHTML=n.dataTreeCollapseElement,this.collapseEl=e.firstChild):this.collapseEl=n.dataTreeCollapseElement:(this.collapseEl=document.createElement("div"),this.collapseEl.classList.add("tabulator-data-tree-control"),this.collapseEl.innerHTML="<div class='tabulator-data-tree-control-collapse'></div>"),n.dataTreeExpandElement?"string"==typeof n.dataTreeExpandElement?((e=document.createElement("div")).innerHTML=n.dataTreeExpandElement,this.expandEl=e.firstChild):this.expandEl=n.dataTreeExpandElement:(this.expandEl=document.createElement("div"),this.expandEl.classList.add("tabulator-data-tree-control"),this.expandEl.innerHTML="<div class='tabulator-data-tree-control-expand'></div>"),s(n.dataTreeStartExpanded)){case"boolean":this.startOpen=function(e,t){return n.dataTreeStartExpanded};break;case"function":this.startOpen=n.dataTreeStartExpanded;break;default:this.startOpen=function(e,t){return n.dataTreeStartExpanded[t]}}},b.prototype.initializeRow=function(e){var t=e.getData()[this.field],n=Array.isArray(t),o=n||!n&&"object"===(void 0===t?"undefined":s(t))&&null!==t;e.modules.dataTree={index:0,open:!!o&&this.startOpen(e.getComponent(),0),controlEl:!1,branchEl:!1,parent:!1,children:o}},b.prototype.layoutRow=function(e){var t=(this.elementField?e.getCell(this.elementField):e.getCells()[0]).getElement(),n=e.modules.dataTree;n.branchEl&&n.branchEl.parentNode.removeChild(n.branchEl),this.generateControlElement(e,t),n.index&&(this.branchEl?(n.branchEl=this.branchEl.cloneNode(!0),t.insertBefore(n.branchEl,t.firstChild),n.branchEl.style.marginLeft=(n.branchEl.offsetWidth+n.branchEl.style.marginRight)*(n.index-1)+n.index*this.indent+"px"):t.style.paddingLeft=parseInt(window.getComputedStyle(t,null).getPropertyValue("padding-left"))+n.index*this.indent+"px")},b.prototype.generateControlElement=function(e,t){var n=this,o=e.modules.dataTree,r=(t=t||e.getCells()[0].getElement(),o.controlEl);!1!==o.children&&(o.open?(o.controlEl=this.collapseEl.cloneNode(!0),o.controlEl.addEventListener("click",function(t){t.stopPropagation(),n.collapseRow(e)})):(o.controlEl=this.expandEl.cloneNode(!0),o.controlEl.addEventListener("click",function(t){t.stopPropagation(),n.expandRow(e)})),o.controlEl.addEventListener("mousedown",function(e){e.stopPropagation()}),r&&r.parentNode===t?r.parentNode.replaceChild(o.controlEl,r):t.insertBefore(o.controlEl,t.firstChild))},b.prototype.setDisplayIndex=function(e){this.displayIndex=e},b.prototype.getDisplayIndex=function(){return this.displayIndex},b.prototype.getRows=function(e){var t=this,n=[];return e.forEach(function(e,o){var r;n.push(e),e instanceof a&&((r=e.modules.dataTree.children).index||!1===r.children||t.getChildren(e).forEach(function(e){n.push(e)}))}),n},b.prototype.getChildren=function(e){var t=this,n=e.modules.dataTree,o=[],r=[];return!1!==n.children&&n.open&&(Array.isArray(n.children)||(n.children=this.generateChildren(e)),o=this.table.modExists("filter")?this.table.modules.filter.filter(n.children):n.children,this.table.modExists("sort")&&this.table.modules.sort.sort(o),o.forEach(function(e){r.push(e),t.getChildren(e).forEach(function(e){r.push(e)})})),r},b.prototype.generateChildren=function(e){var t=this,n=[],o=e.getData()[this.field];return Array.isArray(o)||(o=[o]),o.forEach(function(o){var r=new a(o||{},t.table.rowManager);r.modules.dataTree.index=e.modules.dataTree.index+1,r.modules.dataTree.parent=e,r.modules.dataTree.children&&(r.modules.dataTree.open=t.startOpen(r.getComponent(),r.modules.dataTree.index)),n.push(r)}),n},b.prototype.expandRow=function(e,t){var n=e.modules.dataTree;!1!==n.children&&(n.open=!0,e.reinitialize(),this.table.rowManager.refreshActiveData("tree",!1,!0),this.table.options.dataTreeRowExpanded(e.getComponent(),e.modules.dataTree.index))},b.prototype.collapseRow=function(e){var t=e.modules.dataTree;!1!==t.children&&(t.open=!1,e.reinitialize(),this.table.rowManager.refreshActiveData("tree",!1,!0),this.table.options.dataTreeRowCollapsed(e.getComponent(),e.modules.dataTree.index))},b.prototype.toggleRow=function(e){var t=e.modules.dataTree;!1!==t.children&&(t.open?this.collapseRow(e):this.expandRow(e))},b.prototype.getTreeParent=function(e){return!!e.modules.dataTree.parent&&e.modules.dataTree.parent.getComponent()},b.prototype.getTreeChildren=function(e){var t=e.modules.dataTree,n=[];return t.children&&(Array.isArray(t.children)||(t.children=this.generateChildren(e)),t.children.forEach(function(e){e instanceof a&&n.push(e.getComponent())})),n},b.prototype.checkForRestyle=function(e){e.row.cells.indexOf(e)||!1!==e.row.modules.dataTree.children&&e.row.reinitialize()},b.prototype.getChildField=function(){return this.field},d.prototype.registerModule("dataTree",b);var w=function(e){this.table=e,this.fields={},this.columnsByIndex=[],this.columnsByField={},this.config={}};w.prototype.download=function(e,t,n,o){var r=this,i=!1;this.processConfig(),"function"==typeof e?i=e:r.downloaders[e]?i=r.downloaders[e]:console.warn("Download Error - No such download type found: ",e),this.processColumns(),i&&i.call(this,r.processDefinitions(),r.processData(),n||{},function(n,i){o?!0===o?r.triggerDownload(n,i,e,t,!0):o(n):r.triggerDownload(n,i,e,t)},this.config)},w.prototype.processConfig=function(){var e={columnGroups:!0,rowGroups:!0,columnCalcs:!0};if(this.table.options.downloadConfig)for(var t in this.table.options.downloadConfig)e[t]=this.table.options.downloadConfig[t];e.rowGroups&&this.table.options.groupBy&&this.table.modExists("groupRows")&&(this.config.rowGroups=!0),e.columnGroups&&this.table.columnManager.columns.length!=this.table.columnManager.columnsByIndex.length&&(this.config.columnGroups=!0),e.columnCalcs&&this.table.modExists("columnCalcs")&&(this.config.columnCalcs=!0)},w.prototype.processColumns=function(){var e=this;e.columnsByIndex=[],e.columnsByField={},e.table.columnManager.columnsByIndex.forEach(function(t){t.field&&!1!==t.definition.download&&(t.visible||!t.visible&&t.definition.download)&&(e.columnsByIndex.push(t),e.columnsByField[t.field]=t)})},w.prototype.processDefinitions=function(){var e=this,t=[];return this.config.columnGroups?e.table.columnManager.columns.forEach(function(n){var o=e.processColumnGroup(n);o&&t.push(o)}):e.columnsByIndex.forEach(function(n){!1!==n.download&&t.push(e.processDefinition(n))}),t},w.prototype.processColumnGroup=function(e){var t=this,n=e.columns,o=0,r=this.processDefinition(e),i={type:"group",title:r.title,depth:1};if(n.length){if(i.subGroups=[],i.width=0,n.forEach(function(e){var n=t.processColumnGroup(e);n.depth>o&&(o=n.depth),n&&(i.width+=n.width,i.subGroups.push(n))}),i.depth+=o,!i.width)return!1}else{if(!e.field||!1===e.definition.download||!(e.visible||!e.visible&&e.definition.download))return!1;i.width=1,i.definition=r}return i},w.prototype.processDefinition=function(e){var t={};for(var n in e.definition)t[n]=e.definition[n];return void 0!==e.definition.downloadTitle&&(t.title=e.definition.downloadTitle),t},w.prototype.processData=function(){var e=this,t=[],n={};return this.config.rowGroups?this.table.modules.groupRows.getGroups().forEach(function(n){t.push(e.processGroupData(n))}):t=this.table.rowManager.getData(!0,"download"),this.config.columnCalcs&&(n=this.table.getCalcResults(),t={calcs:n,data:t}),"function"==typeof this.table.options.downloadDataFormatter&&(t=this.table.options.downloadDataFormatter(t)),t},w.prototype.processGroupData=function(e){var t=this,n=e.getSubGroups(),o={type:"group",key:e.key};return n.length?(o.subGroups=[],n.forEach(function(e){o.subGroups.push(t.processGroupData(e))})):o.rows=e.getData(!0,"download"),o},w.prototype.triggerDownload=function(e,t,n,o,r){var i=document.createElement("a"),a=new Blob([e],{type:t});o=o||"Tabulator."+("function"==typeof n?"txt":n);(a=this.table.options.downloadReady.call(this.table,e,a))&&(r?window.open(window.URL.createObjectURL(a)):navigator.msSaveOrOpenBlob?navigator.msSaveOrOpenBlob(a,o):(i.setAttribute("href",window.URL.createObjectURL(a)),i.setAttribute("download",o),i.style.display="none",document.body.appendChild(i),i.click(),document.body.removeChild(i)),this.table.options.downloadComplete&&this.table.options.downloadComplete())},w.prototype.getFieldValue=function(e,t){var n=this.columnsByField[e];return!!n&&n.getFieldValue(t)},w.prototype.commsReceived=function(e,t,n){switch(t){case"intercept":this.download(n.type,"",n.options,n.intercept)}},w.prototype.downloaders={csv:function(e,t,n,o,r){var i,a,l=this,u=[],c=[],d=n&&n.delimiter?n.delimiter:",";function p(e){e.forEach(function(e){var t=[];c.forEach(function(n){var o=l.getFieldValue(n,e);switch(void 0===o?"undefined":s(o)){case"object":o=JSON.stringify(o);break;case"undefined":case"null":o="";break;default:o=o}t.push('"'+String(o).split('"').join('""')+'"')}),i.push(t.join(d))})}r.columnGroups?(console.warn("Download Warning - CSV downloader cannot process column groups"),e.forEach(function(e){!function e(t,n){t.subGroups?t.subGroups.forEach(function(t){e(t,n+1)}):(u.push('"'+String(t.title).split('"').join('""')+'"'),c.push(t.definition.field))}(e,0)})):e.forEach(function(e){u.push('"'+String(e.title).split('"').join('""')+'"'),c.push(e.field)}),i=[u.join(d)],r.columnCalcs&&(console.warn("Download Warning - CSV downloader cannot process column calculations"),t=t.data),r.rowGroups?(console.warn("Download Warning - CSV downloader cannot process row groups"),t.forEach(function(e){!function e(t){t.subGroups?t.subGroups.forEach(function(t){e(t)}):p(t.rows)}(e)})):p(t),a=i.join("\n"),n.bom&&(a="\ufeff"+a),o(a,"text/csv")},json:function(e,t,n,o,r){r.columnCalcs&&(console.warn("Download Warning - CSV downloader cannot process column calculations"),t=t.data),o(JSON.stringify(t,null,"\t"),"application/json")},pdf:function(e,t,n,o,r){var i=this,a=[],l=[],u=[],c={},d=1,p={},h=n.rowGroupStyles||{fontStyle:"bold",fontSize:12,cellPadding:6,fillColor:220},f=n.rowCalcStyles||{fontStyle:"bold",fontSize:10,cellPadding:4,fillColor:232},m=n.jsPDF||{},g=n&&n.title?n.title:"";if(r.columnCalcs&&(c=t.calcs,t=t.data),m.orientation||(m.orientation=n.orientation||"landscape"),m.unit||(m.unit="pt"),r.columnGroups){e.forEach(function(e){e.depth>d&&(d=e.depth)});for(var v=0;v<d;v++)l.push([]);e.forEach(function(e){!function e(t,n){var o=t.width,r=1,i={content:t.title||""};if(t.subGroups?(t.subGroups.forEach(function(t){e(t,n+1)}),r=1):(a.push(t.definition.field),r=d-n),i.rowSpan=r,l[n].push(i),o--,r>1)for(var s=n+1;s<d;s++)l[s].push("");for(s=0;s<o;s++)l[n].push("")}(e,0)})}else e.forEach(function(e){e.field&&(l.push(e.title||""),a.push(e.field))}),l=[l];function y(e){switch(void 0===e?"undefined":s(e)){case"object":e=JSON.stringify(e);break;case"undefined":case"null":e="";break;default:e=e}return e}function b(e){e.forEach(function(e){u.push(w(e))})}function w(e,t){var n=[];return a.forEach(function(o){var r=i.getFieldValue(o,e);r=y(r),t?n.push({content:r,styles:t}):n.push(r)}),n}function E(e,t,n){var o=e[t];o&&(n&&(o=o[n]),Object.keys(o).length&&u.push(w(o,f)))}r.rowGroups?t.forEach(function(e){!function e(t,n){var o=[];o.push({content:y(t.key),colSpan:a.length,styles:h}),u.push(o),t.subGroups?t.subGroups.forEach(function(o){e(o,n[t.key]&&n[t.key].groups||{})}):(r.columnCalcs&&E(n,t.key,"top"),b(t.rows),r.columnCalcs&&E(n,t.key,"bottom"))}(e,c)}):(r.columnCalcs&&E(c,"top"),b(t),r.columnCalcs&&E(c,"bottom"));var C=new jsPDF(m);n&&n.autoTable&&(p="function"==typeof n.autoTable?n.autoTable(C)||{}:n.autoTable),g&&(p.addPageContent=function(e){C.text(g,40,30)}),p.head=l,p.body=u,C.autoTable(p),n&&n.documentProcessing&&n.documentProcessing(C),o(C.output("arraybuffer"),"application/pdf")},xlsx:function(e,t,n,o,r){var i=this,a=n.sheetName||"Sheet1",l={SheetNames:[],Sheets:{}},u={},c=[],d=[],p=[];function h(){var n=[],o=[],a=[];function l(e,t){var r;void 0===n[t]&&(n[t]=[]),void 0===d[t]&&(d[t]=[]),e.width>1&&d[t].push({type:"hoz",start:n[t].length,end:n[t].length+e.width-1}),n[t].push(e.title),e.subGroups?e.subGroups.forEach(function(e){l(e,t+1)}):(o.push(e.definition.field),o.length,r=0,n.forEach(function(e){var t=e.length;t>r&&(r=t)}),n.forEach(function(e){var t=e.length;if(t<r)for(var n=t;n<r;n++)e.push("")}),d[t].push({type:"vert",start:o.length-1}))}function h(e){e.forEach(function(e){a.push(f(e))})}function f(e){var t=[];return o.forEach(function(n){var o=i.getFieldValue(n,e);t.push(o instanceof Date||"object"!==(void 0===o?"undefined":s(o))?o:JSON.stringify(o))}),t}function m(e,t,n){var o=e[t];o&&(n&&(o=o[n]),Object.keys(o).length&&(p.push(a.length),a.push(f(o))))}return r.columnGroups?(e.forEach(function(e){l(e,0)}),n.forEach(function(e){a.push(e)})):(e.forEach(function(e){n.push(e.title),o.push(e.field)}),a.push(n)),r.rowGroups?t.forEach(function(e){!function e(t,n){var o=[];o.push(t.key),c.push(a.length),a.push(o),t.subGroups?t.subGroups.forEach(function(o){e(o,n[t.key]&&n[t.key].groups||{})}):(r.columnCalcs&&m(n,t.key,"top"),h(t.rows),r.columnCalcs&&m(n,t.key,"bottom"))}(e,u)}):(r.columnCalcs&&m(u,"top"),h(t),r.columnCalcs&&m(u,"bottom")),function(){var e={},t={s:{c:0,r:0},e:{c:o.length,r:a.length}};XLSX.utils.sheet_add_aoa(e,a),e["!ref"]=XLSX.utils.encode_range(t);var r=function(){var e=[];return c.forEach(function(t){e.push({s:{r:t,c:0},e:{r:t,c:o.length-1}})}),d.forEach(function(t,o){t.forEach(function(t){"hoz"===t.type?e.push({s:{r:o,c:t.start},e:{r:o,c:t.end}}):o!=n.length-1&&e.push({s:{r:o,c:t.start},e:{r:n.length-1,c:t.start}})})}),e}();return r.length&&(e["!merges"]=r),e}()}if(r.columnCalcs&&(u=t.calcs,t=t.data),n.sheetOnly)o(h());else{if(n.sheets)for(var f in n.sheets)!0===n.sheets[f]?(l.SheetNames.push(f),l.Sheets[f]=h()):(l.SheetNames.push(f),this.table.modules.comms.send(n.sheets[f],"download","intercept",{type:"xlsx",options:{sheetOnly:!0},intercept:function(e){l.Sheets[f]=e}}));else l.SheetNames.push(a),l.Sheets[a]=h();o(function(e){for(var t=new ArrayBuffer(e.length),n=new Uint8Array(t),o=0;o!=e.length;++o)n[o]=255&e.charCodeAt(o);return t}(XLSX.write(l,{bookType:"xlsx",bookSST:!0,type:"binary"})),"application/octet-stream")}}},d.prototype.registerModule("download",w);var E=function(e){this.table=e,this.currentCell=!1,this.mouseClick=!1,this.recursionBlock=!1,this.invalidEdit=!1};E.prototype.initializeColumn=function(e){var t={editor:!1,blocked:!1,check:e.definition.editable,params:e.definition.editorParams||{}};switch(s(e.definition.editor)){case"string":"tick"===e.definition.editor&&(e.definition.editor="tickCross",console.warn("DEPRECATION WANRING - the tick editor has been depricated, please use the tickCross editor")),this.editors[e.definition.editor]?t.editor=this.editors[e.definition.editor]:console.warn("Editor Error - No such editor found: ",e.definition.editor);break;case"function":t.editor=e.definition.editor;break;case"boolean":!0===e.definition.editor&&("function"!=typeof e.definition.formatter?("tick"===e.definition.formatter&&(e.definition.formatter="tickCross",console.warn("DEPRECATION WANRING - the tick editor has been depricated, please use the tickCross editor")),this.editors[e.definition.formatter]?t.editor=this.editors[e.definition.formatter]:t.editor=this.editors.input):console.warn("Editor Error - Cannot auto lookup editor for a custom formatter: ",e.definition.formatter))}t.editor&&(e.modules.edit=t)},E.prototype.getCurrentCell=function(){return!!this.currentCell&&this.currentCell.getComponent()},E.prototype.clearEditor=function(){var e,t=this.currentCell;if(this.invalidEdit=!1,t){for(this.currentCell=!1,(e=t.getElement()).classList.remove("tabulator-validation-fail"),e.classList.remove("tabulator-editing");e.firstChild;)e.removeChild(e.firstChild);t.row.getElement().classList.remove("tabulator-row-editing")}},E.prototype.cancelEdit=function(){if(this.currentCell){var e=this.currentCell,t=this.currentCell.getComponent();this.clearEditor(),e.setValueActual(e.getValue()),e.column.cellEvents.cellEditCancelled&&e.column.cellEvents.cellEditCancelled.call(this.table,t),this.table.options.cellEditCancelled.call(this.table,t)}},E.prototype.bindEditor=function(e){var t=this,n=e.getElement();n.setAttribute("tabindex",0),n.addEventListener("click",function(e){n.classList.contains("tabulator-editing")||n.focus()}),n.addEventListener("mousedown",function(e){t.mouseClick=!0}),n.addEventListener("focus",function(n){t.recursionBlock||t.edit(e,n,!1)})},E.prototype.focusCellNoEvent=function(e){this.recursionBlock=!0,"ie"!==this.table.browser&&e.getElement().focus(),this.recursionBlock=!1},E.prototype.editCell=function(e,t){this.focusCellNoEvent(e),this.edit(e,!1,t)},E.prototype.edit=function(e,t,n){var o,r,i,a=this,l=!0,u=function(){},c=e.getElement();if(!this.currentCell){if(e.column.modules.edit.blocked)return this.mouseClick=!1,c.blur(),!1;switch(t&&t.stopPropagation(),s(e.column.modules.edit.check)){case"function":l=e.column.modules.edit.check(e.getComponent());break;case"boolean":l=e.column.modules.edit.check}if(l||n){if(a.cancelEdit(),a.currentCell=e,r=e.getComponent(),this.mouseClick&&(this.mouseClick=!1,e.column.cellEvents.cellClick&&e.column.cellEvents.cellClick.call(this.table,t,r)),e.column.cellEvents.cellEditing&&e.column.cellEvents.cellEditing.call(this.table,r),a.table.options.cellEditing.call(this.table,r),i="function"==typeof e.column.modules.edit.params?e.column.modules.edit.params(r):e.column.modules.edit.params,!1===(o=e.column.modules.edit.editor.call(a,r,function(e){u=e},function(t){if(a.currentCell===e){var n=!0;e.column.modules.validate&&a.table.modExists("validate")&&(n=a.table.modules.validate.validate(e.column.modules.validate,e.getComponent(),t)),!0===n?(a.clearEditor(),e.setValue(t,!0),a.table.options.dataTree&&a.table.modExists("dataTree")&&a.table.modules.dataTree.checkForRestyle(e)):(a.invalidEdit=!0,c.classList.add("tabulator-validation-fail"),a.focusCellNoEvent(e),u(),a.table.options.validationFailed.call(a.table,e.getComponent(),t,n))}},function(){a.currentCell===e&&(a.cancelEdit(),a.table.options.dataTree&&a.table.modExists("dataTree")&&a.table.modules.dataTree.checkForRestyle(e))},i)))return c.blur(),!1;if(!(o instanceof Node))return console.warn("Edit Error - Editor should return an instance of Node, the editor returned:",o),c.blur(),!1;for(c.classList.add("tabulator-editing"),e.row.getElement().classList.add("tabulator-row-editing");c.firstChild;)c.removeChild(c.firstChild);c.appendChild(o),u();for(var d=c.children,p=0;p<d.length;p++)d[p].addEventListener("click",function(e){e.stopPropagation()});return!0}return this.mouseClick=!1,c.blur(),!1}this.invalidEdit||this.cancelEdit()},E.prototype.editors={input:function(e,t,n,o,r){var i=e.getValue(),a=document.createElement("input");function s(e){null==i&&""!==a.value||a.value!=i?n(a.value):o()}return a.setAttribute("type",r.search?"search":"text"),a.style.padding="4px",a.style.width="100%",a.style.boxSizing="border-box",a.value=void 0!==i?i:"",t(function(){a.focus(),a.style.height="100%"}),a.addEventListener("change",s),a.addEventListener("blur",s),a.addEventListener("keydown",function(e){switch(e.keyCode){case 13:n(a.value);break;case 27:o()}}),a},textarea:function(e,t,n,o,r){var i=e.getValue(),a=String(null!=i?i:""),s=((a.match(/(?:\r\n|\r|\n)/g)||[]).length,document.createElement("textarea")),l=0;function u(t){null==i&&""!==s.value||s.value!=i?(n(s.value),setTimeout(function(){e.getRow().normalizeHeight()},300)):o()}return s.style.display="block",s.style.padding="2px",s.style.height="100%",s.style.width="100%",s.style.boxSizing="border-box",s.style.whiteSpace="pre-wrap",s.style.resize="none",s.value=a,t(function(){s.focus(),s.style.height="100%"}),s.addEventListener("change",u),s.addEventListener("blur",u),s.addEventListener("keyup",function(){s.style.height="";var t=s.scrollHeight;s.style.height=t+"px",t!=l&&(l=t,e.getRow().normalizeHeight())}),s.addEventListener("keydown",function(e){27==e.keyCode&&o()}),s},number:function(e,t,n,o,r){var i=e.getValue(),a=document.createElement("input");a.setAttribute("type","number"),void 0!==r.max&&a.setAttribute("max",r.max),void 0!==r.min&&a.setAttribute("min",r.min),void 0!==r.step&&a.setAttribute("step",r.step),a.style.padding="4px",a.style.width="100%",a.style.boxSizing="border-box",a.value=i;var s=function(e){l()};function l(){var e=a.value;isNaN(e)||""===e||(e=Number(e)),e!=i?n(e):o()}return t(function(){a.removeEventListener("blur",s),a.focus(),a.style.height="100%",a.addEventListener("blur",s)}),a.addEventListener("keydown",function(e){switch(e.keyCode){case 13:case 9:l();break;case 27:o()}}),a},range:function(e,t,n,o,r){var i=e.getValue(),a=document.createElement("input");function s(){var e=a.value;isNaN(e)||""===e||(e=Number(e)),e!=i?n(e):o()}return a.setAttribute("type","range"),void 0!==r.max&&a.setAttribute("max",r.max),void 0!==r.min&&a.setAttribute("min",r.min),void 0!==r.step&&a.setAttribute("step",r.step),a.style.padding="4px",a.style.width="100%",a.style.boxSizing="border-box",a.value=i,t(function(){a.focus(),a.style.height="100%"}),a.addEventListener("blur",function(e){s()}),a.addEventListener("keydown",function(e){switch(e.keyCode){case 13:case 9:s();break;case 27:o()}}),a},select:function(e,t,n,o,r){var i=this,a=e.getElement(),l=e.getValue(),u=document.createElement("input"),c=document.createElement("div"),p=[],h=[],f={},m=!0;function g(){var t={},n=e.getColumn()._getSelf();return i.table.getData().forEach(function(e){var o=n.getFieldValue(e);null!=o&&""!==o&&(t[o]=!0)}),t=r.sortValuesList?"asc"==r.sortValuesList?Object.keys(t).sort():Object.keys(t).sort().reverse():Object.keys(t)}function v(t,n){var o=[],i=[];function a(e){return(e={label:r.listItemFormatter?r.listItemFormatter(e.value,e.label):e.label,value:e.value,element:!1}).value!==n&&(isNaN(parseFloat(e.value))||isNaN(parseFloat(e.value))||parseFloat(e.value)!==parseFloat(n))||y(e),o.push(e),i.push(e),e}if("function"==typeof t&&(t=t(e)),Array.isArray(t))t.forEach(function(e){var t;"object"===(void 0===e?"undefined":s(e))?e.options?(t={label:e.label,group:!0,element:!1},i.push(t),e.options.forEach(function(e){a(e)})):a(e):((t={label:r.listItemFormatter?r.listItemFormatter(e,e):e,value:e,element:!1}).value!==n&&(isNaN(parseFloat(t.value))||isNaN(parseFloat(t.value))||parseFloat(t.value)!==parseFloat(n))||y(t),o.push(t),i.push(t))});else for(var l in t){var u={label:r.listItemFormatter?r.listItemFormatter(l,t[l]):t[l],value:l,element:!1};u.value!==n&&(isNaN(parseFloat(u.value))||isNaN(parseFloat(u.value))||parseFloat(u.value)!==parseFloat(n))||y(u),o.push(u),i.push(u)}p=o,h=i,function(){for(;c.firstChild;)c.removeChild(c.firstChild);h.forEach(function(e){var t=e.element;t||(e.group?((t=document.createElement("div")).classList.add("tabulator-edit-select-list-group"),t.tabIndex=0,t.innerHTML=""===e.label?" ":e.label):((t=document.createElement("div")).classList.add("tabulator-edit-select-list-item"),t.tabIndex=0,t.innerHTML=""===e.label?" ":e.label,t.addEventListener("click",function(){y(e),b()}),e===f&&t.classList.add("active")),t.addEventListener("mousedown",function(){m=!1,setTimeout(function(){m=!0},10)}),e.element=t),c.appendChild(t)})}()}function y(e){f&&f.element&&f.element.classList.remove("active"),f=e,u.value=" "===e.label?"":e.label,e.element&&e.element.classList.add("active")}function b(){E(),l!==f.value?(l=f.value,n(f.value)):o()}function w(){E(),o()}function E(){c.parentNode&&c.parentNode.removeChild(c),i.table.rowManager.element.removeEventListener("scroll",w)}return this.table.rowManager.element.addEventListener("scroll",w),(Array.isArray(r)||!Array.isArray(r)&&"object"===(void 0===r?"undefined":s(r))&&!r.values)&&(console.warn("DEPRECATION WANRING - values for the select editor must now be passed into the values property of the editorParams object, not as the editorParams object"),r={values:r}),u.setAttribute("type","text"),u.style.padding="4px",u.style.width="100%",u.style.boxSizing="border-box",u.style.cursor="default",u.readOnly=0!=this.currentCell,u.value=void 0!==l||null===l?l:"",!0===r.values?v(g(),l):v(r.values||[],l),u.addEventListener("keydown",function(e){var t;switch(e.keyCode){case 38:e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),(t=p.indexOf(f))>0&&y(p[t-1]);break;case 40:e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),(t=p.indexOf(f))<p.length-1&&y(-1==t?p[0]:p[t+1]);break;case 37:case 39:e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault();break;case 13:b();break;case 27:w()}}),u.addEventListener("blur",function(e){m&&w()}),u.addEventListener("focus",function(e){!function(){if(!c.parentNode){!0===r.values?v(g(),l):v(r.values||[],l);var e=d.prototype.helpers.elOffset(a);c.style.minWidth=a.offsetWidth+"px",c.style.top=e.top+a.offsetHeight+"px",c.style.left=e.left+"px",document.body.appendChild(c)}}()}),(c=document.createElement("div")).classList.add("tabulator-edit-select-list"),t(function(){u.style.height="100%",u.focus()}),u},autocomplete:function(e,t,n,o,r){var i=this,a=e.getElement(),s=e.getValue(),l=document.createElement("input"),u=document.createElement("div"),c=[],p=[],h=[],f={},m=!0;function g(e,t){var n=[],o=[];r.searchFunc?(c.forEach(function(e){o.push(e.search)}),r.searchFunc(e,o).forEach(function(e){var t=c.find(function(t){return t.search===e});t&&n.push(t)})):""===e?r.showListOnEmpty&&c.forEach(function(e){n.push(e)}):c.forEach(function(t){null===t.value&&void 0===t.value||(String(t.value).toLowerCase().indexOf(String(e).toLowerCase())>-1||String(t.title).toLowerCase().indexOf(String(e).toLowerCase())>-1)&&n.push(t)}),p=n,function(e){var t=!1;for(;u.firstChild;)u.removeChild(u.firstChild);p.forEach(function(n){var o=n.element;o||((o=document.createElement("div")).classList.add("tabulator-edit-select-list-item"),o.tabIndex=0,o.innerHTML=n.title,o.addEventListener("click",function(){v(n),y()}),o.addEventListener("mousedown",function(){m=!1,setTimeout(function(){m=!0},10)}),n.element=o,e&&n.value==s&&(l.value=n.title,n.element.classList.add("active"),t=!0),n===f&&(n.element.classList.add("active"),t=!0)),u.appendChild(o)}),t||v(!1)}(t)}function v(e,t){f&&f.element&&f.element.classList.remove("active"),f=e,e&&e.element&&e.element.classList.add("active")}function y(){E(),f?s!==f.value?(s=f.value,l.value=f.title,n(f.value)):o():r.freetext?(s=l.value,n(l.value)):r.allowEmpty&&""===l.value?(s=l.value,n(l.value)):o()}function b(){E(),o()}function w(){if(!u.parentNode){for(;u.firstChild;)u.removeChild(u.firstChild);!0===r.values?(n={},o=e.getColumn()._getSelf(),i.table.getData().forEach(function(e){var t=o.getFieldValue(e);null!=t&&""!==t&&(n[t]=!0)}),h=n=r.sortValuesList?"asc"==r.sortValuesList?Object.keys(n).sort():Object.keys(n).sort().reverse():Object.keys(n)):h=r.values||[],function(e,t){var n=[];if(Array.isArray(e))e.forEach(function(e){var o={title:r.listItemFormatter?r.listItemFormatter(e,e):e,value:e,element:!1};o.value!==t&&(isNaN(parseFloat(o.value))||isNaN(parseFloat(o.value))||parseFloat(o.value)!==parseFloat(t))||v(o),n.push(o)});else for(var o in e){var i={title:r.listItemFormatter?r.listItemFormatter(o,e[o]):e[o],value:o,element:!1};i.value!==t&&(isNaN(parseFloat(i.value))||isNaN(parseFloat(i.value))||parseFloat(i.value)!==parseFloat(t))||v(i),n.push(i)}r.searchFunc&&n.forEach(function(e){e.search={title:e.title,value:e.value}}),c=n}(h,s);var t=d.prototype.helpers.elOffset(a);u.style.minWidth=a.offsetWidth+"px",u.style.top=t.top+a.offsetHeight+"px",u.style.left=t.left+"px",document.body.appendChild(u)}var n,o}function E(){u.parentNode&&u.parentNode.removeChild(u),i.table.rowManager.element.removeEventListener("scroll",b)}return this.table.rowManager.element.addEventListener("scroll",b),l.setAttribute("type","search"),l.style.padding="4px",l.style.width="100%",l.style.boxSizing="border-box",l.addEventListener("keydown",function(e){var t;switch(e.keyCode){case 38:e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),v((t=p.indexOf(f))>0&&p[t-1]);break;case 40:e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),(t=p.indexOf(f))<p.length-1&&v(-1==t?p[0]:p[t+1]);break;case 37:case 39:e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault();break;case 13:y();break;case 27:b();break;case 36:case 35:e.stopImmediatePropagation()}}),l.addEventListener("keyup",function(e){switch(e.keyCode){case 38:case 37:case 39:case 40:case 13:case 27:break;default:g(l.value)}}),l.addEventListener("search",function(e){g(l.value)}),l.addEventListener("blur",function(e){m&&y()}),l.addEventListener("focus",function(e){var t=void 0!==s||null===s?s:"";w(),l.value=t,g(t,!0)}),(u=document.createElement("div")).classList.add("tabulator-edit-select-list"),t(function(){l.style.height="100%",l.focus()}),l},star:function(e,t,n,o,r){var i=this,a=e.getElement(),s=e.getValue(),l=a.getElementsByTagName("svg").length||5,u=a.getElementsByTagName("svg")[0]?a.getElementsByTagName("svg")[0].getAttribute("width"):14,c=[],d=document.createElement("div"),p=document.createElementNS("http://www.w3.org/2000/svg","svg");function h(e){c.forEach(function(t,n){n<e?("ie"==i.table.browser?t.setAttribute("class","tabulator-star-active"):t.classList.replace("tabulator-star-inactive","tabulator-star-active"),t.innerHTML='<polygon fill="#488CE9" stroke="#014AAE" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>'):("ie"==i.table.browser?t.setAttribute("class","tabulator-star-inactive"):t.classList.replace("tabulator-star-active","tabulator-star-inactive"),t.innerHTML='<polygon fill="#010155" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>')})}function f(e){var t=document.createElement("span"),o=p.cloneNode(!0);c.push(o),t.addEventListener("mouseenter",function(t){t.stopPropagation(),t.stopImmediatePropagation(),h(e)}),t.addEventListener("mousemove",function(e){e.stopPropagation(),e.stopImmediatePropagation()}),t.addEventListener("click",function(t){t.stopPropagation(),t.stopImmediatePropagation(),n(e)}),t.appendChild(o),d.appendChild(t)}function m(e){s=e,h(e)}a.style.whiteSpace="nowrap",a.style.overflow="hidden",a.style.textOverflow="ellipsis",d.style.verticalAlign="middle",d.style.display="inline-block",d.style.padding="4px",p.setAttribute("width",u),p.setAttribute("height",u),p.setAttribute("viewBox","0 0 512 512"),p.setAttribute("xml:space","preserve"),p.style.padding="0 1px";for(var g=1;g<=l;g++)f(g);return h(s=Math.min(parseInt(s),l)),d.addEventListener("mousemove",function(e){h(0)}),d.addEventListener("click",function(e){n(0)}),a.addEventListener("blur",function(e){o()}),a.addEventListener("keydown",function(e){switch(e.keyCode){case 39:m(s+1);break;case 37:m(s-1);break;case 13:n(s);break;case 27:o()}}),d},progress:function(e,t,n,o,r){var i,a,s=e.getElement(),l=void 0===r.max?s.getElementsByTagName("div")[0].getAttribute("max")||100:r.max,u=void 0===r.min?s.getElementsByTagName("div")[0].getAttribute("min")||0:r.min,c=(l-u)/100,d=e.getValue()||0,p=document.createElement("div"),h=document.createElement("div");function f(){var e=c*Math.round(h.offsetWidth/(s.clientWidth/100))+u;n(e),s.setAttribute("aria-valuenow",e),s.setAttribute("aria-label",d)}return p.style.position="absolute",p.style.right="0",p.style.top="0",p.style.bottom="0",p.style.width="5px",p.classList.add("tabulator-progress-handle"),h.style.display="inline-block",h.style.position="relative",h.style.height="100%",h.style.backgroundColor="#488CE9",h.style.maxWidth="100%",h.style.minWidth="0%",s.style.padding="4px 4px",d=Math.min(parseFloat(d),l),d=Math.max(parseFloat(d),u),d=Math.round((d-u)/c),h.style.width=d+"%",s.setAttribute("aria-valuemin",u),s.setAttribute("aria-valuemax",l),h.appendChild(p),p.addEventListener("mousedown",function(e){i=e.screenX,a=h.offsetWidth}),p.addEventListener("mouseover",function(){p.style.cursor="ew-resize"}),s.addEventListener("mousemove",function(e){i&&(h.style.width=a+e.screenX-i+"px")}),s.addEventListener("mouseup",function(e){i&&(e.stopPropagation(),e.stopImmediatePropagation(),i=!1,a=!1,f())}),s.addEventListener("keydown",function(e){switch(e.keyCode){case 39:h.style.width=h.clientWidth+s.clientWidth/100+"px";break;case 37:h.style.width=h.clientWidth-s.clientWidth/100+"px";break;case 13:f();break;case 27:o()}}),s.addEventListener("blur",function(){o()}),h},tickCross:function(e,t,n,o,r){var i=e.getValue(),a=document.createElement("input"),s=r.tristate,l=void 0===r.indeterminateValue?null:r.indeterminateValue,u=!1;function c(e){return s?e?u?l:a.checked:a.checked&&!u?(a.checked=!1,a.indeterminate=!0,u=!0,l):(u=!1,a.checked):a.checked}return a.setAttribute("type","checkbox"),a.style.marginTop="5px",a.style.boxSizing="border-box",a.value=i,!s||void 0!==i&&i!==l&&""!==i||(u=!0,a.indeterminate=!0),"firefox"!=this.table.browser&&t(function(){a.focus()}),a.checked=!0===i||"true"===i||"True"===i||1===i,a.addEventListener("change",function(e){n(c())}),a.addEventListener("blur",function(e){n(c(!0))}),a.addEventListener("keydown",function(e){13==e.keyCode&&n(c()),27==e.keyCode&&o()}),a}},d.prototype.registerModule("edit",E);var C=function(e){this.table=e,this.filterList=[],this.headerFilters={},this.headerFilterElements=[],this.headerFilterColumns=[],this.changed=!1};C.prototype.initializeColumn=function(e,t){var n,o=this,r=e.getField();e.modules.filter={success:function(t){var i,a="input"==e.modules.filter.tagType&&"text"==e.modules.filter.attrType||"textarea"==e.modules.filter.tagType?"partial":"match",l="";if(void 0===n||n!==t){if(n=t,e.modules.filter.emptyFunc(t))delete o.headerFilters[r];else{switch(e.modules.filter.value=t,s(e.definition.headerFilterFunc)){case"string":o.filters[e.definition.headerFilterFunc]?(l=e.definition.headerFilterFunc,i=function(n){var r=e.definition.headerFilterFuncParams||{},i=e.getFieldValue(n);return r="function"==typeof r?r(t,i,n):r,o.filters[e.definition.headerFilterFunc](t,i,n,r)}):console.warn("Header Filter Error - Matching filter function not found: ",e.definition.headerFilterFunc);break;case"function":l=i=function(n){var o=e.definition.headerFilterFuncParams||{},r=e.getFieldValue(n);return o="function"==typeof o?o(t,r,n):o,e.definition.headerFilterFunc(t,r,n,o)}}if(!i)switch(a){case"partial":i=function(n){var o=e.getFieldValue(n);return null!=o&&String(o).toLowerCase().indexOf(String(t).toLowerCase())>-1},l="like";break;default:i=function(n){return e.getFieldValue(n)==t},l="="}o.headerFilters[r]={value:t,func:i,type:l}}o.changed=!0,o.table.rowManager.filterRefresh()}},attrType:!1,tagType:!1,emptyFunc:!1},this.generateHeaderFilterElement(e)},C.prototype.generateHeaderFilterElement=function(e,t){var n,o,r,i,a,l,u,c=this,d=this,p=e.modules.filter.success,h=e.getField();if(e.modules.filter.headerElement&&e.modules.filter.headerElement.parentNode){var f=e.modules.filter.headerElement.parentNode,m=d.headerFilterElements.indexOf(f);m>=0&&d.headerFilterElements.splice(m,1);var g=d.headerFilterColumns.indexOf(g);g>=0&&d.headerFilterColumns.splice(g,1),e.contentElement.removeChild(f)}if(h){switch(e.modules.filter.emptyFunc=e.definition.headerFilterEmptyCheck||function(e){return!e&&"0"!==e},(n=document.createElement("div")).classList.add("tabulator-header-filter"),s(e.definition.headerFilter)){case"string":d.table.modules.edit.editors[e.definition.headerFilter]?(o=d.table.modules.edit.editors[e.definition.headerFilter],"tick"!==e.definition.headerFilter&&"tickCross"!==e.definition.headerFilter||e.definition.headerFilterEmptyCheck||(e.modules.filter.emptyFunc=function(e){return!0!==e&&!1!==e})):console.warn("Filter Error - Cannot build header filter, No such editor found: ",e.definition.editor);break;case"function":o=e.definition.headerFilter;break;case"boolean":e.modules.edit&&e.modules.edit.editor?o=e.modules.edit.editor:e.definition.formatter&&d.table.modules.edit.editors[e.definition.formatter]?(o=d.table.modules.edit.editors[e.definition.formatter],"tick"!==e.definition.formatter&&"tickCross"!==e.definition.formatter||e.definition.headerFilterEmptyCheck||(e.modules.filter.emptyFunc=function(e){return!0!==e&&!1!==e})):o=d.table.modules.edit.editors.input}if(o){if(i={getValue:function(){return void 0!==t?t:""},getField:function(){return e.definition.field},getElement:function(){return n},getColumn:function(){return e.getComponent()},getRow:function(){return{normalizeHeight:function(){}}}},u="function"==typeof(u=e.definition.headerFilterParams||{})?u.call(d.table):u,!(r=o.call(this.table.modules.edit,i,function(){},p,function(){},u)))return void console.warn("Filter Error - Cannot add filter to "+h+" column, editor returned a value of false");if(!(r instanceof Node))return void console.warn("Filter Error - Cannot add filter to "+h+" column, editor should return an instance of Node, the editor returned:",r);h?d.table.modules.localize.bind("headerFilters|columns|"+e.definition.field,function(e){r.setAttribute("placeholder",void 0!==e&&e?e:d.table.modules.localize.getText("headerFilters|default"))}):d.table.modules.localize.bind("headerFilters|default",function(e){r.setAttribute("placeholder",void 0!==d.column.definition.headerFilterPlaceholder&&d.column.definition.headerFilterPlaceholder?d.column.definition.headerFilterPlaceholder:e)}),r.addEventListener("click",function(e){e.stopPropagation(),r.focus()}),r.addEventListener("focus",function(e){var t=c.table.columnManager.element.scrollLeft;t!==c.table.rowManager.element.scrollLeft&&(c.table.rowManager.scrollHorizontal(t),c.table.columnManager.scrollHorizontal(t))}),a=!1,l=function(e){a&&clearTimeout(a),a=setTimeout(function(){p(r.value)},300)},e.modules.filter.headerElement=r,e.modules.filter.attrType=r.hasAttribute("type")?r.getAttribute("type").toLowerCase():"",e.modules.filter.tagType=r.tagName.toLowerCase(),!1!==e.definition.headerFilterLiveFilter&&("autocomplete"!==e.definition.headerFilter&&"tickCross"!==e.definition.headerFilter&&("autocomplete"!==e.definition.editor&&"tickCross"!==e.definition.editor||!0!==e.definition.headerFilter)&&(r.addEventListener("keyup",l),r.addEventListener("search",l),"number"==e.modules.filter.attrType&&r.addEventListener("change",function(e){p(r.value)}),"text"==e.modules.filter.attrType&&"ie"!==this.table.browser&&r.setAttribute("type","search")),"input"!=e.modules.filter.tagType&&"select"!=e.modules.filter.tagType&&"textarea"!=e.modules.filter.tagType||r.addEventListener("mousedown",function(e){e.stopPropagation()})),n.appendChild(r),e.contentElement.appendChild(n),d.headerFilterElements.push(r),d.headerFilterColumns.push(e)}}else console.warn("Filter Error - Cannot add header filter, column has no field set:",e.definition.title)},C.prototype.hideHeaderFilterElements=function(){this.headerFilterElements.forEach(function(e){e.style.display="none"})},C.prototype.showHeaderFilterElements=function(){this.headerFilterElements.forEach(function(e){e.style.display=""})},C.prototype.setHeaderFilterFocus=function(e){e.modules.filter&&e.modules.filter.headerElement?e.modules.filter.headerElement.focus():console.warn("Column Filter Focus Error - No header filter set on column:",e.getField())},C.prototype.setHeaderFilterValue=function(e,t){e&&(e.modules.filter&&e.modules.filter.headerElement?(this.generateHeaderFilterElement(e,t),e.modules.filter.success(t)):console.warn("Column Filter Error - No header filter set on column:",e.getField()))},C.prototype.reloadHeaderFilter=function(e){e&&(e.modules.filter&&e.modules.filter.headerElement?this.generateHeaderFilterElement(e,e.modules.filter.value):console.warn("Column Filter Error - No header filter set on column:",e.getField()))},C.prototype.hasChanged=function(){var e=this.changed;return this.changed=!1,e},C.prototype.setFilter=function(e,t,n){this.filterList=[],Array.isArray(e)||(e=[{field:e,type:t,value:n}]),this.addFilter(e)},C.prototype.addFilter=function(e,t,n){var o=this;Array.isArray(e)||(e=[{field:e,type:t,value:n}]),e.forEach(function(e){(e=o.findFilter(e))&&(o.filterList.push(e),o.changed=!0)}),this.table.options.persistentFilter&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("filter")},C.prototype.findFilter=function(e){var t,n=this;if(Array.isArray(e))return this.findSubFilters(e);var o=!1;return"function"==typeof e.field?o=function(t){return e.field(t,e.type||{})}:n.filters[e.type]?o=(t=n.table.columnManager.getColumnByField(e.field))?function(o){return n.filters[e.type](e.value,t.getFieldValue(o))}:function(t){return n.filters[e.type](e.value,t[e.field])}:console.warn("Filter Error - No such filter type found, ignoring: ",e.type),e.func=o,!!e.func&&e},C.prototype.findSubFilters=function(e){var t=this,n=[];return e.forEach(function(e){(e=t.findFilter(e))&&n.push(e)}),!!n.length&&n},C.prototype.getFilters=function(e,t){var n=[];return e&&(n=this.getHeaderFilters()),t&&n.forEach(function(e){"function"==typeof e.type&&(e.type="function")}),n=n.concat(this.filtersToArray(this.filterList,t))},C.prototype.filtersToArray=function(e,t){var n=this,o=[];return e.forEach(function(e){var r;Array.isArray(e)?o.push(n.filtersToArray(e,t)):(r={field:e.field,type:e.type,value:e.value},t&&"function"==typeof r.type&&(r.type="function"),o.push(r))}),o},C.prototype.getHeaderFilters=function(){var e=[];for(var t in this.headerFilters)e.push({field:t,type:this.headerFilters[t].type,value:this.headerFilters[t].value});return e},C.prototype.removeFilter=function(e,t,n){var o=this;Array.isArray(e)||(e=[{field:e,type:t,value:n}]),e.forEach(function(e){var t=-1;(t="object"==s(e.field)?o.filterList.findIndex(function(t){return e===t}):o.filterList.findIndex(function(t){return e.field===t.field&&e.type===t.type&&e.value===t.value}))>-1?(o.filterList.splice(t,1),o.changed=!0):console.warn("Filter Error - No matching filter type found, ignoring: ",e.type)}),this.table.options.persistentFilter&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("filter")},C.prototype.clearFilter=function(e){this.filterList=[],e&&this.clearHeaderFilter(),this.changed=!0,this.table.options.persistentFilter&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("filter")},C.prototype.clearHeaderFilter=function(){var e=this;this.headerFilters={},this.headerFilterColumns.forEach(function(t){t.modules.filter.value=null,e.reloadHeaderFilter(t)}),this.changed=!0},C.prototype.search=function(e,t,n,o){var r=this,i=[],a=[];return Array.isArray(t)||(t=[{field:t,type:n,value:o}]),t.forEach(function(e){(e=r.findFilter(e))&&a.push(e)}),this.table.rowManager.rows.forEach(function(t){var n=!0;a.forEach(function(e){r.filterRecurse(e,t.getData())||(n=!1)}),n&&i.push("data"===e?t.getData("data"):t.getComponent())}),i},C.prototype.filter=function(e,t){var n=this,o=[],r=[];return n.table.options.dataFiltering&&n.table.options.dataFiltering.call(n.table,n.getFilters()),n.table.options.ajaxFiltering||!n.filterList.length&&!Object.keys(n.headerFilters).length?o=e.slice(0):e.forEach(function(e){n.filterRow(e)&&o.push(e)}),n.table.options.dataFiltered&&(o.forEach(function(e){r.push(e.getComponent())}),n.table.options.dataFiltered.call(n.table,n.getFilters(),r)),o},C.prototype.filterRow=function(e,t){var n=this,o=!0,r=e.getData();for(var i in n.filterList.forEach(function(e){n.filterRecurse(e,r)||(o=!1)}),n.headerFilters)n.headerFilters[i].func(r)||(o=!1);return o},C.prototype.filterRecurse=function(e,t){var n=this,o=!1;return Array.isArray(e)?e.forEach(function(e){n.filterRecurse(e,t)&&(o=!0)}):o=e.func(t),o},C.prototype.filters={"=":function(e,t,n,o){return t==e},"<":function(e,t,n,o){return t<e},"<=":function(e,t,n,o){return t<=e},">":function(e,t,n,o){return t>e},">=":function(e,t,n,o){return t>=e},"!=":function(e,t,n,o){return t!=e},regex:function(e,t,n,o){return"string"==typeof e&&(e=new RegExp(e)),e.test(t)},like:function(e,t,n,o){return null==e?t===e:null!=t&&String(t).toLowerCase().indexOf(e.toLowerCase())>-1},in:function(e,t,n,o){return Array.isArray(e)?e.indexOf(t)>-1:(console.warn("Filter Error - filter value is not an array:",e),!1)}},d.prototype.registerModule("filter",C);var x=function(e){this.table=e};x.prototype.initializeColumn=function(e){var t={params:e.definition.formatterParams||{}};switch(s(e.definition.formatter)){case"string":"tick"===e.definition.formatter&&(e.definition.formatter="tickCross",void 0===t.params.crossElement&&(t.params.crossElement=!1),console.warn("DEPRECATION WANRING - the tick formatter has been depricated, please use the tickCross formatter with the crossElement param set to false")),this.formatters[e.definition.formatter]?t.formatter=this.formatters[e.definition.formatter]:(console.warn("Formatter Error - No such formatter found: ",e.definition.formatter),t.formatter=this.formatters.plaintext);break;case"function":t.formatter=e.definition.formatter;break;default:t.formatter=this.formatters.plaintext}e.modules.format=t},x.prototype.cellRendered=function(e){e.column.modules.format.renderedCallback&&e.column.modules.format.renderedCallback()},x.prototype.formatValue=function(e){var t=e.getComponent(),n="function"==typeof e.column.modules.format.params?e.column.modules.format.params(t):e.column.modules.format.params;return e.column.modules.format.formatter.call(this,t,n,function(t){e.column.modules.format.renderedCallback=t})},x.prototype.sanitizeHTML=function(e){if(e){var t={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/","`":"`","=":"="};return String(e).replace(/[&<>"'`=\/]/g,function(e){return t[e]})}return e},x.prototype.emptyToSpace=function(e){return null==e?" ":e},x.prototype.getFormatter=function(e){switch(void 0===e?"undefined":s(e)){case"string":this.formatters[e]?e=this.formatters[e]:(console.warn("Formatter Error - No such formatter found: ",e),e=this.formatters.plaintext);break;case"function":e=e;break;default:e=this.formatters.plaintext}return e},x.prototype.formatters={plaintext:function(e,t,n){return this.emptyToSpace(this.sanitizeHTML(e.getValue()))},html:function(e,t,n){return e.getValue()},textarea:function(e,t,n){return e.getElement().style.whiteSpace="pre-wrap",this.emptyToSpace(this.sanitizeHTML(e.getValue()))},money:function(e,t,n){var o,r,i,a,s=parseFloat(e.getValue()),l=t.decimal||".",u=t.thousand||",",c=t.symbol||"",d=!!t.symbolAfter,p=void 0!==t.precision?t.precision:2;if(isNaN(s))return this.emptyToSpace(this.sanitizeHTML(e.getValue()));for(o=!1!==p?s.toFixed(p):s,r=(o=String(o).split("."))[0],i=o.length>1?l+o[1]:"",a=/(\d+)(\d{3})/;a.test(r);)r=r.replace(a,"$1"+u+"$2");return d?r+i+c:c+r+i},link:function(e,t,n){var o=e.getValue(),r=t.urlPrefix||"",i=this.emptyToSpace(o),a=document.createElement("a");if(t.labelField&&(i=e.getData()[t.labelField]),t.label)switch(s(t.label)){case"string":i=t.label;break;case"function":i=t.label(e)}if(t.urlField&&(o=e.getData()[t.urlField]),t.url)switch(s(t.url)){case"string":o=t.url;break;case"function":o=t.url(e)}return a.setAttribute("href",r+o),t.target&&a.setAttribute("target",t.target),a.innerHTML=this.emptyToSpace(this.sanitizeHTML(i)),a},image:function(e,t,n){var o=document.createElement("img");switch(o.setAttribute("src",e.getValue()),s(t.height)){case"number":o.style.height=t.height+"px";break;case"string":o.style.height=t.height}switch(s(t.width)){case"number":o.style.width=t.width+"px";break;case"string":o.style.width=t.width}return o.addEventListener("load",function(){e.getRow().normalizeHeight()}),o},tickCross:function(e,t,n){var o=e.getValue(),r=e.getElement(),i=t.allowEmpty,a=t.allowTruthy,s=void 0!==t.tickElement?t.tickElement:'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34 c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351 l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07 l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>',l=void 0!==t.crossElement?t.crossElement:'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272 c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0 l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269 c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73 L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>';return a&&o||!0===o||"true"===o||"True"===o||1===o||"1"===o?(r.setAttribute("aria-checked",!0),s||""):!i||"null"!==o&&""!==o&&null!=o?(r.setAttribute("aria-checked",!1),l||""):(r.setAttribute("aria-checked","mixed"),"")},datetime:function(e,t,n){var o=t.inputFormat||"YYYY-MM-DD hh:mm:ss",r=t.outputFormat||"DD/MM/YYYY hh:mm:ss",i=void 0!==t.invalidPlaceholder?t.invalidPlaceholder:"",a=e.getValue(),s=moment(a,o);return s.isValid()?s.format(r):!0===i?a:"function"==typeof i?i(a):i},datetimediff:function(e,t,n){var o=t.inputFormat||"YYYY-MM-DD hh:mm:ss",r=void 0!==t.invalidPlaceholder?t.invalidPlaceholder:"",i=void 0!==t.suffix&&t.suffix,a=void 0!==t.unit?t.unit:void 0,s=void 0!==t.humanize&&t.humanize,l=void 0!==t.date?t.date:moment(),u=e.getValue(),c=moment(u,o);return c.isValid()?s?moment.duration(c.diff(l)).humanize(i):c.diff(l,a)+(i?" "+i:""):!0===r?u:"function"==typeof r?r(u):r},lookup:function(e,t,n){var o=e.getValue();return void 0===t[o]?(console.warn("Missing display value for "+o),o):t[o]},star:function(e,t,n){var o=e.getValue(),r=e.getElement(),i=t&&t.stars?t.stars:5,a=document.createElement("span"),s=document.createElementNS("http://www.w3.org/2000/svg","svg");a.style.verticalAlign="middle",s.setAttribute("width","14"),s.setAttribute("height","14"),s.setAttribute("viewBox","0 0 512 512"),s.setAttribute("xml:space","preserve"),s.style.padding="0 1px",o=parseInt(o)<i?parseInt(o):i;for(var l=1;l<=i;l++){var u=s.cloneNode(!0);u.innerHTML=l<=o?'<polygon fill="#FFEA00" stroke="#C1AB60" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>':'<polygon fill="#D2D2D2" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>',a.appendChild(u)}return r.style.whiteSpace="nowrap",r.style.overflow="hidden",r.style.textOverflow="ellipsis",r.setAttribute("aria-label",o),a},traffic:function(e,t,n){var o,r,i=this.sanitizeHTML(e.getValue())||0,a=document.createElement("span"),l=t&&t.max?t.max:100,u=t&&t.min?t.min:0,c=t&&void 0!==t.color?t.color:["red","orange","green"],d="#666666";if(!isNaN(i)&&void 0!==e.getValue()){switch(a.classList.add("tabulator-traffic-light"),r=parseFloat(i)<=l?parseFloat(i):l,r=parseFloat(r)>=u?parseFloat(r):u,o=(l-u)/100,r=Math.round((r-u)/o),void 0===c?"undefined":s(c)){case"string":d=c;break;case"function":d=c(i);break;case"object":if(Array.isArray(c)){var p=100/c.length,h=Math.floor(r/p);h=Math.min(h,c.length-1),d=c[h=Math.max(h,0)];break}}return a.style.backgroundColor=d,a}},progress:function(e,t,n){var o,r,i,a,l,u=this.sanitizeHTML(e.getValue())||0,c=e.getElement(),d=t&&t.max?t.max:100,p=t&&t.min?t.min:0,h=t&&t.legendAlign?t.legendAlign:"center";switch(r=parseFloat(u)<=d?parseFloat(u):d,r=parseFloat(r)>=p?parseFloat(r):p,o=(d-p)/100,r=Math.round((r-p)/o),s(t.color)){case"string":i=t.color;break;case"function":i=t.color(u);break;case"object":if(Array.isArray(t.color)){var f=100/t.color.length,m=Math.floor(r/f);m=Math.min(m,t.color.length-1),m=Math.max(m,0),i=t.color[m];break}default:i="#2DC214"}switch(s(t.legend)){case"string":a=t.legend;break;case"function":a=t.legend(u);break;case"boolean":a=u;break;default:a=!1}switch(s(t.legendColor)){case"string":l=t.legendColor;break;case"function":l=t.legendColor(u);break;case"object":if(Array.isArray(t.legendColor)){f=100/t.legendColor.length,m=Math.floor(r/f);m=Math.min(m,t.legendColor.length-1),m=Math.max(m,0),l=t.legendColor[m]}break;default:l="#000"}return c.style.minWidth="30px",c.style.position="relative",c.setAttribute("aria-label",r),"<div style='position:realtive; height:100%;' data-max='"+d+"' data-min='"+p+"'><div style='position:relative; height:100%; width:calc("+r+"%); background-color:"+i+"; display:inline-block;'></div></div>"+(a?"<div style='position:absolute; top:4px; left:0; text-align:"+h+"; width:100%; color:"+l+";'>"+a+"</div>":"")},color:function(e,t,n){return e.getElement().style.backgroundColor=this.sanitizeHTML(e.getValue()),""},buttonTick:function(e,t,n){return'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34 c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351 l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07 l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>'},buttonCross:function(e,t,n){return'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272 c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0 l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269 c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73 L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>'},rownum:function(e,t,n){return this.table.rowManager.activeRows.indexOf(e.getRow()._getSelf())+1},handle:function(e,t,n){return e.getElement().classList.add("tabulator-row-handle"),"<div class='tabulator-row-handle-box'><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div></div>"},responsiveCollapse:function(e,t,n){var o=!1,r=document.createElement("div");function i(t){var n=e.getRow().getElement().getElementsByClassName("tabulator-responsive-collapse")[0];(o=t)?(r.classList.add("open"),n&&(n.style.display="")):(r.classList.remove("open"),n&&(n.style.display="none"))}return r.classList.add("tabulator-responsive-collapse-toggle"),r.innerHTML="<span class='tabulator-responsive-collapse-toggle-open'>+</span><span class='tabulator-responsive-collapse-toggle-close'>-</span>",e.getElement().classList.add("tabulator-row-handle"),this.table.options.responsiveLayoutCollapseStartOpen&&(o=!0),r.addEventListener("click",function(e){e.stopImmediatePropagation(),i(!o)}),i(o),r}},d.prototype.registerModule("format",x);var T=function(e){this.table=e,this.leftColumns=[],this.rightColumns=[],this.leftMargin=0,this.rightMargin=0,this.rightPadding=0,this.initializationMode="left",this.active=!1,this.scrollEndTimer=!1};T.prototype.reset=function(){this.initializationMode="left",this.leftColumns=[],this.rightColumns=[],this.leftMargin=0,this.rightMargin=0,this.rightMargin=0,this.active=!1,this.table.columnManager.headersElement.style.marginLeft=0,this.table.columnManager.element.style.paddingRight=0},T.prototype.initializeColumn=function(e){var t={margin:0,edge:!1};e.definition.frozen?e.parent.isGroup?console.warn("Frozen Column Error - Grouped columns cannot be frozen"):e.isGroup?console.warn("Frozen Column Error - Column Groups cannot be frozen"):(t.position=this.initializationMode,"left"==this.initializationMode?this.leftColumns.push(e):this.rightColumns.unshift(e),this.active=!0,e.modules.frozen=t):this.initializationMode="right"},T.prototype.scrollHorizontal=function(){var e,t=this;this.active&&(clearTimeout(this.scrollEndTimer),this.scrollEndTimer=setTimeout(function(){t.layout()},100),e=this.table.rowManager.getVisibleRows(),this.calcMargins(),this.layoutColumnPosition(),this.layoutCalcRows(),e.forEach(function(e){"row"===e.type&&t.layoutRow(e)}),this.table.rowManager.tableElement.style.marginRight=this.rightMargin)},T.prototype.calcMargins=function(){this.leftMargin=this._calcSpace(this.leftColumns,this.leftColumns.length)+"px",this.table.columnManager.headersElement.style.marginLeft=this.leftMargin,this.rightMargin=this._calcSpace(this.rightColumns,this.rightColumns.length)+"px",this.table.columnManager.element.style.paddingRight=this.rightMargin,this.rightPadding=this.table.rowManager.element.clientWidth+this.table.columnManager.scrollLeft},T.prototype.layoutCalcRows=function(){this.table.modExists("columnCalcs")&&(this.table.modules.columnCalcs.topInitialized&&this.table.modules.columnCalcs.topRow&&this.layoutRow(this.table.modules.columnCalcs.topRow),this.table.modules.columnCalcs.botInitialized&&this.table.modules.columnCalcs.botRow&&this.layoutRow(this.table.modules.columnCalcs.botRow))},T.prototype.layoutColumnPosition=function(e){var t=this;this.leftColumns.forEach(function(n,o){n.modules.frozen.margin=t._calcSpace(t.leftColumns,o)+t.table.columnManager.scrollLeft+"px",o==t.leftColumns.length-1?n.modules.frozen.edge=!0:n.modules.frozen.edge=!1,t.layoutElement(n.getElement(),n),e&&n.cells.forEach(function(e){t.layoutElement(e.getElement(),n)})}),this.rightColumns.forEach(function(n,o){n.modules.frozen.margin=t.rightPadding-t._calcSpace(t.rightColumns,o+1)+"px",o==t.rightColumns.length-1?n.modules.frozen.edge=!0:n.modules.frozen.edge=!1,t.layoutElement(n.getElement(),n),e&&n.cells.forEach(function(e){t.layoutElement(e.getElement(),n)})})},T.prototype.layout=function(){var e=this;e.active&&(this.calcMargins(),e.table.rowManager.getDisplayRows().forEach(function(t){"row"===t.type&&e.layoutRow(t)}),this.layoutCalcRows(),this.layoutColumnPosition(!0),this.table.rowManager.tableElement.style.marginRight=this.rightMargin)},T.prototype.layoutRow=function(e){var t=this;e.getElement().style.paddingLeft=this.leftMargin,this.leftColumns.forEach(function(n){var o=e.getCell(n);o&&t.layoutElement(o.getElement(),n)}),this.rightColumns.forEach(function(n){var o=e.getCell(n);o&&t.layoutElement(o.getElement(),n)})},T.prototype.layoutElement=function(e,t){t.modules.frozen&&(e.style.position="absolute",e.style.left=t.modules.frozen.margin,e.classList.add("tabulator-frozen"),t.modules.frozen.edge&&e.classList.add("tabulator-frozen-"+t.modules.frozen.position))},T.prototype._calcSpace=function(e,t){for(var n=0,o=0;o<t;o++)e[o].visible&&(n+=e[o].getWidth());return n},d.prototype.registerModule("frozenColumns",T);var k=function(e){this.table=e,this.topElement=document.createElement("div"),this.rows=[],this.displayIndex=0};k.prototype.initialize=function(){this.rows=[],this.topElement.classList.add("tabulator-frozen-rows-holder"),this.table.columnManager.getElement().insertBefore(this.topElement,this.table.columnManager.headersElement.nextSibling)},k.prototype.setDisplayIndex=function(e){this.displayIndex=e},k.prototype.getDisplayIndex=function(){return this.displayIndex},k.prototype.isFrozen=function(){return!!this.rows.length},k.prototype.getRows=function(e){var t=e.slice(0);return this.rows.forEach(function(e){var n=t.indexOf(e);n>-1&&t.splice(n,1)}),t},k.prototype.freezeRow=function(e){e.modules.frozen?console.warn("Freeze Error - Row is already frozen"):(e.modules.frozen=!0,this.topElement.appendChild(e.getElement()),e.initialize(),e.normalizeHeight(),this.table.rowManager.adjustTableSize(),this.rows.push(e),this.table.rowManager.refreshActiveData("display"),this.styleRows())},k.prototype.unfreezeRow=function(e){var t=this.rows.indexOf(e);if(e.modules.frozen){e.modules.frozen=!1;var n=e.getElement();n.parentNode.removeChild(n),this.table.rowManager.adjustTableSize(),this.rows.splice(t,1),this.table.rowManager.refreshActiveData("display"),this.rows.length&&this.styleRows()}else console.warn("Freeze Error - Row is already unfrozen")},k.prototype.styleRows=function(e){var t=this;this.rows.forEach(function(e,n){t.table.rowManager.styleRow(e,n)})},d.prototype.registerModule("frozenRows",k);var S=function(e){this._group=e,this.type="GroupComponent"};S.prototype.getKey=function(){return this._group.key},S.prototype.getElement=function(){return this._group.element},S.prototype.getRows=function(){return this._group.getRows(!0)},S.prototype.getSubGroups=function(){return this._group.getSubGroups(!0)},S.prototype.getParentGroup=function(){return!!this._group.parent&&this._group.parent.getComponent()},S.prototype.getVisibility=function(){return this._group.visible},S.prototype.show=function(){this._group.show()},S.prototype.hide=function(){this._group.hide()},S.prototype.toggle=function(){this._group.toggleVisibility()},S.prototype._getSelf=function(){return this._group},S.prototype.getTable=function(){return this._group.groupManager.table};var D=function(e,t,n,o,r,i,a){this.groupManager=e,this.parent=t,this.key=o,this.level=n,this.field=r,this.hasSubGroups=n<e.groupIDLookups.length-1,this.addRow=this.hasSubGroups?this._addRowToGroup:this._addRow,this.type="group",this.old=a,this.rows=[],this.groups=[],this.groupList=[],this.generator=i,this.elementContents=!1,this.height=0,this.outerHeight=0,this.initialized=!1,this.calcs={},this.initialized=!1,this.modules={},this.arrowElement=!1,this.visible=a?a.visible:void 0!==e.startOpen[n]?e.startOpen[n]:e.startOpen[0],this.createElements(),this.addBindings(),this.createValueGroups()};D.prototype.wipe=function(){this.groupList.length?this.groupList.forEach(function(e){e.wipe()}):(this.element=!1,this.arrowElement=!1,this.elementContents=!1)},D.prototype.createElements=function(){this.element=document.createElement("div"),this.element.classList.add("tabulator-row"),this.element.classList.add("tabulator-group"),this.element.classList.add("tabulator-group-level-"+this.level),this.element.setAttribute("role","rowgroup"),this.arrowElement=document.createElement("div"),this.arrowElement.classList.add("tabulator-arrow"),!1!==this.groupManager.table.options.movableRows&&this.groupManager.table.modExists("moveRow")&&this.groupManager.table.modules.moveRow.initializeGroupHeader(this)},D.prototype.createValueGroups=function(){var e=this,t=this.level+1;this.groupManager.allowedValues&&this.groupManager.allowedValues[t]&&this.groupManager.allowedValues[t].forEach(function(n){e._createGroup(n,t)})},D.prototype.addBindings=function(){var e,t,n,o=this;o.groupManager.table.options.groupClick&&o.element.addEventListener("click",function(e){o.groupManager.table.options.groupClick(e,o.getComponent())}),o.groupManager.table.options.groupDblClick&&o.element.addEventListener("dblclick",function(e){o.groupManager.table.options.groupDblClick(e,o.getComponent())}),o.groupManager.table.options.groupContext&&o.element.addEventListener("contextmenu",function(e){o.groupManager.table.options.groupContext(e,o.getComponent())}),o.groupManager.table.options.groupTap&&(n=!1,o.element.addEventListener("touchstart",function(e){n=!0},{passive:!0}),o.element.addEventListener("touchend",function(e){n&&o.groupManager.table.options.groupTap(e,o.getComponent()),n=!1})),o.groupManager.table.options.groupDblTap&&(e=null,o.element.addEventListener("touchend",function(t){e?(clearTimeout(e),e=null,o.groupManager.table.options.groupDblTap(t,o.getComponent())):e=setTimeout(function(){clearTimeout(e),e=null},300)})),o.groupManager.table.options.groupTapHold&&(t=null,o.element.addEventListener("touchstart",function(e){clearTimeout(t),t=setTimeout(function(){clearTimeout(t),t=null,n=!1,o.groupManager.table.options.groupTapHold(e,o.getComponent())},1e3)},{passive:!0}),o.element.addEventListener("touchend",function(e){clearTimeout(t),t=null})),o.groupManager.table.options.groupToggleElement&&("arrow"==o.groupManager.table.options.groupToggleElement?o.arrowElement:o.element).addEventListener("click",function(e){e.stopPropagation(),e.stopImmediatePropagation(),o.toggleVisibility()})},D.prototype._createGroup=function(e,t){var n=t+"_"+e,o=new D(this.groupManager,this,t,e,this.groupManager.groupIDLookups[t].field,this.groupManager.headerGenerator[t]||this.groupManager.headerGenerator[0],!!this.old&&this.old.groups[n]);this.groups[n]=o,this.groupList.push(o)},D.prototype._addRowToGroup=function(e){var t=this.level+1;if(this.hasSubGroups){var n=this.groupManager.groupIDLookups[t].func(e.getData()),o=t+"_"+n;this.groupManager.allowedValues&&this.groupManager.allowedValues[t]?this.groups[o]&&this.groups[o].addRow(e):(this.groups[o]||this._createGroup(n,t),this.groups[o].addRow(e))}},D.prototype._addRow=function(e){this.rows.push(e),e.modules.group=this},D.prototype.insertRow=function(e,t,n){var o=this.conformRowData({});e.updateData(o);var r=this.rows.indexOf(t);r>-1?n?this.rows.splice(r+1,0,e):this.rows.splice(r,0,e):n?this.rows.push(e):this.rows.unshift(e),e.modules.group=this,this.generateGroupHeaderContents(),this.groupManager.table.modExists("columnCalcs")&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modules.columnCalcs.recalcGroup(this),this.groupManager.updateGroupRows(!0)},D.prototype.scrollHeader=function(e){this.arrowElement.style.marginLeft=e,this.groupList.forEach(function(t){t.scrollHeader(e)})},D.prototype.getRowIndex=function(e){},D.prototype.conformRowData=function(e){return this.field?e[this.field]=this.key:console.warn("Data Conforming Error - Cannot conform row data to match new group as groupBy is a function"),this.parent&&(e=this.parent.conformRowData(e)),e},D.prototype.removeRow=function(e){var t=this.rows.indexOf(e),n=e.getElement();t>-1&&this.rows.splice(t,1),this.groupManager.table.options.groupValues||this.rows.length?(n.parentNode&&n.parentNode.removeChild(n),this.generateGroupHeaderContents(),this.groupManager.table.modExists("columnCalcs")&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modules.columnCalcs.recalcGroup(this)):(this.parent?this.parent.removeGroup(this):this.groupManager.removeGroup(this),this.groupManager.updateGroupRows(!0))},D.prototype.removeGroup=function(e){var t,n=e.level+"_"+e.key;this.groups[n]&&(delete this.groups[n],(t=this.groupList.indexOf(e))>-1&&this.groupList.splice(t,1),this.groupList.length||(this.parent?this.parent.removeGroup(this):this.groupManager.removeGroup(this)))},D.prototype.getHeadersAndRows=function(e){var t=[];return t.push(this),this._visSet(),this.visible?this.groupList.length?this.groupList.forEach(function(n){t=t.concat(n.getHeadersAndRows(e))}):(!e&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modExists("columnCalcs")&&this.groupManager.table.modules.columnCalcs.hasTopCalcs()&&(this.calcs.top&&(this.calcs.top.detachElement(),this.calcs.top.deleteCells()),this.calcs.top=this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows),t.push(this.calcs.top)),t=t.concat(this.rows),!e&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modExists("columnCalcs")&&this.groupManager.table.modules.columnCalcs.hasBottomCalcs()&&(this.calcs.bottom&&(this.calcs.bottom.detachElement(),this.calcs.bottom.deleteCells()),this.calcs.bottom=this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows),t.push(this.calcs.bottom))):this.groupList.length||"table"==this.groupManager.table.options.columnCalcs||this.groupManager.table.modExists("columnCalcs")&&(!e&&this.groupManager.table.modules.columnCalcs.hasTopCalcs()&&(this.calcs.top&&(this.calcs.top.detachElement(),this.calcs.top.deleteCells()),this.groupManager.table.options.groupClosedShowCalcs&&(this.calcs.top=this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows),t.push(this.calcs.top))),!e&&this.groupManager.table.modules.columnCalcs.hasBottomCalcs()&&(this.calcs.bottom&&(this.calcs.bottom.detachElement(),this.calcs.bottom.deleteCells()),this.groupManager.table.options.groupClosedShowCalcs&&(this.calcs.bottom=this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows),t.push(this.calcs.bottom)))),t},D.prototype.getData=function(e,t){var n=[];return this._visSet(),(!e||e&&this.visible)&&this.rows.forEach(function(e){n.push(e.getData(t||"data"))}),n},D.prototype.getRowCount=function(){var e=0;return this.groupList.length?this.groupList.forEach(function(t){e+=t.getRowCount()}):e=this.rows.length,e},D.prototype.toggleVisibility=function(){this.visible?this.hide():this.show()},D.prototype.hide=function(){this.visible=!1,"classic"!=this.groupManager.table.rowManager.getRenderMode()||this.groupManager.table.options.pagination?this.groupManager.updateGroupRows(!0):(this.element.classList.remove("tabulator-group-visible"),this.groupList.length?this.groupList.forEach(function(e){e.getHeadersAndRows().forEach(function(e){e.detachElement()})}):this.rows.forEach(function(e){var t=e.getElement();t.parentNode.removeChild(t)}),this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(),this.groupManager.getDisplayIndex()),this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth()),this.groupManager.table.options.groupVisibilityChanged.call(this.table,this.getComponent(),!1)},D.prototype.show=function(){if(this.visible=!0,"classic"!=this.groupManager.table.rowManager.getRenderMode()||this.groupManager.table.options.pagination)this.groupManager.updateGroupRows(!0);else{this.element.classList.add("tabulator-group-visible");var e=this.getElement();this.groupList.length?this.groupList.forEach(function(t){t.getHeadersAndRows().forEach(function(t){var n=t.getElement();e.parentNode.insertBefore(n,e.nextSibling),t.initialize(),e=n})}):this.rows.forEach(function(t){var n=t.getElement();e.parentNode.insertBefore(n,e.nextSibling),t.initialize(),e=n}),this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(),this.groupManager.getDisplayIndex()),this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth()}this.groupManager.table.options.groupVisibilityChanged.call(this.table,this.getComponent(),!0)},D.prototype._visSet=function(){var e=[];"function"==typeof this.visible&&(this.rows.forEach(function(t){e.push(t.getData())}),this.visible=this.visible(this.key,this.getRowCount(),e,this.getComponent()))},D.prototype.getRowGroup=function(e){var t=!1;return this.groupList.length?this.groupList.forEach(function(n){var o=n.getRowGroup(e);o&&(t=o)}):this.rows.find(function(t){return t===e})&&(t=this),t},D.prototype.getSubGroups=function(e){var t=[];return this.groupList.forEach(function(n){t.push(e?n.getComponent():n)}),t},D.prototype.getRows=function(e){var t=[];return this.rows.forEach(function(n){t.push(e?n.getComponent():n)}),t},D.prototype.generateGroupHeaderContents=function(){var e=[];for(this.rows.forEach(function(t){e.push(t.getData())}),this.elementContents=this.generator(this.key,this.getRowCount(),e,this.getComponent());this.element.firstChild;)this.element.removeChild(this.element.firstChild);"string"==typeof this.elementContents?this.element.innerHTML=this.elementContents:this.element.appendChild(this.elementContents),this.element.insertBefore(this.arrowElement,this.element.firstChild)},D.prototype.getElement=function(){this.addBindingsd=!1,this._visSet(),this.visible?this.element.classList.add("tabulator-group-visible"):this.element.classList.remove("tabulator-group-visible");for(var e=0;e<this.element.childNodes.length;++e)this.element.childNodes[e].parentNode.removeChild(this.element.childNodes[e]);return this.generateGroupHeaderContents(),this.element},D.prototype.detachElement=function(){this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element)},D.prototype.normalizeHeight=function(){this.setHeight(this.element.clientHeight)},D.prototype.initialize=function(e){this.initialized&&!e||(this.normalizeHeight(),this.initialized=!0)},D.prototype.reinitialize=function(){this.initialized=!1,this.height=0,d.prototype.helpers.elVisible(this.element)&&this.initialize(!0)},D.prototype.setHeight=function(e){this.height!=e&&(this.height=e,this.outerHeight=this.element.offsetHeight)},D.prototype.getHeight=function(){return this.outerHeight},D.prototype.getGroup=function(){return this},D.prototype.reinitializeHeight=function(){},D.prototype.calcHeight=function(){},D.prototype.setCellHeight=function(){},D.prototype.clearCellHeight=function(){},D.prototype.getComponent=function(){return new S(this)};var M=function(e){this.table=e,this.groupIDLookups=!1,this.startOpen=[function(){return!1}],this.headerGenerator=[function(){return""}],this.groupList=[],this.allowedValues=!1,this.groups={},this.displayIndex=0};M.prototype.initialize=function(){var e=this,t=e.table.options.groupBy,n=e.table.options.groupStartOpen,o=e.table.options.groupHeader;(this.allowedValues=e.table.options.groupValues,e.headerGenerator=[function(){return""}],this.startOpen=[function(){return!1}],e.table.modules.localize.bind("groups|item",function(t,n){e.headerGenerator[0]=function(e,o,r){return(void 0===e?"":e)+"<span>("+o+" "+(1===o?t:n.groups.items)+")</span>"}}),this.groupIDLookups=[],Array.isArray(t)||t)?this.table.modExists("columnCalcs")&&"table"!=this.table.options.columnCalcs&&"both"!=this.table.options.columnCalcs&&this.table.modules.columnCalcs.removeCalcs():this.table.modExists("columnCalcs")&&"group"!=this.table.options.columnCalcs&&this.table.columnManager.getRealColumns().forEach(function(t){t.definition.topCalc&&e.table.modules.columnCalcs.initializeTopRow(),t.definition.bottomCalc&&e.table.modules.columnCalcs.initializeBottomRow()});Array.isArray(t)||(t=[t]),t.forEach(function(t,n){var o,r;o="function"==typeof t?t:(r=e.table.columnManager.getColumnByField(t))?function(e){return r.getFieldValue(e)}:function(e){return e[t]},e.groupIDLookups.push({field:"function"!=typeof t&&t,func:o,values:!!e.allowedValues&&e.allowedValues[n]})}),n&&(Array.isArray(n)||(n=[n]),n.forEach(function(e){e="function"==typeof e?e:function(){return!0}}),e.startOpen=n),o&&(e.headerGenerator=Array.isArray(o)?o:[o]),this.initialized=!0},M.prototype.setDisplayIndex=function(e){this.displayIndex=e},M.prototype.getDisplayIndex=function(){return this.displayIndex},M.prototype.getRows=function(e){return this.groupIDLookups.length?(this.table.options.dataGrouping.call(this.table),this.generateGroups(e),this.table.options.dataGrouped&&this.table.options.dataGrouped.call(this.table,this.getGroups(!0)),this.updateGroupRows()):e.slice(0)},M.prototype.getGroups=function(e){var t=[];return this.groupList.forEach(function(n){t.push(e?n.getComponent():n)}),t},M.prototype.wipe=function(){this.groupList.forEach(function(e){e.wipe()})},M.prototype.pullGroupListData=function(e){var t=this,n=[];return e.forEach(function(e){var o={level:0,rowCount:0,headerContent:""},r=[];e.hasSubGroups?(r=t.pullGroupListData(e.groupList),o.level=e.level,o.rowCount=r.length-e.groupList.length,o.headerContent=e.generator(e.key,o.rowCount,e.rows,e),n.push(o),n=n.concat(r)):(o.level=e.level,o.headerContent=e.generator(e.key,e.rows.length,e.rows,e),o.rowCount=e.getRows().length,n.push(o),e.getRows().forEach(function(e){n.push(e.getData("data"))}))}),n},M.prototype.getGroupedData=function(){return this.pullGroupListData(this.groupList)},M.prototype.getRowGroup=function(e){var t=!1;return this.groupList.forEach(function(n){var o=n.getRowGroup(e);o&&(t=o)}),t},M.prototype.countGroups=function(){return this.groupList.length},M.prototype.generateGroups=function(e){var t=this,n=t.groups;t.groups={},t.groupList=[],this.allowedValues&&this.allowedValues[0]?(this.allowedValues[0].forEach(function(e){t.createGroup(e,0,n)}),e.forEach(function(e){t.assignRowToExistingGroup(e,n)})):e.forEach(function(e){t.assignRowToGroup(e,n)})},M.prototype.createGroup=function(e,t,n){var o,r=t+"_"+e;n=n||[],o=new D(this,!1,t,e,this.groupIDLookups[0].field,this.headerGenerator[0],n[r]),this.groups[r]=o,this.groupList.push(o)},M.prototype.assignRowToGroup=function(e,t){var n=this.groupIDLookups[0].func(e.getData()),o="0_"+n;this.groups[o]||this.createGroup(n,0,t),this.groups[o].addRow(e)},M.prototype.assignRowToExistingGroup=function(e,t){var n="0_"+this.groupIDLookups[0].func(e.getData());this.groups[n]&&this.groups[n].addRow(e)},M.prototype.assignRowToGroup=function(e,t){var n=this.groupIDLookups[0].func(e.getData()),o=!this.groups["0_"+n];return o&&this.createGroup(n,0,t),this.groups["0_"+n].addRow(e),!o},M.prototype.updateGroupRows=function(e){var t=[];if(this.groupList.forEach(function(e){t=t.concat(e.getHeadersAndRows())}),e){var n=this.table.rowManager.setDisplayRows(t,this.getDisplayIndex());!0!==n&&this.setDisplayIndex(n),this.table.rowManager.refreshActiveData("group",!0,!0)}return t},M.prototype.scrollHeaders=function(e){e+="px",this.groupList.forEach(function(t){t.scrollHeader(e)})},M.prototype.removeGroup=function(e){var t,n=e.level+"_"+e.key;this.groups[n]&&(delete this.groups[n],(t=this.groupList.indexOf(e))>-1&&this.groupList.splice(t,1))},d.prototype.registerModule("groupRows",M);var R=function(e){this.table=e,this.history=[],this.index=-1};R.prototype.clear=function(){this.history=[],this.index=-1},R.prototype.action=function(e,t,n){this.history=this.history.slice(0,this.index+1),this.history.push({type:e,component:t,data:n}),this.index++},R.prototype.getHistoryUndoSize=function(){return this.index+1},R.prototype.getHistoryRedoSize=function(){return this.history.length-(this.index+1)},R.prototype.undo=function(){if(this.index>-1){var e=this.history[this.index];return this.undoers[e.type].call(this,e),this.index--,this.table.options.historyUndo.call(this.table,e.type,e.component.getComponent(),e.data),!0}return console.warn("History Undo Error - No more history to undo"),!1},R.prototype.redo=function(){if(this.history.length-1>this.index){this.index++;var e=this.history[this.index];return this.redoers[e.type].call(this,e),this.table.options.historyRedo.call(this.table,e.type,e.component.getComponent(),e.data),!0}return console.warn("History Redo Error - No more history to redo"),!1},R.prototype.undoers={cellEdit:function(e){e.component.setValueProcessData(e.data.oldValue)},rowAdd:function(e){e.component.deleteActual()},rowDelete:function(e){var t=this.table.rowManager.addRowActual(e.data.data,e.data.pos,e.data.index);this._rebindRow(e.component,t)},rowMove:function(e){this.table.rowManager.moveRowActual(e.component,this.table.rowManager.rows[e.data.pos],!1),this.table.rowManager.redraw()}},R.prototype.redoers={cellEdit:function(e){e.component.setValueProcessData(e.data.newValue)},rowAdd:function(e){var t=this.table.rowManager.addRowActual(e.data.data,e.data.pos,e.data.index);this._rebindRow(e.component,t)},rowDelete:function(e){e.component.deleteActual()},rowMove:function(e){this.table.rowManager.moveRowActual(e.component,this.table.rowManager.rows[e.data.pos],!1),this.table.rowManager.redraw()}},R.prototype._rebindRow=function(e,t){this.history.forEach(function(n){if(n.component instanceof a)n.component===e&&(n.component=t);else if(n.component instanceof u&&n.component.row===e){var o=n.component.column.getField();o&&(n.component=t.getCell(o))}})},d.prototype.registerModule("history",R);var P=function(e){this.table=e,this.fieldIndex=[],this.hasIndex=!1};P.prototype.parseTable=function(){var e=this.table.element,t=this.table.options,n=(t.columns,e.getElementsByTagName("th")),o=e.getElementsByTagName("tbody")[0],r=[];this.hasIndex=!1,this.table.options.htmlImporting.call(this.table),o=o?o.getElementsByTagName("tr"):[],this._extractOptions(e,t),n.length?this._extractHeaders(n,o):this._generateBlankHeaders(n,o);for(var i=0;i<o.length;i++){var a=o[i].getElementsByTagName("td"),l={};this.hasIndex||(l[t.index]=i);for(var u=0;u<a.length;u++){var c=a[u];void 0!==this.fieldIndex[u]&&(l[this.fieldIndex[u]]=c.innerHTML)}r.push(l)}var d=document.createElement("div"),p=e.attributes;for(var u in p)"object"==s(p[u])&&d.setAttribute(p[u].name,p[u].value);e.parentNode.replaceChild(d,e),t.data=r,this.table.options.htmlImported.call(this.table),this.table.element=d},P.prototype._extractOptions=function(e,t,n){var o=e.attributes,r=n?Object.assign([],n):Object.keys(t),i={};for(var a in r.forEach(function(e){i[e.toLowerCase()]=e}),o){var l,u=o[a];u&&"object"==(void 0===u?"undefined":s(u))&&u.name&&0===u.name.indexOf("tabulator-")&&(l=u.name.replace("tabulator-",""),void 0!==i[l]&&(t[i[l]]=this._attribValue(u.value)))}},P.prototype._attribValue=function(e){return"true"===e||"false"!==e&&e},P.prototype._findCol=function(e){return this.table.options.columns.find(function(t){return t.title===e})||!1},P.prototype._extractHeaders=function(e,t){for(var n=0;n<e.length;n++){var r,i,a=e[n],l=!1,u=this._findCol(a.textContent);for(var c in u?l=!0:u={title:a.textContent.trim()},u.field||(u.field=a.textContent.trim().toLowerCase().replace(" ","_")),(r=a.getAttribute("width"))&&!u.width&&(u.width=r),i=a.attributes,this._extractOptions(a,u,o.prototype.defaultOptionList),i){var d=i[c];d&&"object"==(void 0===d?"undefined":s(d))&&d.name&&0===d.name.indexOf("tabulator-")&&(u[d.name.replace("tabulator-","")]=this._attribValue(d.value))}this.fieldIndex[n]=u.field,u.field==this.table.options.index&&(this.hasIndex=!0),l||this.table.options.columns.push(u)}},P.prototype._generateBlankHeaders=function(e,t){for(var n=0;n<e.length;n++){var o=e[n],r={title:"",field:"col"+n};this.fieldIndex[n]=r.field;var i=o.getAttribute("width");i&&(r.width=i),this.table.options.columns.push(r)}},d.prototype.registerModule("htmlTableImport",P);var _=function(e){this.table=e,this.config={},this.cloneTableStyle=!0,this.colVisProp=""};_.prototype.genereateTable=function(e,t,n,o){this.cloneTableStyle=t,this.config=e||{},this.colVisProp=o;var r=this.generateHeaderElements(),i=this.generateBodyElements(n),a=document.createElement("table");return a.classList.add("tabulator-print-table"),a.appendChild(r),a.appendChild(i),this.mapElementStyles(this.table.element,a,["border-top","border-left","border-right","border-bottom"]),a},_.prototype.generateColumnGroupHeaders=function(){var e=this,t=[];return(!1!==this.config.columnGroups?this.table.columnManager.columns:this.table.columnManager.columnsByIndex).forEach(function(n){var o=e.processColumnGroup(n);o&&t.push(o)}),t},_.prototype.processColumnGroup=function(e){var t=this,n=e.columns,o=0,r={title:e.definition.title,column:e,depth:1};if(n.length){if(r.subGroups=[],r.width=0,n.forEach(function(e){var n=t.processColumnGroup(e);n&&(r.width+=n.width,r.subGroups.push(n),n.depth>o&&(o=n.depth))}),r.depth+=o,!r.width)return!1}else{if(!e.field||!this.columnVisCheck(e))return!1;r.width=1}return r},_.prototype.groupHeadersToRows=function(e){var t=[],n=0;return e.forEach(function(e){e.depth>n&&(n=e.depth)}),e.forEach(function(e){!function e(o,r){var i=n-r;void 0===t[r]&&(t[r]=[]),o.height=o.subGroups?1:i-o.depth+1,t[r].push(o),o.subGroups&&o.subGroups.forEach(function(t){e(t,r+1)})}(e,0)}),t},_.prototype.generateHeaderElements=function(){var e=this,t=document.createElement("thead");return this.groupHeadersToRows(this.generateColumnGroupHeaders()).forEach(function(n){var o=document.createElement("tr");e.mapElementStyles(e.table.columnManager.getHeadersElement(),t,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),n.forEach(function(t){var n=document.createElement("th");n.colSpan=t.width,n.rowSpan=t.height,n.innerHTML=t.column.definition.title,e.cloneTableStyle&&(n.style.boxSizing="border-box"),e.mapElementStyles(t.column.getElement(),n,["text-align","border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),e.mapElementStyles(t.column.contentElement,n,["padding-top","padding-left","padding-right","padding-bottom"]),t.column.visible?e.mapElementStyles(t.column.getElement(),n,["width"]):t.column.definition.width&&(n.style.width=t.column.definition.width+"px"),t.column.parent&&e.mapElementStyles(t.column.parent.groupElement,n,["border-top"]),o.appendChild(n)}),t.appendChild(o)}),t},_.prototype.generateBodyElements=function(e){var t,n,o,r,i,a,l,u,c=this;this.cloneTableStyle&&window.getComputedStyle&&(t=this.table.element.querySelector(".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)"),n=this.table.element.querySelector(".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)"),o=this.table.element.querySelector(".tabulator-row.tabulator-calcs"),r=this.table.element.querySelector(".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)"),a=this.table.element.getElementsByClassName("tabulator-group")[0],r&&(l=r.getElementsByClassName("tabulator-cell"),i=l[0],l[l.length-1]));var d=document.createElement("tbody"),p=e?this.table.rowManager.getVisibleRows(!0):this.table.rowManager.getDisplayRows(),h=[];return this.table.columnManager.columnsByIndex.forEach(function(e){c.columnVisCheck(e)&&h.push(e)}),(p=p.filter(function(e){switch(e.type){case"group":return!1!==c.config.rowGroups;case"calc":return!1!==c.config.columnCalcs}return!0})).length>1e3&&console.warn("It may take a long time to render an HTML table with more than 1000 rows"),p.forEach(function(e,r){var l=e.getData(),p=document.createElement("tr");switch(p.classList.add("tabulator-print-table-row"),e.type){case"group":var f=document.createElement("td");f.colSpan=h.length,f.innerHTML=e.key,p.classList.add("tabulator-print-table-group"),c.mapElementStyles(a,p,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),c.mapElementStyles(a,f,["padding-top","padding-left","padding-right","padding-bottom"]),p.appendChild(f);break;case"calc":p.classList.add("tabulator-print-table-calcs");case"row":h.forEach(function(e){var t=document.createElement("td"),n=e.getFieldValue(l),o={getValue:function(){return n},getField:function(){return e.definition.field},getElement:function(){return t},getColumn:function(){return e.getComponent()},getRow:function(){return{normalizeHeight:function(){}}},getComponent:function(){return o},column:e};if(c.table.modExists("format"))n=c.table.modules.format.formatValue(o);else switch(void 0===n?"undefined":s(n)){case"object":n=JSON.stringify(n);break;case"undefined":case"null":n="";break;default:n=n}n instanceof Node?t.appendChild(n):t.innerHTML=n,i&&c.mapElementStyles(i,t,["padding-top","padding-left","padding-right","padding-bottom","border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","text-align"]),p.appendChild(t)}),u="calc"==e.type?o:r%2&&n?n:t,c.mapElementStyles(u,p,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"])}d.appendChild(p)}),d},_.prototype.columnVisCheck=function(e){return!1!==e.definition[this.colVisProp]&&(e.visible||!e.visible&&e.definition[this.colVisProp])},_.prototype.getHtml=function(e,t,n){var o=document.createElement("div");return o.appendChild(this.genereateTable(n||this.table.options.htmlOutputConfig,t,e,"htmlOutput")),o.innerHTML},_.prototype.mapElementStyles=function(e,t,n){if(this.cloneTableStyle&&e&&t){var o={"background-color":"backgroundColor",color:"fontColor",width:"width","font-weight":"fontWeight","font-family":"fontFamily","font-size":"fontSize","text-align":"textAlign","border-top":"borderTop","border-left":"borderLeft","border-right":"borderRight","border-bottom":"borderBottom","padding-top":"paddingTop","padding-left":"paddingLeft","padding-right":"paddingRight","padding-bottom":"paddingBottom"};if(window.getComputedStyle){var r=window.getComputedStyle(e);n.forEach(function(e){t.style[o[e]]=r.getPropertyValue(e)})}}},d.prototype.registerModule("htmlTableExport",_);var L=function(e){this.table=e,this.watchKeys=null,this.pressedKeys=null,this.keyupBinding=!1,this.keydownBinding=!1};L.prototype.initialize=function(){var e=this.table.options.keybindings,t={};if(this.watchKeys={},this.pressedKeys=[],!1!==e){for(var n in this.bindings)t[n]=this.bindings[n];if(Object.keys(e).length)for(var o in e)t[o]=e[o];this.mapBindings(t),this.bindEvents()}},L.prototype.mapBindings=function(e){var t=this,n=this,o=function(o){t.actions[o]?e[o]&&("object"!==s(e[o])&&(e[o]=[e[o]]),e[o].forEach(function(e){n.mapBinding(o,e)})):console.warn("Key Binding Error - no such action:",o)};for(var r in e)o(r)},L.prototype.mapBinding=function(e,t){var n=this,o={action:this.actions[e],keys:[],ctrl:!1,shift:!1};t.toString().toLowerCase().split(" ").join("").split("+").forEach(function(e){switch(e){case"ctrl":o.ctrl=!0;break;case"shift":o.shift=!0;break;default:e=parseInt(e),o.keys.push(e),n.watchKeys[e]||(n.watchKeys[e]=[]),n.watchKeys[e].push(o)}})},L.prototype.bindEvents=function(){var e=this;this.keyupBinding=function(t){var n=t.keyCode,o=e.watchKeys[n];o&&(e.pressedKeys.push(n),o.forEach(function(n){e.checkBinding(t,n)}))},this.keydownBinding=function(t){var n=t.keyCode;if(e.watchKeys[n]){var o=e.pressedKeys.indexOf(n);o>-1&&e.pressedKeys.splice(o,1)}},this.table.element.addEventListener("keydown",this.keyupBinding),this.table.element.addEventListener("keyup",this.keydownBinding)},L.prototype.clearBindings=function(){this.keyupBinding&&this.table.element.removeEventListener("keydown",this.keyupBinding),this.keydownBinding&&this.table.element.removeEventListener("keyup",this.keydownBinding)},L.prototype.checkBinding=function(e,t){var n=this,o=!0;return e.ctrlKey==t.ctrl&&e.shiftKey==t.shift&&(t.keys.forEach(function(e){-1==n.pressedKeys.indexOf(e)&&(o=!1)}),o&&t.action.call(n,e),!0)},L.prototype.bindings={navPrev:"shift + 9",navNext:9,navUp:38,navDown:40,scrollPageUp:33,scrollPageDown:34,scrollToStart:36,scrollToEnd:35,undo:"ctrl + 90",redo:"ctrl + 89",copyToClipboard:"ctrl + 67"},L.prototype.actions={keyBlock:function(e){e.stopPropagation(),e.preventDefault()},scrollPageUp:function(e){var t=this.table.rowManager,n=t.scrollTop-t.height;t.element.scrollHeight;e.preventDefault(),t.displayRowsCount&&(n>=0?t.element.scrollTop=n:t.scrollToRow(t.getDisplayRows()[0])),this.table.element.focus()},scrollPageDown:function(e){var t=this.table.rowManager,n=t.scrollTop+t.height,o=t.element.scrollHeight;e.preventDefault(),t.displayRowsCount&&(n<=o?t.element.scrollTop=n:t.scrollToRow(t.getDisplayRows()[t.displayRowsCount-1])),this.table.element.focus()},scrollToStart:function(e){var t=this.table.rowManager;e.preventDefault(),t.displayRowsCount&&t.scrollToRow(t.getDisplayRows()[0]),this.table.element.focus()},scrollToEnd:function(e){var t=this.table.rowManager;e.preventDefault(),t.displayRowsCount&&t.scrollToRow(t.getDisplayRows()[t.displayRowsCount-1]),this.table.element.focus()},navPrev:function(e){var t=!1;this.table.modExists("edit")&&(t=this.table.modules.edit.currentCell)&&(e.preventDefault(),t.nav().prev())},navNext:function(e){var t=!1;this.table.modExists("edit")&&(t=this.table.modules.edit.currentCell)&&(e.preventDefault(),t.nav().next())},navLeft:function(e){var t=!1;this.table.modExists("edit")&&(t=this.table.modules.edit.currentCell)&&(e.preventDefault(),t.nav().left())},navRight:function(e){var t=!1;this.table.modExists("edit")&&(t=this.table.modules.edit.currentCell)&&(e.preventDefault(),t.nav().right())},navUp:function(e){var t=!1;this.table.modExists("edit")&&(t=this.table.modules.edit.currentCell)&&(e.preventDefault(),t.nav().up())},navDown:function(e){var t=!1;this.table.modExists("edit")&&(t=this.table.modules.edit.currentCell)&&(e.preventDefault(),t.nav().down())},undo:function(e){this.table.options.history&&this.table.modExists("history")&&this.table.modExists("edit")&&(this.table.modules.edit.currentCell||(e.preventDefault(),this.table.modules.history.undo()))},redo:function(e){this.table.options.history&&this.table.modExists("history")&&this.table.modExists("edit")&&(this.table.modules.edit.currentCell||(e.preventDefault(),this.table.modules.history.redo()))},copyToClipboard:function(e){this.table.modules.edit.currentCell||this.table.modExists("clipboard",!0)&&this.table.modules.clipboard.copy(this.table.options.selectable&&"highlight"!=this.table.options.selectable?"selected":"active",null,null,null,!0)}},d.prototype.registerModule("keybindings",L);var O=function(e){this.table=e,this.placeholderElement=this.createPlaceholderElement(),this.hoverElement=!1,this.checkTimeout=!1,this.checkPeriod=250,this.moving=!1,this.toCol=!1,this.toColAfter=!1,this.startX=0,this.autoScrollMargin=40,this.autoScrollStep=5,this.autoScrollTimeout=!1,this.touchMove=!1,this.moveHover=this.moveHover.bind(this),this.endMove=this.endMove.bind(this)};O.prototype.createPlaceholderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-col"),e.classList.add("tabulator-col-placeholder"),e},O.prototype.initializeColumn=function(e){var t,n=this,o={};e.modules.frozen||(t=e.getElement(),o.mousemove=function(o){e.parent===n.moving.parent&&((n.touchMove?o.touches[0].pageX:o.pageX)-d.prototype.helpers.elOffset(t).left+n.table.columnManager.element.scrollLeft>e.getWidth()/2?n.toCol===e&&n.toColAfter||(t.parentNode.insertBefore(n.placeholderElement,t.nextSibling),n.moveColumn(e,!0)):(n.toCol!==e||n.toColAfter)&&(t.parentNode.insertBefore(n.placeholderElement,t),n.moveColumn(e,!1)))}.bind(n),t.addEventListener("mousedown",function(t){n.touchMove=!1,1===t.which&&(n.checkTimeout=setTimeout(function(){n.startMove(t,e)},n.checkPeriod))}),t.addEventListener("mouseup",function(e){1===e.which&&n.checkTimeout&&clearTimeout(n.checkTimeout)}),n.bindTouchEvents(e)),e.modules.moveColumn=o},O.prototype.bindTouchEvents=function(e){var t,n,o,r,i,a,s=this,l=e.getElement(),u=!1;l.addEventListener("touchstart",function(l){s.checkTimeout=setTimeout(function(){s.touchMove=!0,e,t=e.nextColumn(),o=t?t.getWidth()/2:0,n=e.prevColumn(),r=n?n.getWidth()/2:0,i=0,a=0,u=!1,s.startMove(l,e)},s.checkPeriod)},{passive:!0}),l.addEventListener("touchmove",function(l){var c,d;s.moving&&(s.moveHover(l),u||(u=l.touches[0].pageX),(c=l.touches[0].pageX-u)>0?t&&c-i>o&&(d=t)!==e&&(u=l.touches[0].pageX,d.getElement().parentNode.insertBefore(s.placeholderElement,d.getElement().nextSibling),s.moveColumn(d,!0)):n&&-c-a>r&&(d=n)!==e&&(u=l.touches[0].pageX,d.getElement().parentNode.insertBefore(s.placeholderElement,d.getElement()),s.moveColumn(d,!1)),d&&(d,t=d.nextColumn(),i=o,o=t?t.getWidth()/2:0,n=d.prevColumn(),a=r,r=n?n.getWidth()/2:0))},{passive:!0}),l.addEventListener("touchend",function(e){s.checkTimeout&&clearTimeout(s.checkTimeout),s.moving&&s.endMove(e)})},O.prototype.startMove=function(e,t){var n=t.getElement();this.moving=t,this.startX=(this.touchMove?e.touches[0].pageX:e.pageX)-d.prototype.helpers.elOffset(n).left,this.table.element.classList.add("tabulator-block-select"),this.placeholderElement.style.width=t.getWidth()+"px",this.placeholderElement.style.height=t.getHeight()+"px",n.parentNode.insertBefore(this.placeholderElement,n),n.parentNode.removeChild(n),this.hoverElement=n.cloneNode(!0),this.hoverElement.classList.add("tabulator-moving"),this.table.columnManager.getElement().appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.bottom="0",this.touchMove||(this._bindMouseMove(),document.body.addEventListener("mousemove",this.moveHover),document.body.addEventListener("mouseup",this.endMove)),this.moveHover(e)},O.prototype._bindMouseMove=function(){this.table.columnManager.columnsByIndex.forEach(function(e){e.modules.moveColumn.mousemove&&e.getElement().addEventListener("mousemove",e.modules.moveColumn.mousemove)})},O.prototype._unbindMouseMove=function(){this.table.columnManager.columnsByIndex.forEach(function(e){e.modules.moveColumn.mousemove&&e.getElement().removeEventListener("mousemove",e.modules.moveColumn.mousemove)})},O.prototype.moveColumn=function(e,t){var n=this.moving.getCells();this.toCol=e,this.toColAfter=t,t?e.getCells().forEach(function(e,t){var o=e.getElement();o.parentNode.insertBefore(n[t].getElement(),o.nextSibling)}):e.getCells().forEach(function(e,t){var o=e.getElement();o.parentNode.insertBefore(n[t].getElement(),o)})},O.prototype.endMove=function(e){(1===e.which||this.touchMove)&&(this._unbindMouseMove(),this.placeholderElement.parentNode.insertBefore(this.moving.getElement(),this.placeholderElement.nextSibling),this.placeholderElement.parentNode.removeChild(this.placeholderElement),this.hoverElement.parentNode.removeChild(this.hoverElement),this.table.element.classList.remove("tabulator-block-select"),this.toCol&&this.table.columnManager.moveColumn(this.moving,this.toCol,this.toColAfter),this.moving=!1,this.toCol=!1,this.toColAfter=!1,this.touchMove||(document.body.removeEventListener("mousemove",this.moveHover),document.body.removeEventListener("mouseup",this.endMove)))},O.prototype.moveHover=function(e){var t,n=this,o=n.table.columnManager.getElement(),r=o.scrollLeft,i=(n.touchMove?e.touches[0].pageX:e.pageX)-d.prototype.helpers.elOffset(o).left+r;n.hoverElement.style.left=i-n.startX+"px",i-r<n.autoScrollMargin&&(n.autoScrollTimeout||(n.autoScrollTimeout=setTimeout(function(){t=Math.max(0,r-5),n.table.rowManager.getElement().scrollLeft=t,n.autoScrollTimeout=!1},1))),r+o.clientWidth-i<n.autoScrollMargin&&(n.autoScrollTimeout||(n.autoScrollTimeout=setTimeout(function(){t=Math.min(o.clientWidth,r+5),n.table.rowManager.getElement().scrollLeft=t,n.autoScrollTimeout=!1},1)))},d.prototype.registerModule("moveColumn",O);var N=function(e){this.table=e,this.placeholderElement=this.createPlaceholderElement(),this.hoverElement=!1,this.checkTimeout=!1,this.checkPeriod=150,this.moving=!1,this.toRow=!1,this.toRowAfter=!1,this.hasHandle=!1,this.startY=0,this.startX=0,this.moveHover=this.moveHover.bind(this),this.endMove=this.endMove.bind(this),this.tableRowDropEvent=!1,this.touchMove=!1,this.connection=!1,this.connections=[],this.connectedTable=!1,this.connectedRow=!1};N.prototype.createPlaceholderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-row"),e.classList.add("tabulator-row-placeholder"),e},N.prototype.initialize=function(e){this.connection=this.table.options.movableRowsConnectedTables},N.prototype.setHandle=function(e){this.hasHandle=e},N.prototype.initializeGroupHeader=function(e){var t=this,n={};n.mouseup=function(e){t.tableRowDrop(e,row)}.bind(t),n.mousemove=function(n){var o;n.pageY-d.prototype.helpers.elOffset(e.element).top+t.table.rowManager.element.scrollTop>e.getHeight()/2?t.toRow===e&&t.toRowAfter||((o=e.getElement()).parentNode.insertBefore(t.placeholderElement,o.nextSibling),t.moveRow(e,!0)):(t.toRow!==e||t.toRowAfter)&&(o=e.getElement()).previousSibling&&(o.parentNode.insertBefore(t.placeholderElement,o),t.moveRow(e,!1))}.bind(t),e.modules.moveRow=n},N.prototype.initializeRow=function(e){var t,n=this,o={};o.mouseup=function(t){n.tableRowDrop(t,e)}.bind(n),o.mousemove=function(t){var o;t.pageY-d.prototype.helpers.elOffset(e.element).top+n.table.rowManager.element.scrollTop>e.getHeight()/2?n.toRow===e&&n.toRowAfter||((o=e.getElement()).parentNode.insertBefore(n.placeholderElement,o.nextSibling),n.moveRow(e,!0)):(n.toRow!==e||n.toRowAfter)&&((o=e.getElement()).parentNode.insertBefore(n.placeholderElement,o),n.moveRow(e,!1))}.bind(n),this.hasHandle||((t=e.getElement()).addEventListener("mousedown",function(t){1===t.which&&(n.checkTimeout=setTimeout(function(){n.startMove(t,e)},n.checkPeriod))}),t.addEventListener("mouseup",function(e){1===e.which&&n.checkTimeout&&clearTimeout(n.checkTimeout)}),this.bindTouchEvents(e,e.getElement())),e.modules.moveRow=o},N.prototype.initializeCell=function(e){var t=this,n=e.getElement();n.addEventListener("mousedown",function(n){1===n.which&&(t.checkTimeout=setTimeout(function(){t.startMove(n,e.row)},t.checkPeriod))}),n.addEventListener("mouseup",function(e){1===e.which&&t.checkTimeout&&clearTimeout(t.checkTimeout)}),this.bindTouchEvents(e.row,e.getElement())},N.prototype.bindTouchEvents=function(e,t){var n,o,r,i,a,s,l=this,u=!1;t.addEventListener("touchstart",function(t){l.checkTimeout=setTimeout(function(){l.touchMove=!0,e,n=e.nextRow(),r=n?n.getHeight()/2:0,o=e.prevRow(),i=o?o.getHeight()/2:0,a=0,s=0,u=!1,l.startMove(t,e)},l.checkPeriod)},{passive:!0}),this.moving,this.toRow,this.toRowAfter,t.addEventListener("touchmove",function(t){var c,d;l.moving&&(t.preventDefault(),l.moveHover(t),u||(u=t.touches[0].pageY),(c=t.touches[0].pageY-u)>0?n&&c-a>r&&(d=n)!==e&&(u=t.touches[0].pageY,d.getElement().parentNode.insertBefore(l.placeholderElement,d.getElement().nextSibling),l.moveRow(d,!0)):o&&-c-s>i&&(d=o)!==e&&(u=t.touches[0].pageY,d.getElement().parentNode.insertBefore(l.placeholderElement,d.getElement()),l.moveRow(d,!1)),d&&(d,n=d.nextRow(),a=r,r=n?n.getHeight()/2:0,o=d.prevRow(),s=i,i=o?o.getHeight()/2:0))}),t.addEventListener("touchend",function(e){l.checkTimeout&&clearTimeout(l.checkTimeout),l.moving&&(l.endMove(e),l.touchMove=!1)})},N.prototype._bindMouseMove=function(){this.table.rowManager.getDisplayRows().forEach(function(e){"row"!==e.type&&"group"!==e.type||!e.modules.moveRow.mousemove||e.getElement().addEventListener("mousemove",e.modules.moveRow.mousemove)})},N.prototype._unbindMouseMove=function(){this.table.rowManager.getDisplayRows().forEach(function(e){"row"!==e.type&&"group"!==e.type||!e.modules.moveRow.mousemove||e.getElement().removeEventListener("mousemove",e.modules.moveRow.mousemove)})},N.prototype.startMove=function(e,t){var n=t.getElement();this.setStartPosition(e,t),this.moving=t,this.table.element.classList.add("tabulator-block-select"),this.placeholderElement.style.width=t.getWidth()+"px",this.placeholderElement.style.height=t.getHeight()+"px",this.connection?(this.table.element.classList.add("tabulator-movingrow-sending"),this.connectToTables(t)):(n.parentNode.insertBefore(this.placeholderElement,n),n.parentNode.removeChild(n)),this.hoverElement=n.cloneNode(!0),this.hoverElement.classList.add("tabulator-moving"),this.connection?(document.body.appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.top="0",this.hoverElement.style.width=this.table.element.clientWidth+"px",this.hoverElement.style.whiteSpace="nowrap",this.hoverElement.style.overflow="hidden",this.hoverElement.style.pointerEvents="none"):(this.table.rowManager.getTableElement().appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.top="0",this._bindMouseMove()),document.body.addEventListener("mousemove",this.moveHover),document.body.addEventListener("mouseup",this.endMove),this.moveHover(e)},N.prototype.setStartPosition=function(e,t){var n,o,r=this.touchMove?e.touches[0].pageX:e.pageX,i=this.touchMove?e.touches[0].pageY:e.pageY;n=t.getElement(),this.connection?(o=n.getBoundingClientRect(),this.startX=o.left-r+window.pageXOffset,this.startY=o.top-i+window.pageYOffset):this.startY=i-n.getBoundingClientRect().top},N.prototype.endMove=function(e){e&&1!==e.which&&!this.touchMove||(this._unbindMouseMove(),this.connection||(this.placeholderElement.parentNode.insertBefore(this.moving.getElement(),this.placeholderElement.nextSibling),this.placeholderElement.parentNode.removeChild(this.placeholderElement)),this.hoverElement.parentNode.removeChild(this.hoverElement),this.table.element.classList.remove("tabulator-block-select"),this.toRow&&this.table.rowManager.moveRow(this.moving,this.toRow,this.toRowAfter),this.moving=!1,this.toRow=!1,this.toRowAfter=!1,document.body.removeEventListener("mousemove",this.moveHover),document.body.removeEventListener("mouseup",this.endMove),this.connection&&(this.table.element.classList.remove("tabulator-movingrow-sending"),this.disconnectFromTables()))},N.prototype.moveRow=function(e,t){this.toRow=e,this.toRowAfter=t},N.prototype.moveHover=function(e){this.connection?this.moveHoverConnections.call(this,e):this.moveHoverTable.call(this,e)},N.prototype.moveHoverTable=function(e){var t=this.table.rowManager.getElement(),n=t.scrollTop,o=(this.touchMove?e.touches[0].pageY:e.pageY)-t.getBoundingClientRect().top+n;this.hoverElement.style.top=o-this.startY+"px"},N.prototype.moveHoverConnections=function(e){this.hoverElement.style.left=this.startX+(this.touchMove?e.touches[0].pageX:e.pageX)+"px",this.hoverElement.style.top=this.startY+(this.touchMove?e.touches[0].pageY:e.pageY)+"px"},N.prototype.connectToTables=function(e){var t=this.table.modules.comms.getConnections(this.connection);this.table.options.movableRowsSendingStart.call(this.table,t),this.table.modules.comms.send(this.connection,"moveRow","connect",{row:e})},N.prototype.disconnectFromTables=function(){var e=this.table.modules.comms.getConnections(this.connection);this.table.options.movableRowsSendingStop.call(this.table,e),this.table.modules.comms.send(this.connection,"moveRow","disconnect")},N.prototype.connect=function(e,t){return this.connectedTable?(console.warn("Move Row Error - Table cannot accept connection, already connected to table:",this.connectedTable),!1):(this.connectedTable=e,this.connectedRow=t,this.table.element.classList.add("tabulator-movingrow-receiving"),this.table.rowManager.getDisplayRows().forEach(function(e){"row"===e.type&&e.modules.moveRow&&e.modules.moveRow.mouseup&&e.getElement().addEventListener("mouseup",e.modules.moveRow.mouseup)}),this.tableRowDropEvent=this.tableRowDrop.bind(this),this.table.element.addEventListener("mouseup",this.tableRowDropEvent),this.table.options.movableRowsReceivingStart.call(this.table,t,e),!0)},N.prototype.disconnect=function(e){e===this.connectedTable?(this.connectedTable=!1,this.connectedRow=!1,this.table.element.classList.remove("tabulator-movingrow-receiving"),this.table.rowManager.getDisplayRows().forEach(function(e){"row"===e.type&&e.modules.moveRow&&e.modules.moveRow.mouseup&&e.getElement().removeEventListener("mouseup",e.modules.moveRow.mouseup)}),this.table.element.removeEventListener("mouseup",this.tableRowDropEvent),this.table.options.movableRowsReceivingStop.call(this.table,e)):console.warn("Move Row Error - trying to disconnect from non connected table")},N.prototype.dropComplete=function(e,t,n){var o=!1;if(n){switch(s(this.table.options.movableRowsSender)){case"string":o=this.senders[this.table.options.movableRowsSender];break;case"function":o=this.table.options.movableRowsSender}o?o.call(this,this.moving.getComponent(),t?t.getComponent():void 0,e):this.table.options.movableRowsSender&&console.warn("Mover Row Error - no matching sender found:",this.table.options.movableRowsSender),this.table.options.movableRowsSent.call(this.table,this.moving.getComponent(),t?t.getComponent():void 0,e)}else this.table.options.movableRowsSentFailed.call(this.table,this.moving.getComponent(),t?t.getComponent():void 0,e);this.endMove()},N.prototype.tableRowDrop=function(e,t){var n=!1,o=!1;switch(e.stopImmediatePropagation(),s(this.table.options.movableRowsReceiver)){case"string":n=this.receivers[this.table.options.movableRowsReceiver];break;case"function":n=this.table.options.movableRowsReceiver}n?o=n.call(this,this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable):console.warn("Mover Row Error - no matching receiver found:",this.table.options.movableRowsReceiver),o?this.table.options.movableRowsReceived.call(this.table,this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable):this.table.options.movableRowsReceivedFailed.call(this.table,this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable),this.table.modules.comms.send(this.connectedTable,"moveRow","dropcomplete",{row:t,success:o})},N.prototype.receivers={insert:function(e,t,n){return this.table.addRow(e.getData(),void 0,t),!0},add:function(e,t,n){return this.table.addRow(e.getData()),!0},update:function(e,t,n){return!!t&&(t.update(e.getData()),!0)},replace:function(e,t,n){return!!t&&(this.table.addRow(e.getData(),void 0,t),t.delete(),!0)}},N.prototype.senders={delete:function(e,t,n){e.delete()}},N.prototype.commsReceived=function(e,t,n){switch(t){case"connect":return this.connect(e,n.row);case"disconnect":return this.disconnect(e);case"dropcomplete":return this.dropComplete(e,n.row,n.success)}},d.prototype.registerModule("moveRow",N);var F=function(e){this.table=e,this.allowedTypes=["","data","edit","clipboard"],this.enabled=!0};F.prototype.initializeColumn=function(e){var t=this,n=!1,o={};this.allowedTypes.forEach(function(r){var i,a="mutator"+(r.charAt(0).toUpperCase()+r.slice(1));e.definition[a]&&(i=t.lookupMutator(e.definition[a]))&&(n=!0,o[a]={mutator:i,params:e.definition[a+"Params"]||{}})}),n&&(e.modules.mutate=o)},F.prototype.lookupMutator=function(e){var t=!1;switch(void 0===e?"undefined":s(e)){case"string":this.mutators[e]?t=this.mutators[e]:console.warn("Mutator Error - No such mutator found, ignoring: ",e);break;case"function":t=e}return t},F.prototype.transformRow=function(e,t,n){var o,r="mutator"+(t.charAt(0).toUpperCase()+t.slice(1));return this.enabled&&this.table.columnManager.traverse(function(i){var a,s,l;i.modules.mutate&&(a=i.modules.mutate[r]||i.modules.mutate.mutator||!1)&&(o=i.getFieldValue(e),(!n||n&&void 0!==o)&&(l=i.getComponent(),s="function"==typeof a.params?a.params(o,e,t,l):a.params,i.setFieldValue(e,a.mutator(o,e,t,s,l))))}),e},F.prototype.transformCell=function(e,t){var n=e.column.modules.mutate.mutatorEdit||e.column.modules.mutate.mutator||!1;return n?n.mutator(t,e.row.getData(),"edit",n.params,e.getComponent()):t},F.prototype.enable=function(){this.enabled=!0},F.prototype.disable=function(){this.enabled=!1},F.prototype.mutators={},d.prototype.registerModule("mutator",F);var A=function(e){this.table=e,this.mode="local",this.progressiveLoad=!1,this.size=0,this.page=1,this.count=5,this.max=1,this.displayIndex=0,this.pageSizes=[],this.createElements()};A.prototype.createElements=function(){var e;this.element=document.createElement("span"),this.element.classList.add("tabulator-paginator"),this.pagesElement=document.createElement("span"),this.pagesElement.classList.add("tabulator-pages"),(e=document.createElement("button")).classList.add("tabulator-page"),e.setAttribute("type","button"),e.setAttribute("role","button"),e.setAttribute("aria-label",""),e.setAttribute("title",""),this.firstBut=e.cloneNode(!0),this.firstBut.setAttribute("data-page","first"),this.prevBut=e.cloneNode(!0),this.prevBut.setAttribute("data-page","prev"),this.nextBut=e.cloneNode(!0),this.nextBut.setAttribute("data-page","next"),this.lastBut=e.cloneNode(!0),this.lastBut.setAttribute("data-page","last"),this.table.options.paginationSizeSelector&&(this.pageSizeSelect=document.createElement("select"),this.pageSizeSelect.classList.add("tabulator-page-size"))},A.prototype.generatePageSizeSelectList=function(){var e=this,t=[];if(this.pageSizeSelect){if(Array.isArray(this.table.options.paginationSizeSelector))t=this.table.options.paginationSizeSelector,this.pageSizes=t,-1==this.pageSizes.indexOf(this.size)&&t.unshift(this.size);else if(-1==this.pageSizes.indexOf(this.size)){t=[];for(var n=1;n<5;n++)t.push(this.size*n);this.pageSizes=t}else t=this.pageSizes;for(;this.pageSizeSelect.firstChild;)this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);t.forEach(function(t){var n=document.createElement("option");n.value=t,n.innerHTML=t,e.pageSizeSelect.appendChild(n)}),this.pageSizeSelect.value=this.size}},A.prototype.initialize=function(e){var t,n=this;for(var o in n.table.options.paginationDataSent)n.paginationDataSentNames[o]=n.table.options.paginationDataSent[o];for(var r in n.table.options.paginationDataReceived)n.paginationDataReceivedNames[r]=n.table.options.paginationDataReceived[r];n.table.modules.localize.bind("pagination|first",function(e){n.firstBut.innerHTML=e}),n.table.modules.localize.bind("pagination|first_title",function(e){n.firstBut.setAttribute("aria-label",e),n.firstBut.setAttribute("title",e)}),n.table.modules.localize.bind("pagination|prev",function(e){n.prevBut.innerHTML=e}),n.table.modules.localize.bind("pagination|prev_title",function(e){n.prevBut.setAttribute("aria-label",e),n.prevBut.setAttribute("title",e)}),n.table.modules.localize.bind("pagination|next",function(e){n.nextBut.innerHTML=e}),n.table.modules.localize.bind("pagination|next_title",function(e){n.nextBut.setAttribute("aria-label",e),n.nextBut.setAttribute("title",e)}),n.table.modules.localize.bind("pagination|last",function(e){n.lastBut.innerHTML=e}),n.table.modules.localize.bind("pagination|last_title",function(e){n.lastBut.setAttribute("aria-label",e),n.lastBut.setAttribute("title",e)}),n.firstBut.addEventListener("click",function(){n.setPage(1)}),n.prevBut.addEventListener("click",function(){n.previousPage()}),n.nextBut.addEventListener("click",function(){n.nextPage().then(function(){}).catch(function(){})}),n.lastBut.addEventListener("click",function(){n.setPage(n.max)}),n.table.options.paginationElement&&(n.element=n.table.options.paginationElement),this.pageSizeSelect&&(t=document.createElement("label"),n.table.modules.localize.bind("pagination|page_size",function(e){n.pageSizeSelect.setAttribute("aria-label",e),n.pageSizeSelect.setAttribute("title",e),t.innerHTML=e}),n.element.appendChild(t),n.element.appendChild(n.pageSizeSelect),n.pageSizeSelect.addEventListener("change",function(e){n.setPageSize(n.pageSizeSelect.value),n.setPage(1).then(function(){}).catch(function(){})})),n.element.appendChild(n.firstBut),n.element.appendChild(n.prevBut),n.element.appendChild(n.pagesElement),n.element.appendChild(n.nextBut),n.element.appendChild(n.lastBut),n.table.options.paginationElement||e||n.table.footerManager.append(n.element,n),n.mode=n.table.options.pagination,n.size=n.table.options.paginationSize||Math.floor(n.table.rowManager.getElement().clientHeight/24),n.count=n.table.options.paginationButtonCount,n.generatePageSizeSelectList()},A.prototype.initializeProgressive=function(e){this.initialize(!0),this.mode="progressive_"+e,this.progressiveLoad=!0},A.prototype.setDisplayIndex=function(e){this.displayIndex=e},A.prototype.getDisplayIndex=function(){return this.displayIndex},A.prototype.setMaxRows=function(e){this.max=e?Math.ceil(e/this.size):1,this.page>this.max&&(this.page=this.max)},A.prototype.reset=function(e){return("local"==this.mode||e)&&(this.page=1),!0},A.prototype.setMaxPage=function(e){e=parseInt(e),this.max=e||1,this.page>this.max&&(this.page=this.max,this.trigger())},A.prototype.setPage=function(e){var t=this;return new Promise(function(n,o){(e=parseInt(e))>0&&e<=t.max?(t.page=e,t.trigger().then(function(){n()}).catch(function(){o()})):(console.warn("Pagination Error - Requested page is out of range of 1 - "+t.max+":",e),o())})},A.prototype.setPageToRow=function(e){var t=this;return new Promise(function(n,o){var r=t.table.rowManager.getDisplayRows(t.displayIndex-1).indexOf(e);if(r>-1){var i=Math.ceil((r+1)/t.size);t.setPage(i).then(function(){n()}).catch(function(){o()})}else console.warn("Pagination Error - Requested row is not visible"),o()})},A.prototype.setPageSize=function(e){(e=parseInt(e))>0&&(this.size=e),this.pageSizeSelect&&this.generatePageSizeSelectList()},A.prototype._setPageButtons=function(){for(var e=Math.floor((this.count-1)/2),t=Math.ceil((this.count-1)/2),n=this.max-this.page+e+1<this.count?this.max-this.count+1:Math.max(this.page-e,1),o=this.page<=t?Math.min(this.count,this.max):Math.min(this.page+t,this.max);this.pagesElement.firstChild;)this.pagesElement.removeChild(this.pagesElement.firstChild);1==this.page?(this.firstBut.disabled=!0,this.prevBut.disabled=!0):(this.firstBut.disabled=!1,this.prevBut.disabled=!1),this.page==this.max?(this.lastBut.disabled=!0,this.nextBut.disabled=!0):(this.lastBut.disabled=!1,this.nextBut.disabled=!1);for(var r=n;r<=o;r++)r>0&&r<=this.max&&this.pagesElement.appendChild(this._generatePageButton(r));this.footerRedraw()},A.prototype._generatePageButton=function(e){var t=this,n=document.createElement("button");return n.classList.add("tabulator-page"),e==t.page&&n.classList.add("active"),n.setAttribute("type","button"),n.setAttribute("role","button"),n.setAttribute("aria-label","Show Page "+e),n.setAttribute("title","Show Page "+e),n.setAttribute("data-page",e),n.textContent=e,n.addEventListener("click",function(n){t.setPage(e)}),n},A.prototype.previousPage=function(){var e=this;return new Promise(function(t,n){e.page>1?(e.page--,e.trigger().then(function(){t()}).catch(function(){n()})):(console.warn("Pagination Error - Previous page would be less than page 1:",0),n())})},A.prototype.nextPage=function(){var e=this;return new Promise(function(t,n){e.page<e.max?(e.page++,e.trigger().then(function(){t()}).catch(function(){n()})):(e.progressiveLoad||console.warn("Pagination Error - Next page would be greater than maximum page of "+e.max+":",e.max+1),n())})},A.prototype.getPage=function(){return this.page},A.prototype.getPageMax=function(){return this.max},A.prototype.getPageSize=function(e){return this.size},A.prototype.getMode=function(){return this.mode},A.prototype.getRows=function(e){var t,n,o;if("local"==this.mode){t=[],o=(n=this.size*(this.page-1))+parseInt(this.size),this._setPageButtons();for(var r=n;r<o;r++)e[r]&&t.push(e[r]);return t}return this._setPageButtons(),e.slice(0)},A.prototype.trigger=function(){var e,t=this;return new Promise(function(n,o){switch(t.mode){case"local":e=t.table.rowManager.scrollLeft,t.table.rowManager.refreshActiveData("page"),t.table.rowManager.scrollHorizontal(e),t.table.options.pageLoaded.call(t.table,t.getPage()),n();break;case"remote":case"progressive_load":case"progressive_scroll":t.table.modules.ajax.blockActiveRequest(),t._getRemotePage().then(function(){n()}).catch(function(){o()});break;default:console.warn("Pagination Error - no such pagination mode:",t.mode),o()}})},A.prototype._getRemotePage=function(){var e,t,n=this,o=this;return new Promise(function(r,i){if(o.table.modExists("ajax",!0)||i(),e=d.prototype.helpers.deepClone(o.table.modules.ajax.getParams()||{}),(t=o.table.modules.ajax.getParams())[n.paginationDataSentNames.page]=o.page,n.size&&(t[n.paginationDataSentNames.size]=n.size),n.table.options.ajaxSorting&&n.table.modExists("sort")){var a=o.table.modules.sort.getSort();a.forEach(function(e){delete e.column}),t[n.paginationDataSentNames.sorters]=a}if(n.table.options.ajaxFiltering&&n.table.modExists("filter")){var s=o.table.modules.filter.getFilters(!0,!0);t[n.paginationDataSentNames.filters]=s}o.table.modules.ajax.setParams(t),o.table.modules.ajax.sendRequest(n.progressiveLoad).then(function(e){o._parseRemoteData(e),r()}).catch(function(e){i()}),o.table.modules.ajax.setParams(e)})},A.prototype._parseRemoteData=function(e){var t,n,o=this;if(void 0===e[this.paginationDataReceivedNames.last_page]&&console.warn("Remote Pagination Error - Server response missing '"+this.paginationDataReceivedNames.last_page+"' property"),e[this.paginationDataReceivedNames.data])if(this.max=parseInt(e[this.paginationDataReceivedNames.last_page])||1,this.progressiveLoad)switch(this.mode){case"progressive_load":this.table.rowManager.addRows(e[this.paginationDataReceivedNames.data]),this.page<this.max&&setTimeout(function(){o.nextPage().then(function(){}).catch(function(){})},o.table.options.ajaxProgressiveLoadDelay);break;case"progressive_scroll":e=this.table.rowManager.getData().concat(e[this.paginationDataReceivedNames.data]),this.table.rowManager.setData(e,!0),n=this.table.options.ajaxProgressiveLoadScrollMargin||2*this.table.rowManager.element.clientHeight,o.table.rowManager.element.scrollHeight<=o.table.rowManager.element.clientHeight+n&&o.nextPage().then(function(){}).catch(function(){})}else t=this.table.rowManager.scrollLeft,this.table.rowManager.setData(e[this.paginationDataReceivedNames.data]),this.table.rowManager.scrollHorizontal(t),this.table.columnManager.scrollHorizontal(t),this.table.options.pageLoaded.call(this.table,this.getPage());else console.warn("Remote Pagination Error - Server response missing '"+this.paginationDataReceivedNames.data+"' property")},A.prototype.footerRedraw=function(){var e=this.table.footerManager.element;Math.ceil(e.clientWidth)-e.scrollWidth<0?this.pagesElement.style.display="none":(this.pagesElement.style.display="",Math.ceil(e.clientWidth)-e.scrollWidth<0&&(this.pagesElement.style.display="none"))},A.prototype.paginationDataSentNames={page:"page",size:"size",sorters:"sorters",filters:"filters"},A.prototype.paginationDataReceivedNames={current_page:"current_page",last_page:"last_page",data:"data"},d.prototype.registerModule("page",A);var I=function(e){this.table=e,this.mode="",this.id="",this.persistProps=["field","width","visible"]};I.prototype.initialize=function(e,t){this.mode=!0!==e?e:void 0!==window.localStorage?"local":"cookie",this.id="tabulator-"+(t||this.table.element.getAttribute("id")||"")},I.prototype.load=function(e,t){var n=this.retreiveData(e);return t&&(n=n?this.mergeDefinition(t,n):t),n},I.prototype.retreiveData=function(e){var t="",n=this.id+("columns"===e?"":"-"+e);switch(this.mode){case"local":t=localStorage.getItem(n);break;case"cookie":var o=document.cookie,r=o.indexOf(n+"="),i=void 0;r>-1&&((i=(o=o.substr(r)).indexOf(";"))>-1&&(o=o.substr(0,i)),t=o.replace(n+"=",""));break;default:console.warn("Persistance Load Error - invalid mode selected",this.mode)}return!!t&&JSON.parse(t)},I.prototype.mergeDefinition=function(e,t){var n=this,o=[];return(t=t||[]).forEach(function(t,r){var i=n._findColumn(e,t);i&&(i.width=t.width,i.visible=t.visible,i.columns&&(i.columns=n.mergeDefinition(i.columns,t.columns)),o.push(i))}),e.forEach(function(e,r){n._findColumn(t,e)||(o.length>r?o.splice(r,0,e):o.push(e))}),o},I.prototype._findColumn=function(e,t){var n=t.columns?"group":t.field?"field":"object";return e.find(function(e){switch(n){case"group":return e.title===t.title&&e.columns.length===t.columns.length;case"field":return e.field===t.field;case"object":return e===t}})},I.prototype.save=function(e){var t={};switch(e){case"columns":t=this.parseColumns(this.table.columnManager.getColumns());break;case"filter":t=this.table.modules.filter.getFilters();break;case"sort":t=this.validateSorters(this.table.modules.sort.getSort())}var n=this.id+("columns"===e?"":"-"+e);this.saveData(n,t)},I.prototype.validateSorters=function(e){return e.forEach(function(e){e.column=e.field,delete e.field}),e},I.prototype.saveData=function(e,t){switch(t=JSON.stringify(t),this.mode){case"local":localStorage.setItem(e,t);break;case"cookie":var n=new Date;n.setDate(n.getDate()+1e4),document.cookie=e+"="+t+"; expires="+n.toUTCString();break;default:console.warn("Persistance Save Error - invalid mode selected",this.mode)}},I.prototype.parseColumns=function(e){var t=this,n=[];return e.forEach(function(e){var o={};e.isGroup?(o.title=e.getDefinition().title,o.columns=t.parseColumns(e.getColumns())):(o.title=e.getDefinition().title,o.field=e.getField(),o.width=e.getWidth(),o.visible=e.visible),n.push(o)}),n},d.prototype.registerModule("persistence",I);var H=function(e){this.table=e,this.element=!1,this.manualBlock=!1};H.prototype.initialize=function(){window.addEventListener("beforeprint",this.replaceTable.bind(this)),window.addEventListener("afterprint",this.cleanup.bind(this))},H.prototype.replaceTable=function(){this.manualBlock||(this.element=document.createElement("div"),this.element.classList.add("tabulator-print-table"),this.element.appendChild(this.table.modules.htmlTableExport.genereateTable(this.table.options.printConfig,this.table.options.printCopyStyle,this.table.options.printVisibleRows,"print")),this.table.element.style.display="none",this.table.element.parentNode.insertBefore(this.element,this.table.element))},H.prototype.cleanup=function(){document.body.classList.remove("tabulator-print-fullscreen-hide"),this.element&&this.element.parentNode&&(this.element.parentNode.removeChild(this.element),this.table.element.style.display="")},H.prototype.printFullscreen=function(e,t,n){var o,r,i=window.scrollX,a=window.scrollY,s=document.createElement("div"),l=document.createElement("div"),u=this.table.modules.htmlTableExport.genereateTable(void 0!==n?n:this.table.options.printConfig,void 0!==t?t:this.table.options.printCopyStyle,e,"print");this.manualBlock=!0,this.element=document.createElement("div"),this.element.classList.add("tabulator-print-fullscreen"),this.table.options.printHeader&&(s.classList.add("tabulator-print-header"),"string"==typeof(o="function"==typeof this.table.options.printHeader?this.table.options.printHeader.call(this.table):this.table.options.printHeader)?s.innerHTML=o:s.appendChild(o),this.element.appendChild(s)),this.element.appendChild(u),this.table.options.printFooter&&(l.classList.add("tabulator-print-footer"),"string"==typeof(r="function"==typeof this.table.options.printFooter?this.table.options.printFooter.call(this.table):this.table.options.printFooter)?l.innerHTML=r:l.appendChild(r),this.element.appendChild(l)),document.body.classList.add("tabulator-print-fullscreen-hide"),document.body.appendChild(this.element),this.table.options.printFormatter&&this.table.options.printFormatter(this.element,u),window.print(),this.cleanup(),window.scrollTo(i,a),this.manualBlock=!1},d.prototype.registerModule("print",H);var z=function(e){this.table=e,this.data=!1,this.blocked=!1,this.origFuncs={},this.currentVersion=0};z.prototype.watchData=function(e){var t,n=this;this.currentVersion++,t=this.currentVersion,n.unwatchData(),n.data=e,n.origFuncs.push=e.push,Object.defineProperty(n.data,"push",{enumerable:!1,configurable:!0,value:function(){var o=Array.from(arguments);return n.blocked||t!==n.currentVersion||o.forEach(function(e){n.table.rowManager.addRowActual(e,!1)}),n.origFuncs.push.apply(e,arguments)}}),n.origFuncs.unshift=e.unshift,Object.defineProperty(n.data,"unshift",{enumerable:!1,configurable:!0,value:function(){var o=Array.from(arguments);return n.blocked||t!==n.currentVersion||o.forEach(function(e){n.table.rowManager.addRowActual(e,!0)}),n.origFuncs.unshift.apply(e,arguments)}}),n.origFuncs.shift=e.shift,Object.defineProperty(n.data,"shift",{enumerable:!1,configurable:!0,value:function(){var o;return n.blocked||t!==n.currentVersion||n.data.length&&(o=n.table.rowManager.getRowFromDataObject(n.data[0]))&&o.deleteActual(),n.origFuncs.shift.call(e)}}),n.origFuncs.pop=e.pop,Object.defineProperty(n.data,"pop",{enumerable:!1,configurable:!0,value:function(){var o;return n.blocked||t!==n.currentVersion||n.data.length&&(o=n.table.rowManager.getRowFromDataObject(n.data[n.data.length-1]))&&o.deleteActual(),n.origFuncs.pop.call(e)}}),n.origFuncs.splice=e.splice,Object.defineProperty(n.data,"splice",{enumerable:!1,configurable:!0,value:function(){var o,r=Array.from(arguments),i=r[0]<0?e.length+r[0]:r[0],a=r[1],s=!!r[2]&&r.slice(2);if(!n.blocked&&t===n.currentVersion){if(s&&((o=!!e[i]&&n.table.rowManager.getRowFromDataObject(e[i]))?s.forEach(function(e){n.table.rowManager.addRowActual(e,!0,o,!0)}):(s=s.slice().reverse()).forEach(function(e){n.table.rowManager.addRowActual(e,!0,!1,!0)})),0!==a){var l=e.slice(i,void 0===r[1]?r[1]:i+a);l.forEach(function(e,t){var o=n.table.rowManager.getRowFromDataObject(e);o&&o.deleteActual(t!==l.length-1)})}(s||0!==a)&&n.table.rowManager.reRenderInPosition()}return n.origFuncs.splice.apply(e,arguments)}})},z.prototype.unwatchData=function(){if(!1!==this.data)for(var e in this.origFuncs)Object.defineProperty(this.data,e,{enumerable:!0,configurable:!0,writable:!0,value:this.origFuncs.key})},z.prototype.watchRow=function(e){var t=e.getData();for(var n in this.blocked=!0,t)this.watchKey(e,t,n);this.blocked=!1},z.prototype.watchKey=function(e,t,n){var o=this,r=Object.getOwnPropertyDescriptor(t,n),i=t[n],a=this.currentVersion;Object.defineProperty(t,n,{set:function(t){if(i=t,!o.blocked&&a===o.currentVersion){var s={};s[n]=t,e.updateData(s)}r.set&&r.set(t)},get:function(){return r.get&&r.get(),i}})},z.prototype.unwatchRow=function(e){var t=e.getData();for(var n in t)Object.defineProperty(t,n,{value:t[n]})},z.prototype.block=function(){this.blocked=!0},z.prototype.unblock=function(){this.blocked=!1},d.prototype.registerModule("reactiveData",z);var j=function(e){this.table=e,this.startColumn=!1,this.startX=!1,this.startWidth=!1,this.handle=null,this.prevHandle=null};j.prototype.initializeColumn=function(e,t,n){var o=this,r=!1,i=this.table.options.resizableColumns;if("header"===e&&(r="textarea"==t.definition.formatter||t.definition.variableHeight,t.modules.resize={variableHeight:r}),!0===i||i==e){var a=document.createElement("div");a.className="tabulator-col-resize-handle";var s=document.createElement("div");s.className="tabulator-col-resize-handle prev",a.addEventListener("click",function(e){e.stopPropagation()});var l=function(e){var n=t.getLastColumn();n&&o._checkResizability(n)&&(o.startColumn=t,o._mouseDown(e,n,a))};a.addEventListener("mousedown",l),a.addEventListener("touchstart",l,{passive:!0}),a.addEventListener("dblclick",function(e){var n=t.getLastColumn();n&&o._checkResizability(n)&&n.reinitializeWidth(!0)}),s.addEventListener("click",function(e){e.stopPropagation()});var u=function(e){var n,r,i;(n=t.getFirstColumn())&&(i=(r=o.table.columnManager.findColumnIndex(n))>0&&o.table.columnManager.getColumnByIndex(r-1))&&o._checkResizability(i)&&(o.startColumn=t,o._mouseDown(e,i,s))};s.addEventListener("mousedown",u),s.addEventListener("touchstart",u,{passive:!0}),s.addEventListener("dblclick",function(e){var n,r,i;(n=t.getFirstColumn())&&(i=(r=o.table.columnManager.findColumnIndex(n))>0&&o.table.columnManager.getColumnByIndex(r-1))&&o._checkResizability(i)&&i.reinitializeWidth(!0)}),n.appendChild(a),n.appendChild(s)}},j.prototype._checkResizability=function(e){return void 0!==e.definition.resizable?e.definition.resizable:this.table.options.resizableColumns},j.prototype._mouseDown=function(e,t,n){var o=this;function r(e){t.setWidth(o.startWidth+((void 0===e.screenX?e.touches[0].screenX:e.screenX)-o.startX)),!o.table.browserSlow&&t.modules.resize&&t.modules.resize.variableHeight&&t.checkCellHeights()}function i(e){o.startColumn.modules.edit&&(o.startColumn.modules.edit.blocked=!1),o.table.browserSlow&&t.modules.resize&&t.modules.resize.variableHeight&&t.checkCellHeights(),document.body.removeEventListener("mouseup",i),document.body.removeEventListener("mousemove",r),n.removeEventListener("touchmove",r),n.removeEventListener("touchend",i),o.table.element.classList.remove("tabulator-block-select"),o.table.options.persistentLayout&&o.table.modExists("persistence",!0)&&o.table.modules.persistence.save("columns"),o.table.options.columnResized.call(o.table,t.getComponent())}o.table.element.classList.add("tabulator-block-select"),e.stopPropagation(),o.startColumn.modules.edit&&(o.startColumn.modules.edit.blocked=!0),o.startX=void 0===e.screenX?e.touches[0].screenX:e.screenX,o.startWidth=t.getWidth(),document.body.addEventListener("mousemove",r),document.body.addEventListener("mouseup",i),n.addEventListener("touchmove",r,{passive:!0}),n.addEventListener("touchend",i)},d.prototype.registerModule("resizeColumns",j);var B=function(e){this.table=e,this.startColumn=!1,this.startY=!1,this.startHeight=!1,this.handle=null,this.prevHandle=null};B.prototype.initializeRow=function(e){var t=this,n=e.getElement(),o=document.createElement("div");o.className="tabulator-row-resize-handle";var r=document.createElement("div");r.className="tabulator-row-resize-handle prev",o.addEventListener("click",function(e){e.stopPropagation()});var i=function(n){t.startRow=e,t._mouseDown(n,e,o)};o.addEventListener("mousedown",i,{passive:!0}),o.addEventListener("touchstart",i),r.addEventListener("click",function(e){e.stopPropagation()});var a=function(n){var o=t.table.rowManager.prevDisplayRow(e);o&&(t.startRow=o,t._mouseDown(n,o,r))};r.addEventListener("mousedown",a),r.addEventListener("touchstart",a,{passive:!0}),n.appendChild(o),n.appendChild(r)},B.prototype._mouseDown=function(e,t,n){var o=this;function r(e){t.setHeight(o.startHeight+((void 0===e.screenY?e.touches[0].screenY:e.screenY)-o.startY))}function i(e){document.body.removeEventListener("mouseup",r),document.body.removeEventListener("mousemove",r),n.removeEventListener("touchmove",r),n.removeEventListener("touchend",i),o.table.element.classList.remove("tabulator-block-select"),o.table.options.rowResized.call(this.table,t.getComponent())}o.table.element.classList.add("tabulator-block-select"),e.stopPropagation(),o.startY=void 0===e.screenY?e.touches[0].screenY:e.screenY,o.startHeight=t.getHeight(),document.body.addEventListener("mousemove",r),document.body.addEventListener("mouseup",i),n.addEventListener("touchmove",r,{passive:!0}),n.addEventListener("touchend",i)},d.prototype.registerModule("resizeRows",B);var U=function(e){this.table=e,this.binding=!1,this.observer=!1};U.prototype.initialize=function(e){var t=this.table;"undefined"!=typeof ResizeObserver&&"virtual"===t.rowManager.getRenderMode()?(this.observer=new ResizeObserver(function(e){t.redraw()}),this.observer.observe(t.element)):(this.binding=function(){t.redraw()},window.addEventListener("resize",this.binding))},U.prototype.clearBindings=function(e){this.binding&&window.removeEventListener("resize",this.binding),this.observer&&this.observer.unobserve(this.table.element)},d.prototype.registerModule("resizeTable",U);var W=function(e){this.table=e,this.columns=[],this.hiddenColumns=[],this.mode="",this.index=0,this.collapseFormatter=[],this.collapseStartOpen=!0};W.prototype.initialize=function(){var e=this,t=[];this.mode=this.table.options.responsiveLayout,this.collapseFormatter=this.table.options.responsiveLayoutCollapseFormatter||this.formatCollapsedData,this.collapseStartOpen=this.table.options.responsiveLayoutCollapseStartOpen,this.hiddenColumns=[],this.table.columnManager.columnsByIndex.forEach(function(n,o){n.modules.responsive&&n.modules.responsive.order&&n.modules.responsive.visible&&(n.modules.responsive.index=o,t.push(n),n.visible||"collapse"!==e.mode||e.hiddenColumns.push(n))}),t=(t=t.reverse()).sort(function(e,t){return t.modules.responsive.order-e.modules.responsive.order||t.modules.responsive.index-e.modules.responsive.index}),this.columns=t,"collapse"===this.mode&&this.generateCollapsedContent()},W.prototype.initializeColumn=function(e){var t=e.getDefinition();e.modules.responsive={order:void 0===t.responsive?1:t.responsive,visible:!1!==t.visible}},W.prototype.layoutRow=function(e){var t=e.getElement(),n=document.createElement("div");n.classList.add("tabulator-responsive-collapse"),t.classList.contains("tabulator-calcs")||(e.modules.responsiveLayout={element:n},this.collapseStartOpen||(n.style.display="none"),t.appendChild(n),this.generateCollapsedRowContent(e))},W.prototype.updateColumnVisibility=function(e,t){e.modules.responsive&&(e.modules.responsive.visible=t,this.initialize())},W.prototype.hideColumn=function(e){e.hide(!1,!0),"collapse"===this.mode&&(this.hiddenColumns.unshift(e),this.generateCollapsedContent())},W.prototype.showColumn=function(e){var t;e.show(!1,!0),e.setWidth(e.getWidth()),"collapse"===this.mode&&((t=this.hiddenColumns.indexOf(e))>-1&&this.hiddenColumns.splice(t,1),this.generateCollapsedContent())},W.prototype.update=function(){for(var e=!0;e;){var t="fitColumns"==this.table.modules.layout.getMode()?this.table.columnManager.getFlexBaseWidth():this.table.columnManager.getWidth(),n=this.table.columnManager.element.clientWidth-t;if(n<0){var o=this.columns[this.index];o?(this.hideColumn(o),this.index++):e=!1}else{var r=this.columns[this.index-1];r&&n>0&&n>=r.getWidth()?(this.showColumn(r),this.index--):e=!1}this.table.rowManager.activeRowsCount||this.table.rowManager.renderEmptyScroll()}},W.prototype.generateCollapsedContent=function(){var e=this;this.table.rowManager.getDisplayRows().forEach(function(t){e.generateCollapsedRowContent(t)})},W.prototype.generateCollapsedRowContent=function(e){var t,n;if(e.modules.responsiveLayout){for(t=e.modules.responsiveLayout.element;t.firstChild;)t.removeChild(t.firstChild);(n=this.collapseFormatter(this.generateCollapsedRowData(e)))&&t.appendChild(n)}},W.prototype.generateCollapsedRowData=function(e){var t,n=this,o=e.getData(),r=[];return this.hiddenColumns.forEach(function(i){var a=i.getFieldValue(o);i.definition.title&&i.field&&(i.modules.format&&n.table.options.responsiveLayoutCollapseUseFormatters?(t={value:!1,data:{},getValue:function(){return a},getData:function(){return o},getElement:function(){return document.createElement("div")},getRow:function(){return e.getComponent()},getColumn:function(){return i.getComponent()}},r.push({title:i.definition.title,value:i.modules.format.formatter.call(n.table.modules.format,t,i.modules.format.params)})):r.push({title:i.definition.title,value:a}))}),r},W.prototype.formatCollapsedData=function(e){var t=document.createElement("table"),n="";return e.forEach(function(e){var t=document.createElement("div");e.value instanceof Node&&(t.appendChild(e.value),e.value=t.innerHTML),n+="<tr><td><strong>"+e.title+"</strong></td><td>"+e.value+"</td></tr>"}),t.innerHTML=n,Object.keys(e).length?t:""},d.prototype.registerModule("responsiveLayout",W);var q=function(e){this.table=e,this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[]};q.prototype.clearSelectionData=function(e){this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],e||this._rowSelectionChanged()},q.prototype.initializeRow=function(e){var t=this,n=e.getElement(),o=function e(){setTimeout(function(){t.selecting=!1},50),document.body.removeEventListener("mouseup",e)};e.modules.select={selected:!1},t.table.options.selectableCheck.call(this.table,e.getComponent())?(n.classList.add("tabulator-selectable"),n.classList.remove("tabulator-unselectable"),t.table.options.selectable&&"highlight"!=t.table.options.selectable&&("click"===t.table.options.selectableRangeMode?n.addEventListener("click",function(n){if(t.table._clearSelection(),n.shiftKey){t.lastClickedRow=t.lastClickedRow||e;var o=t.table.rowManager.getDisplayRowIndex(t.lastClickedRow),r=t.table.rowManager.getDisplayRowIndex(e),i=o<=r?o:r,a=o>=r?o:r,s=t.table.rowManager.getDisplayRows().slice(0).splice(i,a-i+1);n.ctrlKey||n.metaKey?(s.forEach(function(n){n!==t.lastClickedRow&&(!0===t.table.options.selectable||t.isRowSelected(e)?t.toggleRow(n):t.selectedRows.length<t.table.options.selectable&&t.toggleRow(n))}),t.lastClickedRow=e):(t.deselectRows(),!0!==t.table.options.selectable&&s.length>t.table.options.selectable&&(s=s.slice(0,t.table.options.selectable)),t.selectRows(s))}else n.ctrlKey||n.metaKey?(t.toggleRow(e),t.lastClickedRow=e):(t.deselectRows(),t.selectRows(e),t.lastClickedRow=e);t.table._clearSelection()}):(n.addEventListener("click",function(n){t.table._clearSelection(),t.selecting||t.toggleRow(e)}),n.addEventListener("mousedown",function(n){if(n.shiftKey)return t.table._clearSelection(),t.selecting=!0,t.selectPrev=[],document.body.addEventListener("mouseup",o),document.body.addEventListener("keyup",o),t.toggleRow(e),!1}),n.addEventListener("mouseenter",function(n){t.selecting&&(t.table._clearSelection(),t.toggleRow(e),t.selectPrev[1]==e&&t.toggleRow(t.selectPrev[0]))}),n.addEventListener("mouseout",function(n){t.selecting&&(t.table._clearSelection(),t.selectPrev.unshift(e))})))):(n.classList.add("tabulator-unselectable"),n.classList.remove("tabulator-selectable"))},q.prototype.toggleRow=function(e){this.table.options.selectableCheck.call(this.table,e.getComponent())&&(e.modules.select&&e.modules.select.selected?this._deselectRow(e):this._selectRow(e))},q.prototype.selectRows=function(e){var t=this;switch(void 0===e?"undefined":s(e)){case"undefined":t.table.rowManager.rows.forEach(function(e){t._selectRow(e,!0,!0)}),t._rowSelectionChanged();break;case"boolean":!0===e&&(t.table.rowManager.activeRows.forEach(function(e){t._selectRow(e,!0,!0)}),t._rowSelectionChanged());break;default:Array.isArray(e)?(e.forEach(function(e){t._selectRow(e,!0,!0)}),t._rowSelectionChanged()):t._selectRow(e,!1,!0)}},q.prototype._selectRow=function(e,t,n){if(!isNaN(this.table.options.selectable)&&!0!==this.table.options.selectable&&!n&&this.selectedRows.length>=this.table.options.selectable){if(!this.table.options.selectableRollingSelection)return!1;this._deselectRow(this.selectedRows[0])}var o=this.table.rowManager.findRow(e);o?-1==this.selectedRows.indexOf(o)&&(o.modules.select||(o.modules.select={}),o.modules.select.selected=!0,o.getElement().classList.add("tabulator-selected"),this.selectedRows.push(o),t||(this.table.options.rowSelected.call(this.table,o.getComponent()),this._rowSelectionChanged())):t||console.warn("Selection Error - No such row found, ignoring selection:"+e)},q.prototype.isRowSelected=function(e){return-1!==this.selectedRows.indexOf(e)},q.prototype.deselectRows=function(e){var t,n=this;if(void 0===e){t=n.selectedRows.length;for(var o=0;o<t;o++)n._deselectRow(n.selectedRows[0],!0);n._rowSelectionChanged()}else Array.isArray(e)?(e.forEach(function(e){n._deselectRow(e,!0)}),n._rowSelectionChanged()):n._deselectRow(e)},q.prototype._deselectRow=function(e,t){var n,o=this.table.rowManager.findRow(e);o?(n=this.selectedRows.findIndex(function(e){return e==o}))>-1&&(o.modules.select||(o.modules.select={}),o.modules.select.selected=!1,o.getElement().classList.remove("tabulator-selected"),this.selectedRows.splice(n,1),t||(this.table.options.rowDeselected.call(this.table,o.getComponent()),this._rowSelectionChanged())):t||console.warn("Deselection Error - No such row found, ignoring selection:"+e)},q.prototype.getSelectedData=function(){var e=[];return this.selectedRows.forEach(function(t){e.push(t.getData())}),e},q.prototype.getSelectedRows=function(){var e=[];return this.selectedRows.forEach(function(t){e.push(t.getComponent())}),e},q.prototype._rowSelectionChanged=function(){this.table.options.rowSelectionChanged.call(this.table,this.getSelectedData(),this.getSelectedRows())},d.prototype.registerModule("selectRow",q);var V=function(e){this.table=e,this.sortList=[],this.changed=!1};V.prototype.initializeColumn=function(e,t){var n,o,r=this,i=!1;switch(s(e.definition.sorter)){case"string":r.sorters[e.definition.sorter]?i=r.sorters[e.definition.sorter]:console.warn("Sort Error - No such sorter found: ",e.definition.sorter);break;case"function":i=e.definition.sorter}e.modules.sort={sorter:i,dir:"none",params:e.definition.sorterParams||{},startingDir:e.definition.headerSortStartingDir||"asc",tristate:e.definition.headerSortTristate},!1!==e.definition.headerSort&&((n=e.getElement()).classList.add("tabulator-sortable"),(o=document.createElement("div")).classList.add("tabulator-arrow"),t.appendChild(o),n.addEventListener("click",function(t){var n="",o=[],i=!1;if(e.modules.sort){if(e.modules.sort.tristate)n="none"==e.modules.sort.dir?e.modules.sort.startingDir:e.modules.sort.dir==e.modules.sort.startingDir?"asc"==e.modules.sort.dir?"desc":"asc":"none";else switch(e.modules.sort.dir){case"asc":n="desc";break;case"desc":n="asc";break;default:n=e.modules.sort.startingDir}r.table.options.columnHeaderSortMulti&&(t.shiftKey||t.ctrlKey)?((i=(o=r.getSort()).findIndex(function(t){return t.field===e.getField()}))>-1?(o[i].dir=n,i!=o.length-1&&(i=o.splice(i,1)[0],"none"!=n&&o.push(i))):"none"!=n&&o.push({column:e,dir:n}),r.setSort(o)):"none"==n?r.clear():r.setSort(e,n),r.table.rowManager.sorterRefresh(!r.sortList.length)}}))},V.prototype.hasChanged=function(){var e=this.changed;return this.changed=!1,e},V.prototype.getSort=function(){var e=[];return this.sortList.forEach(function(t){t.column&&e.push({column:t.column.getComponent(),field:t.column.getField(),dir:t.dir})}),e},V.prototype.setSort=function(e,t){var n=this,o=[];Array.isArray(e)||(e=[{column:e,dir:t}]),e.forEach(function(e){var t;(t=n.table.columnManager.findColumn(e.column))?(e.column=t,o.push(e),n.changed=!0):console.warn("Sort Warning - Sort field does not exist and is being ignored: ",e.column)}),n.sortList=o,this.table.options.persistentSort&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("sort")},V.prototype.clear=function(){this.setSort([])},V.prototype.findSorter=function(e){var t,n=this.table.rowManager.activeRows[0],o="string";if(n&&(n=n.getData(),e.getField()))switch(void 0===(t=e.getFieldValue(n))?"undefined":s(t)){case"undefined":o="string";break;case"boolean":o="boolean";break;default:isNaN(t)||""===t?t.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)&&(o="alphanum"):o="number"}return this.sorters[o]},V.prototype.sort=function(e){var t,n=this;t=this.table.options.sortOrderReverse?n.sortList.slice().reverse():n.sortList,n.table.options.dataSorting&&n.table.options.dataSorting.call(n.table,n.getSort()),n.clearColumnHeaders(),n.table.options.ajaxSorting?t.forEach(function(e,t){n.setColumnHeader(e.column,e.dir)}):t.forEach(function(o,r){o.column&&o.column.modules.sort&&(o.column.modules.sort.sorter||(o.column.modules.sort.sorter=n.findSorter(o.column)),n._sortItem(e,o.column,o.dir,t,r)),n.setColumnHeader(o.column,o.dir)}),n.table.options.dataSorted&&n.table.options.dataSorted.call(n.table,n.getSort(),n.table.rowManager.getComponents(!0))},V.prototype.clearColumnHeaders=function(){this.table.columnManager.getRealColumns().forEach(function(e){e.modules.sort&&(e.modules.sort.dir="none",e.getElement().setAttribute("aria-sort","none"))})},V.prototype.setColumnHeader=function(e,t){e.modules.sort.dir=t,e.getElement().setAttribute("aria-sort",t)},V.prototype._sortItem=function(e,t,n,o,r){var i=this,a="function"==typeof t.modules.sort.params?t.modules.sort.params(t.getComponent(),n):t.modules.sort.params;e.sort(function(e,s){var l=i._sortRow(e,s,t,n,a);if(0===l&&r)for(var u=r-1;u>=0&&0===(l=i._sortRow(e,s,o[u].column,o[u].dir,a));u--);return l})},V.prototype._sortRow=function(e,t,n,o,r){var i,a,s="asc"==o?e:t,l="asc"==o?t:e;return e=void 0!==(e=n.getFieldValue(s.getData()))?e:"",t=void 0!==(t=n.getFieldValue(l.getData()))?t:"",i=s.getComponent(),a=l.getComponent(),n.modules.sort.sorter.call(this,e,t,i,a,n.getComponent(),o,r)},V.prototype.sorters={number:function(e,t,n,o,r,i,a){var s=a.alignEmptyValues,l=a.decimalSeparator||".",u=a.thousandSeparator||",",c=0;if(e=parseFloat(String(e).split(u).join("").split(l).join(".")),t=parseFloat(String(t).split(u).join("").split(l).join(".")),isNaN(e))c=isNaN(t)?0:-1;else{if(!isNaN(t))return e-t;c=1}return("top"===s&&"desc"===i||"bottom"===s&&"asc"===i)&&(c*=-1),c},string:function(e,t,n,o,r,i,a){var l,u=a.alignEmptyValues,c=0;if(e){if(t){switch(s(a.locale)){case"boolean":a.locale&&(l=this.table.modules.localize.getLocale());break;case"string":l=a.locale}return String(e).toLowerCase().localeCompare(String(t).toLowerCase(),l)}c=1}else c=t?-1:0;return("top"===u&&"desc"===i||"bottom"===u&&"asc"===i)&&(c*=-1),c},date:function(e,t,n,o,r,i,a){return a.format||(a.format="DD/MM/YYYY"),this.sorters.datetime.call(this,e,t,n,o,r,i,a)},time:function(e,t,n,o,r,i,a){return a.format||(a.format="hh:mm"),this.sorters.datetime.call(this,e,t,n,o,r,i,a)},datetime:function(e,t,n,o,r,i,a){var s=a.format||"DD/MM/YYYY hh:mm:ss",l=a.alignEmptyValues,u=0;if("undefined"!=typeof moment){if(e=moment(e,s),t=moment(t,s),e.isValid()){if(t.isValid())return e-t;u=1}else u=t.isValid()?-1:0;return("top"===l&&"desc"===i||"bottom"===l&&"asc"===i)&&(u*=-1),u}console.error("Sort Error - 'datetime' sorter is dependant on moment.js")},boolean:function(e,t,n,o,r,i,a){return(!0===e||"true"===e||"True"===e||1===e?1:0)-(!0===t||"true"===t||"True"===t||1===t?1:0)},array:function(e,t,n,o,r,i,a){var s=a.type||"length",l=a.alignEmptyValues,u=0;function c(e){switch(s){case"length":return e.length;case"sum":return e.reduce(function(e,t){return e+t});case"max":return Math.max.apply(null,e);case"min":return Math.min.apply(null,e);case"avg":return e.reduce(function(e,t){return e+t})/e.length}}if(Array.isArray(e)){if(Array.isArray(t))return(e?c(e):0)-(t?c(t):0);l=1}else l=Array.isArray(t)?-1:0;return("top"===l&&"desc"===i||"bottom"===l&&"asc"===i)&&(u*=-1),u},exists:function(e,t,n,o,r,i,a){return(void 0===e?0:1)-(void 0===t?0:1)},alphanum:function(e,t,n,o,r,i,a){var s,l,u,c,d,p=0,h=/(\d+)|(\D+)/g,f=/\d/,m=a.alignEmptyValues,g=0;if(e||0===e){if(t||0===t){if(isFinite(e)&&isFinite(t))return e-t;if((s=String(e).toLowerCase())===(l=String(t).toLowerCase()))return 0;if(!f.test(s)||!f.test(l))return s>l?1:-1;for(s=s.match(h),l=l.match(h),d=s.length>l.length?l.length:s.length;p<d;)if((u=s[p])!==(c=l[p++]))return isFinite(u)&&isFinite(c)?("0"===u.charAt(0)&&(u="."+u),"0"===c.charAt(0)&&(c="."+c),u-c):u>c?1:-1;return s.length>l.length}g=1}else g=t||0===t?-1:0;return("top"===m&&"desc"===i||"bottom"===m&&"asc"===i)&&(g*=-1),g}},d.prototype.registerModule("sort",V);var G=function(e){this.table=e};return G.prototype.initializeColumn=function(e){var t,n=this,o=[];e.definition.validator&&(Array.isArray(e.definition.validator)?e.definition.validator.forEach(function(e){(t=n._extractValidator(e))&&o.push(t)}):(t=this._extractValidator(e.definition.validator))&&o.push(t),e.modules.validate=!!o.length&&o)},G.prototype._extractValidator=function(e){var t,n,o;switch(void 0===e?"undefined":s(e)){case"string":return n=(t=e.split(":",2)).shift(),o=t[0],this._buildValidator(n,o);case"function":return this._buildValidator(e);case"object":return this._buildValidator(e.type,e.parameters)}},G.prototype._buildValidator=function(e,t){var n="function"==typeof e?e:this.validators[e];return n?{type:"function"==typeof e?"function":e,func:n,params:t}:(console.warn("Validator Setup Error - No matching validator found:",e),!1)},G.prototype.validate=function(e,t,n){var o=this,r=[];return e&&e.forEach(function(e){e.func.call(o,t,n,e.params)||r.push({type:e.type,parameters:e.params})}),!r.length||r},G.prototype.validators={integer:function(e,t,n){return""===t||null==t||"number"==typeof(t=Number(t))&&isFinite(t)&&Math.floor(t)===t},float:function(e,t,n){return""===t||null==t||"number"==typeof(t=Number(t))&&isFinite(t)&&t%1!=0},numeric:function(e,t,n){return""===t||null==t||!isNaN(t)},string:function(e,t,n){return""===t||null==t||isNaN(t)},max:function(e,t,n){return""===t||null==t||parseFloat(t)<=n},min:function(e,t,n){return""===t||null==t||parseFloat(t)>=n},minLength:function(e,t,n){return""===t||null==t||String(t).length>=n},maxLength:function(e,t,n){return""===t||null==t||String(t).length<=n},in:function(e,t,n){return""===t||null==t||("string"==typeof n&&(n=n.split("|")),""===t||n.indexOf(t)>-1)},regex:function(e,t,n){return""===t||null==t||new RegExp(n).test(t)},unique:function(e,t,n){if(""===t||null==t)return!0;var o=!0,r=e.getData(),i=e.getColumn()._getSelf();return this.table.rowManager.rows.forEach(function(e){var n=e.getData();n!==r&&t==i.getFieldValue(n)&&(o=!1)}),o},required:function(e,t,n){return""!==t&&null!=t}},d.prototype.registerModule("validate",G),d},"object"===s(n)&&void 0!==t?t.exports=a():void 0===(i="function"==typeof(r=a)?r.call(n,o,n,t):r)||(t.exports=i)},function(e,t,n){"use strict";var o=n(6);t.__esModule=!0,t.default=void 0;var r=function(){};o(n(11)).default&&(r=document.addEventListener?function(e,t,n,o){return e.addEventListener(t,n,o||!1)}:document.attachEvent?function(e,t,n){return e.attachEvent("on"+t,function(t){(t=t||window.event).target=t.target||t.srcElement,t.currentTarget=e,n.call(e,t)})}:void 0);var i=r;t.default=i,e.exports=t.default},function(e,t,n){"use strict";var o=n(6);t.__esModule=!0,t.default=void 0;var r=function(){};o(n(11)).default&&(r=document.addEventListener?function(e,t,n,o){return e.removeEventListener(t,n,o||!1)}:document.attachEvent?function(e,t,n){return e.detachEvent("on"+t,n)}:void 0);var i=r;t.default=i,e.exports=t.default},function(e,t,n){"use strict";var o=n(6);t.__esModule=!0,t.default=void 0;var r=o(n(11)).default?function(e,t){return e.contains?e.contains(t):e.compareDocumentPosition?e===t||!!(16&e.compareDocumentPosition(t)):i(e,t)}:i;function i(e,t){if(t)do{if(t===e)return!0}while(t=t.parentNode);return!1}t.default=r,e.exports=t.default},function(e,t,n){"use strict";var o=n(6);t.__esModule=!0,t.default=void 0;var r=o(n(11)),i=o(n(32)),a=o(n(33)),s=function(){};r.default&&(s=function(e,t,n,o){return(0,i.default)(e,t,n,o),function(){(0,a.default)(e,t,n,o)}});var l=s;t.default=l,e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t){return e.classList?!!t&&e.classList.contains(t):-1!==(" "+(e.className.baseVal||e.className)+" ").indexOf(" "+t+" ")},e.exports=t.default},function(e,t,n){"use strict";var o=n(6);t.__esModule=!0,t.default=function(e){return(0,r.default)(e.replace(i,"ms-"))};var r=o(n(26)),i=/^-ms-/;e.exports=t.default},function(e,t,n){"use strict";var o=n(6);t.__esModule=!0,t.default=t.animationEnd=t.animationDelay=t.animationTiming=t.animationDuration=t.animationName=t.transitionEnd=t.transitionDuration=t.transitionDelay=t.transitionTiming=t.transitionProperty=t.transform=void 0;var r,i,a,s,l,u,c,d,p,h,f,m=o(n(11)),g="transform";if(t.transform=g,t.animationEnd=a,t.transitionEnd=i,t.transitionDelay=c,t.transitionTiming=u,t.transitionDuration=l,t.transitionProperty=s,t.animationDelay=f,t.animationTiming=h,t.animationDuration=p,t.animationName=d,m.default){var v=function(){for(var e,t,n=document.createElement("div").style,o={O:function(e){return"o"+e.toLowerCase()},Moz:function(e){return e.toLowerCase()},Webkit:function(e){return"webkit"+e},ms:function(e){return"MS"+e}},r=Object.keys(o),i="",a=0;a<r.length;a++){var s=r[a];if(s+"TransitionProperty"in n){i="-"+s.toLowerCase(),e=o[s]("TransitionEnd"),t=o[s]("AnimationEnd");break}}!e&&"transitionProperty"in n&&(e="transitionend");!t&&"animationName"in n&&(t="animationend");return n=null,{animationEnd:t,transitionEnd:e,prefix:i}}();r=v.prefix,t.transitionEnd=i=v.transitionEnd,t.animationEnd=a=v.animationEnd,t.transform=g=r+"-"+g,t.transitionProperty=s=r+"-transition-property",t.transitionDuration=l=r+"-transition-duration",t.transitionDelay=c=r+"-transition-delay",t.transitionTiming=u=r+"-transition-timing-function",t.animationName=d=r+"-animation-name",t.animationDuration=p=r+"-animation-duration",t.animationTiming=h=r+"-animation-delay",t.animationDelay=f=r+"-animation-timing-function"}var y={transform:g,end:i,property:s,timing:u,delay:c,duration:l};t.default=y},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t){return null==e?t:(e="function"==typeof e?e():e,r.default.findDOMNode(e)||null)};var o,r=(o=n(8))&&o.__esModule?o:{default:o};e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var o=g(n(66)),r=g(n(34)),i=g(n(11)),a=g(n(35)),s=g(n(2)),l=g(n(23)),u=g(n(67)),c=g(n(0)),d=g(n(8)),p=g(n(27)),h=g(n(81)),f=g(n(39)),m=g(n(83));function g(e){return e&&e.__esModule?e:{default:e}}function v(){return(v=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e}).apply(this,arguments)}function y(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}var b=new p.default;var w=function(e){var t,n;function s(){for(var t,n=arguments.length,i=new Array(n),s=0;s<n;s++)i[s]=arguments[s];return(t=e.call.apply(e,[this].concat(i))||this).state={exited:!t.props.show},t.onPortalRendered=function(){t.props.onShow&&t.props.onShow(),t.autoFocus()},t.onShow=function(){var e=(0,m.default)(y(y(t))),n=(0,f.default)(t.props.container,e.body);t.props.manager.add(y(y(t)),n,t.props.containerClassName),t.removeKeydownListener=(0,a.default)(e,"keydown",t.handleDocumentKeyDown),t.removeFocusListener=(0,a.default)(e,"focus",function(){return setTimeout(t.enforceFocus)},!0)},t.onHide=function(){t.props.manager.remove(y(y(t))),t.removeKeydownListener(),t.removeFocusListener(),t.props.restoreFocus&&t.restoreLastFocus()},t.setDialogRef=function(e){t.dialog=e},t.setBackdropRef=function(e){t.backdrop=e&&d.default.findDOMNode(e)},t.handleHidden=function(){var e;(t.setState({exited:!0}),t.onHide(),t.props.onExited)&&(e=t.props).onExited.apply(e,arguments)},t.handleBackdropClick=function(e){e.target===e.currentTarget&&(t.props.onBackdropClick&&t.props.onBackdropClick(e),!0===t.props.backdrop&&t.props.onHide())},t.handleDocumentKeyDown=function(e){t.props.keyboard&&27===e.keyCode&&t.isTopModal()&&(t.props.onEscapeKeyDown&&t.props.onEscapeKeyDown(e),t.props.onHide())},t.enforceFocus=function(){if(t.props.enforceFocus&&t._isMounted&&t.isTopModal()){var e=(0,o.default)((0,m.default)(y(y(t))));t.dialog&&!(0,r.default)(t.dialog,e)&&t.dialog.focus()}},t.renderBackdrop=function(){var e=t.props,n=e.renderBackdrop,o=e.backdropTransition,r=n({ref:t.setBackdropRef,onClick:t.handleBackdropClick});return o&&(r=c.default.createElement(o,{appear:!0,in:t.props.show},r)),r},t}n=e,(t=s).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n,s.getDerivedStateFromProps=function(e){return e.show?{exited:!1}:e.transition?null:{exited:!0}};var l=s.prototype;return l.getSnapshotBeforeUpdate=function(e){return i.default&&!e.show&&this.props.show&&(this.lastFocus=(0,o.default)()),null},l.componentDidMount=function(){this._isMounted=!0,this.props.show&&this.onShow()},l.componentDidUpdate=function(e){var t=this.props.transition;!e.show||this.props.show||t?!e.show&&this.props.show&&this.onShow():this.onHide()},l.componentWillUnmount=function(){var e=this.props,t=e.show,n=e.transition;this._isMounted=!1,(t||n&&!this.state.exited)&&this.onHide()},l.autoFocus=function(){if(this.props.autoFocus){var e=(0,o.default)((0,m.default)(this));this.dialog&&!(0,r.default)(this.dialog,e)&&(this.lastFocus=e,this.dialog.focus())}},l.restoreLastFocus=function(){this.lastFocus&&this.lastFocus.focus&&(this.lastFocus.focus(),this.lastFocus=null)},l.isTopModal=function(){return this.props.manager.isTopModal(this)},l.render=function(){var e=this.props,t=e.show,n=e.container,o=e.children,r=e.renderDialog,i=e.role,a=void 0===i?"dialog":i,l=e.transition,u=e.backdrop,d=e.className,p=e.style,f=e.onExit,m=e.onExiting,g=e.onEnter,y=e.onEntering,b=e.onEntered,w=function(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o<i.length;o++)n=i[o],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,["show","container","children","renderDialog","role","transition","backdrop","className","style","onExit","onExiting","onEnter","onEntering","onEntered"]);if(!(t||l&&!this.state.exited))return null;var E=v({role:a,ref:this.setDialogRef,"aria-modal":"dialog"===a||void 0},function(e,t){var n=Object.keys(e),o={};return n.map(function(n){Object.prototype.hasOwnProperty.call(t,n)||(o[n]=e[n])}),o}(w,s.propTypes),{style:p,className:d,tabIndex:"-1"}),C=r?r(E):c.default.createElement("div",E,c.default.cloneElement(o,{role:"document"}));return l&&(C=c.default.createElement(l,{appear:!0,unmountOnExit:!0,in:t,onExit:f,onExiting:m,onExited:this.handleHidden,onEnter:g,onEntering:y,onEntered:b},C)),c.default.createElement(h.default,{container:n,onRendered:this.onPortalRendered},c.default.createElement(c.default.Fragment,null,u&&this.renderBackdrop(),C))},s}(c.default.Component);w.propTypes={show:s.default.bool,container:s.default.oneOfType([l.default,s.default.func]),onShow:s.default.func,onHide:s.default.func,backdrop:s.default.oneOfType([s.default.bool,s.default.oneOf(["static"])]),renderDialog:s.default.func,renderBackdrop:s.default.func,onEscapeKeyDown:s.default.func,onBackdropClick:s.default.func,containerClassName:s.default.string,keyboard:s.default.bool,transition:u.default,backdropTransition:u.default,autoFocus:s.default.bool,enforceFocus:s.default.bool,restoreFocus:s.default.bool,onEnter:s.default.func,onEntering:s.default.func,onEntered:s.default.func,onExit:s.default.func,onExiting:s.default.func,onExited:s.default.func,manager:s.default.object.isRequired},w.defaultProps={show:!1,role:"dialog",backdrop:!0,keyboard:!0,autoFocus:!0,enforceFocus:!0,restoreFocus:!0,onHide:function(){},manager:b,renderBackdrop:function(e){return c.default.createElement("div",e)}},w.Manager=p.default;var E=w;t.default=E,e.exports=t.default},function(e,t,n){"use strict";var o=n(6);t.__esModule=!0,t.default=void 0;var r=o(n(38)),i=o(n(15));function a(e,t,n){var o,i={target:e,currentTarget:e};function a(e){e.target===e.currentTarget&&(clearTimeout(o),e.target.removeEventListener(r.default.end,a),t.call(this))}r.default.end?null==n&&(n=l(e)||0):n=0,r.default.end?(e.addEventListener(r.default.end,a,!1),o=setTimeout(function(){return a(i)},1.5*(n||100))):setTimeout(a.bind(null,i),0)}a._parseDuration=l;var s=a;function l(e){var t=(0,i.default)(e,r.default.duration),n=-1===t.indexOf("ms")?1e3:1;return parseFloat(t)*n}t.default=s,e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t,n){return 2===arguments.length?u(e,t):u({consumers:e,mapToProps:t},n)};var o=i(n(0)),r=i(n(25));function i(e){return e&&e.__esModule?e:{default:e}}function a(){return(a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e}).apply(this,arguments)}var s=function(e){var t="string"==typeof e?e:e.name||e.displayName;return t?"ContextTransform("+t+")":"ContextTransform"},l=function(e){return e.Consumer||e};function u(e,t){var n=e.consumers,i=e.mapToProps,u=e.displayName,c=e.forwardRefAs,d=void 0===c?"ref":c,p=n;Array.isArray(n)||(p=[n]);var h=l(p[0]);var f=1===p.length?function(e,n){var r,s=a(((r={})[d]=n,r),e);return o.default.createElement(h,null,function(n){return o.default.createElement(t,a({},s,i(n,e)))})}:function(e,n){var r,s=a(((r={})[d]=n,r),e);return p.reduceRight(function(e,t){return function(){for(var n=arguments.length,r=new Array(n),i=0;i<n;i++)r[i]=arguments[i];var a=l(t);return o.default.createElement(a,null,function(t){return e.apply(void 0,r.concat([t]))})}},function(){for(var n=arguments.length,r=new Array(n),l=0;l<n;l++)r[l]=arguments[l];return o.default.createElement(t,a({},s,i.apply(void 0,r.concat([e]))))})()};return(0,r.default)(f,{displayName:u||s(t)})}},function(e,t,n){var o=n(85);e.exports=h,e.exports.parse=i,e.exports.compile=function(e,t){return s(i(e,t))},e.exports.tokensToFunction=s,e.exports.tokensToRegExp=p;var r=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function i(e,t){for(var n,o=[],i=0,a=0,s="",c=t&&t.delimiter||"/";null!=(n=r.exec(e));){var d=n[0],p=n[1],h=n.index;if(s+=e.slice(a,h),a=h+d.length,p)s+=p[1];else{var f=e[a],m=n[2],g=n[3],v=n[4],y=n[5],b=n[6],w=n[7];s&&(o.push(s),s="");var E=null!=m&&null!=f&&f!==m,C="+"===b||"*"===b,x="?"===b||"*"===b,T=n[2]||c,k=v||y;o.push({name:g||i++,prefix:m||"",delimiter:T,optional:x,repeat:C,partial:E,asterisk:!!w,pattern:k?u(k):w?".*":"[^"+l(T)+"]+?"})}}return a<e.length&&(s+=e.substr(a)),s&&o.push(s),o}function a(e){return encodeURI(e).replace(/[\/?#]/g,function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})}function s(e){for(var t=new Array(e.length),n=0;n<e.length;n++)"object"==typeof e[n]&&(t[n]=new RegExp("^(?:"+e[n].pattern+")$"));return function(n,r){for(var i="",s=n||{},l=(r||{}).pretty?a:encodeURIComponent,u=0;u<e.length;u++){var c=e[u];if("string"!=typeof c){var d,p=s[c.name];if(null==p){if(c.optional){c.partial&&(i+=c.prefix);continue}throw new TypeError('Expected "'+c.name+'" to be defined')}if(o(p)){if(!c.repeat)throw new TypeError('Expected "'+c.name+'" to not repeat, but received `'+JSON.stringify(p)+"`");if(0===p.length){if(c.optional)continue;throw new TypeError('Expected "'+c.name+'" to not be empty')}for(var h=0;h<p.length;h++){if(d=l(p[h]),!t[u].test(d))throw new TypeError('Expected all "'+c.name+'" to match "'+c.pattern+'", but received `'+JSON.stringify(d)+"`");i+=(0===h?c.prefix:c.delimiter)+d}}else{if(d=c.asterisk?encodeURI(p).replace(/[?#]/g,function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}):l(p),!t[u].test(d))throw new TypeError('Expected "'+c.name+'" to match "'+c.pattern+'", but received "'+d+'"');i+=c.prefix+d}}else i+=c}return i}}function l(e){return e.replace(/([.+*?=^!:${}()[\]|\/\\])/g,"\\$1")}function u(e){return e.replace(/([=!:$\/()])/g,"\\$1")}function c(e,t){return e.keys=t,e}function d(e){return e.sensitive?"":"i"}function p(e,t,n){o(t)||(n=t||n,t=[]);for(var r=(n=n||{}).strict,i=!1!==n.end,a="",s=0;s<e.length;s++){var u=e[s];if("string"==typeof u)a+=l(u);else{var p=l(u.prefix),h="(?:"+u.pattern+")";t.push(u),u.repeat&&(h+="(?:"+p+h+")*"),a+=h=u.optional?u.partial?p+"("+h+")?":"(?:"+p+"("+h+"))?":p+"("+h+")"}}var f=l(n.delimiter||"/"),m=a.slice(-f.length)===f;return r||(a=(m?a.slice(0,-f.length):a)+"(?:"+f+"(?=$))?"),a+=i?"$":r&&m?"":"(?="+f+"|$)",c(new RegExp("^"+a,d(n)),t)}function h(e,t,n){return o(t)||(n=t||n,t=[]),n=n||{},e instanceof RegExp?function(e,t){var n=e.source.match(/\((?!\?)/g);if(n)for(var o=0;o<n.length;o++)t.push({name:o,prefix:null,delimiter:null,optional:!1,repeat:!1,partial:!1,asterisk:!1,pattern:null});return c(e,t)}(e,t):o(e)?function(e,t,n){for(var o=[],r=0;r<e.length;r++)o.push(h(e[r],t,n).source);return c(new RegExp("(?:"+o.join("|")+")",d(n)),t)}(e,t,n):function(e,t,n){return p(i(e,n),t,n)}(e,t,n)}},function(e,t,n){"use strict";
/** @license React v16.8.6
* react.production.min.js
*
@@ -22,7 +32,7 @@ object-assign
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
- */var r=n(23),o="function"==typeof Symbol&&Symbol.for,i=o?Symbol.for("react.element"):60103,a=o?Symbol.for("react.portal"):60106,l=o?Symbol.for("react.fragment"):60107,u=o?Symbol.for("react.strict_mode"):60108,s=o?Symbol.for("react.profiler"):60114,c=o?Symbol.for("react.provider"):60109,f=o?Symbol.for("react.context"):60110,d=o?Symbol.for("react.concurrent_mode"):60111,p=o?Symbol.for("react.forward_ref"):60112,h=o?Symbol.for("react.suspense"):60113,m=o?Symbol.for("react.memo"):60115,v=o?Symbol.for("react.lazy"):60116,y="function"==typeof Symbol&&Symbol.iterator;function g(e){for(var t=arguments.length-1,n="https://reactjs.org/docs/error-decoder.html?invariant="+e,r=0;r<t;r++)n+="&args[]="+encodeURIComponent(arguments[r+1]);!function(e,t,n,r,o,i,a,l){if(!e){if(e=void 0,void 0===t)e=Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var u=[n,r,o,i,a,l],s=0;(e=Error(t.replace(/%s/g,function(){return u[s++]}))).name="Invariant Violation"}throw e.framesToPop=1,e}}(!1,"Minified React error #"+e+"; visit %s for the full message or use the non-minified dev environment for full errors and additional helpful warnings. ",n)}var b={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},x={};function w(e,t,n){this.props=e,this.context=t,this.refs=x,this.updater=n||b}function E(){}function C(e,t,n){this.props=e,this.context=t,this.refs=x,this.updater=n||b}w.prototype.isReactComponent={},w.prototype.setState=function(e,t){"object"!=typeof e&&"function"!=typeof e&&null!=e&&g("85"),this.updater.enqueueSetState(this,e,t,"setState")},w.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},E.prototype=w.prototype;var k=C.prototype=new E;k.constructor=C,r(k,w.prototype),k.isPureReactComponent=!0;var T={current:null},S={current:null},_=Object.prototype.hasOwnProperty,O={key:!0,ref:!0,__self:!0,__source:!0};function P(e,t,n){var r=void 0,o={},a=null,l=null;if(null!=t)for(r in void 0!==t.ref&&(l=t.ref),void 0!==t.key&&(a=""+t.key),t)_.call(t,r)&&!O.hasOwnProperty(r)&&(o[r]=t[r]);var u=arguments.length-2;if(1===u)o.children=n;else if(1<u){for(var s=Array(u),c=0;c<u;c++)s[c]=arguments[c+2];o.children=s}if(e&&e.defaultProps)for(r in u=e.defaultProps)void 0===o[r]&&(o[r]=u[r]);return{$$typeof:i,type:e,key:a,ref:l,props:o,_owner:S.current}}function N(e){return"object"==typeof e&&null!==e&&e.$$typeof===i}var D=/\/+/g,R=[];function M(e,t,n,r){if(R.length){var o=R.pop();return o.result=e,o.keyPrefix=t,o.func=n,o.context=r,o.count=0,o}return{result:e,keyPrefix:t,func:n,context:r,count:0}}function A(e){e.result=null,e.keyPrefix=null,e.func=null,e.context=null,e.count=0,10>R.length&&R.push(e)}function j(e,t,n){return null==e?0:function e(t,n,r,o){var l=typeof t;"undefined"!==l&&"boolean"!==l||(t=null);var u=!1;if(null===t)u=!0;else switch(l){case"string":case"number":u=!0;break;case"object":switch(t.$$typeof){case i:case a:u=!0}}if(u)return r(o,t,""===n?"."+I(t,0):n),1;if(u=0,n=""===n?".":n+":",Array.isArray(t))for(var s=0;s<t.length;s++){var c=n+I(l=t[s],s);u+=e(l,c,r,o)}else if(c=null===t||"object"!=typeof t?null:"function"==typeof(c=y&&t[y]||t["@@iterator"])?c:null,"function"==typeof c)for(t=c.call(t),s=0;!(l=t.next()).done;)u+=e(l=l.value,c=n+I(l,s++),r,o);else"object"===l&&g("31","[object Object]"==(r=""+t)?"object with keys {"+Object.keys(t).join(", ")+"}":r,"");return u}(e,"",t,n)}function I(e,t){return"object"==typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+(""+e).replace(/[=:]/g,function(e){return t[e]})}(e.key):t.toString(36)}function L(e,t){e.func.call(e.context,t,e.count++)}function F(e,t,n){var r=e.result,o=e.keyPrefix;e=e.func.call(e.context,t,e.count++),Array.isArray(e)?U(e,r,n,function(e){return e}):null!=e&&(N(e)&&(e=function(e,t){return{$$typeof:i,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(e,o+(!e.key||t&&t.key===e.key?"":(""+e.key).replace(D,"$&/")+"/")+n)),r.push(e))}function U(e,t,n,r,o){var i="";null!=n&&(i=(""+n).replace(D,"$&/")+"/"),j(e,F,t=M(t,i,r,o)),A(t)}function z(){var e=T.current;return null===e&&g("321"),e}var H={Children:{map:function(e,t,n){if(null==e)return e;var r=[];return U(e,r,null,t,n),r},forEach:function(e,t,n){if(null==e)return e;j(e,L,t=M(null,null,t,n)),A(t)},count:function(e){return j(e,function(){return null},null)},toArray:function(e){var t=[];return U(e,t,null,function(e){return e}),t},only:function(e){return N(e)||g("143"),e}},createRef:function(){return{current:null}},Component:w,PureComponent:C,createContext:function(e,t){return void 0===t&&(t=null),(e={$$typeof:f,_calculateChangedBits:t,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider={$$typeof:c,_context:e},e.Consumer=e},forwardRef:function(e){return{$$typeof:p,render:e}},lazy:function(e){return{$$typeof:v,_ctor:e,_status:-1,_result:null}},memo:function(e,t){return{$$typeof:m,type:e,compare:void 0===t?null:t}},useCallback:function(e,t){return z().useCallback(e,t)},useContext:function(e,t){return z().useContext(e,t)},useEffect:function(e,t){return z().useEffect(e,t)},useImperativeHandle:function(e,t,n){return z().useImperativeHandle(e,t,n)},useDebugValue:function(){},useLayoutEffect:function(e,t){return z().useLayoutEffect(e,t)},useMemo:function(e,t){return z().useMemo(e,t)},useReducer:function(e,t,n){return z().useReducer(e,t,n)},useRef:function(e){return z().useRef(e)},useState:function(e){return z().useState(e)},Fragment:l,StrictMode:u,Suspense:h,createElement:P,cloneElement:function(e,t,n){null==e&&g("267",e);var o=void 0,a=r({},e.props),l=e.key,u=e.ref,s=e._owner;if(null!=t){void 0!==t.ref&&(u=t.ref,s=S.current),void 0!==t.key&&(l=""+t.key);var c=void 0;for(o in e.type&&e.type.defaultProps&&(c=e.type.defaultProps),t)_.call(t,o)&&!O.hasOwnProperty(o)&&(a[o]=void 0===t[o]&&void 0!==c?c[o]:t[o])}if(1===(o=arguments.length-2))a.children=n;else if(1<o){c=Array(o);for(var f=0;f<o;f++)c[f]=arguments[f+2];a.children=c}return{$$typeof:i,type:e.type,key:l,ref:u,props:a,_owner:s}},createFactory:function(e){var t=P.bind(null,e);return t.type=e,t},isValidElement:N,version:"16.8.6",unstable_ConcurrentMode:d,unstable_Profiler:s,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:{ReactCurrentDispatcher:T,ReactCurrentOwner:S,assign:r}},W={default:H},B=W&&H||W;e.exports=B.default||B},function(e,t,n){"use strict";
+ */var o=n(22),r="function"==typeof Symbol&&Symbol.for,i=r?Symbol.for("react.element"):60103,a=r?Symbol.for("react.portal"):60106,s=r?Symbol.for("react.fragment"):60107,l=r?Symbol.for("react.strict_mode"):60108,u=r?Symbol.for("react.profiler"):60114,c=r?Symbol.for("react.provider"):60109,d=r?Symbol.for("react.context"):60110,p=r?Symbol.for("react.concurrent_mode"):60111,h=r?Symbol.for("react.forward_ref"):60112,f=r?Symbol.for("react.suspense"):60113,m=r?Symbol.for("react.memo"):60115,g=r?Symbol.for("react.lazy"):60116,v="function"==typeof Symbol&&Symbol.iterator;function y(e){for(var t=arguments.length-1,n="https://reactjs.org/docs/error-decoder.html?invariant="+e,o=0;o<t;o++)n+="&args[]="+encodeURIComponent(arguments[o+1]);!function(e,t,n,o,r,i,a,s){if(!e){if(e=void 0,void 0===t)e=Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var l=[n,o,r,i,a,s],u=0;(e=Error(t.replace(/%s/g,function(){return l[u++]}))).name="Invariant Violation"}throw e.framesToPop=1,e}}(!1,"Minified React error #"+e+"; visit %s for the full message or use the non-minified dev environment for full errors and additional helpful warnings. ",n)}var b={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},w={};function E(e,t,n){this.props=e,this.context=t,this.refs=w,this.updater=n||b}function C(){}function x(e,t,n){this.props=e,this.context=t,this.refs=w,this.updater=n||b}E.prototype.isReactComponent={},E.prototype.setState=function(e,t){"object"!=typeof e&&"function"!=typeof e&&null!=e&&y("85"),this.updater.enqueueSetState(this,e,t,"setState")},E.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},C.prototype=E.prototype;var T=x.prototype=new C;T.constructor=x,o(T,E.prototype),T.isPureReactComponent=!0;var k={current:null},S={current:null},D=Object.prototype.hasOwnProperty,M={key:!0,ref:!0,__self:!0,__source:!0};function R(e,t,n){var o=void 0,r={},a=null,s=null;if(null!=t)for(o in void 0!==t.ref&&(s=t.ref),void 0!==t.key&&(a=""+t.key),t)D.call(t,o)&&!M.hasOwnProperty(o)&&(r[o]=t[o]);var l=arguments.length-2;if(1===l)r.children=n;else if(1<l){for(var u=Array(l),c=0;c<l;c++)u[c]=arguments[c+2];r.children=u}if(e&&e.defaultProps)for(o in l=e.defaultProps)void 0===r[o]&&(r[o]=l[o]);return{$$typeof:i,type:e,key:a,ref:s,props:r,_owner:S.current}}function P(e){return"object"==typeof e&&null!==e&&e.$$typeof===i}var _=/\/+/g,L=[];function O(e,t,n,o){if(L.length){var r=L.pop();return r.result=e,r.keyPrefix=t,r.func=n,r.context=o,r.count=0,r}return{result:e,keyPrefix:t,func:n,context:o,count:0}}function N(e){e.result=null,e.keyPrefix=null,e.func=null,e.context=null,e.count=0,10>L.length&&L.push(e)}function F(e,t,n){return null==e?0:function e(t,n,o,r){var s=typeof t;"undefined"!==s&&"boolean"!==s||(t=null);var l=!1;if(null===t)l=!0;else switch(s){case"string":case"number":l=!0;break;case"object":switch(t.$$typeof){case i:case a:l=!0}}if(l)return o(r,t,""===n?"."+A(t,0):n),1;if(l=0,n=""===n?".":n+":",Array.isArray(t))for(var u=0;u<t.length;u++){var c=n+A(s=t[u],u);l+=e(s,c,o,r)}else if(c=null===t||"object"!=typeof t?null:"function"==typeof(c=v&&t[v]||t["@@iterator"])?c:null,"function"==typeof c)for(t=c.call(t),u=0;!(s=t.next()).done;)l+=e(s=s.value,c=n+A(s,u++),o,r);else"object"===s&&y("31","[object Object]"==(o=""+t)?"object with keys {"+Object.keys(t).join(", ")+"}":o,"");return l}(e,"",t,n)}function A(e,t){return"object"==typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+(""+e).replace(/[=:]/g,function(e){return t[e]})}(e.key):t.toString(36)}function I(e,t){e.func.call(e.context,t,e.count++)}function H(e,t,n){var o=e.result,r=e.keyPrefix;e=e.func.call(e.context,t,e.count++),Array.isArray(e)?z(e,o,n,function(e){return e}):null!=e&&(P(e)&&(e=function(e,t){return{$$typeof:i,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(e,r+(!e.key||t&&t.key===e.key?"":(""+e.key).replace(_,"$&/")+"/")+n)),o.push(e))}function z(e,t,n,o,r){var i="";null!=n&&(i=(""+n).replace(_,"$&/")+"/"),F(e,H,t=O(t,i,o,r)),N(t)}function j(){var e=k.current;return null===e&&y("321"),e}var B={Children:{map:function(e,t,n){if(null==e)return e;var o=[];return z(e,o,null,t,n),o},forEach:function(e,t,n){if(null==e)return e;F(e,I,t=O(null,null,t,n)),N(t)},count:function(e){return F(e,function(){return null},null)},toArray:function(e){var t=[];return z(e,t,null,function(e){return e}),t},only:function(e){return P(e)||y("143"),e}},createRef:function(){return{current:null}},Component:E,PureComponent:x,createContext:function(e,t){return void 0===t&&(t=null),(e={$$typeof:d,_calculateChangedBits:t,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider={$$typeof:c,_context:e},e.Consumer=e},forwardRef:function(e){return{$$typeof:h,render:e}},lazy:function(e){return{$$typeof:g,_ctor:e,_status:-1,_result:null}},memo:function(e,t){return{$$typeof:m,type:e,compare:void 0===t?null:t}},useCallback:function(e,t){return j().useCallback(e,t)},useContext:function(e,t){return j().useContext(e,t)},useEffect:function(e,t){return j().useEffect(e,t)},useImperativeHandle:function(e,t,n){return j().useImperativeHandle(e,t,n)},useDebugValue:function(){},useLayoutEffect:function(e,t){return j().useLayoutEffect(e,t)},useMemo:function(e,t){return j().useMemo(e,t)},useReducer:function(e,t,n){return j().useReducer(e,t,n)},useRef:function(e){return j().useRef(e)},useState:function(e){return j().useState(e)},Fragment:s,StrictMode:l,Suspense:f,createElement:R,cloneElement:function(e,t,n){null==e&&y("267",e);var r=void 0,a=o({},e.props),s=e.key,l=e.ref,u=e._owner;if(null!=t){void 0!==t.ref&&(l=t.ref,u=S.current),void 0!==t.key&&(s=""+t.key);var c=void 0;for(r in e.type&&e.type.defaultProps&&(c=e.type.defaultProps),t)D.call(t,r)&&!M.hasOwnProperty(r)&&(a[r]=void 0===t[r]&&void 0!==c?c[r]:t[r])}if(1===(r=arguments.length-2))a.children=n;else if(1<r){c=Array(r);for(var d=0;d<r;d++)c[d]=arguments[d+2];a.children=c}return{$$typeof:i,type:e.type,key:s,ref:l,props:a,_owner:u}},createFactory:function(e){var t=R.bind(null,e);return t.type=e,t},isValidElement:P,version:"16.8.6",unstable_ConcurrentMode:p,unstable_Profiler:u,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:{ReactCurrentDispatcher:k,ReactCurrentOwner:S,assign:o}},U={default:B},W=U&&B||U;e.exports=W.default||W},function(e,t,n){"use strict";
/** @license React v16.8.6
* react-dom.production.min.js
*
@@ -30,7 +40,7 @@ object-assign
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
- */var r=n(0),o=n(23),i=n(39);function a(e){for(var t=arguments.length-1,n="https://reactjs.org/docs/error-decoder.html?invariant="+e,r=0;r<t;r++)n+="&args[]="+encodeURIComponent(arguments[r+1]);!function(e,t,n,r,o,i,a,l){if(!e){if(e=void 0,void 0===t)e=Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var u=[n,r,o,i,a,l],s=0;(e=Error(t.replace(/%s/g,function(){return u[s++]}))).name="Invariant Violation"}throw e.framesToPop=1,e}}(!1,"Minified React error #"+e+"; visit %s for the full message or use the non-minified dev environment for full errors and additional helpful warnings. ",n)}r||a("227");var l=!1,u=null,s=!1,c=null,f={onError:function(e){l=!0,u=e}};function d(e,t,n,r,o,i,a,s,c){l=!1,u=null,function(e,t,n,r,o,i,a,l,u){var s=Array.prototype.slice.call(arguments,3);try{t.apply(n,s)}catch(e){this.onError(e)}}.apply(f,arguments)}var p=null,h={};function m(){if(p)for(var e in h){var t=h[e],n=p.indexOf(e);if(-1<n||a("96",e),!y[n])for(var r in t.extractEvents||a("97",e),y[n]=t,n=t.eventTypes){var o=void 0,i=n[r],l=t,u=r;g.hasOwnProperty(u)&&a("99",u),g[u]=i;var s=i.phasedRegistrationNames;if(s){for(o in s)s.hasOwnProperty(o)&&v(s[o],l,u);o=!0}else i.registrationName?(v(i.registrationName,l,u),o=!0):o=!1;o||a("98",r,e)}}}function v(e,t,n){b[e]&&a("100",e),b[e]=t,x[e]=t.eventTypes[n].dependencies}var y=[],g={},b={},x={},w=null,E=null,C=null;function k(e,t,n){var r=e.type||"unknown-event";e.currentTarget=C(n),function(e,t,n,r,o,i,f,p,h){if(d.apply(this,arguments),l){if(l){var m=u;l=!1,u=null}else a("198"),m=void 0;s||(s=!0,c=m)}}(r,t,void 0,e),e.currentTarget=null}function T(e,t){return null==t&&a("30"),null==e?t:Array.isArray(e)?Array.isArray(t)?(e.push.apply(e,t),e):(e.push(t),e):Array.isArray(t)?[e].concat(t):[e,t]}function S(e,t,n){Array.isArray(e)?e.forEach(t,n):e&&t.call(n,e)}var _=null;function O(e){if(e){var t=e._dispatchListeners,n=e._dispatchInstances;if(Array.isArray(t))for(var r=0;r<t.length&&!e.isPropagationStopped();r++)k(e,t[r],n[r]);else t&&k(e,t,n);e._dispatchListeners=null,e._dispatchInstances=null,e.isPersistent()||e.constructor.release(e)}}var P={injectEventPluginOrder:function(e){p&&a("101"),p=Array.prototype.slice.call(e),m()},injectEventPluginsByName:function(e){var t,n=!1;for(t in e)if(e.hasOwnProperty(t)){var r=e[t];h.hasOwnProperty(t)&&h[t]===r||(h[t]&&a("102",t),h[t]=r,n=!0)}n&&m()}};function N(e,t){var n=e.stateNode;if(!n)return null;var r=w(n);if(!r)return null;n=r[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":(r=!r.disabled)||(r=!("button"===(e=e.type)||"input"===e||"select"===e||"textarea"===e)),e=!r;break e;default:e=!1}return e?null:(n&&"function"!=typeof n&&a("231",t,typeof n),n)}function D(e){if(null!==e&&(_=T(_,e)),e=_,_=null,e&&(S(e,O),_&&a("95"),s))throw e=c,s=!1,c=null,e}var R=Math.random().toString(36).slice(2),M="__reactInternalInstance$"+R,A="__reactEventHandlers$"+R;function j(e){if(e[M])return e[M];for(;!e[M];){if(!e.parentNode)return null;e=e.parentNode}return 5===(e=e[M]).tag||6===e.tag?e:null}function I(e){return!(e=e[M])||5!==e.tag&&6!==e.tag?null:e}function L(e){if(5===e.tag||6===e.tag)return e.stateNode;a("33")}function F(e){return e[A]||null}function U(e){do{e=e.return}while(e&&5!==e.tag);return e||null}function z(e,t,n){(t=N(e,n.dispatchConfig.phasedRegistrationNames[t]))&&(n._dispatchListeners=T(n._dispatchListeners,t),n._dispatchInstances=T(n._dispatchInstances,e))}function H(e){if(e&&e.dispatchConfig.phasedRegistrationNames){for(var t=e._targetInst,n=[];t;)n.push(t),t=U(t);for(t=n.length;0<t--;)z(n[t],"captured",e);for(t=0;t<n.length;t++)z(n[t],"bubbled",e)}}function W(e,t,n){e&&n&&n.dispatchConfig.registrationName&&(t=N(e,n.dispatchConfig.registrationName))&&(n._dispatchListeners=T(n._dispatchListeners,t),n._dispatchInstances=T(n._dispatchInstances,e))}function B(e){e&&e.dispatchConfig.registrationName&&W(e._targetInst,null,e)}function q(e){S(e,H)}var $=!("undefined"==typeof window||!window.document||!window.document.createElement);function V(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var G={animationend:V("Animation","AnimationEnd"),animationiteration:V("Animation","AnimationIteration"),animationstart:V("Animation","AnimationStart"),transitionend:V("Transition","TransitionEnd")},K={},Q={};function Y(e){if(K[e])return K[e];if(!G[e])return e;var t,n=G[e];for(t in n)if(n.hasOwnProperty(t)&&t in Q)return K[e]=n[t];return e}$&&(Q=document.createElement("div").style,"AnimationEvent"in window||(delete G.animationend.animation,delete G.animationiteration.animation,delete G.animationstart.animation),"TransitionEvent"in window||delete G.transitionend.transition);var X=Y("animationend"),J=Y("animationiteration"),Z=Y("animationstart"),ee=Y("transitionend"),te="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),ne=null,re=null,oe=null;function ie(){if(oe)return oe;var e,t,n=re,r=n.length,o="value"in ne?ne.value:ne.textContent,i=o.length;for(e=0;e<r&&n[e]===o[e];e++);var a=r-e;for(t=1;t<=a&&n[r-t]===o[i-t];t++);return oe=o.slice(e,1<t?1-t:void 0)}function ae(){return!0}function le(){return!1}function ue(e,t,n,r){for(var o in this.dispatchConfig=e,this._targetInst=t,this.nativeEvent=n,e=this.constructor.Interface)e.hasOwnProperty(o)&&((t=e[o])?this[o]=t(n):"target"===o?this.target=r:this[o]=n[o]);return this.isDefaultPrevented=(null!=n.defaultPrevented?n.defaultPrevented:!1===n.returnValue)?ae:le,this.isPropagationStopped=le,this}function se(e,t,n,r){if(this.eventPool.length){var o=this.eventPool.pop();return this.call(o,e,t,n,r),o}return new this(e,t,n,r)}function ce(e){e instanceof this||a("279"),e.destructor(),10>this.eventPool.length&&this.eventPool.push(e)}function fe(e){e.eventPool=[],e.getPooled=se,e.release=ce}o(ue.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=ae)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=ae)},persist:function(){this.isPersistent=ae},isPersistent:le,destructor:function(){var e,t=this.constructor.Interface;for(e in t)this[e]=null;this.nativeEvent=this._targetInst=this.dispatchConfig=null,this.isPropagationStopped=this.isDefaultPrevented=le,this._dispatchInstances=this._dispatchListeners=null}}),ue.Interface={type:null,target:null,currentTarget:function(){return null},eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null},ue.extend=function(e){function t(){}function n(){return r.apply(this,arguments)}var r=this;t.prototype=r.prototype;var i=new t;return o(i,n.prototype),n.prototype=i,n.prototype.constructor=n,n.Interface=o({},r.Interface,e),n.extend=r.extend,fe(n),n},fe(ue);var de=ue.extend({data:null}),pe=ue.extend({data:null}),he=[9,13,27,32],me=$&&"CompositionEvent"in window,ve=null;$&&"documentMode"in document&&(ve=document.documentMode);var ye=$&&"TextEvent"in window&&!ve,ge=$&&(!me||ve&&8<ve&&11>=ve),be=String.fromCharCode(32),xe={beforeInput:{phasedRegistrationNames:{bubbled:"onBeforeInput",captured:"onBeforeInputCapture"},dependencies:["compositionend","keypress","textInput","paste"]},compositionEnd:{phasedRegistrationNames:{bubbled:"onCompositionEnd",captured:"onCompositionEndCapture"},dependencies:"blur compositionend keydown keypress keyup mousedown".split(" ")},compositionStart:{phasedRegistrationNames:{bubbled:"onCompositionStart",captured:"onCompositionStartCapture"},dependencies:"blur compositionstart keydown keypress keyup mousedown".split(" ")},compositionUpdate:{phasedRegistrationNames:{bubbled:"onCompositionUpdate",captured:"onCompositionUpdateCapture"},dependencies:"blur compositionupdate keydown keypress keyup mousedown".split(" ")}},we=!1;function Ee(e,t){switch(e){case"keyup":return-1!==he.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"blur":return!0;default:return!1}}function Ce(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var ke=!1;var Te={eventTypes:xe,extractEvents:function(e,t,n,r){var o=void 0,i=void 0;if(me)e:{switch(e){case"compositionstart":o=xe.compositionStart;break e;case"compositionend":o=xe.compositionEnd;break e;case"compositionupdate":o=xe.compositionUpdate;break e}o=void 0}else ke?Ee(e,n)&&(o=xe.compositionEnd):"keydown"===e&&229===n.keyCode&&(o=xe.compositionStart);return o?(ge&&"ko"!==n.locale&&(ke||o!==xe.compositionStart?o===xe.compositionEnd&&ke&&(i=ie()):(re="value"in(ne=r)?ne.value:ne.textContent,ke=!0)),o=de.getPooled(o,t,n,r),i?o.data=i:null!==(i=Ce(n))&&(o.data=i),q(o),i=o):i=null,(e=ye?function(e,t){switch(e){case"compositionend":return Ce(t);case"keypress":return 32!==t.which?null:(we=!0,be);case"textInput":return(e=t.data)===be&&we?null:e;default:return null}}(e,n):function(e,t){if(ke)return"compositionend"===e||!me&&Ee(e,t)?(e=ie(),oe=re=ne=null,ke=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return ge&&"ko"!==t.locale?null:t.data;default:return null}}(e,n))?((t=pe.getPooled(xe.beforeInput,t,n,r)).data=e,q(t)):t=null,null===i?t:null===t?i:[i,t]}},Se=null,_e=null,Oe=null;function Pe(e){if(e=E(e)){"function"!=typeof Se&&a("280");var t=w(e.stateNode);Se(e.stateNode,e.type,t)}}function Ne(e){_e?Oe?Oe.push(e):Oe=[e]:_e=e}function De(){if(_e){var e=_e,t=Oe;if(Oe=_e=null,Pe(e),t)for(e=0;e<t.length;e++)Pe(t[e])}}function Re(e,t){return e(t)}function Me(e,t,n){return e(t,n)}function Ae(){}var je=!1;function Ie(e,t){if(je)return e(t);je=!0;try{return Re(e,t)}finally{je=!1,(null!==_e||null!==Oe)&&(Ae(),De())}}var Le={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Fe(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!Le[e.type]:"textarea"===t}function Ue(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}function ze(e){if(!$)return!1;var t=(e="on"+e)in document;return t||((t=document.createElement("div")).setAttribute(e,"return;"),t="function"==typeof t[e]),t}function He(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function We(e){e._valueTracker||(e._valueTracker=function(e){var t=He(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&void 0!==n&&"function"==typeof n.get&&"function"==typeof n.set){var o=n.get,i=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return o.call(this)},set:function(e){r=""+e,i.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(e){r=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function Be(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=He(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}var qe=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;qe.hasOwnProperty("ReactCurrentDispatcher")||(qe.ReactCurrentDispatcher={current:null});var $e=/^(.*)[\\\/]/,Ve="function"==typeof Symbol&&Symbol.for,Ge=Ve?Symbol.for("react.element"):60103,Ke=Ve?Symbol.for("react.portal"):60106,Qe=Ve?Symbol.for("react.fragment"):60107,Ye=Ve?Symbol.for("react.strict_mode"):60108,Xe=Ve?Symbol.for("react.profiler"):60114,Je=Ve?Symbol.for("react.provider"):60109,Ze=Ve?Symbol.for("react.context"):60110,et=Ve?Symbol.for("react.concurrent_mode"):60111,tt=Ve?Symbol.for("react.forward_ref"):60112,nt=Ve?Symbol.for("react.suspense"):60113,rt=Ve?Symbol.for("react.memo"):60115,ot=Ve?Symbol.for("react.lazy"):60116,it="function"==typeof Symbol&&Symbol.iterator;function at(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=it&&e[it]||e["@@iterator"])?e:null}function lt(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case et:return"ConcurrentMode";case Qe:return"Fragment";case Ke:return"Portal";case Xe:return"Profiler";case Ye:return"StrictMode";case nt:return"Suspense"}if("object"==typeof e)switch(e.$$typeof){case Ze:return"Context.Consumer";case Je:return"Context.Provider";case tt:var t=e.render;return t=t.displayName||t.name||"",e.displayName||(""!==t?"ForwardRef("+t+")":"ForwardRef");case rt:return lt(e.type);case ot:if(e=1===e._status?e._result:null)return lt(e)}return null}function ut(e){var t="";do{e:switch(e.tag){case 3:case 4:case 6:case 7:case 10:case 9:var n="";break e;default:var r=e._debugOwner,o=e._debugSource,i=lt(e.type);n=null,r&&(n=lt(r.type)),r=i,i="",o?i=" (at "+o.fileName.replace($e,"")+":"+o.lineNumber+")":n&&(i=" (created by "+n+")"),n="\n in "+(r||"Unknown")+i}t+=n,e=e.return}while(e);return t}var st=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,ct=Object.prototype.hasOwnProperty,ft={},dt={};function pt(e,t,n,r,o){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=r,this.attributeNamespace=o,this.mustUseProperty=n,this.propertyName=e,this.type=t}var ht={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){ht[e]=new pt(e,0,!1,e,null)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];ht[t]=new pt(t,1,!1,e[1],null)}),["contentEditable","draggable","spellCheck","value"].forEach(function(e){ht[e]=new pt(e,2,!1,e.toLowerCase(),null)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){ht[e]=new pt(e,2,!1,e,null)}),"allowFullScreen async autoFocus autoPlay controls default defer disabled formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){ht[e]=new pt(e,3,!1,e.toLowerCase(),null)}),["checked","multiple","muted","selected"].forEach(function(e){ht[e]=new pt(e,3,!0,e,null)}),["capture","download"].forEach(function(e){ht[e]=new pt(e,4,!1,e,null)}),["cols","rows","size","span"].forEach(function(e){ht[e]=new pt(e,6,!1,e,null)}),["rowSpan","start"].forEach(function(e){ht[e]=new pt(e,5,!1,e.toLowerCase(),null)});var mt=/[\-:]([a-z])/g;function vt(e){return e[1].toUpperCase()}function yt(e,t,n,r){var o=ht.hasOwnProperty(t)?ht[t]:null;(null!==o?0===o.type:!r&&(2<t.length&&("o"===t[0]||"O"===t[0])&&("n"===t[1]||"N"===t[1])))||(function(e,t,n,r){if(null==t||function(e,t,n,r){if(null!==n&&0===n.type)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return!r&&(null!==n?!n.acceptsBooleans:"data-"!==(e=e.toLowerCase().slice(0,5))&&"aria-"!==e);default:return!1}}(e,t,n,r))return!0;if(r)return!1;if(null!==n)switch(n.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}(t,n,o,r)&&(n=null),r||null===o?function(e){return!!ct.call(dt,e)||!ct.call(ft,e)&&(st.test(e)?dt[e]=!0:(ft[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,""+n)):o.mustUseProperty?e[o.propertyName]=null===n?3!==o.type&&"":n:(t=o.attributeName,r=o.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(o=o.type)||4===o&&!0===n?"":""+n,r?e.setAttributeNS(r,t,n):e.setAttribute(t,n))))}function gt(e){switch(typeof e){case"boolean":case"number":case"object":case"string":case"undefined":return e;default:return""}}function bt(e,t){var n=t.checked;return o({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function xt(e,t){var n=null==t.defaultValue?"":t.defaultValue,r=null!=t.checked?t.checked:t.defaultChecked;n=gt(null!=t.value?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function wt(e,t){null!=(t=t.checked)&&yt(e,"checked",t,!1)}function Et(e,t){wt(e,t);var n=gt(t.value),r=t.type;if(null!=n)"number"===r?(0===n&&""===e.value||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if("submit"===r||"reset"===r)return void e.removeAttribute("value");t.hasOwnProperty("value")?kt(e,t.type,n):t.hasOwnProperty("defaultValue")&&kt(e,t.type,gt(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function Ct(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!("submit"!==r&&"reset"!==r||void 0!==t.value&&null!==t.value))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}""!==(n=e.name)&&(e.name=""),e.defaultChecked=!e.defaultChecked,e.defaultChecked=!!e._wrapperState.initialChecked,""!==n&&(e.name=n)}function kt(e,t,n){"number"===t&&e.ownerDocument.activeElement===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(mt,vt);ht[t]=new pt(t,1,!1,e,null)}),"xlink:actuate xlink:arcrole xlink:href xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(mt,vt);ht[t]=new pt(t,1,!1,e,"http://www.w3.org/1999/xlink")}),["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(mt,vt);ht[t]=new pt(t,1,!1,e,"http://www.w3.org/XML/1998/namespace")}),["tabIndex","crossOrigin"].forEach(function(e){ht[e]=new pt(e,1,!1,e.toLowerCase(),null)});var Tt={change:{phasedRegistrationNames:{bubbled:"onChange",captured:"onChangeCapture"},dependencies:"blur change click focus input keydown keyup selectionchange".split(" ")}};function St(e,t,n){return(e=ue.getPooled(Tt.change,e,t,n)).type="change",Ne(n),q(e),e}var _t=null,Ot=null;function Pt(e){D(e)}function Nt(e){if(Be(L(e)))return e}function Dt(e,t){if("change"===e)return t}var Rt=!1;function Mt(){_t&&(_t.detachEvent("onpropertychange",At),Ot=_t=null)}function At(e){"value"===e.propertyName&&Nt(Ot)&&Ie(Pt,e=St(Ot,e,Ue(e)))}function jt(e,t,n){"focus"===e?(Mt(),Ot=n,(_t=t).attachEvent("onpropertychange",At)):"blur"===e&&Mt()}function It(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return Nt(Ot)}function Lt(e,t){if("click"===e)return Nt(t)}function Ft(e,t){if("input"===e||"change"===e)return Nt(t)}$&&(Rt=ze("input")&&(!document.documentMode||9<document.documentMode));var Ut={eventTypes:Tt,_isInputEventSupported:Rt,extractEvents:function(e,t,n,r){var o=t?L(t):window,i=void 0,a=void 0,l=o.nodeName&&o.nodeName.toLowerCase();if("select"===l||"input"===l&&"file"===o.type?i=Dt:Fe(o)?Rt?i=Ft:(i=It,a=jt):(l=o.nodeName)&&"input"===l.toLowerCase()&&("checkbox"===o.type||"radio"===o.type)&&(i=Lt),i&&(i=i(e,t)))return St(i,n,r);a&&a(e,o,t),"blur"===e&&(e=o._wrapperState)&&e.controlled&&"number"===o.type&&kt(o,"number",o.value)}},zt=ue.extend({view:null,detail:null}),Ht={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Wt(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=Ht[e])&&!!t[e]}function Bt(){return Wt}var qt=0,$t=0,Vt=!1,Gt=!1,Kt=zt.extend({screenX:null,screenY:null,clientX:null,clientY:null,pageX:null,pageY:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,getModifierState:Bt,button:null,buttons:null,relatedTarget:function(e){return e.relatedTarget||(e.fromElement===e.srcElement?e.toElement:e.fromElement)},movementX:function(e){if("movementX"in e)return e.movementX;var t=qt;return qt=e.screenX,Vt?"mousemove"===e.type?e.screenX-t:0:(Vt=!0,0)},movementY:function(e){if("movementY"in e)return e.movementY;var t=$t;return $t=e.screenY,Gt?"mousemove"===e.type?e.screenY-t:0:(Gt=!0,0)}}),Qt=Kt.extend({pointerId:null,width:null,height:null,pressure:null,tangentialPressure:null,tiltX:null,tiltY:null,twist:null,pointerType:null,isPrimary:null}),Yt={mouseEnter:{registrationName:"onMouseEnter",dependencies:["mouseout","mouseover"]},mouseLeave:{registrationName:"onMouseLeave",dependencies:["mouseout","mouseover"]},pointerEnter:{registrationName:"onPointerEnter",dependencies:["pointerout","pointerover"]},pointerLeave:{registrationName:"onPointerLeave",dependencies:["pointerout","pointerover"]}},Xt={eventTypes:Yt,extractEvents:function(e,t,n,r){var o="mouseover"===e||"pointerover"===e,i="mouseout"===e||"pointerout"===e;if(o&&(n.relatedTarget||n.fromElement)||!i&&!o)return null;if(o=r.window===r?r:(o=r.ownerDocument)?o.defaultView||o.parentWindow:window,i?(i=t,t=(t=n.relatedTarget||n.toElement)?j(t):null):i=null,i===t)return null;var a=void 0,l=void 0,u=void 0,s=void 0;"mouseout"===e||"mouseover"===e?(a=Kt,l=Yt.mouseLeave,u=Yt.mouseEnter,s="mouse"):"pointerout"!==e&&"pointerover"!==e||(a=Qt,l=Yt.pointerLeave,u=Yt.pointerEnter,s="pointer");var c=null==i?o:L(i);if(o=null==t?o:L(t),(e=a.getPooled(l,i,n,r)).type=s+"leave",e.target=c,e.relatedTarget=o,(n=a.getPooled(u,t,n,r)).type=s+"enter",n.target=o,n.relatedTarget=c,r=t,i&&r)e:{for(o=r,s=0,a=t=i;a;a=U(a))s++;for(a=0,u=o;u;u=U(u))a++;for(;0<s-a;)t=U(t),s--;for(;0<a-s;)o=U(o),a--;for(;s--;){if(t===o||t===o.alternate)break e;t=U(t),o=U(o)}t=null}else t=null;for(o=t,t=[];i&&i!==o&&(null===(s=i.alternate)||s!==o);)t.push(i),i=U(i);for(i=[];r&&r!==o&&(null===(s=r.alternate)||s!==o);)i.push(r),r=U(r);for(r=0;r<t.length;r++)W(t[r],"bubbled",e);for(r=i.length;0<r--;)W(i[r],"captured",n);return[e,n]}};function Jt(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t}var Zt=Object.prototype.hasOwnProperty;function en(e,t){if(Jt(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++)if(!Zt.call(t,n[r])||!Jt(e[n[r]],t[n[r]]))return!1;return!0}function tn(e){var t=e;if(e.alternate)for(;t.return;)t=t.return;else{if(0!=(2&t.effectTag))return 1;for(;t.return;)if(0!=(2&(t=t.return).effectTag))return 1}return 3===t.tag?2:3}function nn(e){2!==tn(e)&&a("188")}function rn(e){if(!(e=function(e){var t=e.alternate;if(!t)return 3===(t=tn(e))&&a("188"),1===t?null:e;for(var n=e,r=t;;){var o=n.return,i=o?o.alternate:null;if(!o||!i)break;if(o.child===i.child){for(var l=o.child;l;){if(l===n)return nn(o),e;if(l===r)return nn(o),t;l=l.sibling}a("188")}if(n.return!==r.return)n=o,r=i;else{l=!1;for(var u=o.child;u;){if(u===n){l=!0,n=o,r=i;break}if(u===r){l=!0,r=o,n=i;break}u=u.sibling}if(!l){for(u=i.child;u;){if(u===n){l=!0,n=i,r=o;break}if(u===r){l=!0,r=i,n=o;break}u=u.sibling}l||a("189")}}n.alternate!==r&&a("190")}return 3!==n.tag&&a("188"),n.stateNode.current===n?e:t}(e)))return null;for(var t=e;;){if(5===t.tag||6===t.tag)return t;if(t.child)t.child.return=t,t=t.child;else{if(t===e)break;for(;!t.sibling;){if(!t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}}return null}var on=ue.extend({animationName:null,elapsedTime:null,pseudoElement:null}),an=ue.extend({clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),ln=zt.extend({relatedTarget:null});function un(e){var t=e.keyCode;return"charCode"in e?0===(e=e.charCode)&&13===t&&(e=13):e=t,10===e&&(e=13),32<=e||13===e?e:0}var sn={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},cn={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},fn=zt.extend({key:function(e){if(e.key){var t=sn[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=un(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?cn[e.keyCode]||"Unidentified":""},location:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,repeat:null,locale:null,getModifierState:Bt,charCode:function(e){return"keypress"===e.type?un(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?un(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}}),dn=Kt.extend({dataTransfer:null}),pn=zt.extend({touches:null,targetTouches:null,changedTouches:null,altKey:null,metaKey:null,ctrlKey:null,shiftKey:null,getModifierState:Bt}),hn=ue.extend({propertyName:null,elapsedTime:null,pseudoElement:null}),mn=Kt.extend({deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:null,deltaMode:null}),vn=[["abort","abort"],[X,"animationEnd"],[J,"animationIteration"],[Z,"animationStart"],["canplay","canPlay"],["canplaythrough","canPlayThrough"],["drag","drag"],["dragenter","dragEnter"],["dragexit","dragExit"],["dragleave","dragLeave"],["dragover","dragOver"],["durationchange","durationChange"],["emptied","emptied"],["encrypted","encrypted"],["ended","ended"],["error","error"],["gotpointercapture","gotPointerCapture"],["load","load"],["loadeddata","loadedData"],["loadedmetadata","loadedMetadata"],["loadstart","loadStart"],["lostpointercapture","lostPointerCapture"],["mousemove","mouseMove"],["mouseout","mouseOut"],["mouseover","mouseOver"],["playing","playing"],["pointermove","pointerMove"],["pointerout","pointerOut"],["pointerover","pointerOver"],["progress","progress"],["scroll","scroll"],["seeking","seeking"],["stalled","stalled"],["suspend","suspend"],["timeupdate","timeUpdate"],["toggle","toggle"],["touchmove","touchMove"],[ee,"transitionEnd"],["waiting","waiting"],["wheel","wheel"]],yn={},gn={};function bn(e,t){var n=e[0],r="on"+((e=e[1])[0].toUpperCase()+e.slice(1));t={phasedRegistrationNames:{bubbled:r,captured:r+"Capture"},dependencies:[n],isInteractive:t},yn[e]=t,gn[n]=t}[["blur","blur"],["cancel","cancel"],["click","click"],["close","close"],["contextmenu","contextMenu"],["copy","copy"],["cut","cut"],["auxclick","auxClick"],["dblclick","doubleClick"],["dragend","dragEnd"],["dragstart","dragStart"],["drop","drop"],["focus","focus"],["input","input"],["invalid","invalid"],["keydown","keyDown"],["keypress","keyPress"],["keyup","keyUp"],["mousedown","mouseDown"],["mouseup","mouseUp"],["paste","paste"],["pause","pause"],["play","play"],["pointercancel","pointerCancel"],["pointerdown","pointerDown"],["pointerup","pointerUp"],["ratechange","rateChange"],["reset","reset"],["seeked","seeked"],["submit","submit"],["touchcancel","touchCancel"],["touchend","touchEnd"],["touchstart","touchStart"],["volumechange","volumeChange"]].forEach(function(e){bn(e,!0)}),vn.forEach(function(e){bn(e,!1)});var xn={eventTypes:yn,isInteractiveTopLevelEventType:function(e){return void 0!==(e=gn[e])&&!0===e.isInteractive},extractEvents:function(e,t,n,r){var o=gn[e];if(!o)return null;switch(e){case"keypress":if(0===un(n))return null;case"keydown":case"keyup":e=fn;break;case"blur":case"focus":e=ln;break;case"click":if(2===n.button)return null;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":e=Kt;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":e=dn;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":e=pn;break;case X:case J:case Z:e=on;break;case ee:e=hn;break;case"scroll":e=zt;break;case"wheel":e=mn;break;case"copy":case"cut":case"paste":e=an;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":e=Qt;break;default:e=ue}return q(t=e.getPooled(o,t,n,r)),t}},wn=xn.isInteractiveTopLevelEventType,En=[];function Cn(e){var t=e.targetInst,n=t;do{if(!n){e.ancestors.push(n);break}var r;for(r=n;r.return;)r=r.return;if(!(r=3!==r.tag?null:r.stateNode.containerInfo))break;e.ancestors.push(n),n=j(r)}while(n);for(n=0;n<e.ancestors.length;n++){t=e.ancestors[n];var o=Ue(e.nativeEvent);r=e.topLevelType;for(var i=e.nativeEvent,a=null,l=0;l<y.length;l++){var u=y[l];u&&(u=u.extractEvents(r,t,i,o))&&(a=T(a,u))}D(a)}}var kn=!0;function Tn(e,t){if(!t)return null;var n=(wn(e)?_n:On).bind(null,e);t.addEventListener(e,n,!1)}function Sn(e,t){if(!t)return null;var n=(wn(e)?_n:On).bind(null,e);t.addEventListener(e,n,!0)}function _n(e,t){Me(On,e,t)}function On(e,t){if(kn){var n=Ue(t);if(null===(n=j(n))||"number"!=typeof n.tag||2===tn(n)||(n=null),En.length){var r=En.pop();r.topLevelType=e,r.nativeEvent=t,r.targetInst=n,e=r}else e={topLevelType:e,nativeEvent:t,targetInst:n,ancestors:[]};try{Ie(Cn,e)}finally{e.topLevelType=null,e.nativeEvent=null,e.targetInst=null,e.ancestors.length=0,10>En.length&&En.push(e)}}}var Pn={},Nn=0,Dn="_reactListenersID"+(""+Math.random()).slice(2);function Rn(e){return Object.prototype.hasOwnProperty.call(e,Dn)||(e[Dn]=Nn++,Pn[e[Dn]]={}),Pn[e[Dn]]}function Mn(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}function An(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function jn(e,t){var n,r=An(e);for(e=0;r;){if(3===r.nodeType){if(n=e+r.textContent.length,e<=t&&n>=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=An(r)}}function In(){for(var e=window,t=Mn();t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(e){n=!1}if(!n)break;t=Mn((e=t.contentWindow).document)}return t}function Ln(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}function Fn(e){var t=In(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&function e(t,n){return!(!t||!n)&&(t===n||(!t||3!==t.nodeType)&&(n&&3===n.nodeType?e(t,n.parentNode):"contains"in t?t.contains(n):!!t.compareDocumentPosition&&!!(16&t.compareDocumentPosition(n))))}(n.ownerDocument.documentElement,n)){if(null!==r&&Ln(n))if(t=r.start,void 0===(e=r.end)&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if((e=(t=n.ownerDocument||document)&&t.defaultView||window).getSelection){e=e.getSelection();var o=n.textContent.length,i=Math.min(r.start,o);r=void 0===r.end?i:Math.min(r.end,o),!e.extend&&i>r&&(o=r,r=i,i=o),o=jn(n,i);var a=jn(n,r);o&&a&&(1!==e.rangeCount||e.anchorNode!==o.node||e.anchorOffset!==o.offset||e.focusNode!==a.node||e.focusOffset!==a.offset)&&((t=t.createRange()).setStart(o.node,o.offset),e.removeAllRanges(),i>r?(e.addRange(t),e.extend(a.node,a.offset)):(t.setEnd(a.node,a.offset),e.addRange(t)))}for(t=[],e=n;e=e.parentNode;)1===e.nodeType&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for("function"==typeof n.focus&&n.focus(),n=0;n<t.length;n++)(e=t[n]).element.scrollLeft=e.left,e.element.scrollTop=e.top}}var Un=$&&"documentMode"in document&&11>=document.documentMode,zn={select:{phasedRegistrationNames:{bubbled:"onSelect",captured:"onSelectCapture"},dependencies:"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange".split(" ")}},Hn=null,Wn=null,Bn=null,qn=!1;function $n(e,t){var n=t.window===t?t.document:9===t.nodeType?t:t.ownerDocument;return qn||null==Hn||Hn!==Mn(n)?null:("selectionStart"in(n=Hn)&&Ln(n)?n={start:n.selectionStart,end:n.selectionEnd}:n={anchorNode:(n=(n.ownerDocument&&n.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:n.anchorOffset,focusNode:n.focusNode,focusOffset:n.focusOffset},Bn&&en(Bn,n)?null:(Bn=n,(e=ue.getPooled(zn.select,Wn,e,t)).type="select",e.target=Hn,q(e),e))}var Vn={eventTypes:zn,extractEvents:function(e,t,n,r){var o,i=r.window===r?r.document:9===r.nodeType?r:r.ownerDocument;if(!(o=!i)){e:{i=Rn(i),o=x.onSelect;for(var a=0;a<o.length;a++){var l=o[a];if(!i.hasOwnProperty(l)||!i[l]){i=!1;break e}}i=!0}o=!i}if(o)return null;switch(i=t?L(t):window,e){case"focus":(Fe(i)||"true"===i.contentEditable)&&(Hn=i,Wn=t,Bn=null);break;case"blur":Bn=Wn=Hn=null;break;case"mousedown":qn=!0;break;case"contextmenu":case"mouseup":case"dragend":return qn=!1,$n(n,r);case"selectionchange":if(Un)break;case"keydown":case"keyup":return $n(n,r)}return null}};function Gn(e,t){return e=o({children:void 0},t),(t=function(e){var t="";return r.Children.forEach(e,function(e){null!=e&&(t+=e)}),t}(t.children))&&(e.children=t),e}function Kn(e,t,n,r){if(e=e.options,t){t={};for(var o=0;o<n.length;o++)t["$"+n[o]]=!0;for(n=0;n<e.length;n++)o=t.hasOwnProperty("$"+e[n].value),e[n].selected!==o&&(e[n].selected=o),o&&r&&(e[n].defaultSelected=!0)}else{for(n=""+gt(n),t=null,o=0;o<e.length;o++){if(e[o].value===n)return e[o].selected=!0,void(r&&(e[o].defaultSelected=!0));null!==t||e[o].disabled||(t=e[o])}null!==t&&(t.selected=!0)}}function Qn(e,t){return null!=t.dangerouslySetInnerHTML&&a("91"),o({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function Yn(e,t){var n=t.value;null==n&&(n=t.defaultValue,null!=(t=t.children)&&(null!=n&&a("92"),Array.isArray(t)&&(1>=t.length||a("93"),t=t[0]),n=t),null==n&&(n="")),e._wrapperState={initialValue:gt(n)}}function Xn(e,t){var n=gt(t.value),r=gt(t.defaultValue);null!=n&&((n=""+n)!==e.value&&(e.value=n),null==t.defaultValue&&e.defaultValue!==n&&(e.defaultValue=n)),null!=r&&(e.defaultValue=""+r)}function Jn(e){var t=e.textContent;t===e._wrapperState.initialValue&&(e.value=t)}P.injectEventPluginOrder("ResponderEventPlugin SimpleEventPlugin EnterLeaveEventPlugin ChangeEventPlugin SelectEventPlugin BeforeInputEventPlugin".split(" ")),w=F,E=I,C=L,P.injectEventPluginsByName({SimpleEventPlugin:xn,EnterLeaveEventPlugin:Xt,ChangeEventPlugin:Ut,SelectEventPlugin:Vn,BeforeInputEventPlugin:Te});var Zn={html:"http://www.w3.org/1999/xhtml",mathml:"http://www.w3.org/1998/Math/MathML",svg:"http://www.w3.org/2000/svg"};function er(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function tr(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?er(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var nr=void 0,rr=function(e){return"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(t,n,r,o){MSApp.execUnsafeLocalFunction(function(){return e(t,n)})}:e}(function(e,t){if(e.namespaceURI!==Zn.svg||"innerHTML"in e)e.innerHTML=t;else{for((nr=nr||document.createElement("div")).innerHTML="<svg>"+t+"</svg>",t=nr.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function or(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}var ir={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},ar=["Webkit","ms","Moz","O"];function lr(e,t,n){return null==t||"boolean"==typeof t||""===t?"":n||"number"!=typeof t||0===t||ir.hasOwnProperty(e)&&ir[e]?(""+t).trim():t+"px"}function ur(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var r=0===n.indexOf("--"),o=lr(n,t[n],r);"float"===n&&(n="cssFloat"),r?e.setProperty(n,o):e[n]=o}}Object.keys(ir).forEach(function(e){ar.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),ir[t]=ir[e]})});var sr=o({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function cr(e,t){t&&(sr[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML)&&a("137",e,""),null!=t.dangerouslySetInnerHTML&&(null!=t.children&&a("60"),"object"==typeof t.dangerouslySetInnerHTML&&"__html"in t.dangerouslySetInnerHTML||a("61")),null!=t.style&&"object"!=typeof t.style&&a("62",""))}function fr(e,t){if(-1===e.indexOf("-"))return"string"==typeof t.is;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}function dr(e,t){var n=Rn(e=9===e.nodeType||11===e.nodeType?e:e.ownerDocument);t=x[t];for(var r=0;r<t.length;r++){var o=t[r];if(!n.hasOwnProperty(o)||!n[o]){switch(o){case"scroll":Sn("scroll",e);break;case"focus":case"blur":Sn("focus",e),Sn("blur",e),n.blur=!0,n.focus=!0;break;case"cancel":case"close":ze(o)&&Sn(o,e);break;case"invalid":case"submit":case"reset":break;default:-1===te.indexOf(o)&&Tn(o,e)}n[o]=!0}}}function pr(){}var hr=null,mr=null;function vr(e,t){switch(e){case"button":case"input":case"select":case"textarea":return!!t.autoFocus}return!1}function yr(e,t){return"textarea"===e||"option"===e||"noscript"===e||"string"==typeof t.children||"number"==typeof t.children||"object"==typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var gr="function"==typeof setTimeout?setTimeout:void 0,br="function"==typeof clearTimeout?clearTimeout:void 0,xr=i.unstable_scheduleCallback,wr=i.unstable_cancelCallback;function Er(e){for(e=e.nextSibling;e&&1!==e.nodeType&&3!==e.nodeType;)e=e.nextSibling;return e}function Cr(e){for(e=e.firstChild;e&&1!==e.nodeType&&3!==e.nodeType;)e=e.nextSibling;return e}new Set;var kr=[],Tr=-1;function Sr(e){0>Tr||(e.current=kr[Tr],kr[Tr]=null,Tr--)}function _r(e,t){kr[++Tr]=e.current,e.current=t}var Or={},Pr={current:Or},Nr={current:!1},Dr=Or;function Rr(e,t){var n=e.type.contextTypes;if(!n)return Or;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var o,i={};for(o in n)i[o]=t[o];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=i),i}function Mr(e){return null!=(e=e.childContextTypes)}function Ar(e){Sr(Nr),Sr(Pr)}function jr(e){Sr(Nr),Sr(Pr)}function Ir(e,t,n){Pr.current!==Or&&a("168"),_r(Pr,t),_r(Nr,n)}function Lr(e,t,n){var r=e.stateNode;if(e=t.childContextTypes,"function"!=typeof r.getChildContext)return n;for(var i in r=r.getChildContext())i in e||a("108",lt(t)||"Unknown",i);return o({},n,r)}function Fr(e){var t=e.stateNode;return t=t&&t.__reactInternalMemoizedMergedChildContext||Or,Dr=Pr.current,_r(Pr,t),_r(Nr,Nr.current),!0}function Ur(e,t,n){var r=e.stateNode;r||a("169"),n?(t=Lr(e,t,Dr),r.__reactInternalMemoizedMergedChildContext=t,Sr(Nr),Sr(Pr),_r(Pr,t)):Sr(Nr),_r(Nr,n)}var zr=null,Hr=null;function Wr(e){return function(t){try{return e(t)}catch(e){}}}function Br(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.contextDependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.effectTag=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.childExpirationTime=this.expirationTime=0,this.alternate=null}function qr(e,t,n,r){return new Br(e,t,n,r)}function $r(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Vr(e,t){var n=e.alternate;return null===n?((n=qr(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.effectTag=0,n.nextEffect=null,n.firstEffect=null,n.lastEffect=null),n.childExpirationTime=e.childExpirationTime,n.expirationTime=e.expirationTime,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,n.contextDependencies=e.contextDependencies,n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Gr(e,t,n,r,o,i){var l=2;if(r=e,"function"==typeof e)$r(e)&&(l=1);else if("string"==typeof e)l=5;else e:switch(e){case Qe:return Kr(n.children,o,i,t);case et:return Qr(n,3|o,i,t);case Ye:return Qr(n,2|o,i,t);case Xe:return(e=qr(12,n,t,4|o)).elementType=Xe,e.type=Xe,e.expirationTime=i,e;case nt:return(e=qr(13,n,t,o)).elementType=nt,e.type=nt,e.expirationTime=i,e;default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case Je:l=10;break e;case Ze:l=9;break e;case tt:l=11;break e;case rt:l=14;break e;case ot:l=16,r=null;break e}a("130",null==e?e:typeof e,"")}return(t=qr(l,n,t,o)).elementType=e,t.type=r,t.expirationTime=i,t}function Kr(e,t,n,r){return(e=qr(7,e,r,t)).expirationTime=n,e}function Qr(e,t,n,r){return e=qr(8,e,r,t),t=0==(1&t)?Ye:et,e.elementType=t,e.type=t,e.expirationTime=n,e}function Yr(e,t,n){return(e=qr(6,e,null,t)).expirationTime=n,e}function Xr(e,t,n){return(t=qr(4,null!==e.children?e.children:[],e.key,t)).expirationTime=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Jr(e,t){e.didError=!1;var n=e.earliestPendingTime;0===n?e.earliestPendingTime=e.latestPendingTime=t:n<t?e.earliestPendingTime=t:e.latestPendingTime>t&&(e.latestPendingTime=t),to(t,e)}function Zr(e,t){e.didError=!1,e.latestPingedTime>=t&&(e.latestPingedTime=0);var n=e.earliestPendingTime,r=e.latestPendingTime;n===t?e.earliestPendingTime=r===t?e.latestPendingTime=0:r:r===t&&(e.latestPendingTime=n),n=e.earliestSuspendedTime,r=e.latestSuspendedTime,0===n?e.earliestSuspendedTime=e.latestSuspendedTime=t:n<t?e.earliestSuspendedTime=t:r>t&&(e.latestSuspendedTime=t),to(t,e)}function eo(e,t){var n=e.earliestPendingTime;return n>t&&(t=n),(e=e.earliestSuspendedTime)>t&&(t=e),t}function to(e,t){var n=t.earliestSuspendedTime,r=t.latestSuspendedTime,o=t.earliestPendingTime,i=t.latestPingedTime;0===(o=0!==o?o:i)&&(0===e||r<e)&&(o=r),0!==(e=o)&&n>e&&(e=n),t.nextExpirationTimeToWorkOn=o,t.expirationTime=e}function no(e,t){if(e&&e.defaultProps)for(var n in t=o({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}var ro=(new r.Component).refs;function oo(e,t,n,r){n=null==(n=n(r,t=e.memoizedState))?t:o({},t,n),e.memoizedState=n,null!==(r=e.updateQueue)&&0===e.expirationTime&&(r.baseState=n)}var io={isMounted:function(e){return!!(e=e._reactInternalFiber)&&2===tn(e)},enqueueSetState:function(e,t,n){e=e._reactInternalFiber;var r=wl(),o=Qi(r=Ka(r,e));o.payload=t,null!=n&&(o.callback=n),Wa(),Xi(e,o),Xa(e,r)},enqueueReplaceState:function(e,t,n){e=e._reactInternalFiber;var r=wl(),o=Qi(r=Ka(r,e));o.tag=Bi,o.payload=t,null!=n&&(o.callback=n),Wa(),Xi(e,o),Xa(e,r)},enqueueForceUpdate:function(e,t){e=e._reactInternalFiber;var n=wl(),r=Qi(n=Ka(n,e));r.tag=qi,null!=t&&(r.callback=t),Wa(),Xi(e,r),Xa(e,n)}};function ao(e,t,n,r,o,i,a){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,i,a):!t.prototype||!t.prototype.isPureReactComponent||(!en(n,r)||!en(o,i))}function lo(e,t,n){var r=!1,o=Or,i=t.contextType;return"object"==typeof i&&null!==i?i=Hi(i):(o=Mr(t)?Dr:Pr.current,i=(r=null!=(r=t.contextTypes))?Rr(e,o):Or),t=new t(n,i),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=io,e.stateNode=t,t._reactInternalFiber=e,r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=o,e.__reactInternalMemoizedMaskedChildContext=i),t}function uo(e,t,n,r){e=t.state,"function"==typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,r),"function"==typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&io.enqueueReplaceState(t,t.state,null)}function so(e,t,n,r){var o=e.stateNode;o.props=n,o.state=e.memoizedState,o.refs=ro;var i=t.contextType;"object"==typeof i&&null!==i?o.context=Hi(i):(i=Mr(t)?Dr:Pr.current,o.context=Rr(e,i)),null!==(i=e.updateQueue)&&(ta(e,i,n,o,r),o.state=e.memoizedState),"function"==typeof(i=t.getDerivedStateFromProps)&&(oo(e,t,i,n),o.state=e.memoizedState),"function"==typeof t.getDerivedStateFromProps||"function"==typeof o.getSnapshotBeforeUpdate||"function"!=typeof o.UNSAFE_componentWillMount&&"function"!=typeof o.componentWillMount||(t=o.state,"function"==typeof o.componentWillMount&&o.componentWillMount(),"function"==typeof o.UNSAFE_componentWillMount&&o.UNSAFE_componentWillMount(),t!==o.state&&io.enqueueReplaceState(o,o.state,null),null!==(i=e.updateQueue)&&(ta(e,i,n,o,r),o.state=e.memoizedState)),"function"==typeof o.componentDidMount&&(e.effectTag|=4)}var co=Array.isArray;function fo(e,t,n){if(null!==(e=n.ref)&&"function"!=typeof e&&"object"!=typeof e){if(n._owner){n=n._owner;var r=void 0;n&&(1!==n.tag&&a("309"),r=n.stateNode),r||a("147",e);var o=""+e;return null!==t&&null!==t.ref&&"function"==typeof t.ref&&t.ref._stringRef===o?t.ref:((t=function(e){var t=r.refs;t===ro&&(t=r.refs={}),null===e?delete t[o]:t[o]=e})._stringRef=o,t)}"string"!=typeof e&&a("284"),n._owner||a("290",e)}return e}function po(e,t){"textarea"!==e.type&&a("31","[object Object]"===Object.prototype.toString.call(t)?"object with keys {"+Object.keys(t).join(", ")+"}":t,"")}function ho(e){function t(t,n){if(e){var r=t.lastEffect;null!==r?(r.nextEffect=n,t.lastEffect=n):t.firstEffect=t.lastEffect=n,n.nextEffect=null,n.effectTag=8}}function n(n,r){if(!e)return null;for(;null!==r;)t(n,r),r=r.sibling;return null}function r(e,t){for(e=new Map;null!==t;)null!==t.key?e.set(t.key,t):e.set(t.index,t),t=t.sibling;return e}function o(e,t,n){return(e=Vr(e,t)).index=0,e.sibling=null,e}function i(t,n,r){return t.index=r,e?null!==(r=t.alternate)?(r=r.index)<n?(t.effectTag=2,n):r:(t.effectTag=2,n):n}function l(t){return e&&null===t.alternate&&(t.effectTag=2),t}function u(e,t,n,r){return null===t||6!==t.tag?((t=Yr(n,e.mode,r)).return=e,t):((t=o(t,n)).return=e,t)}function s(e,t,n,r){return null!==t&&t.elementType===n.type?((r=o(t,n.props)).ref=fo(e,t,n),r.return=e,r):((r=Gr(n.type,n.key,n.props,null,e.mode,r)).ref=fo(e,t,n),r.return=e,r)}function c(e,t,n,r){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=Xr(n,e.mode,r)).return=e,t):((t=o(t,n.children||[])).return=e,t)}function f(e,t,n,r,i){return null===t||7!==t.tag?((t=Kr(n,e.mode,r,i)).return=e,t):((t=o(t,n)).return=e,t)}function d(e,t,n){if("string"==typeof t||"number"==typeof t)return(t=Yr(""+t,e.mode,n)).return=e,t;if("object"==typeof t&&null!==t){switch(t.$$typeof){case Ge:return(n=Gr(t.type,t.key,t.props,null,e.mode,n)).ref=fo(e,null,t),n.return=e,n;case Ke:return(t=Xr(t,e.mode,n)).return=e,t}if(co(t)||at(t))return(t=Kr(t,e.mode,n,null)).return=e,t;po(e,t)}return null}function p(e,t,n,r){var o=null!==t?t.key:null;if("string"==typeof n||"number"==typeof n)return null!==o?null:u(e,t,""+n,r);if("object"==typeof n&&null!==n){switch(n.$$typeof){case Ge:return n.key===o?n.type===Qe?f(e,t,n.props.children,r,o):s(e,t,n,r):null;case Ke:return n.key===o?c(e,t,n,r):null}if(co(n)||at(n))return null!==o?null:f(e,t,n,r,null);po(e,n)}return null}function h(e,t,n,r,o){if("string"==typeof r||"number"==typeof r)return u(t,e=e.get(n)||null,""+r,o);if("object"==typeof r&&null!==r){switch(r.$$typeof){case Ge:return e=e.get(null===r.key?n:r.key)||null,r.type===Qe?f(t,e,r.props.children,o,r.key):s(t,e,r,o);case Ke:return c(t,e=e.get(null===r.key?n:r.key)||null,r,o)}if(co(r)||at(r))return f(t,e=e.get(n)||null,r,o,null);po(t,r)}return null}function m(o,a,l,u){for(var s=null,c=null,f=a,m=a=0,v=null;null!==f&&m<l.length;m++){f.index>m?(v=f,f=null):v=f.sibling;var y=p(o,f,l[m],u);if(null===y){null===f&&(f=v);break}e&&f&&null===y.alternate&&t(o,f),a=i(y,a,m),null===c?s=y:c.sibling=y,c=y,f=v}if(m===l.length)return n(o,f),s;if(null===f){for(;m<l.length;m++)(f=d(o,l[m],u))&&(a=i(f,a,m),null===c?s=f:c.sibling=f,c=f);return s}for(f=r(o,f);m<l.length;m++)(v=h(f,o,m,l[m],u))&&(e&&null!==v.alternate&&f.delete(null===v.key?m:v.key),a=i(v,a,m),null===c?s=v:c.sibling=v,c=v);return e&&f.forEach(function(e){return t(o,e)}),s}function v(o,l,u,s){var c=at(u);"function"!=typeof c&&a("150"),null==(u=c.call(u))&&a("151");for(var f=c=null,m=l,v=l=0,y=null,g=u.next();null!==m&&!g.done;v++,g=u.next()){m.index>v?(y=m,m=null):y=m.sibling;var b=p(o,m,g.value,s);if(null===b){m||(m=y);break}e&&m&&null===b.alternate&&t(o,m),l=i(b,l,v),null===f?c=b:f.sibling=b,f=b,m=y}if(g.done)return n(o,m),c;if(null===m){for(;!g.done;v++,g=u.next())null!==(g=d(o,g.value,s))&&(l=i(g,l,v),null===f?c=g:f.sibling=g,f=g);return c}for(m=r(o,m);!g.done;v++,g=u.next())null!==(g=h(m,o,v,g.value,s))&&(e&&null!==g.alternate&&m.delete(null===g.key?v:g.key),l=i(g,l,v),null===f?c=g:f.sibling=g,f=g);return e&&m.forEach(function(e){return t(o,e)}),c}return function(e,r,i,u){var s="object"==typeof i&&null!==i&&i.type===Qe&&null===i.key;s&&(i=i.props.children);var c="object"==typeof i&&null!==i;if(c)switch(i.$$typeof){case Ge:e:{for(c=i.key,s=r;null!==s;){if(s.key===c){if(7===s.tag?i.type===Qe:s.elementType===i.type){n(e,s.sibling),(r=o(s,i.type===Qe?i.props.children:i.props)).ref=fo(e,s,i),r.return=e,e=r;break e}n(e,s);break}t(e,s),s=s.sibling}i.type===Qe?((r=Kr(i.props.children,e.mode,u,i.key)).return=e,e=r):((u=Gr(i.type,i.key,i.props,null,e.mode,u)).ref=fo(e,r,i),u.return=e,e=u)}return l(e);case Ke:e:{for(s=i.key;null!==r;){if(r.key===s){if(4===r.tag&&r.stateNode.containerInfo===i.containerInfo&&r.stateNode.implementation===i.implementation){n(e,r.sibling),(r=o(r,i.children||[])).return=e,e=r;break e}n(e,r);break}t(e,r),r=r.sibling}(r=Xr(i,e.mode,u)).return=e,e=r}return l(e)}if("string"==typeof i||"number"==typeof i)return i=""+i,null!==r&&6===r.tag?(n(e,r.sibling),(r=o(r,i)).return=e,e=r):(n(e,r),(r=Yr(i,e.mode,u)).return=e,e=r),l(e);if(co(i))return m(e,r,i,u);if(at(i))return v(e,r,i,u);if(c&&po(e,i),void 0===i&&!s)switch(e.tag){case 1:case 0:a("152",(u=e.type).displayName||u.name||"Component")}return n(e,r)}}var mo=ho(!0),vo=ho(!1),yo={},go={current:yo},bo={current:yo},xo={current:yo};function wo(e){return e===yo&&a("174"),e}function Eo(e,t){_r(xo,t),_r(bo,e),_r(go,yo);var n=t.nodeType;switch(n){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:tr(null,"");break;default:t=tr(t=(n=8===n?t.parentNode:t).namespaceURI||null,n=n.tagName)}Sr(go),_r(go,t)}function Co(e){Sr(go),Sr(bo),Sr(xo)}function ko(e){wo(xo.current);var t=wo(go.current),n=tr(t,e.type);t!==n&&(_r(bo,e),_r(go,n))}function To(e){bo.current===e&&(Sr(go),Sr(bo))}var So=0,_o=2,Oo=4,Po=8,No=16,Do=32,Ro=64,Mo=128,Ao=qe.ReactCurrentDispatcher,jo=0,Io=null,Lo=null,Fo=null,Uo=null,zo=null,Ho=null,Wo=0,Bo=null,qo=0,$o=!1,Vo=null,Go=0;function Ko(){a("321")}function Qo(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!Jt(e[n],t[n]))return!1;return!0}function Yo(e,t,n,r,o,i){if(jo=i,Io=t,Fo=null!==e?e.memoizedState:null,Ao.current=null===Fo?si:ci,t=n(r,o),$o){do{$o=!1,Go+=1,Fo=null!==e?e.memoizedState:null,Ho=Uo,Bo=zo=Lo=null,Ao.current=ci,t=n(r,o)}while($o);Vo=null,Go=0}return Ao.current=ui,(e=Io).memoizedState=Uo,e.expirationTime=Wo,e.updateQueue=Bo,e.effectTag|=qo,e=null!==Lo&&null!==Lo.next,jo=0,Ho=zo=Uo=Fo=Lo=Io=null,Wo=0,Bo=null,qo=0,e&&a("300"),t}function Xo(){Ao.current=ui,jo=0,Ho=zo=Uo=Fo=Lo=Io=null,Wo=0,Bo=null,qo=0,$o=!1,Vo=null,Go=0}function Jo(){var e={memoizedState:null,baseState:null,queue:null,baseUpdate:null,next:null};return null===zo?Uo=zo=e:zo=zo.next=e,zo}function Zo(){if(null!==Ho)Ho=(zo=Ho).next,Fo=null!==(Lo=Fo)?Lo.next:null;else{null===Fo&&a("310");var e={memoizedState:(Lo=Fo).memoizedState,baseState:Lo.baseState,queue:Lo.queue,baseUpdate:Lo.baseUpdate,next:null};zo=null===zo?Uo=e:zo.next=e,Fo=Lo.next}return zo}function ei(e,t){return"function"==typeof t?t(e):t}function ti(e){var t=Zo(),n=t.queue;if(null===n&&a("311"),n.lastRenderedReducer=e,0<Go){var r=n.dispatch;if(null!==Vo){var o=Vo.get(n);if(void 0!==o){Vo.delete(n);var i=t.memoizedState;do{i=e(i,o.action),o=o.next}while(null!==o);return Jt(i,t.memoizedState)||(wi=!0),t.memoizedState=i,t.baseUpdate===n.last&&(t.baseState=i),n.lastRenderedState=i,[i,r]}}return[t.memoizedState,r]}r=n.last;var l=t.baseUpdate;if(i=t.baseState,null!==l?(null!==r&&(r.next=null),r=l.next):r=null!==r?r.next:null,null!==r){var u=o=null,s=r,c=!1;do{var f=s.expirationTime;f<jo?(c||(c=!0,u=l,o=i),f>Wo&&(Wo=f)):i=s.eagerReducer===e?s.eagerState:e(i,s.action),l=s,s=s.next}while(null!==s&&s!==r);c||(u=l,o=i),Jt(i,t.memoizedState)||(wi=!0),t.memoizedState=i,t.baseUpdate=u,t.baseState=o,n.lastRenderedState=i}return[t.memoizedState,n.dispatch]}function ni(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},null===Bo?(Bo={lastEffect:null}).lastEffect=e.next=e:null===(t=Bo.lastEffect)?Bo.lastEffect=e.next=e:(n=t.next,t.next=e,e.next=n,Bo.lastEffect=e),e}function ri(e,t,n,r){var o=Jo();qo|=e,o.memoizedState=ni(t,n,void 0,void 0===r?null:r)}function oi(e,t,n,r){var o=Zo();r=void 0===r?null:r;var i=void 0;if(null!==Lo){var a=Lo.memoizedState;if(i=a.destroy,null!==r&&Qo(r,a.deps))return void ni(So,n,i,r)}qo|=e,o.memoizedState=ni(t,n,i,r)}function ii(e,t){return"function"==typeof t?(e=e(),t(e),function(){t(null)}):null!=t?(e=e(),t.current=e,function(){t.current=null}):void 0}function ai(){}function li(e,t,n){25>Go||a("301");var r=e.alternate;if(e===Io||null!==r&&r===Io)if($o=!0,e={expirationTime:jo,action:n,eagerReducer:null,eagerState:null,next:null},null===Vo&&(Vo=new Map),void 0===(n=Vo.get(t)))Vo.set(t,e);else{for(t=n;null!==t.next;)t=t.next;t.next=e}else{Wa();var o=wl(),i={expirationTime:o=Ka(o,e),action:n,eagerReducer:null,eagerState:null,next:null},l=t.last;if(null===l)i.next=i;else{var u=l.next;null!==u&&(i.next=u),l.next=i}if(t.last=i,0===e.expirationTime&&(null===r||0===r.expirationTime)&&null!==(r=t.lastRenderedReducer))try{var s=t.lastRenderedState,c=r(s,n);if(i.eagerReducer=r,i.eagerState=c,Jt(c,s))return}catch(e){}Xa(e,o)}}var ui={readContext:Hi,useCallback:Ko,useContext:Ko,useEffect:Ko,useImperativeHandle:Ko,useLayoutEffect:Ko,useMemo:Ko,useReducer:Ko,useRef:Ko,useState:Ko,useDebugValue:Ko},si={readContext:Hi,useCallback:function(e,t){return Jo().memoizedState=[e,void 0===t?null:t],e},useContext:Hi,useEffect:function(e,t){return ri(516,Mo|Ro,e,t)},useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,ri(4,Oo|Do,ii.bind(null,t,e),n)},useLayoutEffect:function(e,t){return ri(4,Oo|Do,e,t)},useMemo:function(e,t){var n=Jo();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Jo();return t=void 0!==n?n(t):t,r.memoizedState=r.baseState=t,e=(e=r.queue={last:null,dispatch:null,lastRenderedReducer:e,lastRenderedState:t}).dispatch=li.bind(null,Io,e),[r.memoizedState,e]},useRef:function(e){return e={current:e},Jo().memoizedState=e},useState:function(e){var t=Jo();return"function"==typeof e&&(e=e()),t.memoizedState=t.baseState=e,e=(e=t.queue={last:null,dispatch:null,lastRenderedReducer:ei,lastRenderedState:e}).dispatch=li.bind(null,Io,e),[t.memoizedState,e]},useDebugValue:ai},ci={readContext:Hi,useCallback:function(e,t){var n=Zo();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&Qo(t,r[1])?r[0]:(n.memoizedState=[e,t],e)},useContext:Hi,useEffect:function(e,t){return oi(516,Mo|Ro,e,t)},useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,oi(4,Oo|Do,ii.bind(null,t,e),n)},useLayoutEffect:function(e,t){return oi(4,Oo|Do,e,t)},useMemo:function(e,t){var n=Zo();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&Qo(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)},useReducer:ti,useRef:function(){return Zo().memoizedState},useState:function(e){return ti(ei)},useDebugValue:ai},fi=null,di=null,pi=!1;function hi(e,t){var n=qr(5,null,null,0);n.elementType="DELETED",n.type="DELETED",n.stateNode=t,n.return=e,n.effectTag=8,null!==e.lastEffect?(e.lastEffect.nextEffect=n,e.lastEffect=n):e.firstEffect=e.lastEffect=n}function mi(e,t){switch(e.tag){case 5:var n=e.type;return null!==(t=1!==t.nodeType||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t)&&(e.stateNode=t,!0);case 6:return null!==(t=""===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,!0);case 13:default:return!1}}function vi(e){if(pi){var t=di;if(t){var n=t;if(!mi(e,t)){if(!(t=Er(n))||!mi(e,t))return e.effectTag|=2,pi=!1,void(fi=e);hi(fi,n)}fi=e,di=Cr(t)}else e.effectTag|=2,pi=!1,fi=e}}function yi(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&18!==e.tag;)e=e.return;fi=e}function gi(e){if(e!==fi)return!1;if(!pi)return yi(e),pi=!0,!1;var t=e.type;if(5!==e.tag||"head"!==t&&"body"!==t&&!yr(t,e.memoizedProps))for(t=di;t;)hi(e,t),t=Er(t);return yi(e),di=fi?Er(e.stateNode):null,!0}function bi(){di=fi=null,pi=!1}var xi=qe.ReactCurrentOwner,wi=!1;function Ei(e,t,n,r){t.child=null===e?vo(t,null,n,r):mo(t,e.child,n,r)}function Ci(e,t,n,r,o){n=n.render;var i=t.ref;return zi(t,o),r=Yo(e,t,n,r,i,o),null===e||wi?(t.effectTag|=1,Ei(e,t,r,o),t.child):(t.updateQueue=e.updateQueue,t.effectTag&=-517,e.expirationTime<=o&&(e.expirationTime=0),Ri(e,t,o))}function ki(e,t,n,r,o,i){if(null===e){var a=n.type;return"function"!=typeof a||$r(a)||void 0!==a.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=Gr(n.type,null,r,null,t.mode,i)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=a,Ti(e,t,a,r,o,i))}return a=e.child,o<i&&(o=a.memoizedProps,(n=null!==(n=n.compare)?n:en)(o,r)&&e.ref===t.ref)?Ri(e,t,i):(t.effectTag|=1,(e=Vr(a,r)).ref=t.ref,e.return=t,t.child=e)}function Ti(e,t,n,r,o,i){return null!==e&&en(e.memoizedProps,r)&&e.ref===t.ref&&(wi=!1,o<i)?Ri(e,t,i):_i(e,t,n,r,i)}function Si(e,t){var n=t.ref;(null===e&&null!==n||null!==e&&e.ref!==n)&&(t.effectTag|=128)}function _i(e,t,n,r,o){var i=Mr(n)?Dr:Pr.current;return i=Rr(t,i),zi(t,o),n=Yo(e,t,n,r,i,o),null===e||wi?(t.effectTag|=1,Ei(e,t,n,o),t.child):(t.updateQueue=e.updateQueue,t.effectTag&=-517,e.expirationTime<=o&&(e.expirationTime=0),Ri(e,t,o))}function Oi(e,t,n,r,o){if(Mr(n)){var i=!0;Fr(t)}else i=!1;if(zi(t,o),null===t.stateNode)null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),lo(t,n,r),so(t,n,r,o),r=!0;else if(null===e){var a=t.stateNode,l=t.memoizedProps;a.props=l;var u=a.context,s=n.contextType;"object"==typeof s&&null!==s?s=Hi(s):s=Rr(t,s=Mr(n)?Dr:Pr.current);var c=n.getDerivedStateFromProps,f="function"==typeof c||"function"==typeof a.getSnapshotBeforeUpdate;f||"function"!=typeof a.UNSAFE_componentWillReceiveProps&&"function"!=typeof a.componentWillReceiveProps||(l!==r||u!==s)&&uo(t,a,r,s),Vi=!1;var d=t.memoizedState;u=a.state=d;var p=t.updateQueue;null!==p&&(ta(t,p,r,a,o),u=t.memoizedState),l!==r||d!==u||Nr.current||Vi?("function"==typeof c&&(oo(t,n,c,r),u=t.memoizedState),(l=Vi||ao(t,n,l,r,d,u,s))?(f||"function"!=typeof a.UNSAFE_componentWillMount&&"function"!=typeof a.componentWillMount||("function"==typeof a.componentWillMount&&a.componentWillMount(),"function"==typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount()),"function"==typeof a.componentDidMount&&(t.effectTag|=4)):("function"==typeof a.componentDidMount&&(t.effectTag|=4),t.memoizedProps=r,t.memoizedState=u),a.props=r,a.state=u,a.context=s,r=l):("function"==typeof a.componentDidMount&&(t.effectTag|=4),r=!1)}else a=t.stateNode,l=t.memoizedProps,a.props=t.type===t.elementType?l:no(t.type,l),u=a.context,"object"==typeof(s=n.contextType)&&null!==s?s=Hi(s):s=Rr(t,s=Mr(n)?Dr:Pr.current),(f="function"==typeof(c=n.getDerivedStateFromProps)||"function"==typeof a.getSnapshotBeforeUpdate)||"function"!=typeof a.UNSAFE_componentWillReceiveProps&&"function"!=typeof a.componentWillReceiveProps||(l!==r||u!==s)&&uo(t,a,r,s),Vi=!1,u=t.memoizedState,d=a.state=u,null!==(p=t.updateQueue)&&(ta(t,p,r,a,o),d=t.memoizedState),l!==r||u!==d||Nr.current||Vi?("function"==typeof c&&(oo(t,n,c,r),d=t.memoizedState),(c=Vi||ao(t,n,l,r,u,d,s))?(f||"function"!=typeof a.UNSAFE_componentWillUpdate&&"function"!=typeof a.componentWillUpdate||("function"==typeof a.componentWillUpdate&&a.componentWillUpdate(r,d,s),"function"==typeof a.UNSAFE_componentWillUpdate&&a.UNSAFE_componentWillUpdate(r,d,s)),"function"==typeof a.componentDidUpdate&&(t.effectTag|=4),"function"==typeof a.getSnapshotBeforeUpdate&&(t.effectTag|=256)):("function"!=typeof a.componentDidUpdate||l===e.memoizedProps&&u===e.memoizedState||(t.effectTag|=4),"function"!=typeof a.getSnapshotBeforeUpdate||l===e.memoizedProps&&u===e.memoizedState||(t.effectTag|=256),t.memoizedProps=r,t.memoizedState=d),a.props=r,a.state=d,a.context=s,r=c):("function"!=typeof a.componentDidUpdate||l===e.memoizedProps&&u===e.memoizedState||(t.effectTag|=4),"function"!=typeof a.getSnapshotBeforeUpdate||l===e.memoizedProps&&u===e.memoizedState||(t.effectTag|=256),r=!1);return Pi(e,t,n,r,i,o)}function Pi(e,t,n,r,o,i){Si(e,t);var a=0!=(64&t.effectTag);if(!r&&!a)return o&&Ur(t,n,!1),Ri(e,t,i);r=t.stateNode,xi.current=t;var l=a&&"function"!=typeof n.getDerivedStateFromError?null:r.render();return t.effectTag|=1,null!==e&&a?(t.child=mo(t,e.child,null,i),t.child=mo(t,null,l,i)):Ei(e,t,l,i),t.memoizedState=r.state,o&&Ur(t,n,!0),t.child}function Ni(e){var t=e.stateNode;t.pendingContext?Ir(0,t.pendingContext,t.pendingContext!==t.context):t.context&&Ir(0,t.context,!1),Eo(e,t.containerInfo)}function Di(e,t,n){var r=t.mode,o=t.pendingProps,i=t.memoizedState;if(0==(64&t.effectTag)){i=null;var a=!1}else i={timedOutAt:null!==i?i.timedOutAt:0},a=!0,t.effectTag&=-65;if(null===e)if(a){var l=o.fallback;e=Kr(null,r,0,null),0==(1&t.mode)&&(e.child=null!==t.memoizedState?t.child.child:t.child),r=Kr(l,r,n,null),e.sibling=r,(n=e).return=r.return=t}else n=r=vo(t,null,o.children,n);else null!==e.memoizedState?(l=(r=e.child).sibling,a?(n=o.fallback,o=Vr(r,r.pendingProps),0==(1&t.mode)&&((a=null!==t.memoizedState?t.child.child:t.child)!==r.child&&(o.child=a)),r=o.sibling=Vr(l,n,l.expirationTime),n=o,o.childExpirationTime=0,n.return=r.return=t):n=r=mo(t,r.child,o.children,n)):(l=e.child,a?(a=o.fallback,(o=Kr(null,r,0,null)).child=l,0==(1&t.mode)&&(o.child=null!==t.memoizedState?t.child.child:t.child),(r=o.sibling=Kr(a,r,n,null)).effectTag|=2,n=o,o.childExpirationTime=0,n.return=r.return=t):r=n=mo(t,l,o.children,n)),t.stateNode=e.stateNode;return t.memoizedState=i,t.child=n,r}function Ri(e,t,n){if(null!==e&&(t.contextDependencies=e.contextDependencies),t.childExpirationTime<n)return null;if(null!==e&&t.child!==e.child&&a("153"),null!==t.child){for(n=Vr(e=t.child,e.pendingProps,e.expirationTime),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=Vr(e,e.pendingProps,e.expirationTime)).return=t;n.sibling=null}return t.child}function Mi(e,t,n){var r=t.expirationTime;if(null!==e){if(e.memoizedProps!==t.pendingProps||Nr.current)wi=!0;else if(r<n){switch(wi=!1,t.tag){case 3:Ni(t),bi();break;case 5:ko(t);break;case 1:Mr(t.type)&&Fr(t);break;case 4:Eo(t,t.stateNode.containerInfo);break;case 10:Fi(t,t.memoizedProps.value);break;case 13:if(null!==t.memoizedState)return 0!==(r=t.child.childExpirationTime)&&r>=n?Di(e,t,n):null!==(t=Ri(e,t,n))?t.sibling:null}return Ri(e,t,n)}}else wi=!1;switch(t.expirationTime=0,t.tag){case 2:r=t.elementType,null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),e=t.pendingProps;var o=Rr(t,Pr.current);if(zi(t,n),o=Yo(null,t,r,e,o,n),t.effectTag|=1,"object"==typeof o&&null!==o&&"function"==typeof o.render&&void 0===o.$$typeof){if(t.tag=1,Xo(),Mr(r)){var i=!0;Fr(t)}else i=!1;t.memoizedState=null!==o.state&&void 0!==o.state?o.state:null;var l=r.getDerivedStateFromProps;"function"==typeof l&&oo(t,r,l,e),o.updater=io,t.stateNode=o,o._reactInternalFiber=t,so(t,r,e,n),t=Pi(null,t,r,!0,i,n)}else t.tag=0,Ei(null,t,o,n),t=t.child;return t;case 16:switch(o=t.elementType,null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),i=t.pendingProps,e=function(e){var t=e._result;switch(e._status){case 1:return t;case 2:case 0:throw t;default:switch(e._status=0,(t=(t=e._ctor)()).then(function(t){0===e._status&&(t=t.default,e._status=1,e._result=t)},function(t){0===e._status&&(e._status=2,e._result=t)}),e._status){case 1:return e._result;case 2:throw e._result}throw e._result=t,t}}(o),t.type=e,o=t.tag=function(e){if("function"==typeof e)return $r(e)?1:0;if(null!=e){if((e=e.$$typeof)===tt)return 11;if(e===rt)return 14}return 2}(e),i=no(e,i),l=void 0,o){case 0:l=_i(null,t,e,i,n);break;case 1:l=Oi(null,t,e,i,n);break;case 11:l=Ci(null,t,e,i,n);break;case 14:l=ki(null,t,e,no(e.type,i),r,n);break;default:a("306",e,"")}return l;case 0:return r=t.type,o=t.pendingProps,_i(e,t,r,o=t.elementType===r?o:no(r,o),n);case 1:return r=t.type,o=t.pendingProps,Oi(e,t,r,o=t.elementType===r?o:no(r,o),n);case 3:return Ni(t),null===(r=t.updateQueue)&&a("282"),o=null!==(o=t.memoizedState)?o.element:null,ta(t,r,t.pendingProps,null,n),(r=t.memoizedState.element)===o?(bi(),t=Ri(e,t,n)):(o=t.stateNode,(o=(null===e||null===e.child)&&o.hydrate)&&(di=Cr(t.stateNode.containerInfo),fi=t,o=pi=!0),o?(t.effectTag|=2,t.child=vo(t,null,r,n)):(Ei(e,t,r,n),bi()),t=t.child),t;case 5:return ko(t),null===e&&vi(t),r=t.type,o=t.pendingProps,i=null!==e?e.memoizedProps:null,l=o.children,yr(r,o)?l=null:null!==i&&yr(r,i)&&(t.effectTag|=16),Si(e,t),1!==n&&1&t.mode&&o.hidden?(t.expirationTime=t.childExpirationTime=1,t=null):(Ei(e,t,l,n),t=t.child),t;case 6:return null===e&&vi(t),null;case 13:return Di(e,t,n);case 4:return Eo(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=mo(t,null,r,n):Ei(e,t,r,n),t.child;case 11:return r=t.type,o=t.pendingProps,Ci(e,t,r,o=t.elementType===r?o:no(r,o),n);case 7:return Ei(e,t,t.pendingProps,n),t.child;case 8:case 12:return Ei(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,o=t.pendingProps,l=t.memoizedProps,Fi(t,i=o.value),null!==l){var u=l.value;if(0===(i=Jt(u,i)?0:0|("function"==typeof r._calculateChangedBits?r._calculateChangedBits(u,i):1073741823))){if(l.children===o.children&&!Nr.current){t=Ri(e,t,n);break e}}else for(null!==(u=t.child)&&(u.return=t);null!==u;){var s=u.contextDependencies;if(null!==s){l=u.child;for(var c=s.first;null!==c;){if(c.context===r&&0!=(c.observedBits&i)){1===u.tag&&((c=Qi(n)).tag=qi,Xi(u,c)),u.expirationTime<n&&(u.expirationTime=n),null!==(c=u.alternate)&&c.expirationTime<n&&(c.expirationTime=n),c=n;for(var f=u.return;null!==f;){var d=f.alternate;if(f.childExpirationTime<c)f.childExpirationTime=c,null!==d&&d.childExpirationTime<c&&(d.childExpirationTime=c);else{if(!(null!==d&&d.childExpirationTime<c))break;d.childExpirationTime=c}f=f.return}s.expirationTime<n&&(s.expirationTime=n);break}c=c.next}}else l=10===u.tag&&u.type===t.type?null:u.child;if(null!==l)l.return=u;else for(l=u;null!==l;){if(l===t){l=null;break}if(null!==(u=l.sibling)){u.return=l.return,l=u;break}l=l.return}u=l}}Ei(e,t,o.children,n),t=t.child}return t;case 9:return o=t.type,r=(i=t.pendingProps).children,zi(t,n),r=r(o=Hi(o,i.unstable_observedBits)),t.effectTag|=1,Ei(e,t,r,n),t.child;case 14:return i=no(o=t.type,t.pendingProps),ki(e,t,o,i=no(o.type,i),r,n);case 15:return Ti(e,t,t.type,t.pendingProps,r,n);case 17:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:no(r,o),null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),t.tag=1,Mr(r)?(e=!0,Fr(t)):e=!1,zi(t,n),lo(t,r,o),so(t,r,o,n),Pi(null,t,r,!0,e,n)}a("156")}var Ai={current:null},ji=null,Ii=null,Li=null;function Fi(e,t){var n=e.type._context;_r(Ai,n._currentValue),n._currentValue=t}function Ui(e){var t=Ai.current;Sr(Ai),e.type._context._currentValue=t}function zi(e,t){ji=e,Li=Ii=null;var n=e.contextDependencies;null!==n&&n.expirationTime>=t&&(wi=!0),e.contextDependencies=null}function Hi(e,t){return Li!==e&&!1!==t&&0!==t&&("number"==typeof t&&1073741823!==t||(Li=e,t=1073741823),t={context:e,observedBits:t,next:null},null===Ii?(null===ji&&a("308"),Ii=t,ji.contextDependencies={first:t,expirationTime:0}):Ii=Ii.next=t),e._currentValue}var Wi=0,Bi=1,qi=2,$i=3,Vi=!1;function Gi(e){return{baseState:e,firstUpdate:null,lastUpdate:null,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function Ki(e){return{baseState:e.baseState,firstUpdate:e.firstUpdate,lastUpdate:e.lastUpdate,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function Qi(e){return{expirationTime:e,tag:Wi,payload:null,callback:null,next:null,nextEffect:null}}function Yi(e,t){null===e.lastUpdate?e.firstUpdate=e.lastUpdate=t:(e.lastUpdate.next=t,e.lastUpdate=t)}function Xi(e,t){var n=e.alternate;if(null===n){var r=e.updateQueue,o=null;null===r&&(r=e.updateQueue=Gi(e.memoizedState))}else r=e.updateQueue,o=n.updateQueue,null===r?null===o?(r=e.updateQueue=Gi(e.memoizedState),o=n.updateQueue=Gi(n.memoizedState)):r=e.updateQueue=Ki(o):null===o&&(o=n.updateQueue=Ki(r));null===o||r===o?Yi(r,t):null===r.lastUpdate||null===o.lastUpdate?(Yi(r,t),Yi(o,t)):(Yi(r,t),o.lastUpdate=t)}function Ji(e,t){var n=e.updateQueue;null===(n=null===n?e.updateQueue=Gi(e.memoizedState):Zi(e,n)).lastCapturedUpdate?n.firstCapturedUpdate=n.lastCapturedUpdate=t:(n.lastCapturedUpdate.next=t,n.lastCapturedUpdate=t)}function Zi(e,t){var n=e.alternate;return null!==n&&t===n.updateQueue&&(t=e.updateQueue=Ki(t)),t}function ea(e,t,n,r,i,a){switch(n.tag){case Bi:return"function"==typeof(e=n.payload)?e.call(a,r,i):e;case $i:e.effectTag=-2049&e.effectTag|64;case Wi:if(null==(i="function"==typeof(e=n.payload)?e.call(a,r,i):e))break;return o({},r,i);case qi:Vi=!0}return r}function ta(e,t,n,r,o){Vi=!1;for(var i=(t=Zi(e,t)).baseState,a=null,l=0,u=t.firstUpdate,s=i;null!==u;){var c=u.expirationTime;c<o?(null===a&&(a=u,i=s),l<c&&(l=c)):(s=ea(e,0,u,s,n,r),null!==u.callback&&(e.effectTag|=32,u.nextEffect=null,null===t.lastEffect?t.firstEffect=t.lastEffect=u:(t.lastEffect.nextEffect=u,t.lastEffect=u))),u=u.next}for(c=null,u=t.firstCapturedUpdate;null!==u;){var f=u.expirationTime;f<o?(null===c&&(c=u,null===a&&(i=s)),l<f&&(l=f)):(s=ea(e,0,u,s,n,r),null!==u.callback&&(e.effectTag|=32,u.nextEffect=null,null===t.lastCapturedEffect?t.firstCapturedEffect=t.lastCapturedEffect=u:(t.lastCapturedEffect.nextEffect=u,t.lastCapturedEffect=u))),u=u.next}null===a&&(t.lastUpdate=null),null===c?t.lastCapturedUpdate=null:e.effectTag|=32,null===a&&null===c&&(i=s),t.baseState=i,t.firstUpdate=a,t.firstCapturedUpdate=c,e.expirationTime=l,e.memoizedState=s}function na(e,t,n){null!==t.firstCapturedUpdate&&(null!==t.lastUpdate&&(t.lastUpdate.next=t.firstCapturedUpdate,t.lastUpdate=t.lastCapturedUpdate),t.firstCapturedUpdate=t.lastCapturedUpdate=null),ra(t.firstEffect,n),t.firstEffect=t.lastEffect=null,ra(t.firstCapturedEffect,n),t.firstCapturedEffect=t.lastCapturedEffect=null}function ra(e,t){for(;null!==e;){var n=e.callback;if(null!==n){e.callback=null;var r=t;"function"!=typeof n&&a("191",n),n.call(r)}e=e.nextEffect}}function oa(e,t){return{value:e,source:t,stack:ut(t)}}function ia(e){e.effectTag|=4}var aa=void 0,la=void 0,ua=void 0,sa=void 0;aa=function(e,t){for(var n=t.child;null!==n;){if(5===n.tag||6===n.tag)e.appendChild(n.stateNode);else if(4!==n.tag&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===t)break;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},la=function(){},ua=function(e,t,n,r,i){var a=e.memoizedProps;if(a!==r){var l=t.stateNode;switch(wo(go.current),e=null,n){case"input":a=bt(l,a),r=bt(l,r),e=[];break;case"option":a=Gn(l,a),r=Gn(l,r),e=[];break;case"select":a=o({},a,{value:void 0}),r=o({},r,{value:void 0}),e=[];break;case"textarea":a=Qn(l,a),r=Qn(l,r),e=[];break;default:"function"!=typeof a.onClick&&"function"==typeof r.onClick&&(l.onclick=pr)}cr(n,r),l=n=void 0;var u=null;for(n in a)if(!r.hasOwnProperty(n)&&a.hasOwnProperty(n)&&null!=a[n])if("style"===n){var s=a[n];for(l in s)s.hasOwnProperty(l)&&(u||(u={}),u[l]="")}else"dangerouslySetInnerHTML"!==n&&"children"!==n&&"suppressContentEditableWarning"!==n&&"suppressHydrationWarning"!==n&&"autoFocus"!==n&&(b.hasOwnProperty(n)?e||(e=[]):(e=e||[]).push(n,null));for(n in r){var c=r[n];if(s=null!=a?a[n]:void 0,r.hasOwnProperty(n)&&c!==s&&(null!=c||null!=s))if("style"===n)if(s){for(l in s)!s.hasOwnProperty(l)||c&&c.hasOwnProperty(l)||(u||(u={}),u[l]="");for(l in c)c.hasOwnProperty(l)&&s[l]!==c[l]&&(u||(u={}),u[l]=c[l])}else u||(e||(e=[]),e.push(n,u)),u=c;else"dangerouslySetInnerHTML"===n?(c=c?c.__html:void 0,s=s?s.__html:void 0,null!=c&&s!==c&&(e=e||[]).push(n,""+c)):"children"===n?s===c||"string"!=typeof c&&"number"!=typeof c||(e=e||[]).push(n,""+c):"suppressContentEditableWarning"!==n&&"suppressHydrationWarning"!==n&&(b.hasOwnProperty(n)?(null!=c&&dr(i,n),e||s===c||(e=[])):(e=e||[]).push(n,c))}u&&(e=e||[]).push("style",u),i=e,(t.updateQueue=i)&&ia(t)}},sa=function(e,t,n,r){n!==r&&ia(t)};var ca="function"==typeof WeakSet?WeakSet:Set;function fa(e,t){var n=t.source,r=t.stack;null===r&&null!==n&&(r=ut(n)),null!==n&<(n.type),t=t.value,null!==e&&1===e.tag&<(e.type);try{console.error(t)}catch(e){setTimeout(function(){throw e})}}function da(e){var t=e.ref;if(null!==t)if("function"==typeof t)try{t(null)}catch(t){Ga(e,t)}else t.current=null}function pa(e,t,n){if(null!==(n=null!==(n=n.updateQueue)?n.lastEffect:null)){var r=n=n.next;do{if((r.tag&e)!==So){var o=r.destroy;r.destroy=void 0,void 0!==o&&o()}(r.tag&t)!==So&&(o=r.create,r.destroy=o()),r=r.next}while(r!==n)}}function ha(e){switch("function"==typeof Hr&&Hr(e),e.tag){case 0:case 11:case 14:case 15:var t=e.updateQueue;if(null!==t&&null!==(t=t.lastEffect)){var n=t=t.next;do{var r=n.destroy;if(void 0!==r){var o=e;try{r()}catch(e){Ga(o,e)}}n=n.next}while(n!==t)}break;case 1:if(da(e),"function"==typeof(t=e.stateNode).componentWillUnmount)try{t.props=e.memoizedProps,t.state=e.memoizedState,t.componentWillUnmount()}catch(t){Ga(e,t)}break;case 5:da(e);break;case 4:ya(e)}}function ma(e){return 5===e.tag||3===e.tag||4===e.tag}function va(e){e:{for(var t=e.return;null!==t;){if(ma(t)){var n=t;break e}t=t.return}a("160"),n=void 0}var r=t=void 0;switch(n.tag){case 5:t=n.stateNode,r=!1;break;case 3:case 4:t=n.stateNode.containerInfo,r=!0;break;default:a("161")}16&n.effectTag&&(or(t,""),n.effectTag&=-17);e:t:for(n=e;;){for(;null===n.sibling;){if(null===n.return||ma(n.return)){n=null;break e}n=n.return}for(n.sibling.return=n.return,n=n.sibling;5!==n.tag&&6!==n.tag&&18!==n.tag;){if(2&n.effectTag)continue t;if(null===n.child||4===n.tag)continue t;n.child.return=n,n=n.child}if(!(2&n.effectTag)){n=n.stateNode;break e}}for(var o=e;;){if(5===o.tag||6===o.tag)if(n)if(r){var i=t,l=o.stateNode,u=n;8===i.nodeType?i.parentNode.insertBefore(l,u):i.insertBefore(l,u)}else t.insertBefore(o.stateNode,n);else r?(l=t,u=o.stateNode,8===l.nodeType?(i=l.parentNode).insertBefore(u,l):(i=l).appendChild(u),null!=(l=l._reactRootContainer)||null!==i.onclick||(i.onclick=pr)):t.appendChild(o.stateNode);else if(4!==o.tag&&null!==o.child){o.child.return=o,o=o.child;continue}if(o===e)break;for(;null===o.sibling;){if(null===o.return||o.return===e)return;o=o.return}o.sibling.return=o.return,o=o.sibling}}function ya(e){for(var t=e,n=!1,r=void 0,o=void 0;;){if(!n){n=t.return;e:for(;;){switch(null===n&&a("160"),n.tag){case 5:r=n.stateNode,o=!1;break e;case 3:case 4:r=n.stateNode.containerInfo,o=!0;break e}n=n.return}n=!0}if(5===t.tag||6===t.tag){e:for(var i=t,l=i;;)if(ha(l),null!==l.child&&4!==l.tag)l.child.return=l,l=l.child;else{if(l===i)break;for(;null===l.sibling;){if(null===l.return||l.return===i)break e;l=l.return}l.sibling.return=l.return,l=l.sibling}o?(i=r,l=t.stateNode,8===i.nodeType?i.parentNode.removeChild(l):i.removeChild(l)):r.removeChild(t.stateNode)}else if(4===t.tag){if(null!==t.child){r=t.stateNode.containerInfo,o=!0,t.child.return=t,t=t.child;continue}}else if(ha(t),null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return;4===(t=t.return).tag&&(n=!1)}t.sibling.return=t.return,t=t.sibling}}function ga(e,t){switch(t.tag){case 0:case 11:case 14:case 15:pa(Oo,Po,t);break;case 1:break;case 5:var n=t.stateNode;if(null!=n){var r=t.memoizedProps;e=null!==e?e.memoizedProps:r;var o=t.type,i=t.updateQueue;t.updateQueue=null,null!==i&&function(e,t,n,r,o){e[A]=o,"input"===n&&"radio"===o.type&&null!=o.name&&wt(e,o),fr(n,r),r=fr(n,o);for(var i=0;i<t.length;i+=2){var a=t[i],l=t[i+1];"style"===a?ur(e,l):"dangerouslySetInnerHTML"===a?rr(e,l):"children"===a?or(e,l):yt(e,a,l,r)}switch(n){case"input":Et(e,o);break;case"textarea":Xn(e,o);break;case"select":t=e._wrapperState.wasMultiple,e._wrapperState.wasMultiple=!!o.multiple,null!=(n=o.value)?Kn(e,!!o.multiple,n,!1):t!==!!o.multiple&&(null!=o.defaultValue?Kn(e,!!o.multiple,o.defaultValue,!0):Kn(e,!!o.multiple,o.multiple?[]:"",!1))}}(n,i,o,e,r)}break;case 6:null===t.stateNode&&a("162"),t.stateNode.nodeValue=t.memoizedProps;break;case 3:case 12:break;case 13:if(n=t.memoizedState,r=void 0,e=t,null===n?r=!1:(r=!0,e=t.child,0===n.timedOutAt&&(n.timedOutAt=wl())),null!==e&&function(e,t){for(var n=e;;){if(5===n.tag){var r=n.stateNode;if(t)r.style.display="none";else{r=n.stateNode;var o=n.memoizedProps.style;o=null!=o&&o.hasOwnProperty("display")?o.display:null,r.style.display=lr("display",o)}}else if(6===n.tag)n.stateNode.nodeValue=t?"":n.memoizedProps;else{if(13===n.tag&&null!==n.memoizedState){(r=n.child.sibling).return=n,n=r;continue}if(null!==n.child){n.child.return=n,n=n.child;continue}}if(n===e)break;for(;null===n.sibling;){if(null===n.return||n.return===e)return;n=n.return}n.sibling.return=n.return,n=n.sibling}}(e,r),null!==(n=t.updateQueue)){t.updateQueue=null;var l=t.stateNode;null===l&&(l=t.stateNode=new ca),n.forEach(function(e){var n=function(e,t){var n=e.stateNode;null!==n&&n.delete(t),t=Ka(t=wl(),e),null!==(e=Ya(e,t))&&(Jr(e,t),0!==(t=e.expirationTime)&&El(e,t))}.bind(null,t,e);l.has(e)||(l.add(e),e.then(n,n))})}break;case 17:break;default:a("163")}}var ba="function"==typeof WeakMap?WeakMap:Map;function xa(e,t,n){(n=Qi(n)).tag=$i,n.payload={element:null};var r=t.value;return n.callback=function(){Dl(r),fa(e,t)},n}function wa(e,t,n){(n=Qi(n)).tag=$i;var r=e.type.getDerivedStateFromError;if("function"==typeof r){var o=t.value;n.payload=function(){return r(o)}}var i=e.stateNode;return null!==i&&"function"==typeof i.componentDidCatch&&(n.callback=function(){"function"!=typeof r&&(null===La?La=new Set([this]):La.add(this));var n=t.value,o=t.stack;fa(e,t),this.componentDidCatch(n,{componentStack:null!==o?o:""})}),n}function Ea(e){switch(e.tag){case 1:Mr(e.type)&&Ar();var t=e.effectTag;return 2048&t?(e.effectTag=-2049&t|64,e):null;case 3:return Co(),jr(),0!=(64&(t=e.effectTag))&&a("285"),e.effectTag=-2049&t|64,e;case 5:return To(e),null;case 13:return 2048&(t=e.effectTag)?(e.effectTag=-2049&t|64,e):null;case 18:return null;case 4:return Co(),null;case 10:return Ui(e),null;default:return null}}var Ca=qe.ReactCurrentDispatcher,ka=qe.ReactCurrentOwner,Ta=1073741822,Sa=!1,_a=null,Oa=null,Pa=0,Na=-1,Da=!1,Ra=null,Ma=!1,Aa=null,ja=null,Ia=null,La=null;function Fa(){if(null!==_a)for(var e=_a.return;null!==e;){var t=e;switch(t.tag){case 1:var n=t.type.childContextTypes;null!=n&&Ar();break;case 3:Co(),jr();break;case 5:To(t);break;case 4:Co();break;case 10:Ui(t)}e=e.return}Oa=null,Pa=0,Na=-1,Da=!1,_a=null}function Ua(){for(;null!==Ra;){var e=Ra.effectTag;if(16&e&&or(Ra.stateNode,""),128&e){var t=Ra.alternate;null!==t&&(null!==(t=t.ref)&&("function"==typeof t?t(null):t.current=null))}switch(14&e){case 2:va(Ra),Ra.effectTag&=-3;break;case 6:va(Ra),Ra.effectTag&=-3,ga(Ra.alternate,Ra);break;case 4:ga(Ra.alternate,Ra);break;case 8:ya(e=Ra),e.return=null,e.child=null,e.memoizedState=null,e.updateQueue=null,null!==(e=e.alternate)&&(e.return=null,e.child=null,e.memoizedState=null,e.updateQueue=null)}Ra=Ra.nextEffect}}function za(){for(;null!==Ra;){if(256&Ra.effectTag)e:{var e=Ra.alternate,t=Ra;switch(t.tag){case 0:case 11:case 15:pa(_o,So,t);break e;case 1:if(256&t.effectTag&&null!==e){var n=e.memoizedProps,r=e.memoizedState;t=(e=t.stateNode).getSnapshotBeforeUpdate(t.elementType===t.type?n:no(t.type,n),r),e.__reactInternalSnapshotBeforeUpdate=t}break e;case 3:case 5:case 6:case 4:case 17:break e;default:a("163")}}Ra=Ra.nextEffect}}function Ha(e,t){for(;null!==Ra;){var n=Ra.effectTag;if(36&n){var r=Ra.alternate,o=Ra,i=t;switch(o.tag){case 0:case 11:case 15:pa(No,Do,o);break;case 1:var l=o.stateNode;if(4&o.effectTag)if(null===r)l.componentDidMount();else{var u=o.elementType===o.type?r.memoizedProps:no(o.type,r.memoizedProps);l.componentDidUpdate(u,r.memoizedState,l.__reactInternalSnapshotBeforeUpdate)}null!==(r=o.updateQueue)&&na(0,r,l);break;case 3:if(null!==(r=o.updateQueue)){if(l=null,null!==o.child)switch(o.child.tag){case 5:l=o.child.stateNode;break;case 1:l=o.child.stateNode}na(0,r,l)}break;case 5:i=o.stateNode,null===r&&4&o.effectTag&&vr(o.type,o.memoizedProps)&&i.focus();break;case 6:case 4:case 12:case 13:case 17:break;default:a("163")}}128&n&&(null!==(o=Ra.ref)&&(i=Ra.stateNode,"function"==typeof o?o(i):o.current=i)),512&n&&(Aa=e),Ra=Ra.nextEffect}}function Wa(){null!==ja&&wr(ja),null!==Ia&&Ia()}function Ba(e,t){Ma=Sa=!0,e.current===t&&a("177");var n=e.pendingCommitExpirationTime;0===n&&a("261"),e.pendingCommitExpirationTime=0;var r=t.expirationTime,o=t.childExpirationTime;for(function(e,t){if(e.didError=!1,0===t)e.earliestPendingTime=0,e.latestPendingTime=0,e.earliestSuspendedTime=0,e.latestSuspendedTime=0,e.latestPingedTime=0;else{t<e.latestPingedTime&&(e.latestPingedTime=0);var n=e.latestPendingTime;0!==n&&(n>t?e.earliestPendingTime=e.latestPendingTime=0:e.earliestPendingTime>t&&(e.earliestPendingTime=e.latestPendingTime)),0===(n=e.earliestSuspendedTime)?Jr(e,t):t<e.latestSuspendedTime?(e.earliestSuspendedTime=0,e.latestSuspendedTime=0,e.latestPingedTime=0,Jr(e,t)):t>n&&Jr(e,t)}to(0,e)}(e,o>r?o:r),ka.current=null,r=void 0,1<t.effectTag?null!==t.lastEffect?(t.lastEffect.nextEffect=t,r=t.firstEffect):r=t:r=t.firstEffect,hr=kn,mr=function(){var e=In();if(Ln(e)){if("selectionStart"in e)var t={start:e.selectionStart,end:e.selectionEnd};else e:{var n=(t=(t=e.ownerDocument)&&t.defaultView||window).getSelection&&t.getSelection();if(n&&0!==n.rangeCount){t=n.anchorNode;var r=n.anchorOffset,o=n.focusNode;n=n.focusOffset;try{t.nodeType,o.nodeType}catch(e){t=null;break e}var i=0,a=-1,l=-1,u=0,s=0,c=e,f=null;t:for(;;){for(var d;c!==t||0!==r&&3!==c.nodeType||(a=i+r),c!==o||0!==n&&3!==c.nodeType||(l=i+n),3===c.nodeType&&(i+=c.nodeValue.length),null!==(d=c.firstChild);)f=c,c=d;for(;;){if(c===e)break t;if(f===t&&++u===r&&(a=i),f===o&&++s===n&&(l=i),null!==(d=c.nextSibling))break;f=(c=f).parentNode}c=d}t=-1===a||-1===l?null:{start:a,end:l}}else t=null}t=t||{start:0,end:0}}else t=null;return{focusedElem:e,selectionRange:t}}(),kn=!1,Ra=r;null!==Ra;){o=!1;var l=void 0;try{za()}catch(e){o=!0,l=e}o&&(null===Ra&&a("178"),Ga(Ra,l),null!==Ra&&(Ra=Ra.nextEffect))}for(Ra=r;null!==Ra;){o=!1,l=void 0;try{Ua()}catch(e){o=!0,l=e}o&&(null===Ra&&a("178"),Ga(Ra,l),null!==Ra&&(Ra=Ra.nextEffect))}for(Fn(mr),mr=null,kn=!!hr,hr=null,e.current=t,Ra=r;null!==Ra;){o=!1,l=void 0;try{Ha(e,n)}catch(e){o=!0,l=e}o&&(null===Ra&&a("178"),Ga(Ra,l),null!==Ra&&(Ra=Ra.nextEffect))}if(null!==r&&null!==Aa){var u=function(e,t){Ia=ja=Aa=null;var n=rl;rl=!0;do{if(512&t.effectTag){var r=!1,o=void 0;try{var i=t;pa(Mo,So,i),pa(So,Ro,i)}catch(e){r=!0,o=e}r&&Ga(t,o)}t=t.nextEffect}while(null!==t);rl=n,0!==(n=e.expirationTime)&&El(e,n),sl||rl||_l(1073741823,!1)}.bind(null,e,r);ja=i.unstable_runWithPriority(i.unstable_NormalPriority,function(){return xr(u)}),Ia=u}Sa=Ma=!1,"function"==typeof zr&&zr(t.stateNode),n=t.expirationTime,0===(t=(t=t.childExpirationTime)>n?t:n)&&(La=null),function(e,t){e.expirationTime=t,e.finishedWork=null}(e,t)}function qa(e){for(;;){var t=e.alternate,n=e.return,r=e.sibling;if(0==(1024&e.effectTag)){_a=e;e:{var i=t,l=Pa,u=(t=e).pendingProps;switch(t.tag){case 2:case 16:break;case 15:case 0:break;case 1:Mr(t.type)&&Ar();break;case 3:Co(),jr(),(u=t.stateNode).pendingContext&&(u.context=u.pendingContext,u.pendingContext=null),null!==i&&null!==i.child||(gi(t),t.effectTag&=-3),la(t);break;case 5:To(t);var s=wo(xo.current);if(l=t.type,null!==i&&null!=t.stateNode)ua(i,t,l,u,s),i.ref!==t.ref&&(t.effectTag|=128);else if(u){var c=wo(go.current);if(gi(t)){i=(u=t).stateNode;var f=u.type,d=u.memoizedProps,p=s;switch(i[M]=u,i[A]=d,l=void 0,s=f){case"iframe":case"object":Tn("load",i);break;case"video":case"audio":for(f=0;f<te.length;f++)Tn(te[f],i);break;case"source":Tn("error",i);break;case"img":case"image":case"link":Tn("error",i),Tn("load",i);break;case"form":Tn("reset",i),Tn("submit",i);break;case"details":Tn("toggle",i);break;case"input":xt(i,d),Tn("invalid",i),dr(p,"onChange");break;case"select":i._wrapperState={wasMultiple:!!d.multiple},Tn("invalid",i),dr(p,"onChange");break;case"textarea":Yn(i,d),Tn("invalid",i),dr(p,"onChange")}for(l in cr(s,d),f=null,d)d.hasOwnProperty(l)&&(c=d[l],"children"===l?"string"==typeof c?i.textContent!==c&&(f=["children",c]):"number"==typeof c&&i.textContent!==""+c&&(f=["children",""+c]):b.hasOwnProperty(l)&&null!=c&&dr(p,l));switch(s){case"input":We(i),Ct(i,d,!0);break;case"textarea":We(i),Jn(i);break;case"select":case"option":break;default:"function"==typeof d.onClick&&(i.onclick=pr)}l=f,u.updateQueue=l,(u=null!==l)&&ia(t)}else{d=t,p=l,i=u,f=9===s.nodeType?s:s.ownerDocument,c===Zn.html&&(c=er(p)),c===Zn.html?"script"===p?((i=f.createElement("div")).innerHTML="<script><\/script>",f=i.removeChild(i.firstChild)):"string"==typeof i.is?f=f.createElement(p,{is:i.is}):(f=f.createElement(p),"select"===p&&(p=f,i.multiple?p.multiple=!0:i.size&&(p.size=i.size))):f=f.createElementNS(c,p),(i=f)[M]=d,i[A]=u,aa(i,t,!1,!1),p=i;var h=s,m=fr(f=l,d=u);switch(f){case"iframe":case"object":Tn("load",p),s=d;break;case"video":case"audio":for(s=0;s<te.length;s++)Tn(te[s],p);s=d;break;case"source":Tn("error",p),s=d;break;case"img":case"image":case"link":Tn("error",p),Tn("load",p),s=d;break;case"form":Tn("reset",p),Tn("submit",p),s=d;break;case"details":Tn("toggle",p),s=d;break;case"input":xt(p,d),s=bt(p,d),Tn("invalid",p),dr(h,"onChange");break;case"option":s=Gn(p,d);break;case"select":p._wrapperState={wasMultiple:!!d.multiple},s=o({},d,{value:void 0}),Tn("invalid",p),dr(h,"onChange");break;case"textarea":Yn(p,d),s=Qn(p,d),Tn("invalid",p),dr(h,"onChange");break;default:s=d}cr(f,s),c=void 0;var v=f,y=p,g=s;for(c in g)if(g.hasOwnProperty(c)){var x=g[c];"style"===c?ur(y,x):"dangerouslySetInnerHTML"===c?null!=(x=x?x.__html:void 0)&&rr(y,x):"children"===c?"string"==typeof x?("textarea"!==v||""!==x)&&or(y,x):"number"==typeof x&&or(y,""+x):"suppressContentEditableWarning"!==c&&"suppressHydrationWarning"!==c&&"autoFocus"!==c&&(b.hasOwnProperty(c)?null!=x&&dr(h,c):null!=x&&yt(y,c,x,m))}switch(f){case"input":We(p),Ct(p,d,!1);break;case"textarea":We(p),Jn(p);break;case"option":null!=d.value&&p.setAttribute("value",""+gt(d.value));break;case"select":(s=p).multiple=!!d.multiple,null!=(p=d.value)?Kn(s,!!d.multiple,p,!1):null!=d.defaultValue&&Kn(s,!!d.multiple,d.defaultValue,!0);break;default:"function"==typeof s.onClick&&(p.onclick=pr)}(u=vr(l,u))&&ia(t),t.stateNode=i}null!==t.ref&&(t.effectTag|=128)}else null===t.stateNode&&a("166");break;case 6:i&&null!=t.stateNode?sa(i,t,i.memoizedProps,u):("string"!=typeof u&&(null===t.stateNode&&a("166")),i=wo(xo.current),wo(go.current),gi(t)?(l=(u=t).stateNode,i=u.memoizedProps,l[M]=u,(u=l.nodeValue!==i)&&ia(t)):(l=t,(u=(9===i.nodeType?i:i.ownerDocument).createTextNode(u))[M]=t,l.stateNode=u));break;case 11:break;case 13:if(u=t.memoizedState,0!=(64&t.effectTag)){t.expirationTime=l,_a=t;break e}u=null!==u,l=null!==i&&null!==i.memoizedState,null!==i&&!u&&l&&(null!==(i=i.child.sibling)&&(null!==(s=t.firstEffect)?(t.firstEffect=i,i.nextEffect=s):(t.firstEffect=t.lastEffect=i,i.nextEffect=null),i.effectTag=8)),(u||l)&&(t.effectTag|=4);break;case 7:case 8:case 12:break;case 4:Co(),la(t);break;case 10:Ui(t);break;case 9:case 14:break;case 17:Mr(t.type)&&Ar();break;case 18:break;default:a("156")}_a=null}if(t=e,1===Pa||1!==t.childExpirationTime){for(u=0,l=t.child;null!==l;)(i=l.expirationTime)>u&&(u=i),(s=l.childExpirationTime)>u&&(u=s),l=l.sibling;t.childExpirationTime=u}if(null!==_a)return _a;null!==n&&0==(1024&n.effectTag)&&(null===n.firstEffect&&(n.firstEffect=e.firstEffect),null!==e.lastEffect&&(null!==n.lastEffect&&(n.lastEffect.nextEffect=e.firstEffect),n.lastEffect=e.lastEffect),1<e.effectTag&&(null!==n.lastEffect?n.lastEffect.nextEffect=e:n.firstEffect=e,n.lastEffect=e))}else{if(null!==(e=Ea(e)))return e.effectTag&=1023,e;null!==n&&(n.firstEffect=n.lastEffect=null,n.effectTag|=1024)}if(null!==r)return r;if(null===n)break;e=n}return null}function $a(e){var t=Mi(e.alternate,e,Pa);return e.memoizedProps=e.pendingProps,null===t&&(t=qa(e)),ka.current=null,t}function Va(e,t){Sa&&a("243"),Wa(),Sa=!0;var n=Ca.current;Ca.current=ui;var r=e.nextExpirationTimeToWorkOn;r===Pa&&e===Oa&&null!==_a||(Fa(),Pa=r,_a=Vr((Oa=e).current,null),e.pendingCommitExpirationTime=0);for(var o=!1;;){try{if(t)for(;null!==_a&&!Tl();)_a=$a(_a);else for(;null!==_a;)_a=$a(_a)}catch(t){if(Li=Ii=ji=null,Xo(),null===_a)o=!0,Dl(t);else{null===_a&&a("271");var i=_a,l=i.return;if(null!==l){e:{var u=e,s=l,c=i,f=t;if(l=Pa,c.effectTag|=1024,c.firstEffect=c.lastEffect=null,null!==f&&"object"==typeof f&&"function"==typeof f.then){var d=f;f=s;var p=-1,h=-1;do{if(13===f.tag){var m=f.alternate;if(null!==m&&null!==(m=m.memoizedState)){h=10*(1073741822-m.timedOutAt);break}"number"==typeof(m=f.pendingProps.maxDuration)&&(0>=m?p=0:(-1===p||m<p)&&(p=m))}f=f.return}while(null!==f);f=s;do{if((m=13===f.tag)&&(m=void 0!==f.memoizedProps.fallback&&null===f.memoizedState),m){if(null===(s=f.updateQueue)?((s=new Set).add(d),f.updateQueue=s):s.add(d),0==(1&f.mode)){f.effectTag|=64,c.effectTag&=-1957,1===c.tag&&(null===c.alternate?c.tag=17:((l=Qi(1073741823)).tag=qi,Xi(c,l))),c.expirationTime=1073741823;break e}s=l;var v=(c=u).pingCache;null===v?(v=c.pingCache=new ba,m=new Set,v.set(d,m)):void 0===(m=v.get(d))&&(m=new Set,v.set(d,m)),m.has(s)||(m.add(s),c=Qa.bind(null,c,d,s),d.then(c,c)),-1===p?u=1073741823:(-1===h&&(h=10*(1073741822-eo(u,l))-5e3),u=h+p),0<=u&&Na<u&&(Na=u),f.effectTag|=2048,f.expirationTime=l;break e}f=f.return}while(null!==f);f=Error((lt(c.type)||"A React component")+" suspended while rendering, but no fallback UI was specified.\n\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display."+ut(c))}Da=!0,f=oa(f,c),u=s;do{switch(u.tag){case 3:u.effectTag|=2048,u.expirationTime=l,Ji(u,l=xa(u,f,l));break e;case 1:if(p=f,h=u.type,c=u.stateNode,0==(64&u.effectTag)&&("function"==typeof h.getDerivedStateFromError||null!==c&&"function"==typeof c.componentDidCatch&&(null===La||!La.has(c)))){u.effectTag|=2048,u.expirationTime=l,Ji(u,l=wa(u,p,l));break e}}u=u.return}while(null!==u)}_a=qa(i);continue}o=!0,Dl(t)}}break}if(Sa=!1,Ca.current=n,Li=Ii=ji=null,Xo(),o)Oa=null,e.finishedWork=null;else if(null!==_a)e.finishedWork=null;else{if(null===(n=e.current.alternate)&&a("281"),Oa=null,Da){if(o=e.latestPendingTime,i=e.latestSuspendedTime,l=e.latestPingedTime,0!==o&&o<r||0!==i&&i<r||0!==l&&l<r)return Zr(e,r),void xl(e,n,r,e.expirationTime,-1);if(!e.didError&&t)return e.didError=!0,r=e.nextExpirationTimeToWorkOn=r,t=e.expirationTime=1073741823,void xl(e,n,r,t,-1)}t&&-1!==Na?(Zr(e,r),(t=10*(1073741822-eo(e,r)))<Na&&(Na=t),t=10*(1073741822-wl()),t=Na-t,xl(e,n,r,e.expirationTime,0>t?0:t)):(e.pendingCommitExpirationTime=r,e.finishedWork=n)}}function Ga(e,t){for(var n=e.return;null!==n;){switch(n.tag){case 1:var r=n.stateNode;if("function"==typeof n.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===La||!La.has(r)))return Xi(n,e=wa(n,e=oa(t,e),1073741823)),void Xa(n,1073741823);break;case 3:return Xi(n,e=xa(n,e=oa(t,e),1073741823)),void Xa(n,1073741823)}n=n.return}3===e.tag&&(Xi(e,n=xa(e,n=oa(t,e),1073741823)),Xa(e,1073741823))}function Ka(e,t){var n=i.unstable_getCurrentPriorityLevel(),r=void 0;if(0==(1&t.mode))r=1073741823;else if(Sa&&!Ma)r=Pa;else{switch(n){case i.unstable_ImmediatePriority:r=1073741823;break;case i.unstable_UserBlockingPriority:r=1073741822-10*(1+((1073741822-e+15)/10|0));break;case i.unstable_NormalPriority:r=1073741822-25*(1+((1073741822-e+500)/25|0));break;case i.unstable_LowPriority:case i.unstable_IdlePriority:r=1;break;default:a("313")}null!==Oa&&r===Pa&&--r}return n===i.unstable_UserBlockingPriority&&(0===al||r<al)&&(al=r),r}function Qa(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),null!==Oa&&Pa===n?Oa=null:(t=e.earliestSuspendedTime,r=e.latestSuspendedTime,0!==t&&n<=t&&n>=r&&(e.didError=!1,(0===(t=e.latestPingedTime)||t>n)&&(e.latestPingedTime=n),to(n,e),0!==(n=e.expirationTime)&&El(e,n)))}function Ya(e,t){e.expirationTime<t&&(e.expirationTime=t);var n=e.alternate;null!==n&&n.expirationTime<t&&(n.expirationTime=t);var r=e.return,o=null;if(null===r&&3===e.tag)o=e.stateNode;else for(;null!==r;){if(n=r.alternate,r.childExpirationTime<t&&(r.childExpirationTime=t),null!==n&&n.childExpirationTime<t&&(n.childExpirationTime=t),null===r.return&&3===r.tag){o=r.stateNode;break}r=r.return}return o}function Xa(e,t){null!==(e=Ya(e,t))&&(!Sa&&0!==Pa&&t>Pa&&Fa(),Jr(e,t),Sa&&!Ma&&Oa===e||El(e,e.expirationTime),vl>ml&&(vl=0,a("185")))}function Ja(e,t,n,r,o){return i.unstable_runWithPriority(i.unstable_ImmediatePriority,function(){return e(t,n,r,o)})}var Za=null,el=null,tl=0,nl=void 0,rl=!1,ol=null,il=0,al=0,ll=!1,ul=null,sl=!1,cl=!1,fl=null,dl=i.unstable_now(),pl=1073741822-(dl/10|0),hl=pl,ml=50,vl=0,yl=null;function gl(){pl=1073741822-((i.unstable_now()-dl)/10|0)}function bl(e,t){if(0!==tl){if(t<tl)return;null!==nl&&i.unstable_cancelCallback(nl)}tl=t,e=i.unstable_now()-dl,nl=i.unstable_scheduleCallback(Sl,{timeout:10*(1073741822-t)-e})}function xl(e,t,n,r,o){e.expirationTime=r,0!==o||Tl()?0<o&&(e.timeoutHandle=gr(function(e,t,n){e.pendingCommitExpirationTime=n,e.finishedWork=t,gl(),hl=pl,Ol(e,n)}.bind(null,e,t,n),o)):(e.pendingCommitExpirationTime=n,e.finishedWork=t)}function wl(){return rl?hl:(Cl(),0!==il&&1!==il||(gl(),hl=pl),hl)}function El(e,t){null===e.nextScheduledRoot?(e.expirationTime=t,null===el?(Za=el=e,e.nextScheduledRoot=e):(el=el.nextScheduledRoot=e).nextScheduledRoot=Za):t>e.expirationTime&&(e.expirationTime=t),rl||(sl?cl&&(ol=e,il=1073741823,Pl(e,1073741823,!1)):1073741823===t?_l(1073741823,!1):bl(e,t))}function Cl(){var e=0,t=null;if(null!==el)for(var n=el,r=Za;null!==r;){var o=r.expirationTime;if(0===o){if((null===n||null===el)&&a("244"),r===r.nextScheduledRoot){Za=el=r.nextScheduledRoot=null;break}if(r===Za)Za=o=r.nextScheduledRoot,el.nextScheduledRoot=o,r.nextScheduledRoot=null;else{if(r===el){(el=n).nextScheduledRoot=Za,r.nextScheduledRoot=null;break}n.nextScheduledRoot=r.nextScheduledRoot,r.nextScheduledRoot=null}r=n.nextScheduledRoot}else{if(o>e&&(e=o,t=r),r===el)break;if(1073741823===e)break;n=r,r=r.nextScheduledRoot}}ol=t,il=e}var kl=!1;function Tl(){return!!kl||!!i.unstable_shouldYield()&&(kl=!0)}function Sl(){try{if(!Tl()&&null!==Za){gl();var e=Za;do{var t=e.expirationTime;0!==t&&pl<=t&&(e.nextExpirationTimeToWorkOn=pl),e=e.nextScheduledRoot}while(e!==Za)}_l(0,!0)}finally{kl=!1}}function _l(e,t){if(Cl(),t)for(gl(),hl=pl;null!==ol&&0!==il&&e<=il&&!(kl&&pl>il);)Pl(ol,il,pl>il),Cl(),gl(),hl=pl;else for(;null!==ol&&0!==il&&e<=il;)Pl(ol,il,!1),Cl();if(t&&(tl=0,nl=null),0!==il&&bl(ol,il),vl=0,yl=null,null!==fl)for(e=fl,fl=null,t=0;t<e.length;t++){var n=e[t];try{n._onComplete()}catch(e){ll||(ll=!0,ul=e)}}if(ll)throw e=ul,ul=null,ll=!1,e}function Ol(e,t){rl&&a("253"),ol=e,il=t,Pl(e,t,!1),_l(1073741823,!1)}function Pl(e,t,n){if(rl&&a("245"),rl=!0,n){var r=e.finishedWork;null!==r?Nl(e,r,t):(e.finishedWork=null,-1!==(r=e.timeoutHandle)&&(e.timeoutHandle=-1,br(r)),Va(e,n),null!==(r=e.finishedWork)&&(Tl()?e.finishedWork=r:Nl(e,r,t)))}else null!==(r=e.finishedWork)?Nl(e,r,t):(e.finishedWork=null,-1!==(r=e.timeoutHandle)&&(e.timeoutHandle=-1,br(r)),Va(e,n),null!==(r=e.finishedWork)&&Nl(e,r,t));rl=!1}function Nl(e,t,n){var r=e.firstBatch;if(null!==r&&r._expirationTime>=n&&(null===fl?fl=[r]:fl.push(r),r._defer))return e.finishedWork=t,void(e.expirationTime=0);e.finishedWork=null,e===yl?vl++:(yl=e,vl=0),i.unstable_runWithPriority(i.unstable_ImmediatePriority,function(){Ba(e,t)})}function Dl(e){null===ol&&a("246"),ol.expirationTime=0,ll||(ll=!0,ul=e)}function Rl(e,t){var n=sl;sl=!0;try{return e(t)}finally{(sl=n)||rl||_l(1073741823,!1)}}function Ml(e,t){if(sl&&!cl){cl=!0;try{return e(t)}finally{cl=!1}}return e(t)}function Al(e,t,n){sl||rl||0===al||(_l(al,!1),al=0);var r=sl;sl=!0;try{return i.unstable_runWithPriority(i.unstable_UserBlockingPriority,function(){return e(t,n)})}finally{(sl=r)||rl||_l(1073741823,!1)}}function jl(e,t,n,r,o){var i=t.current;e:if(n){t:{2===tn(n=n._reactInternalFiber)&&1===n.tag||a("170");var l=n;do{switch(l.tag){case 3:l=l.stateNode.context;break t;case 1:if(Mr(l.type)){l=l.stateNode.__reactInternalMemoizedMergedChildContext;break t}}l=l.return}while(null!==l);a("171"),l=void 0}if(1===n.tag){var u=n.type;if(Mr(u)){n=Lr(n,u,l);break e}}n=l}else n=Or;return null===t.context?t.context=n:t.pendingContext=n,t=o,(o=Qi(r)).payload={element:e},null!==(t=void 0===t?null:t)&&(o.callback=t),Wa(),Xi(i,o),Xa(i,r),r}function Il(e,t,n,r){var o=t.current;return jl(e,t,n,o=Ka(wl(),o),r)}function Ll(e){if(!(e=e.current).child)return null;switch(e.child.tag){case 5:default:return e.child.stateNode}}function Fl(e){var t=1073741822-25*(1+((1073741822-wl()+500)/25|0));t>=Ta&&(t=Ta-1),this._expirationTime=Ta=t,this._root=e,this._callbacks=this._next=null,this._hasChildren=this._didComplete=!1,this._children=null,this._defer=!0}function Ul(){this._callbacks=null,this._didCommit=!1,this._onCommit=this._onCommit.bind(this)}function zl(e,t,n){e={current:t=qr(3,null,null,t?3:0),containerInfo:e,pendingChildren:null,pingCache:null,earliestPendingTime:0,latestPendingTime:0,earliestSuspendedTime:0,latestSuspendedTime:0,latestPingedTime:0,didError:!1,pendingCommitExpirationTime:0,finishedWork:null,timeoutHandle:-1,context:null,pendingContext:null,hydrate:n,nextExpirationTimeToWorkOn:0,expirationTime:0,firstBatch:null,nextScheduledRoot:null},this._internalRoot=t.stateNode=e}function Hl(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||" react-mount-point-unstable "!==e.nodeValue))}function Wl(e,t,n,r,o){var i=n._reactRootContainer;if(i){if("function"==typeof o){var a=o;o=function(){var e=Ll(i._internalRoot);a.call(e)}}null!=e?i.legacy_renderSubtreeIntoContainer(e,t,o):i.render(t,o)}else{if(i=n._reactRootContainer=function(e,t){if(t||(t=!(!(t=e?9===e.nodeType?e.documentElement:e.firstChild:null)||1!==t.nodeType||!t.hasAttribute("data-reactroot"))),!t)for(var n;n=e.lastChild;)e.removeChild(n);return new zl(e,!1,t)}(n,r),"function"==typeof o){var l=o;o=function(){var e=Ll(i._internalRoot);l.call(e)}}Ml(function(){null!=e?i.legacy_renderSubtreeIntoContainer(e,t,o):i.render(t,o)})}return Ll(i._internalRoot)}function Bl(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;return Hl(t)||a("200"),function(e,t,n){var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:Ke,key:null==r?null:""+r,children:e,containerInfo:t,implementation:n}}(e,t,null,n)}Se=function(e,t,n){switch(t){case"input":if(Et(e,n),t=n.name,"radio"===n.type&&null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll("input[name="+JSON.stringify(""+t)+'][type="radio"]'),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var o=F(r);o||a("90"),Be(r),Et(r,o)}}}break;case"textarea":Xn(e,n);break;case"select":null!=(t=n.value)&&Kn(e,!!n.multiple,t,!1)}},Fl.prototype.render=function(e){this._defer||a("250"),this._hasChildren=!0,this._children=e;var t=this._root._internalRoot,n=this._expirationTime,r=new Ul;return jl(e,t,null,n,r._onCommit),r},Fl.prototype.then=function(e){if(this._didComplete)e();else{var t=this._callbacks;null===t&&(t=this._callbacks=[]),t.push(e)}},Fl.prototype.commit=function(){var e=this._root._internalRoot,t=e.firstBatch;if(this._defer&&null!==t||a("251"),this._hasChildren){var n=this._expirationTime;if(t!==this){this._hasChildren&&(n=this._expirationTime=t._expirationTime,this.render(this._children));for(var r=null,o=t;o!==this;)r=o,o=o._next;null===r&&a("251"),r._next=o._next,this._next=t,e.firstBatch=this}this._defer=!1,Ol(e,n),t=this._next,this._next=null,null!==(t=e.firstBatch=t)&&t._hasChildren&&t.render(t._children)}else this._next=null,this._defer=!1},Fl.prototype._onComplete=function(){if(!this._didComplete){this._didComplete=!0;var e=this._callbacks;if(null!==e)for(var t=0;t<e.length;t++)(0,e[t])()}},Ul.prototype.then=function(e){if(this._didCommit)e();else{var t=this._callbacks;null===t&&(t=this._callbacks=[]),t.push(e)}},Ul.prototype._onCommit=function(){if(!this._didCommit){this._didCommit=!0;var e=this._callbacks;if(null!==e)for(var t=0;t<e.length;t++){var n=e[t];"function"!=typeof n&&a("191",n),n()}}},zl.prototype.render=function(e,t){var n=this._internalRoot,r=new Ul;return null!==(t=void 0===t?null:t)&&r.then(t),Il(e,n,null,r._onCommit),r},zl.prototype.unmount=function(e){var t=this._internalRoot,n=new Ul;return null!==(e=void 0===e?null:e)&&n.then(e),Il(null,t,null,n._onCommit),n},zl.prototype.legacy_renderSubtreeIntoContainer=function(e,t,n){var r=this._internalRoot,o=new Ul;return null!==(n=void 0===n?null:n)&&o.then(n),Il(t,r,e,o._onCommit),o},zl.prototype.createBatch=function(){var e=new Fl(this),t=e._expirationTime,n=this._internalRoot,r=n.firstBatch;if(null===r)n.firstBatch=e,e._next=null;else{for(n=null;null!==r&&r._expirationTime>=t;)n=r,r=r._next;e._next=r,null!==n&&(n._next=e)}return e},Re=Rl,Me=Al,Ae=function(){rl||0===al||(_l(al,!1),al=0)};var ql,$l,Vl={createPortal:Bl,findDOMNode:function(e){if(null==e)return null;if(1===e.nodeType)return e;var t=e._reactInternalFiber;return void 0===t&&("function"==typeof e.render?a("188"):a("268",Object.keys(e))),e=null===(e=rn(t))?null:e.stateNode},hydrate:function(e,t,n){return Hl(t)||a("200"),Wl(null,e,t,!0,n)},render:function(e,t,n){return Hl(t)||a("200"),Wl(null,e,t,!1,n)},unstable_renderSubtreeIntoContainer:function(e,t,n,r){return Hl(n)||a("200"),(null==e||void 0===e._reactInternalFiber)&&a("38"),Wl(e,t,n,!1,r)},unmountComponentAtNode:function(e){return Hl(e)||a("40"),!!e._reactRootContainer&&(Ml(function(){Wl(null,null,e,!1,function(){e._reactRootContainer=null})}),!0)},unstable_createPortal:function(){return Bl.apply(void 0,arguments)},unstable_batchedUpdates:Rl,unstable_interactiveUpdates:Al,flushSync:function(e,t){rl&&a("187");var n=sl;sl=!0;try{return Ja(e,t)}finally{sl=n,_l(1073741823,!1)}},unstable_createRoot:function(e,t){return Hl(e)||a("299","unstable_createRoot"),new zl(e,!0,null!=t&&!0===t.hydrate)},unstable_flushControlled:function(e){var t=sl;sl=!0;try{Ja(e)}finally{(sl=t)||rl||_l(1073741823,!1)}},__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:{Events:[I,L,F,P.injectEventPluginsByName,g,q,function(e){S(e,B)},Ne,De,On,D]}};$l=(ql={findFiberByHostInstance:j,bundleType:0,version:"16.8.6",rendererPackageName:"react-dom"}).findFiberByHostInstance,function(e){if("undefined"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)return!1;var t=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(t.isDisabled||!t.supportsFiber)return!0;try{var n=t.inject(e);zr=Wr(function(e){return t.onCommitFiberRoot(n,e)}),Hr=Wr(function(e){return t.onCommitFiberUnmount(n,e)})}catch(e){}}(o({},ql,{overrideProps:null,currentDispatcherRef:qe.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=rn(e))?null:e.stateNode},findFiberByHostInstance:function(e){return $l?$l(e):null}}));var Gl={default:Vl},Kl=Gl&&Vl||Gl;e.exports=Kl.default||Kl},function(e,t,n){"use strict";e.exports=n(40)},function(e,t,n){"use strict";(function(e){
+ */var o=n(0),r=n(22),i=n(46);function a(e){for(var t=arguments.length-1,n="https://reactjs.org/docs/error-decoder.html?invariant="+e,o=0;o<t;o++)n+="&args[]="+encodeURIComponent(arguments[o+1]);!function(e,t,n,o,r,i,a,s){if(!e){if(e=void 0,void 0===t)e=Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var l=[n,o,r,i,a,s],u=0;(e=Error(t.replace(/%s/g,function(){return l[u++]}))).name="Invariant Violation"}throw e.framesToPop=1,e}}(!1,"Minified React error #"+e+"; visit %s for the full message or use the non-minified dev environment for full errors and additional helpful warnings. ",n)}o||a("227");var s=!1,l=null,u=!1,c=null,d={onError:function(e){s=!0,l=e}};function p(e,t,n,o,r,i,a,u,c){s=!1,l=null,function(e,t,n,o,r,i,a,s,l){var u=Array.prototype.slice.call(arguments,3);try{t.apply(n,u)}catch(e){this.onError(e)}}.apply(d,arguments)}var h=null,f={};function m(){if(h)for(var e in f){var t=f[e],n=h.indexOf(e);if(-1<n||a("96",e),!v[n])for(var o in t.extractEvents||a("97",e),v[n]=t,n=t.eventTypes){var r=void 0,i=n[o],s=t,l=o;y.hasOwnProperty(l)&&a("99",l),y[l]=i;var u=i.phasedRegistrationNames;if(u){for(r in u)u.hasOwnProperty(r)&&g(u[r],s,l);r=!0}else i.registrationName?(g(i.registrationName,s,l),r=!0):r=!1;r||a("98",o,e)}}}function g(e,t,n){b[e]&&a("100",e),b[e]=t,w[e]=t.eventTypes[n].dependencies}var v=[],y={},b={},w={},E=null,C=null,x=null;function T(e,t,n){var o=e.type||"unknown-event";e.currentTarget=x(n),function(e,t,n,o,r,i,d,h,f){if(p.apply(this,arguments),s){if(s){var m=l;s=!1,l=null}else a("198"),m=void 0;u||(u=!0,c=m)}}(o,t,void 0,e),e.currentTarget=null}function k(e,t){return null==t&&a("30"),null==e?t:Array.isArray(e)?Array.isArray(t)?(e.push.apply(e,t),e):(e.push(t),e):Array.isArray(t)?[e].concat(t):[e,t]}function S(e,t,n){Array.isArray(e)?e.forEach(t,n):e&&t.call(n,e)}var D=null;function M(e){if(e){var t=e._dispatchListeners,n=e._dispatchInstances;if(Array.isArray(t))for(var o=0;o<t.length&&!e.isPropagationStopped();o++)T(e,t[o],n[o]);else t&&T(e,t,n);e._dispatchListeners=null,e._dispatchInstances=null,e.isPersistent()||e.constructor.release(e)}}var R={injectEventPluginOrder:function(e){h&&a("101"),h=Array.prototype.slice.call(e),m()},injectEventPluginsByName:function(e){var t,n=!1;for(t in e)if(e.hasOwnProperty(t)){var o=e[t];f.hasOwnProperty(t)&&f[t]===o||(f[t]&&a("102",t),f[t]=o,n=!0)}n&&m()}};function P(e,t){var n=e.stateNode;if(!n)return null;var o=E(n);if(!o)return null;n=o[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":(o=!o.disabled)||(o=!("button"===(e=e.type)||"input"===e||"select"===e||"textarea"===e)),e=!o;break e;default:e=!1}return e?null:(n&&"function"!=typeof n&&a("231",t,typeof n),n)}function _(e){if(null!==e&&(D=k(D,e)),e=D,D=null,e&&(S(e,M),D&&a("95"),u))throw e=c,u=!1,c=null,e}var L=Math.random().toString(36).slice(2),O="__reactInternalInstance$"+L,N="__reactEventHandlers$"+L;function F(e){if(e[O])return e[O];for(;!e[O];){if(!e.parentNode)return null;e=e.parentNode}return 5===(e=e[O]).tag||6===e.tag?e:null}function A(e){return!(e=e[O])||5!==e.tag&&6!==e.tag?null:e}function I(e){if(5===e.tag||6===e.tag)return e.stateNode;a("33")}function H(e){return e[N]||null}function z(e){do{e=e.return}while(e&&5!==e.tag);return e||null}function j(e,t,n){(t=P(e,n.dispatchConfig.phasedRegistrationNames[t]))&&(n._dispatchListeners=k(n._dispatchListeners,t),n._dispatchInstances=k(n._dispatchInstances,e))}function B(e){if(e&&e.dispatchConfig.phasedRegistrationNames){for(var t=e._targetInst,n=[];t;)n.push(t),t=z(t);for(t=n.length;0<t--;)j(n[t],"captured",e);for(t=0;t<n.length;t++)j(n[t],"bubbled",e)}}function U(e,t,n){e&&n&&n.dispatchConfig.registrationName&&(t=P(e,n.dispatchConfig.registrationName))&&(n._dispatchListeners=k(n._dispatchListeners,t),n._dispatchInstances=k(n._dispatchInstances,e))}function W(e){e&&e.dispatchConfig.registrationName&&U(e._targetInst,null,e)}function q(e){S(e,B)}var V=!("undefined"==typeof window||!window.document||!window.document.createElement);function G(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var Y={animationend:G("Animation","AnimationEnd"),animationiteration:G("Animation","AnimationIteration"),animationstart:G("Animation","AnimationStart"),transitionend:G("Transition","TransitionEnd")},$={},X={};function K(e){if($[e])return $[e];if(!Y[e])return e;var t,n=Y[e];for(t in n)if(n.hasOwnProperty(t)&&t in X)return $[e]=n[t];return e}V&&(X=document.createElement("div").style,"AnimationEvent"in window||(delete Y.animationend.animation,delete Y.animationiteration.animation,delete Y.animationstart.animation),"TransitionEvent"in window||delete Y.transitionend.transition);var Q=K("animationend"),J=K("animationiteration"),Z=K("animationstart"),ee=K("transitionend"),te="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),ne=null,oe=null,re=null;function ie(){if(re)return re;var e,t,n=oe,o=n.length,r="value"in ne?ne.value:ne.textContent,i=r.length;for(e=0;e<o&&n[e]===r[e];e++);var a=o-e;for(t=1;t<=a&&n[o-t]===r[i-t];t++);return re=r.slice(e,1<t?1-t:void 0)}function ae(){return!0}function se(){return!1}function le(e,t,n,o){for(var r in this.dispatchConfig=e,this._targetInst=t,this.nativeEvent=n,e=this.constructor.Interface)e.hasOwnProperty(r)&&((t=e[r])?this[r]=t(n):"target"===r?this.target=o:this[r]=n[r]);return this.isDefaultPrevented=(null!=n.defaultPrevented?n.defaultPrevented:!1===n.returnValue)?ae:se,this.isPropagationStopped=se,this}function ue(e,t,n,o){if(this.eventPool.length){var r=this.eventPool.pop();return this.call(r,e,t,n,o),r}return new this(e,t,n,o)}function ce(e){e instanceof this||a("279"),e.destructor(),10>this.eventPool.length&&this.eventPool.push(e)}function de(e){e.eventPool=[],e.getPooled=ue,e.release=ce}r(le.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=ae)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=ae)},persist:function(){this.isPersistent=ae},isPersistent:se,destructor:function(){var e,t=this.constructor.Interface;for(e in t)this[e]=null;this.nativeEvent=this._targetInst=this.dispatchConfig=null,this.isPropagationStopped=this.isDefaultPrevented=se,this._dispatchInstances=this._dispatchListeners=null}}),le.Interface={type:null,target:null,currentTarget:function(){return null},eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null},le.extend=function(e){function t(){}function n(){return o.apply(this,arguments)}var o=this;t.prototype=o.prototype;var i=new t;return r(i,n.prototype),n.prototype=i,n.prototype.constructor=n,n.Interface=r({},o.Interface,e),n.extend=o.extend,de(n),n},de(le);var pe=le.extend({data:null}),he=le.extend({data:null}),fe=[9,13,27,32],me=V&&"CompositionEvent"in window,ge=null;V&&"documentMode"in document&&(ge=document.documentMode);var ve=V&&"TextEvent"in window&&!ge,ye=V&&(!me||ge&&8<ge&&11>=ge),be=String.fromCharCode(32),we={beforeInput:{phasedRegistrationNames:{bubbled:"onBeforeInput",captured:"onBeforeInputCapture"},dependencies:["compositionend","keypress","textInput","paste"]},compositionEnd:{phasedRegistrationNames:{bubbled:"onCompositionEnd",captured:"onCompositionEndCapture"},dependencies:"blur compositionend keydown keypress keyup mousedown".split(" ")},compositionStart:{phasedRegistrationNames:{bubbled:"onCompositionStart",captured:"onCompositionStartCapture"},dependencies:"blur compositionstart keydown keypress keyup mousedown".split(" ")},compositionUpdate:{phasedRegistrationNames:{bubbled:"onCompositionUpdate",captured:"onCompositionUpdateCapture"},dependencies:"blur compositionupdate keydown keypress keyup mousedown".split(" ")}},Ee=!1;function Ce(e,t){switch(e){case"keyup":return-1!==fe.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"blur":return!0;default:return!1}}function xe(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var Te=!1;var ke={eventTypes:we,extractEvents:function(e,t,n,o){var r=void 0,i=void 0;if(me)e:{switch(e){case"compositionstart":r=we.compositionStart;break e;case"compositionend":r=we.compositionEnd;break e;case"compositionupdate":r=we.compositionUpdate;break e}r=void 0}else Te?Ce(e,n)&&(r=we.compositionEnd):"keydown"===e&&229===n.keyCode&&(r=we.compositionStart);return r?(ye&&"ko"!==n.locale&&(Te||r!==we.compositionStart?r===we.compositionEnd&&Te&&(i=ie()):(oe="value"in(ne=o)?ne.value:ne.textContent,Te=!0)),r=pe.getPooled(r,t,n,o),i?r.data=i:null!==(i=xe(n))&&(r.data=i),q(r),i=r):i=null,(e=ve?function(e,t){switch(e){case"compositionend":return xe(t);case"keypress":return 32!==t.which?null:(Ee=!0,be);case"textInput":return(e=t.data)===be&&Ee?null:e;default:return null}}(e,n):function(e,t){if(Te)return"compositionend"===e||!me&&Ce(e,t)?(e=ie(),re=oe=ne=null,Te=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return ye&&"ko"!==t.locale?null:t.data;default:return null}}(e,n))?((t=he.getPooled(we.beforeInput,t,n,o)).data=e,q(t)):t=null,null===i?t:null===t?i:[i,t]}},Se=null,De=null,Me=null;function Re(e){if(e=C(e)){"function"!=typeof Se&&a("280");var t=E(e.stateNode);Se(e.stateNode,e.type,t)}}function Pe(e){De?Me?Me.push(e):Me=[e]:De=e}function _e(){if(De){var e=De,t=Me;if(Me=De=null,Re(e),t)for(e=0;e<t.length;e++)Re(t[e])}}function Le(e,t){return e(t)}function Oe(e,t,n){return e(t,n)}function Ne(){}var Fe=!1;function Ae(e,t){if(Fe)return e(t);Fe=!0;try{return Le(e,t)}finally{Fe=!1,(null!==De||null!==Me)&&(Ne(),_e())}}var Ie={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function He(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!Ie[e.type]:"textarea"===t}function ze(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}function je(e){if(!V)return!1;var t=(e="on"+e)in document;return t||((t=document.createElement("div")).setAttribute(e,"return;"),t="function"==typeof t[e]),t}function Be(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function Ue(e){e._valueTracker||(e._valueTracker=function(e){var t=Be(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),o=""+e[t];if(!e.hasOwnProperty(t)&&void 0!==n&&"function"==typeof n.get&&"function"==typeof n.set){var r=n.get,i=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return r.call(this)},set:function(e){o=""+e,i.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return o},setValue:function(e){o=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function We(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),o="";return e&&(o=Be(e)?e.checked?"true":"false":e.value),(e=o)!==n&&(t.setValue(e),!0)}var qe=o.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;qe.hasOwnProperty("ReactCurrentDispatcher")||(qe.ReactCurrentDispatcher={current:null});var Ve=/^(.*)[\\\/]/,Ge="function"==typeof Symbol&&Symbol.for,Ye=Ge?Symbol.for("react.element"):60103,$e=Ge?Symbol.for("react.portal"):60106,Xe=Ge?Symbol.for("react.fragment"):60107,Ke=Ge?Symbol.for("react.strict_mode"):60108,Qe=Ge?Symbol.for("react.profiler"):60114,Je=Ge?Symbol.for("react.provider"):60109,Ze=Ge?Symbol.for("react.context"):60110,et=Ge?Symbol.for("react.concurrent_mode"):60111,tt=Ge?Symbol.for("react.forward_ref"):60112,nt=Ge?Symbol.for("react.suspense"):60113,ot=Ge?Symbol.for("react.memo"):60115,rt=Ge?Symbol.for("react.lazy"):60116,it="function"==typeof Symbol&&Symbol.iterator;function at(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=it&&e[it]||e["@@iterator"])?e:null}function st(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case et:return"ConcurrentMode";case Xe:return"Fragment";case $e:return"Portal";case Qe:return"Profiler";case Ke:return"StrictMode";case nt:return"Suspense"}if("object"==typeof e)switch(e.$$typeof){case Ze:return"Context.Consumer";case Je:return"Context.Provider";case tt:var t=e.render;return t=t.displayName||t.name||"",e.displayName||(""!==t?"ForwardRef("+t+")":"ForwardRef");case ot:return st(e.type);case rt:if(e=1===e._status?e._result:null)return st(e)}return null}function lt(e){var t="";do{e:switch(e.tag){case 3:case 4:case 6:case 7:case 10:case 9:var n="";break e;default:var o=e._debugOwner,r=e._debugSource,i=st(e.type);n=null,o&&(n=st(o.type)),o=i,i="",r?i=" (at "+r.fileName.replace(Ve,"")+":"+r.lineNumber+")":n&&(i=" (created by "+n+")"),n="\n in "+(o||"Unknown")+i}t+=n,e=e.return}while(e);return t}var ut=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,ct=Object.prototype.hasOwnProperty,dt={},pt={};function ht(e,t,n,o,r){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=o,this.attributeNamespace=r,this.mustUseProperty=n,this.propertyName=e,this.type=t}var ft={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){ft[e]=new ht(e,0,!1,e,null)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];ft[t]=new ht(t,1,!1,e[1],null)}),["contentEditable","draggable","spellCheck","value"].forEach(function(e){ft[e]=new ht(e,2,!1,e.toLowerCase(),null)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){ft[e]=new ht(e,2,!1,e,null)}),"allowFullScreen async autoFocus autoPlay controls default defer disabled formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){ft[e]=new ht(e,3,!1,e.toLowerCase(),null)}),["checked","multiple","muted","selected"].forEach(function(e){ft[e]=new ht(e,3,!0,e,null)}),["capture","download"].forEach(function(e){ft[e]=new ht(e,4,!1,e,null)}),["cols","rows","size","span"].forEach(function(e){ft[e]=new ht(e,6,!1,e,null)}),["rowSpan","start"].forEach(function(e){ft[e]=new ht(e,5,!1,e.toLowerCase(),null)});var mt=/[\-:]([a-z])/g;function gt(e){return e[1].toUpperCase()}function vt(e,t,n,o){var r=ft.hasOwnProperty(t)?ft[t]:null;(null!==r?0===r.type:!o&&(2<t.length&&("o"===t[0]||"O"===t[0])&&("n"===t[1]||"N"===t[1])))||(function(e,t,n,o){if(null==t||function(e,t,n,o){if(null!==n&&0===n.type)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return!o&&(null!==n?!n.acceptsBooleans:"data-"!==(e=e.toLowerCase().slice(0,5))&&"aria-"!==e);default:return!1}}(e,t,n,o))return!0;if(o)return!1;if(null!==n)switch(n.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}(t,n,r,o)&&(n=null),o||null===r?function(e){return!!ct.call(pt,e)||!ct.call(dt,e)&&(ut.test(e)?pt[e]=!0:(dt[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,""+n)):r.mustUseProperty?e[r.propertyName]=null===n?3!==r.type&&"":n:(t=r.attributeName,o=r.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(r=r.type)||4===r&&!0===n?"":""+n,o?e.setAttributeNS(o,t,n):e.setAttribute(t,n))))}function yt(e){switch(typeof e){case"boolean":case"number":case"object":case"string":case"undefined":return e;default:return""}}function bt(e,t){var n=t.checked;return r({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function wt(e,t){var n=null==t.defaultValue?"":t.defaultValue,o=null!=t.checked?t.checked:t.defaultChecked;n=yt(null!=t.value?t.value:n),e._wrapperState={initialChecked:o,initialValue:n,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function Et(e,t){null!=(t=t.checked)&&vt(e,"checked",t,!1)}function Ct(e,t){Et(e,t);var n=yt(t.value),o=t.type;if(null!=n)"number"===o?(0===n&&""===e.value||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if("submit"===o||"reset"===o)return void e.removeAttribute("value");t.hasOwnProperty("value")?Tt(e,t.type,n):t.hasOwnProperty("defaultValue")&&Tt(e,t.type,yt(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function xt(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var o=t.type;if(!("submit"!==o&&"reset"!==o||void 0!==t.value&&null!==t.value))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}""!==(n=e.name)&&(e.name=""),e.defaultChecked=!e.defaultChecked,e.defaultChecked=!!e._wrapperState.initialChecked,""!==n&&(e.name=n)}function Tt(e,t,n){"number"===t&&e.ownerDocument.activeElement===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(mt,gt);ft[t]=new ht(t,1,!1,e,null)}),"xlink:actuate xlink:arcrole xlink:href xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(mt,gt);ft[t]=new ht(t,1,!1,e,"http://www.w3.org/1999/xlink")}),["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(mt,gt);ft[t]=new ht(t,1,!1,e,"http://www.w3.org/XML/1998/namespace")}),["tabIndex","crossOrigin"].forEach(function(e){ft[e]=new ht(e,1,!1,e.toLowerCase(),null)});var kt={change:{phasedRegistrationNames:{bubbled:"onChange",captured:"onChangeCapture"},dependencies:"blur change click focus input keydown keyup selectionchange".split(" ")}};function St(e,t,n){return(e=le.getPooled(kt.change,e,t,n)).type="change",Pe(n),q(e),e}var Dt=null,Mt=null;function Rt(e){_(e)}function Pt(e){if(We(I(e)))return e}function _t(e,t){if("change"===e)return t}var Lt=!1;function Ot(){Dt&&(Dt.detachEvent("onpropertychange",Nt),Mt=Dt=null)}function Nt(e){"value"===e.propertyName&&Pt(Mt)&&Ae(Rt,e=St(Mt,e,ze(e)))}function Ft(e,t,n){"focus"===e?(Ot(),Mt=n,(Dt=t).attachEvent("onpropertychange",Nt)):"blur"===e&&Ot()}function At(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return Pt(Mt)}function It(e,t){if("click"===e)return Pt(t)}function Ht(e,t){if("input"===e||"change"===e)return Pt(t)}V&&(Lt=je("input")&&(!document.documentMode||9<document.documentMode));var zt={eventTypes:kt,_isInputEventSupported:Lt,extractEvents:function(e,t,n,o){var r=t?I(t):window,i=void 0,a=void 0,s=r.nodeName&&r.nodeName.toLowerCase();if("select"===s||"input"===s&&"file"===r.type?i=_t:He(r)?Lt?i=Ht:(i=At,a=Ft):(s=r.nodeName)&&"input"===s.toLowerCase()&&("checkbox"===r.type||"radio"===r.type)&&(i=It),i&&(i=i(e,t)))return St(i,n,o);a&&a(e,r,t),"blur"===e&&(e=r._wrapperState)&&e.controlled&&"number"===r.type&&Tt(r,"number",r.value)}},jt=le.extend({view:null,detail:null}),Bt={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Ut(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=Bt[e])&&!!t[e]}function Wt(){return Ut}var qt=0,Vt=0,Gt=!1,Yt=!1,$t=jt.extend({screenX:null,screenY:null,clientX:null,clientY:null,pageX:null,pageY:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,getModifierState:Wt,button:null,buttons:null,relatedTarget:function(e){return e.relatedTarget||(e.fromElement===e.srcElement?e.toElement:e.fromElement)},movementX:function(e){if("movementX"in e)return e.movementX;var t=qt;return qt=e.screenX,Gt?"mousemove"===e.type?e.screenX-t:0:(Gt=!0,0)},movementY:function(e){if("movementY"in e)return e.movementY;var t=Vt;return Vt=e.screenY,Yt?"mousemove"===e.type?e.screenY-t:0:(Yt=!0,0)}}),Xt=$t.extend({pointerId:null,width:null,height:null,pressure:null,tangentialPressure:null,tiltX:null,tiltY:null,twist:null,pointerType:null,isPrimary:null}),Kt={mouseEnter:{registrationName:"onMouseEnter",dependencies:["mouseout","mouseover"]},mouseLeave:{registrationName:"onMouseLeave",dependencies:["mouseout","mouseover"]},pointerEnter:{registrationName:"onPointerEnter",dependencies:["pointerout","pointerover"]},pointerLeave:{registrationName:"onPointerLeave",dependencies:["pointerout","pointerover"]}},Qt={eventTypes:Kt,extractEvents:function(e,t,n,o){var r="mouseover"===e||"pointerover"===e,i="mouseout"===e||"pointerout"===e;if(r&&(n.relatedTarget||n.fromElement)||!i&&!r)return null;if(r=o.window===o?o:(r=o.ownerDocument)?r.defaultView||r.parentWindow:window,i?(i=t,t=(t=n.relatedTarget||n.toElement)?F(t):null):i=null,i===t)return null;var a=void 0,s=void 0,l=void 0,u=void 0;"mouseout"===e||"mouseover"===e?(a=$t,s=Kt.mouseLeave,l=Kt.mouseEnter,u="mouse"):"pointerout"!==e&&"pointerover"!==e||(a=Xt,s=Kt.pointerLeave,l=Kt.pointerEnter,u="pointer");var c=null==i?r:I(i);if(r=null==t?r:I(t),(e=a.getPooled(s,i,n,o)).type=u+"leave",e.target=c,e.relatedTarget=r,(n=a.getPooled(l,t,n,o)).type=u+"enter",n.target=r,n.relatedTarget=c,o=t,i&&o)e:{for(r=o,u=0,a=t=i;a;a=z(a))u++;for(a=0,l=r;l;l=z(l))a++;for(;0<u-a;)t=z(t),u--;for(;0<a-u;)r=z(r),a--;for(;u--;){if(t===r||t===r.alternate)break e;t=z(t),r=z(r)}t=null}else t=null;for(r=t,t=[];i&&i!==r&&(null===(u=i.alternate)||u!==r);)t.push(i),i=z(i);for(i=[];o&&o!==r&&(null===(u=o.alternate)||u!==r);)i.push(o),o=z(o);for(o=0;o<t.length;o++)U(t[o],"bubbled",e);for(o=i.length;0<o--;)U(i[o],"captured",n);return[e,n]}};function Jt(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t}var Zt=Object.prototype.hasOwnProperty;function en(e,t){if(Jt(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),o=Object.keys(t);if(n.length!==o.length)return!1;for(o=0;o<n.length;o++)if(!Zt.call(t,n[o])||!Jt(e[n[o]],t[n[o]]))return!1;return!0}function tn(e){var t=e;if(e.alternate)for(;t.return;)t=t.return;else{if(0!=(2&t.effectTag))return 1;for(;t.return;)if(0!=(2&(t=t.return).effectTag))return 1}return 3===t.tag?2:3}function nn(e){2!==tn(e)&&a("188")}function on(e){if(!(e=function(e){var t=e.alternate;if(!t)return 3===(t=tn(e))&&a("188"),1===t?null:e;for(var n=e,o=t;;){var r=n.return,i=r?r.alternate:null;if(!r||!i)break;if(r.child===i.child){for(var s=r.child;s;){if(s===n)return nn(r),e;if(s===o)return nn(r),t;s=s.sibling}a("188")}if(n.return!==o.return)n=r,o=i;else{s=!1;for(var l=r.child;l;){if(l===n){s=!0,n=r,o=i;break}if(l===o){s=!0,o=r,n=i;break}l=l.sibling}if(!s){for(l=i.child;l;){if(l===n){s=!0,n=i,o=r;break}if(l===o){s=!0,o=i,n=r;break}l=l.sibling}s||a("189")}}n.alternate!==o&&a("190")}return 3!==n.tag&&a("188"),n.stateNode.current===n?e:t}(e)))return null;for(var t=e;;){if(5===t.tag||6===t.tag)return t;if(t.child)t.child.return=t,t=t.child;else{if(t===e)break;for(;!t.sibling;){if(!t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}}return null}var rn=le.extend({animationName:null,elapsedTime:null,pseudoElement:null}),an=le.extend({clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),sn=jt.extend({relatedTarget:null});function ln(e){var t=e.keyCode;return"charCode"in e?0===(e=e.charCode)&&13===t&&(e=13):e=t,10===e&&(e=13),32<=e||13===e?e:0}var un={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},cn={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},dn=jt.extend({key:function(e){if(e.key){var t=un[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=ln(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?cn[e.keyCode]||"Unidentified":""},location:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,repeat:null,locale:null,getModifierState:Wt,charCode:function(e){return"keypress"===e.type?ln(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?ln(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}}),pn=$t.extend({dataTransfer:null}),hn=jt.extend({touches:null,targetTouches:null,changedTouches:null,altKey:null,metaKey:null,ctrlKey:null,shiftKey:null,getModifierState:Wt}),fn=le.extend({propertyName:null,elapsedTime:null,pseudoElement:null}),mn=$t.extend({deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:null,deltaMode:null}),gn=[["abort","abort"],[Q,"animationEnd"],[J,"animationIteration"],[Z,"animationStart"],["canplay","canPlay"],["canplaythrough","canPlayThrough"],["drag","drag"],["dragenter","dragEnter"],["dragexit","dragExit"],["dragleave","dragLeave"],["dragover","dragOver"],["durationchange","durationChange"],["emptied","emptied"],["encrypted","encrypted"],["ended","ended"],["error","error"],["gotpointercapture","gotPointerCapture"],["load","load"],["loadeddata","loadedData"],["loadedmetadata","loadedMetadata"],["loadstart","loadStart"],["lostpointercapture","lostPointerCapture"],["mousemove","mouseMove"],["mouseout","mouseOut"],["mouseover","mouseOver"],["playing","playing"],["pointermove","pointerMove"],["pointerout","pointerOut"],["pointerover","pointerOver"],["progress","progress"],["scroll","scroll"],["seeking","seeking"],["stalled","stalled"],["suspend","suspend"],["timeupdate","timeUpdate"],["toggle","toggle"],["touchmove","touchMove"],[ee,"transitionEnd"],["waiting","waiting"],["wheel","wheel"]],vn={},yn={};function bn(e,t){var n=e[0],o="on"+((e=e[1])[0].toUpperCase()+e.slice(1));t={phasedRegistrationNames:{bubbled:o,captured:o+"Capture"},dependencies:[n],isInteractive:t},vn[e]=t,yn[n]=t}[["blur","blur"],["cancel","cancel"],["click","click"],["close","close"],["contextmenu","contextMenu"],["copy","copy"],["cut","cut"],["auxclick","auxClick"],["dblclick","doubleClick"],["dragend","dragEnd"],["dragstart","dragStart"],["drop","drop"],["focus","focus"],["input","input"],["invalid","invalid"],["keydown","keyDown"],["keypress","keyPress"],["keyup","keyUp"],["mousedown","mouseDown"],["mouseup","mouseUp"],["paste","paste"],["pause","pause"],["play","play"],["pointercancel","pointerCancel"],["pointerdown","pointerDown"],["pointerup","pointerUp"],["ratechange","rateChange"],["reset","reset"],["seeked","seeked"],["submit","submit"],["touchcancel","touchCancel"],["touchend","touchEnd"],["touchstart","touchStart"],["volumechange","volumeChange"]].forEach(function(e){bn(e,!0)}),gn.forEach(function(e){bn(e,!1)});var wn={eventTypes:vn,isInteractiveTopLevelEventType:function(e){return void 0!==(e=yn[e])&&!0===e.isInteractive},extractEvents:function(e,t,n,o){var r=yn[e];if(!r)return null;switch(e){case"keypress":if(0===ln(n))return null;case"keydown":case"keyup":e=dn;break;case"blur":case"focus":e=sn;break;case"click":if(2===n.button)return null;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":e=$t;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":e=pn;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":e=hn;break;case Q:case J:case Z:e=rn;break;case ee:e=fn;break;case"scroll":e=jt;break;case"wheel":e=mn;break;case"copy":case"cut":case"paste":e=an;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":e=Xt;break;default:e=le}return q(t=e.getPooled(r,t,n,o)),t}},En=wn.isInteractiveTopLevelEventType,Cn=[];function xn(e){var t=e.targetInst,n=t;do{if(!n){e.ancestors.push(n);break}var o;for(o=n;o.return;)o=o.return;if(!(o=3!==o.tag?null:o.stateNode.containerInfo))break;e.ancestors.push(n),n=F(o)}while(n);for(n=0;n<e.ancestors.length;n++){t=e.ancestors[n];var r=ze(e.nativeEvent);o=e.topLevelType;for(var i=e.nativeEvent,a=null,s=0;s<v.length;s++){var l=v[s];l&&(l=l.extractEvents(o,t,i,r))&&(a=k(a,l))}_(a)}}var Tn=!0;function kn(e,t){if(!t)return null;var n=(En(e)?Dn:Mn).bind(null,e);t.addEventListener(e,n,!1)}function Sn(e,t){if(!t)return null;var n=(En(e)?Dn:Mn).bind(null,e);t.addEventListener(e,n,!0)}function Dn(e,t){Oe(Mn,e,t)}function Mn(e,t){if(Tn){var n=ze(t);if(null===(n=F(n))||"number"!=typeof n.tag||2===tn(n)||(n=null),Cn.length){var o=Cn.pop();o.topLevelType=e,o.nativeEvent=t,o.targetInst=n,e=o}else e={topLevelType:e,nativeEvent:t,targetInst:n,ancestors:[]};try{Ae(xn,e)}finally{e.topLevelType=null,e.nativeEvent=null,e.targetInst=null,e.ancestors.length=0,10>Cn.length&&Cn.push(e)}}}var Rn={},Pn=0,_n="_reactListenersID"+(""+Math.random()).slice(2);function Ln(e){return Object.prototype.hasOwnProperty.call(e,_n)||(e[_n]=Pn++,Rn[e[_n]]={}),Rn[e[_n]]}function On(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}function Nn(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function Fn(e,t){var n,o=Nn(e);for(e=0;o;){if(3===o.nodeType){if(n=e+o.textContent.length,e<=t&&n>=t)return{node:o,offset:t-e};e=n}e:{for(;o;){if(o.nextSibling){o=o.nextSibling;break e}o=o.parentNode}o=void 0}o=Nn(o)}}function An(){for(var e=window,t=On();t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(e){n=!1}if(!n)break;t=On((e=t.contentWindow).document)}return t}function In(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}function Hn(e){var t=An(),n=e.focusedElem,o=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&function e(t,n){return!(!t||!n)&&(t===n||(!t||3!==t.nodeType)&&(n&&3===n.nodeType?e(t,n.parentNode):"contains"in t?t.contains(n):!!t.compareDocumentPosition&&!!(16&t.compareDocumentPosition(n))))}(n.ownerDocument.documentElement,n)){if(null!==o&&In(n))if(t=o.start,void 0===(e=o.end)&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if((e=(t=n.ownerDocument||document)&&t.defaultView||window).getSelection){e=e.getSelection();var r=n.textContent.length,i=Math.min(o.start,r);o=void 0===o.end?i:Math.min(o.end,r),!e.extend&&i>o&&(r=o,o=i,i=r),r=Fn(n,i);var a=Fn(n,o);r&&a&&(1!==e.rangeCount||e.anchorNode!==r.node||e.anchorOffset!==r.offset||e.focusNode!==a.node||e.focusOffset!==a.offset)&&((t=t.createRange()).setStart(r.node,r.offset),e.removeAllRanges(),i>o?(e.addRange(t),e.extend(a.node,a.offset)):(t.setEnd(a.node,a.offset),e.addRange(t)))}for(t=[],e=n;e=e.parentNode;)1===e.nodeType&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for("function"==typeof n.focus&&n.focus(),n=0;n<t.length;n++)(e=t[n]).element.scrollLeft=e.left,e.element.scrollTop=e.top}}var zn=V&&"documentMode"in document&&11>=document.documentMode,jn={select:{phasedRegistrationNames:{bubbled:"onSelect",captured:"onSelectCapture"},dependencies:"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange".split(" ")}},Bn=null,Un=null,Wn=null,qn=!1;function Vn(e,t){var n=t.window===t?t.document:9===t.nodeType?t:t.ownerDocument;return qn||null==Bn||Bn!==On(n)?null:("selectionStart"in(n=Bn)&&In(n)?n={start:n.selectionStart,end:n.selectionEnd}:n={anchorNode:(n=(n.ownerDocument&&n.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:n.anchorOffset,focusNode:n.focusNode,focusOffset:n.focusOffset},Wn&&en(Wn,n)?null:(Wn=n,(e=le.getPooled(jn.select,Un,e,t)).type="select",e.target=Bn,q(e),e))}var Gn={eventTypes:jn,extractEvents:function(e,t,n,o){var r,i=o.window===o?o.document:9===o.nodeType?o:o.ownerDocument;if(!(r=!i)){e:{i=Ln(i),r=w.onSelect;for(var a=0;a<r.length;a++){var s=r[a];if(!i.hasOwnProperty(s)||!i[s]){i=!1;break e}}i=!0}r=!i}if(r)return null;switch(i=t?I(t):window,e){case"focus":(He(i)||"true"===i.contentEditable)&&(Bn=i,Un=t,Wn=null);break;case"blur":Wn=Un=Bn=null;break;case"mousedown":qn=!0;break;case"contextmenu":case"mouseup":case"dragend":return qn=!1,Vn(n,o);case"selectionchange":if(zn)break;case"keydown":case"keyup":return Vn(n,o)}return null}};function Yn(e,t){return e=r({children:void 0},t),(t=function(e){var t="";return o.Children.forEach(e,function(e){null!=e&&(t+=e)}),t}(t.children))&&(e.children=t),e}function $n(e,t,n,o){if(e=e.options,t){t={};for(var r=0;r<n.length;r++)t["$"+n[r]]=!0;for(n=0;n<e.length;n++)r=t.hasOwnProperty("$"+e[n].value),e[n].selected!==r&&(e[n].selected=r),r&&o&&(e[n].defaultSelected=!0)}else{for(n=""+yt(n),t=null,r=0;r<e.length;r++){if(e[r].value===n)return e[r].selected=!0,void(o&&(e[r].defaultSelected=!0));null!==t||e[r].disabled||(t=e[r])}null!==t&&(t.selected=!0)}}function Xn(e,t){return null!=t.dangerouslySetInnerHTML&&a("91"),r({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function Kn(e,t){var n=t.value;null==n&&(n=t.defaultValue,null!=(t=t.children)&&(null!=n&&a("92"),Array.isArray(t)&&(1>=t.length||a("93"),t=t[0]),n=t),null==n&&(n="")),e._wrapperState={initialValue:yt(n)}}function Qn(e,t){var n=yt(t.value),o=yt(t.defaultValue);null!=n&&((n=""+n)!==e.value&&(e.value=n),null==t.defaultValue&&e.defaultValue!==n&&(e.defaultValue=n)),null!=o&&(e.defaultValue=""+o)}function Jn(e){var t=e.textContent;t===e._wrapperState.initialValue&&(e.value=t)}R.injectEventPluginOrder("ResponderEventPlugin SimpleEventPlugin EnterLeaveEventPlugin ChangeEventPlugin SelectEventPlugin BeforeInputEventPlugin".split(" ")),E=H,C=A,x=I,R.injectEventPluginsByName({SimpleEventPlugin:wn,EnterLeaveEventPlugin:Qt,ChangeEventPlugin:zt,SelectEventPlugin:Gn,BeforeInputEventPlugin:ke});var Zn={html:"http://www.w3.org/1999/xhtml",mathml:"http://www.w3.org/1998/Math/MathML",svg:"http://www.w3.org/2000/svg"};function eo(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function to(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?eo(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var no=void 0,oo=function(e){return"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(t,n,o,r){MSApp.execUnsafeLocalFunction(function(){return e(t,n)})}:e}(function(e,t){if(e.namespaceURI!==Zn.svg||"innerHTML"in e)e.innerHTML=t;else{for((no=no||document.createElement("div")).innerHTML="<svg>"+t+"</svg>",t=no.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function ro(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}var io={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},ao=["Webkit","ms","Moz","O"];function so(e,t,n){return null==t||"boolean"==typeof t||""===t?"":n||"number"!=typeof t||0===t||io.hasOwnProperty(e)&&io[e]?(""+t).trim():t+"px"}function lo(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var o=0===n.indexOf("--"),r=so(n,t[n],o);"float"===n&&(n="cssFloat"),o?e.setProperty(n,r):e[n]=r}}Object.keys(io).forEach(function(e){ao.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),io[t]=io[e]})});var uo=r({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function co(e,t){t&&(uo[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML)&&a("137",e,""),null!=t.dangerouslySetInnerHTML&&(null!=t.children&&a("60"),"object"==typeof t.dangerouslySetInnerHTML&&"__html"in t.dangerouslySetInnerHTML||a("61")),null!=t.style&&"object"!=typeof t.style&&a("62",""))}function po(e,t){if(-1===e.indexOf("-"))return"string"==typeof t.is;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}function ho(e,t){var n=Ln(e=9===e.nodeType||11===e.nodeType?e:e.ownerDocument);t=w[t];for(var o=0;o<t.length;o++){var r=t[o];if(!n.hasOwnProperty(r)||!n[r]){switch(r){case"scroll":Sn("scroll",e);break;case"focus":case"blur":Sn("focus",e),Sn("blur",e),n.blur=!0,n.focus=!0;break;case"cancel":case"close":je(r)&&Sn(r,e);break;case"invalid":case"submit":case"reset":break;default:-1===te.indexOf(r)&&kn(r,e)}n[r]=!0}}}function fo(){}var mo=null,go=null;function vo(e,t){switch(e){case"button":case"input":case"select":case"textarea":return!!t.autoFocus}return!1}function yo(e,t){return"textarea"===e||"option"===e||"noscript"===e||"string"==typeof t.children||"number"==typeof t.children||"object"==typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var bo="function"==typeof setTimeout?setTimeout:void 0,wo="function"==typeof clearTimeout?clearTimeout:void 0,Eo=i.unstable_scheduleCallback,Co=i.unstable_cancelCallback;function xo(e){for(e=e.nextSibling;e&&1!==e.nodeType&&3!==e.nodeType;)e=e.nextSibling;return e}function To(e){for(e=e.firstChild;e&&1!==e.nodeType&&3!==e.nodeType;)e=e.nextSibling;return e}new Set;var ko=[],So=-1;function Do(e){0>So||(e.current=ko[So],ko[So]=null,So--)}function Mo(e,t){ko[++So]=e.current,e.current=t}var Ro={},Po={current:Ro},_o={current:!1},Lo=Ro;function Oo(e,t){var n=e.type.contextTypes;if(!n)return Ro;var o=e.stateNode;if(o&&o.__reactInternalMemoizedUnmaskedChildContext===t)return o.__reactInternalMemoizedMaskedChildContext;var r,i={};for(r in n)i[r]=t[r];return o&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=i),i}function No(e){return null!=(e=e.childContextTypes)}function Fo(e){Do(_o),Do(Po)}function Ao(e){Do(_o),Do(Po)}function Io(e,t,n){Po.current!==Ro&&a("168"),Mo(Po,t),Mo(_o,n)}function Ho(e,t,n){var o=e.stateNode;if(e=t.childContextTypes,"function"!=typeof o.getChildContext)return n;for(var i in o=o.getChildContext())i in e||a("108",st(t)||"Unknown",i);return r({},n,o)}function zo(e){var t=e.stateNode;return t=t&&t.__reactInternalMemoizedMergedChildContext||Ro,Lo=Po.current,Mo(Po,t),Mo(_o,_o.current),!0}function jo(e,t,n){var o=e.stateNode;o||a("169"),n?(t=Ho(e,t,Lo),o.__reactInternalMemoizedMergedChildContext=t,Do(_o),Do(Po),Mo(Po,t)):Do(_o),Mo(_o,n)}var Bo=null,Uo=null;function Wo(e){return function(t){try{return e(t)}catch(e){}}}function qo(e,t,n,o){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.contextDependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=o,this.effectTag=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.childExpirationTime=this.expirationTime=0,this.alternate=null}function Vo(e,t,n,o){return new qo(e,t,n,o)}function Go(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Yo(e,t){var n=e.alternate;return null===n?((n=Vo(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.effectTag=0,n.nextEffect=null,n.firstEffect=null,n.lastEffect=null),n.childExpirationTime=e.childExpirationTime,n.expirationTime=e.expirationTime,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,n.contextDependencies=e.contextDependencies,n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function $o(e,t,n,o,r,i){var s=2;if(o=e,"function"==typeof e)Go(e)&&(s=1);else if("string"==typeof e)s=5;else e:switch(e){case Xe:return Xo(n.children,r,i,t);case et:return Ko(n,3|r,i,t);case Ke:return Ko(n,2|r,i,t);case Qe:return(e=Vo(12,n,t,4|r)).elementType=Qe,e.type=Qe,e.expirationTime=i,e;case nt:return(e=Vo(13,n,t,r)).elementType=nt,e.type=nt,e.expirationTime=i,e;default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case Je:s=10;break e;case Ze:s=9;break e;case tt:s=11;break e;case ot:s=14;break e;case rt:s=16,o=null;break e}a("130",null==e?e:typeof e,"")}return(t=Vo(s,n,t,r)).elementType=e,t.type=o,t.expirationTime=i,t}function Xo(e,t,n,o){return(e=Vo(7,e,o,t)).expirationTime=n,e}function Ko(e,t,n,o){return e=Vo(8,e,o,t),t=0==(1&t)?Ke:et,e.elementType=t,e.type=t,e.expirationTime=n,e}function Qo(e,t,n){return(e=Vo(6,e,null,t)).expirationTime=n,e}function Jo(e,t,n){return(t=Vo(4,null!==e.children?e.children:[],e.key,t)).expirationTime=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Zo(e,t){e.didError=!1;var n=e.earliestPendingTime;0===n?e.earliestPendingTime=e.latestPendingTime=t:n<t?e.earliestPendingTime=t:e.latestPendingTime>t&&(e.latestPendingTime=t),nr(t,e)}function er(e,t){e.didError=!1,e.latestPingedTime>=t&&(e.latestPingedTime=0);var n=e.earliestPendingTime,o=e.latestPendingTime;n===t?e.earliestPendingTime=o===t?e.latestPendingTime=0:o:o===t&&(e.latestPendingTime=n),n=e.earliestSuspendedTime,o=e.latestSuspendedTime,0===n?e.earliestSuspendedTime=e.latestSuspendedTime=t:n<t?e.earliestSuspendedTime=t:o>t&&(e.latestSuspendedTime=t),nr(t,e)}function tr(e,t){var n=e.earliestPendingTime;return n>t&&(t=n),(e=e.earliestSuspendedTime)>t&&(t=e),t}function nr(e,t){var n=t.earliestSuspendedTime,o=t.latestSuspendedTime,r=t.earliestPendingTime,i=t.latestPingedTime;0===(r=0!==r?r:i)&&(0===e||o<e)&&(r=o),0!==(e=r)&&n>e&&(e=n),t.nextExpirationTimeToWorkOn=r,t.expirationTime=e}function or(e,t){if(e&&e.defaultProps)for(var n in t=r({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}var rr=(new o.Component).refs;function ir(e,t,n,o){n=null==(n=n(o,t=e.memoizedState))?t:r({},t,n),e.memoizedState=n,null!==(o=e.updateQueue)&&0===e.expirationTime&&(o.baseState=n)}var ar={isMounted:function(e){return!!(e=e._reactInternalFiber)&&2===tn(e)},enqueueSetState:function(e,t,n){e=e._reactInternalFiber;var o=Es(),r=Xi(o=$a(o,e));r.payload=t,null!=n&&(r.callback=n),Ua(),Qi(e,r),Qa(e,o)},enqueueReplaceState:function(e,t,n){e=e._reactInternalFiber;var o=Es(),r=Xi(o=$a(o,e));r.tag=Wi,r.payload=t,null!=n&&(r.callback=n),Ua(),Qi(e,r),Qa(e,o)},enqueueForceUpdate:function(e,t){e=e._reactInternalFiber;var n=Es(),o=Xi(n=$a(n,e));o.tag=qi,null!=t&&(o.callback=t),Ua(),Qi(e,o),Qa(e,n)}};function sr(e,t,n,o,r,i,a){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(o,i,a):!t.prototype||!t.prototype.isPureReactComponent||(!en(n,o)||!en(r,i))}function lr(e,t,n){var o=!1,r=Ro,i=t.contextType;return"object"==typeof i&&null!==i?i=Bi(i):(r=No(t)?Lo:Po.current,i=(o=null!=(o=t.contextTypes))?Oo(e,r):Ro),t=new t(n,i),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=ar,e.stateNode=t,t._reactInternalFiber=e,o&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=r,e.__reactInternalMemoizedMaskedChildContext=i),t}function ur(e,t,n,o){e=t.state,"function"==typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,o),"function"==typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,o),t.state!==e&&ar.enqueueReplaceState(t,t.state,null)}function cr(e,t,n,o){var r=e.stateNode;r.props=n,r.state=e.memoizedState,r.refs=rr;var i=t.contextType;"object"==typeof i&&null!==i?r.context=Bi(i):(i=No(t)?Lo:Po.current,r.context=Oo(e,i)),null!==(i=e.updateQueue)&&(ta(e,i,n,r,o),r.state=e.memoizedState),"function"==typeof(i=t.getDerivedStateFromProps)&&(ir(e,t,i,n),r.state=e.memoizedState),"function"==typeof t.getDerivedStateFromProps||"function"==typeof r.getSnapshotBeforeUpdate||"function"!=typeof r.UNSAFE_componentWillMount&&"function"!=typeof r.componentWillMount||(t=r.state,"function"==typeof r.componentWillMount&&r.componentWillMount(),"function"==typeof r.UNSAFE_componentWillMount&&r.UNSAFE_componentWillMount(),t!==r.state&&ar.enqueueReplaceState(r,r.state,null),null!==(i=e.updateQueue)&&(ta(e,i,n,r,o),r.state=e.memoizedState)),"function"==typeof r.componentDidMount&&(e.effectTag|=4)}var dr=Array.isArray;function pr(e,t,n){if(null!==(e=n.ref)&&"function"!=typeof e&&"object"!=typeof e){if(n._owner){n=n._owner;var o=void 0;n&&(1!==n.tag&&a("309"),o=n.stateNode),o||a("147",e);var r=""+e;return null!==t&&null!==t.ref&&"function"==typeof t.ref&&t.ref._stringRef===r?t.ref:((t=function(e){var t=o.refs;t===rr&&(t=o.refs={}),null===e?delete t[r]:t[r]=e})._stringRef=r,t)}"string"!=typeof e&&a("284"),n._owner||a("290",e)}return e}function hr(e,t){"textarea"!==e.type&&a("31","[object Object]"===Object.prototype.toString.call(t)?"object with keys {"+Object.keys(t).join(", ")+"}":t,"")}function fr(e){function t(t,n){if(e){var o=t.lastEffect;null!==o?(o.nextEffect=n,t.lastEffect=n):t.firstEffect=t.lastEffect=n,n.nextEffect=null,n.effectTag=8}}function n(n,o){if(!e)return null;for(;null!==o;)t(n,o),o=o.sibling;return null}function o(e,t){for(e=new Map;null!==t;)null!==t.key?e.set(t.key,t):e.set(t.index,t),t=t.sibling;return e}function r(e,t,n){return(e=Yo(e,t)).index=0,e.sibling=null,e}function i(t,n,o){return t.index=o,e?null!==(o=t.alternate)?(o=o.index)<n?(t.effectTag=2,n):o:(t.effectTag=2,n):n}function s(t){return e&&null===t.alternate&&(t.effectTag=2),t}function l(e,t,n,o){return null===t||6!==t.tag?((t=Qo(n,e.mode,o)).return=e,t):((t=r(t,n)).return=e,t)}function u(e,t,n,o){return null!==t&&t.elementType===n.type?((o=r(t,n.props)).ref=pr(e,t,n),o.return=e,o):((o=$o(n.type,n.key,n.props,null,e.mode,o)).ref=pr(e,t,n),o.return=e,o)}function c(e,t,n,o){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=Jo(n,e.mode,o)).return=e,t):((t=r(t,n.children||[])).return=e,t)}function d(e,t,n,o,i){return null===t||7!==t.tag?((t=Xo(n,e.mode,o,i)).return=e,t):((t=r(t,n)).return=e,t)}function p(e,t,n){if("string"==typeof t||"number"==typeof t)return(t=Qo(""+t,e.mode,n)).return=e,t;if("object"==typeof t&&null!==t){switch(t.$$typeof){case Ye:return(n=$o(t.type,t.key,t.props,null,e.mode,n)).ref=pr(e,null,t),n.return=e,n;case $e:return(t=Jo(t,e.mode,n)).return=e,t}if(dr(t)||at(t))return(t=Xo(t,e.mode,n,null)).return=e,t;hr(e,t)}return null}function h(e,t,n,o){var r=null!==t?t.key:null;if("string"==typeof n||"number"==typeof n)return null!==r?null:l(e,t,""+n,o);if("object"==typeof n&&null!==n){switch(n.$$typeof){case Ye:return n.key===r?n.type===Xe?d(e,t,n.props.children,o,r):u(e,t,n,o):null;case $e:return n.key===r?c(e,t,n,o):null}if(dr(n)||at(n))return null!==r?null:d(e,t,n,o,null);hr(e,n)}return null}function f(e,t,n,o,r){if("string"==typeof o||"number"==typeof o)return l(t,e=e.get(n)||null,""+o,r);if("object"==typeof o&&null!==o){switch(o.$$typeof){case Ye:return e=e.get(null===o.key?n:o.key)||null,o.type===Xe?d(t,e,o.props.children,r,o.key):u(t,e,o,r);case $e:return c(t,e=e.get(null===o.key?n:o.key)||null,o,r)}if(dr(o)||at(o))return d(t,e=e.get(n)||null,o,r,null);hr(t,o)}return null}function m(r,a,s,l){for(var u=null,c=null,d=a,m=a=0,g=null;null!==d&&m<s.length;m++){d.index>m?(g=d,d=null):g=d.sibling;var v=h(r,d,s[m],l);if(null===v){null===d&&(d=g);break}e&&d&&null===v.alternate&&t(r,d),a=i(v,a,m),null===c?u=v:c.sibling=v,c=v,d=g}if(m===s.length)return n(r,d),u;if(null===d){for(;m<s.length;m++)(d=p(r,s[m],l))&&(a=i(d,a,m),null===c?u=d:c.sibling=d,c=d);return u}for(d=o(r,d);m<s.length;m++)(g=f(d,r,m,s[m],l))&&(e&&null!==g.alternate&&d.delete(null===g.key?m:g.key),a=i(g,a,m),null===c?u=g:c.sibling=g,c=g);return e&&d.forEach(function(e){return t(r,e)}),u}function g(r,s,l,u){var c=at(l);"function"!=typeof c&&a("150"),null==(l=c.call(l))&&a("151");for(var d=c=null,m=s,g=s=0,v=null,y=l.next();null!==m&&!y.done;g++,y=l.next()){m.index>g?(v=m,m=null):v=m.sibling;var b=h(r,m,y.value,u);if(null===b){m||(m=v);break}e&&m&&null===b.alternate&&t(r,m),s=i(b,s,g),null===d?c=b:d.sibling=b,d=b,m=v}if(y.done)return n(r,m),c;if(null===m){for(;!y.done;g++,y=l.next())null!==(y=p(r,y.value,u))&&(s=i(y,s,g),null===d?c=y:d.sibling=y,d=y);return c}for(m=o(r,m);!y.done;g++,y=l.next())null!==(y=f(m,r,g,y.value,u))&&(e&&null!==y.alternate&&m.delete(null===y.key?g:y.key),s=i(y,s,g),null===d?c=y:d.sibling=y,d=y);return e&&m.forEach(function(e){return t(r,e)}),c}return function(e,o,i,l){var u="object"==typeof i&&null!==i&&i.type===Xe&&null===i.key;u&&(i=i.props.children);var c="object"==typeof i&&null!==i;if(c)switch(i.$$typeof){case Ye:e:{for(c=i.key,u=o;null!==u;){if(u.key===c){if(7===u.tag?i.type===Xe:u.elementType===i.type){n(e,u.sibling),(o=r(u,i.type===Xe?i.props.children:i.props)).ref=pr(e,u,i),o.return=e,e=o;break e}n(e,u);break}t(e,u),u=u.sibling}i.type===Xe?((o=Xo(i.props.children,e.mode,l,i.key)).return=e,e=o):((l=$o(i.type,i.key,i.props,null,e.mode,l)).ref=pr(e,o,i),l.return=e,e=l)}return s(e);case $e:e:{for(u=i.key;null!==o;){if(o.key===u){if(4===o.tag&&o.stateNode.containerInfo===i.containerInfo&&o.stateNode.implementation===i.implementation){n(e,o.sibling),(o=r(o,i.children||[])).return=e,e=o;break e}n(e,o);break}t(e,o),o=o.sibling}(o=Jo(i,e.mode,l)).return=e,e=o}return s(e)}if("string"==typeof i||"number"==typeof i)return i=""+i,null!==o&&6===o.tag?(n(e,o.sibling),(o=r(o,i)).return=e,e=o):(n(e,o),(o=Qo(i,e.mode,l)).return=e,e=o),s(e);if(dr(i))return m(e,o,i,l);if(at(i))return g(e,o,i,l);if(c&&hr(e,i),void 0===i&&!u)switch(e.tag){case 1:case 0:a("152",(l=e.type).displayName||l.name||"Component")}return n(e,o)}}var mr=fr(!0),gr=fr(!1),vr={},yr={current:vr},br={current:vr},wr={current:vr};function Er(e){return e===vr&&a("174"),e}function Cr(e,t){Mo(wr,t),Mo(br,e),Mo(yr,vr);var n=t.nodeType;switch(n){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:to(null,"");break;default:t=to(t=(n=8===n?t.parentNode:t).namespaceURI||null,n=n.tagName)}Do(yr),Mo(yr,t)}function xr(e){Do(yr),Do(br),Do(wr)}function Tr(e){Er(wr.current);var t=Er(yr.current),n=to(t,e.type);t!==n&&(Mo(br,e),Mo(yr,n))}function kr(e){br.current===e&&(Do(yr),Do(br))}var Sr=0,Dr=2,Mr=4,Rr=8,Pr=16,_r=32,Lr=64,Or=128,Nr=qe.ReactCurrentDispatcher,Fr=0,Ar=null,Ir=null,Hr=null,zr=null,jr=null,Br=null,Ur=0,Wr=null,qr=0,Vr=!1,Gr=null,Yr=0;function $r(){a("321")}function Xr(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!Jt(e[n],t[n]))return!1;return!0}function Kr(e,t,n,o,r,i){if(Fr=i,Ar=t,Hr=null!==e?e.memoizedState:null,Nr.current=null===Hr?ui:ci,t=n(o,r),Vr){do{Vr=!1,Yr+=1,Hr=null!==e?e.memoizedState:null,Br=zr,Wr=jr=Ir=null,Nr.current=ci,t=n(o,r)}while(Vr);Gr=null,Yr=0}return Nr.current=li,(e=Ar).memoizedState=zr,e.expirationTime=Ur,e.updateQueue=Wr,e.effectTag|=qr,e=null!==Ir&&null!==Ir.next,Fr=0,Br=jr=zr=Hr=Ir=Ar=null,Ur=0,Wr=null,qr=0,e&&a("300"),t}function Qr(){Nr.current=li,Fr=0,Br=jr=zr=Hr=Ir=Ar=null,Ur=0,Wr=null,qr=0,Vr=!1,Gr=null,Yr=0}function Jr(){var e={memoizedState:null,baseState:null,queue:null,baseUpdate:null,next:null};return null===jr?zr=jr=e:jr=jr.next=e,jr}function Zr(){if(null!==Br)Br=(jr=Br).next,Hr=null!==(Ir=Hr)?Ir.next:null;else{null===Hr&&a("310");var e={memoizedState:(Ir=Hr).memoizedState,baseState:Ir.baseState,queue:Ir.queue,baseUpdate:Ir.baseUpdate,next:null};jr=null===jr?zr=e:jr.next=e,Hr=Ir.next}return jr}function ei(e,t){return"function"==typeof t?t(e):t}function ti(e){var t=Zr(),n=t.queue;if(null===n&&a("311"),n.lastRenderedReducer=e,0<Yr){var o=n.dispatch;if(null!==Gr){var r=Gr.get(n);if(void 0!==r){Gr.delete(n);var i=t.memoizedState;do{i=e(i,r.action),r=r.next}while(null!==r);return Jt(i,t.memoizedState)||(Ei=!0),t.memoizedState=i,t.baseUpdate===n.last&&(t.baseState=i),n.lastRenderedState=i,[i,o]}}return[t.memoizedState,o]}o=n.last;var s=t.baseUpdate;if(i=t.baseState,null!==s?(null!==o&&(o.next=null),o=s.next):o=null!==o?o.next:null,null!==o){var l=r=null,u=o,c=!1;do{var d=u.expirationTime;d<Fr?(c||(c=!0,l=s,r=i),d>Ur&&(Ur=d)):i=u.eagerReducer===e?u.eagerState:e(i,u.action),s=u,u=u.next}while(null!==u&&u!==o);c||(l=s,r=i),Jt(i,t.memoizedState)||(Ei=!0),t.memoizedState=i,t.baseUpdate=l,t.baseState=r,n.lastRenderedState=i}return[t.memoizedState,n.dispatch]}function ni(e,t,n,o){return e={tag:e,create:t,destroy:n,deps:o,next:null},null===Wr?(Wr={lastEffect:null}).lastEffect=e.next=e:null===(t=Wr.lastEffect)?Wr.lastEffect=e.next=e:(n=t.next,t.next=e,e.next=n,Wr.lastEffect=e),e}function oi(e,t,n,o){var r=Jr();qr|=e,r.memoizedState=ni(t,n,void 0,void 0===o?null:o)}function ri(e,t,n,o){var r=Zr();o=void 0===o?null:o;var i=void 0;if(null!==Ir){var a=Ir.memoizedState;if(i=a.destroy,null!==o&&Xr(o,a.deps))return void ni(Sr,n,i,o)}qr|=e,r.memoizedState=ni(t,n,i,o)}function ii(e,t){return"function"==typeof t?(e=e(),t(e),function(){t(null)}):null!=t?(e=e(),t.current=e,function(){t.current=null}):void 0}function ai(){}function si(e,t,n){25>Yr||a("301");var o=e.alternate;if(e===Ar||null!==o&&o===Ar)if(Vr=!0,e={expirationTime:Fr,action:n,eagerReducer:null,eagerState:null,next:null},null===Gr&&(Gr=new Map),void 0===(n=Gr.get(t)))Gr.set(t,e);else{for(t=n;null!==t.next;)t=t.next;t.next=e}else{Ua();var r=Es(),i={expirationTime:r=$a(r,e),action:n,eagerReducer:null,eagerState:null,next:null},s=t.last;if(null===s)i.next=i;else{var l=s.next;null!==l&&(i.next=l),s.next=i}if(t.last=i,0===e.expirationTime&&(null===o||0===o.expirationTime)&&null!==(o=t.lastRenderedReducer))try{var u=t.lastRenderedState,c=o(u,n);if(i.eagerReducer=o,i.eagerState=c,Jt(c,u))return}catch(e){}Qa(e,r)}}var li={readContext:Bi,useCallback:$r,useContext:$r,useEffect:$r,useImperativeHandle:$r,useLayoutEffect:$r,useMemo:$r,useReducer:$r,useRef:$r,useState:$r,useDebugValue:$r},ui={readContext:Bi,useCallback:function(e,t){return Jr().memoizedState=[e,void 0===t?null:t],e},useContext:Bi,useEffect:function(e,t){return oi(516,Or|Lr,e,t)},useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,oi(4,Mr|_r,ii.bind(null,t,e),n)},useLayoutEffect:function(e,t){return oi(4,Mr|_r,e,t)},useMemo:function(e,t){var n=Jr();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var o=Jr();return t=void 0!==n?n(t):t,o.memoizedState=o.baseState=t,e=(e=o.queue={last:null,dispatch:null,lastRenderedReducer:e,lastRenderedState:t}).dispatch=si.bind(null,Ar,e),[o.memoizedState,e]},useRef:function(e){return e={current:e},Jr().memoizedState=e},useState:function(e){var t=Jr();return"function"==typeof e&&(e=e()),t.memoizedState=t.baseState=e,e=(e=t.queue={last:null,dispatch:null,lastRenderedReducer:ei,lastRenderedState:e}).dispatch=si.bind(null,Ar,e),[t.memoizedState,e]},useDebugValue:ai},ci={readContext:Bi,useCallback:function(e,t){var n=Zr();t=void 0===t?null:t;var o=n.memoizedState;return null!==o&&null!==t&&Xr(t,o[1])?o[0]:(n.memoizedState=[e,t],e)},useContext:Bi,useEffect:function(e,t){return ri(516,Or|Lr,e,t)},useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,ri(4,Mr|_r,ii.bind(null,t,e),n)},useLayoutEffect:function(e,t){return ri(4,Mr|_r,e,t)},useMemo:function(e,t){var n=Zr();t=void 0===t?null:t;var o=n.memoizedState;return null!==o&&null!==t&&Xr(t,o[1])?o[0]:(e=e(),n.memoizedState=[e,t],e)},useReducer:ti,useRef:function(){return Zr().memoizedState},useState:function(e){return ti(ei)},useDebugValue:ai},di=null,pi=null,hi=!1;function fi(e,t){var n=Vo(5,null,null,0);n.elementType="DELETED",n.type="DELETED",n.stateNode=t,n.return=e,n.effectTag=8,null!==e.lastEffect?(e.lastEffect.nextEffect=n,e.lastEffect=n):e.firstEffect=e.lastEffect=n}function mi(e,t){switch(e.tag){case 5:var n=e.type;return null!==(t=1!==t.nodeType||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t)&&(e.stateNode=t,!0);case 6:return null!==(t=""===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,!0);case 13:default:return!1}}function gi(e){if(hi){var t=pi;if(t){var n=t;if(!mi(e,t)){if(!(t=xo(n))||!mi(e,t))return e.effectTag|=2,hi=!1,void(di=e);fi(di,n)}di=e,pi=To(t)}else e.effectTag|=2,hi=!1,di=e}}function vi(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&18!==e.tag;)e=e.return;di=e}function yi(e){if(e!==di)return!1;if(!hi)return vi(e),hi=!0,!1;var t=e.type;if(5!==e.tag||"head"!==t&&"body"!==t&&!yo(t,e.memoizedProps))for(t=pi;t;)fi(e,t),t=xo(t);return vi(e),pi=di?xo(e.stateNode):null,!0}function bi(){pi=di=null,hi=!1}var wi=qe.ReactCurrentOwner,Ei=!1;function Ci(e,t,n,o){t.child=null===e?gr(t,null,n,o):mr(t,e.child,n,o)}function xi(e,t,n,o,r){n=n.render;var i=t.ref;return ji(t,r),o=Kr(e,t,n,o,i,r),null===e||Ei?(t.effectTag|=1,Ci(e,t,o,r),t.child):(t.updateQueue=e.updateQueue,t.effectTag&=-517,e.expirationTime<=r&&(e.expirationTime=0),Li(e,t,r))}function Ti(e,t,n,o,r,i){if(null===e){var a=n.type;return"function"!=typeof a||Go(a)||void 0!==a.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=$o(n.type,null,o,null,t.mode,i)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=a,ki(e,t,a,o,r,i))}return a=e.child,r<i&&(r=a.memoizedProps,(n=null!==(n=n.compare)?n:en)(r,o)&&e.ref===t.ref)?Li(e,t,i):(t.effectTag|=1,(e=Yo(a,o)).ref=t.ref,e.return=t,t.child=e)}function ki(e,t,n,o,r,i){return null!==e&&en(e.memoizedProps,o)&&e.ref===t.ref&&(Ei=!1,r<i)?Li(e,t,i):Di(e,t,n,o,i)}function Si(e,t){var n=t.ref;(null===e&&null!==n||null!==e&&e.ref!==n)&&(t.effectTag|=128)}function Di(e,t,n,o,r){var i=No(n)?Lo:Po.current;return i=Oo(t,i),ji(t,r),n=Kr(e,t,n,o,i,r),null===e||Ei?(t.effectTag|=1,Ci(e,t,n,r),t.child):(t.updateQueue=e.updateQueue,t.effectTag&=-517,e.expirationTime<=r&&(e.expirationTime=0),Li(e,t,r))}function Mi(e,t,n,o,r){if(No(n)){var i=!0;zo(t)}else i=!1;if(ji(t,r),null===t.stateNode)null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),lr(t,n,o),cr(t,n,o,r),o=!0;else if(null===e){var a=t.stateNode,s=t.memoizedProps;a.props=s;var l=a.context,u=n.contextType;"object"==typeof u&&null!==u?u=Bi(u):u=Oo(t,u=No(n)?Lo:Po.current);var c=n.getDerivedStateFromProps,d="function"==typeof c||"function"==typeof a.getSnapshotBeforeUpdate;d||"function"!=typeof a.UNSAFE_componentWillReceiveProps&&"function"!=typeof a.componentWillReceiveProps||(s!==o||l!==u)&&ur(t,a,o,u),Gi=!1;var p=t.memoizedState;l=a.state=p;var h=t.updateQueue;null!==h&&(ta(t,h,o,a,r),l=t.memoizedState),s!==o||p!==l||_o.current||Gi?("function"==typeof c&&(ir(t,n,c,o),l=t.memoizedState),(s=Gi||sr(t,n,s,o,p,l,u))?(d||"function"!=typeof a.UNSAFE_componentWillMount&&"function"!=typeof a.componentWillMount||("function"==typeof a.componentWillMount&&a.componentWillMount(),"function"==typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount()),"function"==typeof a.componentDidMount&&(t.effectTag|=4)):("function"==typeof a.componentDidMount&&(t.effectTag|=4),t.memoizedProps=o,t.memoizedState=l),a.props=o,a.state=l,a.context=u,o=s):("function"==typeof a.componentDidMount&&(t.effectTag|=4),o=!1)}else a=t.stateNode,s=t.memoizedProps,a.props=t.type===t.elementType?s:or(t.type,s),l=a.context,"object"==typeof(u=n.contextType)&&null!==u?u=Bi(u):u=Oo(t,u=No(n)?Lo:Po.current),(d="function"==typeof(c=n.getDerivedStateFromProps)||"function"==typeof a.getSnapshotBeforeUpdate)||"function"!=typeof a.UNSAFE_componentWillReceiveProps&&"function"!=typeof a.componentWillReceiveProps||(s!==o||l!==u)&&ur(t,a,o,u),Gi=!1,l=t.memoizedState,p=a.state=l,null!==(h=t.updateQueue)&&(ta(t,h,o,a,r),p=t.memoizedState),s!==o||l!==p||_o.current||Gi?("function"==typeof c&&(ir(t,n,c,o),p=t.memoizedState),(c=Gi||sr(t,n,s,o,l,p,u))?(d||"function"!=typeof a.UNSAFE_componentWillUpdate&&"function"!=typeof a.componentWillUpdate||("function"==typeof a.componentWillUpdate&&a.componentWillUpdate(o,p,u),"function"==typeof a.UNSAFE_componentWillUpdate&&a.UNSAFE_componentWillUpdate(o,p,u)),"function"==typeof a.componentDidUpdate&&(t.effectTag|=4),"function"==typeof a.getSnapshotBeforeUpdate&&(t.effectTag|=256)):("function"!=typeof a.componentDidUpdate||s===e.memoizedProps&&l===e.memoizedState||(t.effectTag|=4),"function"!=typeof a.getSnapshotBeforeUpdate||s===e.memoizedProps&&l===e.memoizedState||(t.effectTag|=256),t.memoizedProps=o,t.memoizedState=p),a.props=o,a.state=p,a.context=u,o=c):("function"!=typeof a.componentDidUpdate||s===e.memoizedProps&&l===e.memoizedState||(t.effectTag|=4),"function"!=typeof a.getSnapshotBeforeUpdate||s===e.memoizedProps&&l===e.memoizedState||(t.effectTag|=256),o=!1);return Ri(e,t,n,o,i,r)}function Ri(e,t,n,o,r,i){Si(e,t);var a=0!=(64&t.effectTag);if(!o&&!a)return r&&jo(t,n,!1),Li(e,t,i);o=t.stateNode,wi.current=t;var s=a&&"function"!=typeof n.getDerivedStateFromError?null:o.render();return t.effectTag|=1,null!==e&&a?(t.child=mr(t,e.child,null,i),t.child=mr(t,null,s,i)):Ci(e,t,s,i),t.memoizedState=o.state,r&&jo(t,n,!0),t.child}function Pi(e){var t=e.stateNode;t.pendingContext?Io(0,t.pendingContext,t.pendingContext!==t.context):t.context&&Io(0,t.context,!1),Cr(e,t.containerInfo)}function _i(e,t,n){var o=t.mode,r=t.pendingProps,i=t.memoizedState;if(0==(64&t.effectTag)){i=null;var a=!1}else i={timedOutAt:null!==i?i.timedOutAt:0},a=!0,t.effectTag&=-65;if(null===e)if(a){var s=r.fallback;e=Xo(null,o,0,null),0==(1&t.mode)&&(e.child=null!==t.memoizedState?t.child.child:t.child),o=Xo(s,o,n,null),e.sibling=o,(n=e).return=o.return=t}else n=o=gr(t,null,r.children,n);else null!==e.memoizedState?(s=(o=e.child).sibling,a?(n=r.fallback,r=Yo(o,o.pendingProps),0==(1&t.mode)&&((a=null!==t.memoizedState?t.child.child:t.child)!==o.child&&(r.child=a)),o=r.sibling=Yo(s,n,s.expirationTime),n=r,r.childExpirationTime=0,n.return=o.return=t):n=o=mr(t,o.child,r.children,n)):(s=e.child,a?(a=r.fallback,(r=Xo(null,o,0,null)).child=s,0==(1&t.mode)&&(r.child=null!==t.memoizedState?t.child.child:t.child),(o=r.sibling=Xo(a,o,n,null)).effectTag|=2,n=r,r.childExpirationTime=0,n.return=o.return=t):o=n=mr(t,s,r.children,n)),t.stateNode=e.stateNode;return t.memoizedState=i,t.child=n,o}function Li(e,t,n){if(null!==e&&(t.contextDependencies=e.contextDependencies),t.childExpirationTime<n)return null;if(null!==e&&t.child!==e.child&&a("153"),null!==t.child){for(n=Yo(e=t.child,e.pendingProps,e.expirationTime),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=Yo(e,e.pendingProps,e.expirationTime)).return=t;n.sibling=null}return t.child}function Oi(e,t,n){var o=t.expirationTime;if(null!==e){if(e.memoizedProps!==t.pendingProps||_o.current)Ei=!0;else if(o<n){switch(Ei=!1,t.tag){case 3:Pi(t),bi();break;case 5:Tr(t);break;case 1:No(t.type)&&zo(t);break;case 4:Cr(t,t.stateNode.containerInfo);break;case 10:Hi(t,t.memoizedProps.value);break;case 13:if(null!==t.memoizedState)return 0!==(o=t.child.childExpirationTime)&&o>=n?_i(e,t,n):null!==(t=Li(e,t,n))?t.sibling:null}return Li(e,t,n)}}else Ei=!1;switch(t.expirationTime=0,t.tag){case 2:o=t.elementType,null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),e=t.pendingProps;var r=Oo(t,Po.current);if(ji(t,n),r=Kr(null,t,o,e,r,n),t.effectTag|=1,"object"==typeof r&&null!==r&&"function"==typeof r.render&&void 0===r.$$typeof){if(t.tag=1,Qr(),No(o)){var i=!0;zo(t)}else i=!1;t.memoizedState=null!==r.state&&void 0!==r.state?r.state:null;var s=o.getDerivedStateFromProps;"function"==typeof s&&ir(t,o,s,e),r.updater=ar,t.stateNode=r,r._reactInternalFiber=t,cr(t,o,e,n),t=Ri(null,t,o,!0,i,n)}else t.tag=0,Ci(null,t,r,n),t=t.child;return t;case 16:switch(r=t.elementType,null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),i=t.pendingProps,e=function(e){var t=e._result;switch(e._status){case 1:return t;case 2:case 0:throw t;default:switch(e._status=0,(t=(t=e._ctor)()).then(function(t){0===e._status&&(t=t.default,e._status=1,e._result=t)},function(t){0===e._status&&(e._status=2,e._result=t)}),e._status){case 1:return e._result;case 2:throw e._result}throw e._result=t,t}}(r),t.type=e,r=t.tag=function(e){if("function"==typeof e)return Go(e)?1:0;if(null!=e){if((e=e.$$typeof)===tt)return 11;if(e===ot)return 14}return 2}(e),i=or(e,i),s=void 0,r){case 0:s=Di(null,t,e,i,n);break;case 1:s=Mi(null,t,e,i,n);break;case 11:s=xi(null,t,e,i,n);break;case 14:s=Ti(null,t,e,or(e.type,i),o,n);break;default:a("306",e,"")}return s;case 0:return o=t.type,r=t.pendingProps,Di(e,t,o,r=t.elementType===o?r:or(o,r),n);case 1:return o=t.type,r=t.pendingProps,Mi(e,t,o,r=t.elementType===o?r:or(o,r),n);case 3:return Pi(t),null===(o=t.updateQueue)&&a("282"),r=null!==(r=t.memoizedState)?r.element:null,ta(t,o,t.pendingProps,null,n),(o=t.memoizedState.element)===r?(bi(),t=Li(e,t,n)):(r=t.stateNode,(r=(null===e||null===e.child)&&r.hydrate)&&(pi=To(t.stateNode.containerInfo),di=t,r=hi=!0),r?(t.effectTag|=2,t.child=gr(t,null,o,n)):(Ci(e,t,o,n),bi()),t=t.child),t;case 5:return Tr(t),null===e&&gi(t),o=t.type,r=t.pendingProps,i=null!==e?e.memoizedProps:null,s=r.children,yo(o,r)?s=null:null!==i&&yo(o,i)&&(t.effectTag|=16),Si(e,t),1!==n&&1&t.mode&&r.hidden?(t.expirationTime=t.childExpirationTime=1,t=null):(Ci(e,t,s,n),t=t.child),t;case 6:return null===e&&gi(t),null;case 13:return _i(e,t,n);case 4:return Cr(t,t.stateNode.containerInfo),o=t.pendingProps,null===e?t.child=mr(t,null,o,n):Ci(e,t,o,n),t.child;case 11:return o=t.type,r=t.pendingProps,xi(e,t,o,r=t.elementType===o?r:or(o,r),n);case 7:return Ci(e,t,t.pendingProps,n),t.child;case 8:case 12:return Ci(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(o=t.type._context,r=t.pendingProps,s=t.memoizedProps,Hi(t,i=r.value),null!==s){var l=s.value;if(0===(i=Jt(l,i)?0:0|("function"==typeof o._calculateChangedBits?o._calculateChangedBits(l,i):1073741823))){if(s.children===r.children&&!_o.current){t=Li(e,t,n);break e}}else for(null!==(l=t.child)&&(l.return=t);null!==l;){var u=l.contextDependencies;if(null!==u){s=l.child;for(var c=u.first;null!==c;){if(c.context===o&&0!=(c.observedBits&i)){1===l.tag&&((c=Xi(n)).tag=qi,Qi(l,c)),l.expirationTime<n&&(l.expirationTime=n),null!==(c=l.alternate)&&c.expirationTime<n&&(c.expirationTime=n),c=n;for(var d=l.return;null!==d;){var p=d.alternate;if(d.childExpirationTime<c)d.childExpirationTime=c,null!==p&&p.childExpirationTime<c&&(p.childExpirationTime=c);else{if(!(null!==p&&p.childExpirationTime<c))break;p.childExpirationTime=c}d=d.return}u.expirationTime<n&&(u.expirationTime=n);break}c=c.next}}else s=10===l.tag&&l.type===t.type?null:l.child;if(null!==s)s.return=l;else for(s=l;null!==s;){if(s===t){s=null;break}if(null!==(l=s.sibling)){l.return=s.return,s=l;break}s=s.return}l=s}}Ci(e,t,r.children,n),t=t.child}return t;case 9:return r=t.type,o=(i=t.pendingProps).children,ji(t,n),o=o(r=Bi(r,i.unstable_observedBits)),t.effectTag|=1,Ci(e,t,o,n),t.child;case 14:return i=or(r=t.type,t.pendingProps),Ti(e,t,r,i=or(r.type,i),o,n);case 15:return ki(e,t,t.type,t.pendingProps,o,n);case 17:return o=t.type,r=t.pendingProps,r=t.elementType===o?r:or(o,r),null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),t.tag=1,No(o)?(e=!0,zo(t)):e=!1,ji(t,n),lr(t,o,r),cr(t,o,r,n),Ri(null,t,o,!0,e,n)}a("156")}var Ni={current:null},Fi=null,Ai=null,Ii=null;function Hi(e,t){var n=e.type._context;Mo(Ni,n._currentValue),n._currentValue=t}function zi(e){var t=Ni.current;Do(Ni),e.type._context._currentValue=t}function ji(e,t){Fi=e,Ii=Ai=null;var n=e.contextDependencies;null!==n&&n.expirationTime>=t&&(Ei=!0),e.contextDependencies=null}function Bi(e,t){return Ii!==e&&!1!==t&&0!==t&&("number"==typeof t&&1073741823!==t||(Ii=e,t=1073741823),t={context:e,observedBits:t,next:null},null===Ai?(null===Fi&&a("308"),Ai=t,Fi.contextDependencies={first:t,expirationTime:0}):Ai=Ai.next=t),e._currentValue}var Ui=0,Wi=1,qi=2,Vi=3,Gi=!1;function Yi(e){return{baseState:e,firstUpdate:null,lastUpdate:null,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function $i(e){return{baseState:e.baseState,firstUpdate:e.firstUpdate,lastUpdate:e.lastUpdate,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function Xi(e){return{expirationTime:e,tag:Ui,payload:null,callback:null,next:null,nextEffect:null}}function Ki(e,t){null===e.lastUpdate?e.firstUpdate=e.lastUpdate=t:(e.lastUpdate.next=t,e.lastUpdate=t)}function Qi(e,t){var n=e.alternate;if(null===n){var o=e.updateQueue,r=null;null===o&&(o=e.updateQueue=Yi(e.memoizedState))}else o=e.updateQueue,r=n.updateQueue,null===o?null===r?(o=e.updateQueue=Yi(e.memoizedState),r=n.updateQueue=Yi(n.memoizedState)):o=e.updateQueue=$i(r):null===r&&(r=n.updateQueue=$i(o));null===r||o===r?Ki(o,t):null===o.lastUpdate||null===r.lastUpdate?(Ki(o,t),Ki(r,t)):(Ki(o,t),r.lastUpdate=t)}function Ji(e,t){var n=e.updateQueue;null===(n=null===n?e.updateQueue=Yi(e.memoizedState):Zi(e,n)).lastCapturedUpdate?n.firstCapturedUpdate=n.lastCapturedUpdate=t:(n.lastCapturedUpdate.next=t,n.lastCapturedUpdate=t)}function Zi(e,t){var n=e.alternate;return null!==n&&t===n.updateQueue&&(t=e.updateQueue=$i(t)),t}function ea(e,t,n,o,i,a){switch(n.tag){case Wi:return"function"==typeof(e=n.payload)?e.call(a,o,i):e;case Vi:e.effectTag=-2049&e.effectTag|64;case Ui:if(null==(i="function"==typeof(e=n.payload)?e.call(a,o,i):e))break;return r({},o,i);case qi:Gi=!0}return o}function ta(e,t,n,o,r){Gi=!1;for(var i=(t=Zi(e,t)).baseState,a=null,s=0,l=t.firstUpdate,u=i;null!==l;){var c=l.expirationTime;c<r?(null===a&&(a=l,i=u),s<c&&(s=c)):(u=ea(e,0,l,u,n,o),null!==l.callback&&(e.effectTag|=32,l.nextEffect=null,null===t.lastEffect?t.firstEffect=t.lastEffect=l:(t.lastEffect.nextEffect=l,t.lastEffect=l))),l=l.next}for(c=null,l=t.firstCapturedUpdate;null!==l;){var d=l.expirationTime;d<r?(null===c&&(c=l,null===a&&(i=u)),s<d&&(s=d)):(u=ea(e,0,l,u,n,o),null!==l.callback&&(e.effectTag|=32,l.nextEffect=null,null===t.lastCapturedEffect?t.firstCapturedEffect=t.lastCapturedEffect=l:(t.lastCapturedEffect.nextEffect=l,t.lastCapturedEffect=l))),l=l.next}null===a&&(t.lastUpdate=null),null===c?t.lastCapturedUpdate=null:e.effectTag|=32,null===a&&null===c&&(i=u),t.baseState=i,t.firstUpdate=a,t.firstCapturedUpdate=c,e.expirationTime=s,e.memoizedState=u}function na(e,t,n){null!==t.firstCapturedUpdate&&(null!==t.lastUpdate&&(t.lastUpdate.next=t.firstCapturedUpdate,t.lastUpdate=t.lastCapturedUpdate),t.firstCapturedUpdate=t.lastCapturedUpdate=null),oa(t.firstEffect,n),t.firstEffect=t.lastEffect=null,oa(t.firstCapturedEffect,n),t.firstCapturedEffect=t.lastCapturedEffect=null}function oa(e,t){for(;null!==e;){var n=e.callback;if(null!==n){e.callback=null;var o=t;"function"!=typeof n&&a("191",n),n.call(o)}e=e.nextEffect}}function ra(e,t){return{value:e,source:t,stack:lt(t)}}function ia(e){e.effectTag|=4}var aa=void 0,sa=void 0,la=void 0,ua=void 0;aa=function(e,t){for(var n=t.child;null!==n;){if(5===n.tag||6===n.tag)e.appendChild(n.stateNode);else if(4!==n.tag&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===t)break;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},sa=function(){},la=function(e,t,n,o,i){var a=e.memoizedProps;if(a!==o){var s=t.stateNode;switch(Er(yr.current),e=null,n){case"input":a=bt(s,a),o=bt(s,o),e=[];break;case"option":a=Yn(s,a),o=Yn(s,o),e=[];break;case"select":a=r({},a,{value:void 0}),o=r({},o,{value:void 0}),e=[];break;case"textarea":a=Xn(s,a),o=Xn(s,o),e=[];break;default:"function"!=typeof a.onClick&&"function"==typeof o.onClick&&(s.onclick=fo)}co(n,o),s=n=void 0;var l=null;for(n in a)if(!o.hasOwnProperty(n)&&a.hasOwnProperty(n)&&null!=a[n])if("style"===n){var u=a[n];for(s in u)u.hasOwnProperty(s)&&(l||(l={}),l[s]="")}else"dangerouslySetInnerHTML"!==n&&"children"!==n&&"suppressContentEditableWarning"!==n&&"suppressHydrationWarning"!==n&&"autoFocus"!==n&&(b.hasOwnProperty(n)?e||(e=[]):(e=e||[]).push(n,null));for(n in o){var c=o[n];if(u=null!=a?a[n]:void 0,o.hasOwnProperty(n)&&c!==u&&(null!=c||null!=u))if("style"===n)if(u){for(s in u)!u.hasOwnProperty(s)||c&&c.hasOwnProperty(s)||(l||(l={}),l[s]="");for(s in c)c.hasOwnProperty(s)&&u[s]!==c[s]&&(l||(l={}),l[s]=c[s])}else l||(e||(e=[]),e.push(n,l)),l=c;else"dangerouslySetInnerHTML"===n?(c=c?c.__html:void 0,u=u?u.__html:void 0,null!=c&&u!==c&&(e=e||[]).push(n,""+c)):"children"===n?u===c||"string"!=typeof c&&"number"!=typeof c||(e=e||[]).push(n,""+c):"suppressContentEditableWarning"!==n&&"suppressHydrationWarning"!==n&&(b.hasOwnProperty(n)?(null!=c&&ho(i,n),e||u===c||(e=[])):(e=e||[]).push(n,c))}l&&(e=e||[]).push("style",l),i=e,(t.updateQueue=i)&&ia(t)}},ua=function(e,t,n,o){n!==o&&ia(t)};var ca="function"==typeof WeakSet?WeakSet:Set;function da(e,t){var n=t.source,o=t.stack;null===o&&null!==n&&(o=lt(n)),null!==n&&st(n.type),t=t.value,null!==e&&1===e.tag&&st(e.type);try{console.error(t)}catch(e){setTimeout(function(){throw e})}}function pa(e){var t=e.ref;if(null!==t)if("function"==typeof t)try{t(null)}catch(t){Ya(e,t)}else t.current=null}function ha(e,t,n){if(null!==(n=null!==(n=n.updateQueue)?n.lastEffect:null)){var o=n=n.next;do{if((o.tag&e)!==Sr){var r=o.destroy;o.destroy=void 0,void 0!==r&&r()}(o.tag&t)!==Sr&&(r=o.create,o.destroy=r()),o=o.next}while(o!==n)}}function fa(e){switch("function"==typeof Uo&&Uo(e),e.tag){case 0:case 11:case 14:case 15:var t=e.updateQueue;if(null!==t&&null!==(t=t.lastEffect)){var n=t=t.next;do{var o=n.destroy;if(void 0!==o){var r=e;try{o()}catch(e){Ya(r,e)}}n=n.next}while(n!==t)}break;case 1:if(pa(e),"function"==typeof(t=e.stateNode).componentWillUnmount)try{t.props=e.memoizedProps,t.state=e.memoizedState,t.componentWillUnmount()}catch(t){Ya(e,t)}break;case 5:pa(e);break;case 4:va(e)}}function ma(e){return 5===e.tag||3===e.tag||4===e.tag}function ga(e){e:{for(var t=e.return;null!==t;){if(ma(t)){var n=t;break e}t=t.return}a("160"),n=void 0}var o=t=void 0;switch(n.tag){case 5:t=n.stateNode,o=!1;break;case 3:case 4:t=n.stateNode.containerInfo,o=!0;break;default:a("161")}16&n.effectTag&&(ro(t,""),n.effectTag&=-17);e:t:for(n=e;;){for(;null===n.sibling;){if(null===n.return||ma(n.return)){n=null;break e}n=n.return}for(n.sibling.return=n.return,n=n.sibling;5!==n.tag&&6!==n.tag&&18!==n.tag;){if(2&n.effectTag)continue t;if(null===n.child||4===n.tag)continue t;n.child.return=n,n=n.child}if(!(2&n.effectTag)){n=n.stateNode;break e}}for(var r=e;;){if(5===r.tag||6===r.tag)if(n)if(o){var i=t,s=r.stateNode,l=n;8===i.nodeType?i.parentNode.insertBefore(s,l):i.insertBefore(s,l)}else t.insertBefore(r.stateNode,n);else o?(s=t,l=r.stateNode,8===s.nodeType?(i=s.parentNode).insertBefore(l,s):(i=s).appendChild(l),null!=(s=s._reactRootContainer)||null!==i.onclick||(i.onclick=fo)):t.appendChild(r.stateNode);else if(4!==r.tag&&null!==r.child){r.child.return=r,r=r.child;continue}if(r===e)break;for(;null===r.sibling;){if(null===r.return||r.return===e)return;r=r.return}r.sibling.return=r.return,r=r.sibling}}function va(e){for(var t=e,n=!1,o=void 0,r=void 0;;){if(!n){n=t.return;e:for(;;){switch(null===n&&a("160"),n.tag){case 5:o=n.stateNode,r=!1;break e;case 3:case 4:o=n.stateNode.containerInfo,r=!0;break e}n=n.return}n=!0}if(5===t.tag||6===t.tag){e:for(var i=t,s=i;;)if(fa(s),null!==s.child&&4!==s.tag)s.child.return=s,s=s.child;else{if(s===i)break;for(;null===s.sibling;){if(null===s.return||s.return===i)break e;s=s.return}s.sibling.return=s.return,s=s.sibling}r?(i=o,s=t.stateNode,8===i.nodeType?i.parentNode.removeChild(s):i.removeChild(s)):o.removeChild(t.stateNode)}else if(4===t.tag){if(null!==t.child){o=t.stateNode.containerInfo,r=!0,t.child.return=t,t=t.child;continue}}else if(fa(t),null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return;4===(t=t.return).tag&&(n=!1)}t.sibling.return=t.return,t=t.sibling}}function ya(e,t){switch(t.tag){case 0:case 11:case 14:case 15:ha(Mr,Rr,t);break;case 1:break;case 5:var n=t.stateNode;if(null!=n){var o=t.memoizedProps;e=null!==e?e.memoizedProps:o;var r=t.type,i=t.updateQueue;t.updateQueue=null,null!==i&&function(e,t,n,o,r){e[N]=r,"input"===n&&"radio"===r.type&&null!=r.name&&Et(e,r),po(n,o),o=po(n,r);for(var i=0;i<t.length;i+=2){var a=t[i],s=t[i+1];"style"===a?lo(e,s):"dangerouslySetInnerHTML"===a?oo(e,s):"children"===a?ro(e,s):vt(e,a,s,o)}switch(n){case"input":Ct(e,r);break;case"textarea":Qn(e,r);break;case"select":t=e._wrapperState.wasMultiple,e._wrapperState.wasMultiple=!!r.multiple,null!=(n=r.value)?$n(e,!!r.multiple,n,!1):t!==!!r.multiple&&(null!=r.defaultValue?$n(e,!!r.multiple,r.defaultValue,!0):$n(e,!!r.multiple,r.multiple?[]:"",!1))}}(n,i,r,e,o)}break;case 6:null===t.stateNode&&a("162"),t.stateNode.nodeValue=t.memoizedProps;break;case 3:case 12:break;case 13:if(n=t.memoizedState,o=void 0,e=t,null===n?o=!1:(o=!0,e=t.child,0===n.timedOutAt&&(n.timedOutAt=Es())),null!==e&&function(e,t){for(var n=e;;){if(5===n.tag){var o=n.stateNode;if(t)o.style.display="none";else{o=n.stateNode;var r=n.memoizedProps.style;r=null!=r&&r.hasOwnProperty("display")?r.display:null,o.style.display=so("display",r)}}else if(6===n.tag)n.stateNode.nodeValue=t?"":n.memoizedProps;else{if(13===n.tag&&null!==n.memoizedState){(o=n.child.sibling).return=n,n=o;continue}if(null!==n.child){n.child.return=n,n=n.child;continue}}if(n===e)break;for(;null===n.sibling;){if(null===n.return||n.return===e)return;n=n.return}n.sibling.return=n.return,n=n.sibling}}(e,o),null!==(n=t.updateQueue)){t.updateQueue=null;var s=t.stateNode;null===s&&(s=t.stateNode=new ca),n.forEach(function(e){var n=function(e,t){var n=e.stateNode;null!==n&&n.delete(t),t=$a(t=Es(),e),null!==(e=Ka(e,t))&&(Zo(e,t),0!==(t=e.expirationTime)&&Cs(e,t))}.bind(null,t,e);s.has(e)||(s.add(e),e.then(n,n))})}break;case 17:break;default:a("163")}}var ba="function"==typeof WeakMap?WeakMap:Map;function wa(e,t,n){(n=Xi(n)).tag=Vi,n.payload={element:null};var o=t.value;return n.callback=function(){_s(o),da(e,t)},n}function Ea(e,t,n){(n=Xi(n)).tag=Vi;var o=e.type.getDerivedStateFromError;if("function"==typeof o){var r=t.value;n.payload=function(){return o(r)}}var i=e.stateNode;return null!==i&&"function"==typeof i.componentDidCatch&&(n.callback=function(){"function"!=typeof o&&(null===Ia?Ia=new Set([this]):Ia.add(this));var n=t.value,r=t.stack;da(e,t),this.componentDidCatch(n,{componentStack:null!==r?r:""})}),n}function Ca(e){switch(e.tag){case 1:No(e.type)&&Fo();var t=e.effectTag;return 2048&t?(e.effectTag=-2049&t|64,e):null;case 3:return xr(),Ao(),0!=(64&(t=e.effectTag))&&a("285"),e.effectTag=-2049&t|64,e;case 5:return kr(e),null;case 13:return 2048&(t=e.effectTag)?(e.effectTag=-2049&t|64,e):null;case 18:return null;case 4:return xr(),null;case 10:return zi(e),null;default:return null}}var xa=qe.ReactCurrentDispatcher,Ta=qe.ReactCurrentOwner,ka=1073741822,Sa=!1,Da=null,Ma=null,Ra=0,Pa=-1,_a=!1,La=null,Oa=!1,Na=null,Fa=null,Aa=null,Ia=null;function Ha(){if(null!==Da)for(var e=Da.return;null!==e;){var t=e;switch(t.tag){case 1:var n=t.type.childContextTypes;null!=n&&Fo();break;case 3:xr(),Ao();break;case 5:kr(t);break;case 4:xr();break;case 10:zi(t)}e=e.return}Ma=null,Ra=0,Pa=-1,_a=!1,Da=null}function za(){for(;null!==La;){var e=La.effectTag;if(16&e&&ro(La.stateNode,""),128&e){var t=La.alternate;null!==t&&(null!==(t=t.ref)&&("function"==typeof t?t(null):t.current=null))}switch(14&e){case 2:ga(La),La.effectTag&=-3;break;case 6:ga(La),La.effectTag&=-3,ya(La.alternate,La);break;case 4:ya(La.alternate,La);break;case 8:va(e=La),e.return=null,e.child=null,e.memoizedState=null,e.updateQueue=null,null!==(e=e.alternate)&&(e.return=null,e.child=null,e.memoizedState=null,e.updateQueue=null)}La=La.nextEffect}}function ja(){for(;null!==La;){if(256&La.effectTag)e:{var e=La.alternate,t=La;switch(t.tag){case 0:case 11:case 15:ha(Dr,Sr,t);break e;case 1:if(256&t.effectTag&&null!==e){var n=e.memoizedProps,o=e.memoizedState;t=(e=t.stateNode).getSnapshotBeforeUpdate(t.elementType===t.type?n:or(t.type,n),o),e.__reactInternalSnapshotBeforeUpdate=t}break e;case 3:case 5:case 6:case 4:case 17:break e;default:a("163")}}La=La.nextEffect}}function Ba(e,t){for(;null!==La;){var n=La.effectTag;if(36&n){var o=La.alternate,r=La,i=t;switch(r.tag){case 0:case 11:case 15:ha(Pr,_r,r);break;case 1:var s=r.stateNode;if(4&r.effectTag)if(null===o)s.componentDidMount();else{var l=r.elementType===r.type?o.memoizedProps:or(r.type,o.memoizedProps);s.componentDidUpdate(l,o.memoizedState,s.__reactInternalSnapshotBeforeUpdate)}null!==(o=r.updateQueue)&&na(0,o,s);break;case 3:if(null!==(o=r.updateQueue)){if(s=null,null!==r.child)switch(r.child.tag){case 5:s=r.child.stateNode;break;case 1:s=r.child.stateNode}na(0,o,s)}break;case 5:i=r.stateNode,null===o&&4&r.effectTag&&vo(r.type,r.memoizedProps)&&i.focus();break;case 6:case 4:case 12:case 13:case 17:break;default:a("163")}}128&n&&(null!==(r=La.ref)&&(i=La.stateNode,"function"==typeof r?r(i):r.current=i)),512&n&&(Na=e),La=La.nextEffect}}function Ua(){null!==Fa&&Co(Fa),null!==Aa&&Aa()}function Wa(e,t){Oa=Sa=!0,e.current===t&&a("177");var n=e.pendingCommitExpirationTime;0===n&&a("261"),e.pendingCommitExpirationTime=0;var o=t.expirationTime,r=t.childExpirationTime;for(function(e,t){if(e.didError=!1,0===t)e.earliestPendingTime=0,e.latestPendingTime=0,e.earliestSuspendedTime=0,e.latestSuspendedTime=0,e.latestPingedTime=0;else{t<e.latestPingedTime&&(e.latestPingedTime=0);var n=e.latestPendingTime;0!==n&&(n>t?e.earliestPendingTime=e.latestPendingTime=0:e.earliestPendingTime>t&&(e.earliestPendingTime=e.latestPendingTime)),0===(n=e.earliestSuspendedTime)?Zo(e,t):t<e.latestSuspendedTime?(e.earliestSuspendedTime=0,e.latestSuspendedTime=0,e.latestPingedTime=0,Zo(e,t)):t>n&&Zo(e,t)}nr(0,e)}(e,r>o?r:o),Ta.current=null,o=void 0,1<t.effectTag?null!==t.lastEffect?(t.lastEffect.nextEffect=t,o=t.firstEffect):o=t:o=t.firstEffect,mo=Tn,go=function(){var e=An();if(In(e)){if("selectionStart"in e)var t={start:e.selectionStart,end:e.selectionEnd};else e:{var n=(t=(t=e.ownerDocument)&&t.defaultView||window).getSelection&&t.getSelection();if(n&&0!==n.rangeCount){t=n.anchorNode;var o=n.anchorOffset,r=n.focusNode;n=n.focusOffset;try{t.nodeType,r.nodeType}catch(e){t=null;break e}var i=0,a=-1,s=-1,l=0,u=0,c=e,d=null;t:for(;;){for(var p;c!==t||0!==o&&3!==c.nodeType||(a=i+o),c!==r||0!==n&&3!==c.nodeType||(s=i+n),3===c.nodeType&&(i+=c.nodeValue.length),null!==(p=c.firstChild);)d=c,c=p;for(;;){if(c===e)break t;if(d===t&&++l===o&&(a=i),d===r&&++u===n&&(s=i),null!==(p=c.nextSibling))break;d=(c=d).parentNode}c=p}t=-1===a||-1===s?null:{start:a,end:s}}else t=null}t=t||{start:0,end:0}}else t=null;return{focusedElem:e,selectionRange:t}}(),Tn=!1,La=o;null!==La;){r=!1;var s=void 0;try{ja()}catch(e){r=!0,s=e}r&&(null===La&&a("178"),Ya(La,s),null!==La&&(La=La.nextEffect))}for(La=o;null!==La;){r=!1,s=void 0;try{za()}catch(e){r=!0,s=e}r&&(null===La&&a("178"),Ya(La,s),null!==La&&(La=La.nextEffect))}for(Hn(go),go=null,Tn=!!mo,mo=null,e.current=t,La=o;null!==La;){r=!1,s=void 0;try{Ba(e,n)}catch(e){r=!0,s=e}r&&(null===La&&a("178"),Ya(La,s),null!==La&&(La=La.nextEffect))}if(null!==o&&null!==Na){var l=function(e,t){Aa=Fa=Na=null;var n=os;os=!0;do{if(512&t.effectTag){var o=!1,r=void 0;try{var i=t;ha(Or,Sr,i),ha(Sr,Lr,i)}catch(e){o=!0,r=e}o&&Ya(t,r)}t=t.nextEffect}while(null!==t);os=n,0!==(n=e.expirationTime)&&Cs(e,n),us||os||Ds(1073741823,!1)}.bind(null,e,o);Fa=i.unstable_runWithPriority(i.unstable_NormalPriority,function(){return Eo(l)}),Aa=l}Sa=Oa=!1,"function"==typeof Bo&&Bo(t.stateNode),n=t.expirationTime,0===(t=(t=t.childExpirationTime)>n?t:n)&&(Ia=null),function(e,t){e.expirationTime=t,e.finishedWork=null}(e,t)}function qa(e){for(;;){var t=e.alternate,n=e.return,o=e.sibling;if(0==(1024&e.effectTag)){Da=e;e:{var i=t,s=Ra,l=(t=e).pendingProps;switch(t.tag){case 2:case 16:break;case 15:case 0:break;case 1:No(t.type)&&Fo();break;case 3:xr(),Ao(),(l=t.stateNode).pendingContext&&(l.context=l.pendingContext,l.pendingContext=null),null!==i&&null!==i.child||(yi(t),t.effectTag&=-3),sa(t);break;case 5:kr(t);var u=Er(wr.current);if(s=t.type,null!==i&&null!=t.stateNode)la(i,t,s,l,u),i.ref!==t.ref&&(t.effectTag|=128);else if(l){var c=Er(yr.current);if(yi(t)){i=(l=t).stateNode;var d=l.type,p=l.memoizedProps,h=u;switch(i[O]=l,i[N]=p,s=void 0,u=d){case"iframe":case"object":kn("load",i);break;case"video":case"audio":for(d=0;d<te.length;d++)kn(te[d],i);break;case"source":kn("error",i);break;case"img":case"image":case"link":kn("error",i),kn("load",i);break;case"form":kn("reset",i),kn("submit",i);break;case"details":kn("toggle",i);break;case"input":wt(i,p),kn("invalid",i),ho(h,"onChange");break;case"select":i._wrapperState={wasMultiple:!!p.multiple},kn("invalid",i),ho(h,"onChange");break;case"textarea":Kn(i,p),kn("invalid",i),ho(h,"onChange")}for(s in co(u,p),d=null,p)p.hasOwnProperty(s)&&(c=p[s],"children"===s?"string"==typeof c?i.textContent!==c&&(d=["children",c]):"number"==typeof c&&i.textContent!==""+c&&(d=["children",""+c]):b.hasOwnProperty(s)&&null!=c&&ho(h,s));switch(u){case"input":Ue(i),xt(i,p,!0);break;case"textarea":Ue(i),Jn(i);break;case"select":case"option":break;default:"function"==typeof p.onClick&&(i.onclick=fo)}s=d,l.updateQueue=s,(l=null!==s)&&ia(t)}else{p=t,h=s,i=l,d=9===u.nodeType?u:u.ownerDocument,c===Zn.html&&(c=eo(h)),c===Zn.html?"script"===h?((i=d.createElement("div")).innerHTML="<script><\/script>",d=i.removeChild(i.firstChild)):"string"==typeof i.is?d=d.createElement(h,{is:i.is}):(d=d.createElement(h),"select"===h&&(h=d,i.multiple?h.multiple=!0:i.size&&(h.size=i.size))):d=d.createElementNS(c,h),(i=d)[O]=p,i[N]=l,aa(i,t,!1,!1),h=i;var f=u,m=po(d=s,p=l);switch(d){case"iframe":case"object":kn("load",h),u=p;break;case"video":case"audio":for(u=0;u<te.length;u++)kn(te[u],h);u=p;break;case"source":kn("error",h),u=p;break;case"img":case"image":case"link":kn("error",h),kn("load",h),u=p;break;case"form":kn("reset",h),kn("submit",h),u=p;break;case"details":kn("toggle",h),u=p;break;case"input":wt(h,p),u=bt(h,p),kn("invalid",h),ho(f,"onChange");break;case"option":u=Yn(h,p);break;case"select":h._wrapperState={wasMultiple:!!p.multiple},u=r({},p,{value:void 0}),kn("invalid",h),ho(f,"onChange");break;case"textarea":Kn(h,p),u=Xn(h,p),kn("invalid",h),ho(f,"onChange");break;default:u=p}co(d,u),c=void 0;var g=d,v=h,y=u;for(c in y)if(y.hasOwnProperty(c)){var w=y[c];"style"===c?lo(v,w):"dangerouslySetInnerHTML"===c?null!=(w=w?w.__html:void 0)&&oo(v,w):"children"===c?"string"==typeof w?("textarea"!==g||""!==w)&&ro(v,w):"number"==typeof w&&ro(v,""+w):"suppressContentEditableWarning"!==c&&"suppressHydrationWarning"!==c&&"autoFocus"!==c&&(b.hasOwnProperty(c)?null!=w&&ho(f,c):null!=w&&vt(v,c,w,m))}switch(d){case"input":Ue(h),xt(h,p,!1);break;case"textarea":Ue(h),Jn(h);break;case"option":null!=p.value&&h.setAttribute("value",""+yt(p.value));break;case"select":(u=h).multiple=!!p.multiple,null!=(h=p.value)?$n(u,!!p.multiple,h,!1):null!=p.defaultValue&&$n(u,!!p.multiple,p.defaultValue,!0);break;default:"function"==typeof u.onClick&&(h.onclick=fo)}(l=vo(s,l))&&ia(t),t.stateNode=i}null!==t.ref&&(t.effectTag|=128)}else null===t.stateNode&&a("166");break;case 6:i&&null!=t.stateNode?ua(i,t,i.memoizedProps,l):("string"!=typeof l&&(null===t.stateNode&&a("166")),i=Er(wr.current),Er(yr.current),yi(t)?(s=(l=t).stateNode,i=l.memoizedProps,s[O]=l,(l=s.nodeValue!==i)&&ia(t)):(s=t,(l=(9===i.nodeType?i:i.ownerDocument).createTextNode(l))[O]=t,s.stateNode=l));break;case 11:break;case 13:if(l=t.memoizedState,0!=(64&t.effectTag)){t.expirationTime=s,Da=t;break e}l=null!==l,s=null!==i&&null!==i.memoizedState,null!==i&&!l&&s&&(null!==(i=i.child.sibling)&&(null!==(u=t.firstEffect)?(t.firstEffect=i,i.nextEffect=u):(t.firstEffect=t.lastEffect=i,i.nextEffect=null),i.effectTag=8)),(l||s)&&(t.effectTag|=4);break;case 7:case 8:case 12:break;case 4:xr(),sa(t);break;case 10:zi(t);break;case 9:case 14:break;case 17:No(t.type)&&Fo();break;case 18:break;default:a("156")}Da=null}if(t=e,1===Ra||1!==t.childExpirationTime){for(l=0,s=t.child;null!==s;)(i=s.expirationTime)>l&&(l=i),(u=s.childExpirationTime)>l&&(l=u),s=s.sibling;t.childExpirationTime=l}if(null!==Da)return Da;null!==n&&0==(1024&n.effectTag)&&(null===n.firstEffect&&(n.firstEffect=e.firstEffect),null!==e.lastEffect&&(null!==n.lastEffect&&(n.lastEffect.nextEffect=e.firstEffect),n.lastEffect=e.lastEffect),1<e.effectTag&&(null!==n.lastEffect?n.lastEffect.nextEffect=e:n.firstEffect=e,n.lastEffect=e))}else{if(null!==(e=Ca(e)))return e.effectTag&=1023,e;null!==n&&(n.firstEffect=n.lastEffect=null,n.effectTag|=1024)}if(null!==o)return o;if(null===n)break;e=n}return null}function Va(e){var t=Oi(e.alternate,e,Ra);return e.memoizedProps=e.pendingProps,null===t&&(t=qa(e)),Ta.current=null,t}function Ga(e,t){Sa&&a("243"),Ua(),Sa=!0;var n=xa.current;xa.current=li;var o=e.nextExpirationTimeToWorkOn;o===Ra&&e===Ma&&null!==Da||(Ha(),Ra=o,Da=Yo((Ma=e).current,null),e.pendingCommitExpirationTime=0);for(var r=!1;;){try{if(t)for(;null!==Da&&!ks();)Da=Va(Da);else for(;null!==Da;)Da=Va(Da)}catch(t){if(Ii=Ai=Fi=null,Qr(),null===Da)r=!0,_s(t);else{null===Da&&a("271");var i=Da,s=i.return;if(null!==s){e:{var l=e,u=s,c=i,d=t;if(s=Ra,c.effectTag|=1024,c.firstEffect=c.lastEffect=null,null!==d&&"object"==typeof d&&"function"==typeof d.then){var p=d;d=u;var h=-1,f=-1;do{if(13===d.tag){var m=d.alternate;if(null!==m&&null!==(m=m.memoizedState)){f=10*(1073741822-m.timedOutAt);break}"number"==typeof(m=d.pendingProps.maxDuration)&&(0>=m?h=0:(-1===h||m<h)&&(h=m))}d=d.return}while(null!==d);d=u;do{if((m=13===d.tag)&&(m=void 0!==d.memoizedProps.fallback&&null===d.memoizedState),m){if(null===(u=d.updateQueue)?((u=new Set).add(p),d.updateQueue=u):u.add(p),0==(1&d.mode)){d.effectTag|=64,c.effectTag&=-1957,1===c.tag&&(null===c.alternate?c.tag=17:((s=Xi(1073741823)).tag=qi,Qi(c,s))),c.expirationTime=1073741823;break e}u=s;var g=(c=l).pingCache;null===g?(g=c.pingCache=new ba,m=new Set,g.set(p,m)):void 0===(m=g.get(p))&&(m=new Set,g.set(p,m)),m.has(u)||(m.add(u),c=Xa.bind(null,c,p,u),p.then(c,c)),-1===h?l=1073741823:(-1===f&&(f=10*(1073741822-tr(l,s))-5e3),l=f+h),0<=l&&Pa<l&&(Pa=l),d.effectTag|=2048,d.expirationTime=s;break e}d=d.return}while(null!==d);d=Error((st(c.type)||"A React component")+" suspended while rendering, but no fallback UI was specified.\n\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display."+lt(c))}_a=!0,d=ra(d,c),l=u;do{switch(l.tag){case 3:l.effectTag|=2048,l.expirationTime=s,Ji(l,s=wa(l,d,s));break e;case 1:if(h=d,f=l.type,c=l.stateNode,0==(64&l.effectTag)&&("function"==typeof f.getDerivedStateFromError||null!==c&&"function"==typeof c.componentDidCatch&&(null===Ia||!Ia.has(c)))){l.effectTag|=2048,l.expirationTime=s,Ji(l,s=Ea(l,h,s));break e}}l=l.return}while(null!==l)}Da=qa(i);continue}r=!0,_s(t)}}break}if(Sa=!1,xa.current=n,Ii=Ai=Fi=null,Qr(),r)Ma=null,e.finishedWork=null;else if(null!==Da)e.finishedWork=null;else{if(null===(n=e.current.alternate)&&a("281"),Ma=null,_a){if(r=e.latestPendingTime,i=e.latestSuspendedTime,s=e.latestPingedTime,0!==r&&r<o||0!==i&&i<o||0!==s&&s<o)return er(e,o),void ws(e,n,o,e.expirationTime,-1);if(!e.didError&&t)return e.didError=!0,o=e.nextExpirationTimeToWorkOn=o,t=e.expirationTime=1073741823,void ws(e,n,o,t,-1)}t&&-1!==Pa?(er(e,o),(t=10*(1073741822-tr(e,o)))<Pa&&(Pa=t),t=10*(1073741822-Es()),t=Pa-t,ws(e,n,o,e.expirationTime,0>t?0:t)):(e.pendingCommitExpirationTime=o,e.finishedWork=n)}}function Ya(e,t){for(var n=e.return;null!==n;){switch(n.tag){case 1:var o=n.stateNode;if("function"==typeof n.type.getDerivedStateFromError||"function"==typeof o.componentDidCatch&&(null===Ia||!Ia.has(o)))return Qi(n,e=Ea(n,e=ra(t,e),1073741823)),void Qa(n,1073741823);break;case 3:return Qi(n,e=wa(n,e=ra(t,e),1073741823)),void Qa(n,1073741823)}n=n.return}3===e.tag&&(Qi(e,n=wa(e,n=ra(t,e),1073741823)),Qa(e,1073741823))}function $a(e,t){var n=i.unstable_getCurrentPriorityLevel(),o=void 0;if(0==(1&t.mode))o=1073741823;else if(Sa&&!Oa)o=Ra;else{switch(n){case i.unstable_ImmediatePriority:o=1073741823;break;case i.unstable_UserBlockingPriority:o=1073741822-10*(1+((1073741822-e+15)/10|0));break;case i.unstable_NormalPriority:o=1073741822-25*(1+((1073741822-e+500)/25|0));break;case i.unstable_LowPriority:case i.unstable_IdlePriority:o=1;break;default:a("313")}null!==Ma&&o===Ra&&--o}return n===i.unstable_UserBlockingPriority&&(0===as||o<as)&&(as=o),o}function Xa(e,t,n){var o=e.pingCache;null!==o&&o.delete(t),null!==Ma&&Ra===n?Ma=null:(t=e.earliestSuspendedTime,o=e.latestSuspendedTime,0!==t&&n<=t&&n>=o&&(e.didError=!1,(0===(t=e.latestPingedTime)||t>n)&&(e.latestPingedTime=n),nr(n,e),0!==(n=e.expirationTime)&&Cs(e,n)))}function Ka(e,t){e.expirationTime<t&&(e.expirationTime=t);var n=e.alternate;null!==n&&n.expirationTime<t&&(n.expirationTime=t);var o=e.return,r=null;if(null===o&&3===e.tag)r=e.stateNode;else for(;null!==o;){if(n=o.alternate,o.childExpirationTime<t&&(o.childExpirationTime=t),null!==n&&n.childExpirationTime<t&&(n.childExpirationTime=t),null===o.return&&3===o.tag){r=o.stateNode;break}o=o.return}return r}function Qa(e,t){null!==(e=Ka(e,t))&&(!Sa&&0!==Ra&&t>Ra&&Ha(),Zo(e,t),Sa&&!Oa&&Ma===e||Cs(e,e.expirationTime),gs>ms&&(gs=0,a("185")))}function Ja(e,t,n,o,r){return i.unstable_runWithPriority(i.unstable_ImmediatePriority,function(){return e(t,n,o,r)})}var Za=null,es=null,ts=0,ns=void 0,os=!1,rs=null,is=0,as=0,ss=!1,ls=null,us=!1,cs=!1,ds=null,ps=i.unstable_now(),hs=1073741822-(ps/10|0),fs=hs,ms=50,gs=0,vs=null;function ys(){hs=1073741822-((i.unstable_now()-ps)/10|0)}function bs(e,t){if(0!==ts){if(t<ts)return;null!==ns&&i.unstable_cancelCallback(ns)}ts=t,e=i.unstable_now()-ps,ns=i.unstable_scheduleCallback(Ss,{timeout:10*(1073741822-t)-e})}function ws(e,t,n,o,r){e.expirationTime=o,0!==r||ks()?0<r&&(e.timeoutHandle=bo(function(e,t,n){e.pendingCommitExpirationTime=n,e.finishedWork=t,ys(),fs=hs,Ms(e,n)}.bind(null,e,t,n),r)):(e.pendingCommitExpirationTime=n,e.finishedWork=t)}function Es(){return os?fs:(xs(),0!==is&&1!==is||(ys(),fs=hs),fs)}function Cs(e,t){null===e.nextScheduledRoot?(e.expirationTime=t,null===es?(Za=es=e,e.nextScheduledRoot=e):(es=es.nextScheduledRoot=e).nextScheduledRoot=Za):t>e.expirationTime&&(e.expirationTime=t),os||(us?cs&&(rs=e,is=1073741823,Rs(e,1073741823,!1)):1073741823===t?Ds(1073741823,!1):bs(e,t))}function xs(){var e=0,t=null;if(null!==es)for(var n=es,o=Za;null!==o;){var r=o.expirationTime;if(0===r){if((null===n||null===es)&&a("244"),o===o.nextScheduledRoot){Za=es=o.nextScheduledRoot=null;break}if(o===Za)Za=r=o.nextScheduledRoot,es.nextScheduledRoot=r,o.nextScheduledRoot=null;else{if(o===es){(es=n).nextScheduledRoot=Za,o.nextScheduledRoot=null;break}n.nextScheduledRoot=o.nextScheduledRoot,o.nextScheduledRoot=null}o=n.nextScheduledRoot}else{if(r>e&&(e=r,t=o),o===es)break;if(1073741823===e)break;n=o,o=o.nextScheduledRoot}}rs=t,is=e}var Ts=!1;function ks(){return!!Ts||!!i.unstable_shouldYield()&&(Ts=!0)}function Ss(){try{if(!ks()&&null!==Za){ys();var e=Za;do{var t=e.expirationTime;0!==t&&hs<=t&&(e.nextExpirationTimeToWorkOn=hs),e=e.nextScheduledRoot}while(e!==Za)}Ds(0,!0)}finally{Ts=!1}}function Ds(e,t){if(xs(),t)for(ys(),fs=hs;null!==rs&&0!==is&&e<=is&&!(Ts&&hs>is);)Rs(rs,is,hs>is),xs(),ys(),fs=hs;else for(;null!==rs&&0!==is&&e<=is;)Rs(rs,is,!1),xs();if(t&&(ts=0,ns=null),0!==is&&bs(rs,is),gs=0,vs=null,null!==ds)for(e=ds,ds=null,t=0;t<e.length;t++){var n=e[t];try{n._onComplete()}catch(e){ss||(ss=!0,ls=e)}}if(ss)throw e=ls,ls=null,ss=!1,e}function Ms(e,t){os&&a("253"),rs=e,is=t,Rs(e,t,!1),Ds(1073741823,!1)}function Rs(e,t,n){if(os&&a("245"),os=!0,n){var o=e.finishedWork;null!==o?Ps(e,o,t):(e.finishedWork=null,-1!==(o=e.timeoutHandle)&&(e.timeoutHandle=-1,wo(o)),Ga(e,n),null!==(o=e.finishedWork)&&(ks()?e.finishedWork=o:Ps(e,o,t)))}else null!==(o=e.finishedWork)?Ps(e,o,t):(e.finishedWork=null,-1!==(o=e.timeoutHandle)&&(e.timeoutHandle=-1,wo(o)),Ga(e,n),null!==(o=e.finishedWork)&&Ps(e,o,t));os=!1}function Ps(e,t,n){var o=e.firstBatch;if(null!==o&&o._expirationTime>=n&&(null===ds?ds=[o]:ds.push(o),o._defer))return e.finishedWork=t,void(e.expirationTime=0);e.finishedWork=null,e===vs?gs++:(vs=e,gs=0),i.unstable_runWithPriority(i.unstable_ImmediatePriority,function(){Wa(e,t)})}function _s(e){null===rs&&a("246"),rs.expirationTime=0,ss||(ss=!0,ls=e)}function Ls(e,t){var n=us;us=!0;try{return e(t)}finally{(us=n)||os||Ds(1073741823,!1)}}function Os(e,t){if(us&&!cs){cs=!0;try{return e(t)}finally{cs=!1}}return e(t)}function Ns(e,t,n){us||os||0===as||(Ds(as,!1),as=0);var o=us;us=!0;try{return i.unstable_runWithPriority(i.unstable_UserBlockingPriority,function(){return e(t,n)})}finally{(us=o)||os||Ds(1073741823,!1)}}function Fs(e,t,n,o,r){var i=t.current;e:if(n){t:{2===tn(n=n._reactInternalFiber)&&1===n.tag||a("170");var s=n;do{switch(s.tag){case 3:s=s.stateNode.context;break t;case 1:if(No(s.type)){s=s.stateNode.__reactInternalMemoizedMergedChildContext;break t}}s=s.return}while(null!==s);a("171"),s=void 0}if(1===n.tag){var l=n.type;if(No(l)){n=Ho(n,l,s);break e}}n=s}else n=Ro;return null===t.context?t.context=n:t.pendingContext=n,t=r,(r=Xi(o)).payload={element:e},null!==(t=void 0===t?null:t)&&(r.callback=t),Ua(),Qi(i,r),Qa(i,o),o}function As(e,t,n,o){var r=t.current;return Fs(e,t,n,r=$a(Es(),r),o)}function Is(e){if(!(e=e.current).child)return null;switch(e.child.tag){case 5:default:return e.child.stateNode}}function Hs(e){var t=1073741822-25*(1+((1073741822-Es()+500)/25|0));t>=ka&&(t=ka-1),this._expirationTime=ka=t,this._root=e,this._callbacks=this._next=null,this._hasChildren=this._didComplete=!1,this._children=null,this._defer=!0}function zs(){this._callbacks=null,this._didCommit=!1,this._onCommit=this._onCommit.bind(this)}function js(e,t,n){e={current:t=Vo(3,null,null,t?3:0),containerInfo:e,pendingChildren:null,pingCache:null,earliestPendingTime:0,latestPendingTime:0,earliestSuspendedTime:0,latestSuspendedTime:0,latestPingedTime:0,didError:!1,pendingCommitExpirationTime:0,finishedWork:null,timeoutHandle:-1,context:null,pendingContext:null,hydrate:n,nextExpirationTimeToWorkOn:0,expirationTime:0,firstBatch:null,nextScheduledRoot:null},this._internalRoot=t.stateNode=e}function Bs(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||" react-mount-point-unstable "!==e.nodeValue))}function Us(e,t,n,o,r){var i=n._reactRootContainer;if(i){if("function"==typeof r){var a=r;r=function(){var e=Is(i._internalRoot);a.call(e)}}null!=e?i.legacy_renderSubtreeIntoContainer(e,t,r):i.render(t,r)}else{if(i=n._reactRootContainer=function(e,t){if(t||(t=!(!(t=e?9===e.nodeType?e.documentElement:e.firstChild:null)||1!==t.nodeType||!t.hasAttribute("data-reactroot"))),!t)for(var n;n=e.lastChild;)e.removeChild(n);return new js(e,!1,t)}(n,o),"function"==typeof r){var s=r;r=function(){var e=Is(i._internalRoot);s.call(e)}}Os(function(){null!=e?i.legacy_renderSubtreeIntoContainer(e,t,r):i.render(t,r)})}return Is(i._internalRoot)}function Ws(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;return Bs(t)||a("200"),function(e,t,n){var o=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:$e,key:null==o?null:""+o,children:e,containerInfo:t,implementation:n}}(e,t,null,n)}Se=function(e,t,n){switch(t){case"input":if(Ct(e,n),t=n.name,"radio"===n.type&&null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll("input[name="+JSON.stringify(""+t)+'][type="radio"]'),t=0;t<n.length;t++){var o=n[t];if(o!==e&&o.form===e.form){var r=H(o);r||a("90"),We(o),Ct(o,r)}}}break;case"textarea":Qn(e,n);break;case"select":null!=(t=n.value)&&$n(e,!!n.multiple,t,!1)}},Hs.prototype.render=function(e){this._defer||a("250"),this._hasChildren=!0,this._children=e;var t=this._root._internalRoot,n=this._expirationTime,o=new zs;return Fs(e,t,null,n,o._onCommit),o},Hs.prototype.then=function(e){if(this._didComplete)e();else{var t=this._callbacks;null===t&&(t=this._callbacks=[]),t.push(e)}},Hs.prototype.commit=function(){var e=this._root._internalRoot,t=e.firstBatch;if(this._defer&&null!==t||a("251"),this._hasChildren){var n=this._expirationTime;if(t!==this){this._hasChildren&&(n=this._expirationTime=t._expirationTime,this.render(this._children));for(var o=null,r=t;r!==this;)o=r,r=r._next;null===o&&a("251"),o._next=r._next,this._next=t,e.firstBatch=this}this._defer=!1,Ms(e,n),t=this._next,this._next=null,null!==(t=e.firstBatch=t)&&t._hasChildren&&t.render(t._children)}else this._next=null,this._defer=!1},Hs.prototype._onComplete=function(){if(!this._didComplete){this._didComplete=!0;var e=this._callbacks;if(null!==e)for(var t=0;t<e.length;t++)(0,e[t])()}},zs.prototype.then=function(e){if(this._didCommit)e();else{var t=this._callbacks;null===t&&(t=this._callbacks=[]),t.push(e)}},zs.prototype._onCommit=function(){if(!this._didCommit){this._didCommit=!0;var e=this._callbacks;if(null!==e)for(var t=0;t<e.length;t++){var n=e[t];"function"!=typeof n&&a("191",n),n()}}},js.prototype.render=function(e,t){var n=this._internalRoot,o=new zs;return null!==(t=void 0===t?null:t)&&o.then(t),As(e,n,null,o._onCommit),o},js.prototype.unmount=function(e){var t=this._internalRoot,n=new zs;return null!==(e=void 0===e?null:e)&&n.then(e),As(null,t,null,n._onCommit),n},js.prototype.legacy_renderSubtreeIntoContainer=function(e,t,n){var o=this._internalRoot,r=new zs;return null!==(n=void 0===n?null:n)&&r.then(n),As(t,o,e,r._onCommit),r},js.prototype.createBatch=function(){var e=new Hs(this),t=e._expirationTime,n=this._internalRoot,o=n.firstBatch;if(null===o)n.firstBatch=e,e._next=null;else{for(n=null;null!==o&&o._expirationTime>=t;)n=o,o=o._next;e._next=o,null!==n&&(n._next=e)}return e},Le=Ls,Oe=Ns,Ne=function(){os||0===as||(Ds(as,!1),as=0)};var qs,Vs,Gs={createPortal:Ws,findDOMNode:function(e){if(null==e)return null;if(1===e.nodeType)return e;var t=e._reactInternalFiber;return void 0===t&&("function"==typeof e.render?a("188"):a("268",Object.keys(e))),e=null===(e=on(t))?null:e.stateNode},hydrate:function(e,t,n){return Bs(t)||a("200"),Us(null,e,t,!0,n)},render:function(e,t,n){return Bs(t)||a("200"),Us(null,e,t,!1,n)},unstable_renderSubtreeIntoContainer:function(e,t,n,o){return Bs(n)||a("200"),(null==e||void 0===e._reactInternalFiber)&&a("38"),Us(e,t,n,!1,o)},unmountComponentAtNode:function(e){return Bs(e)||a("40"),!!e._reactRootContainer&&(Os(function(){Us(null,null,e,!1,function(){e._reactRootContainer=null})}),!0)},unstable_createPortal:function(){return Ws.apply(void 0,arguments)},unstable_batchedUpdates:Ls,unstable_interactiveUpdates:Ns,flushSync:function(e,t){os&&a("187");var n=us;us=!0;try{return Ja(e,t)}finally{us=n,Ds(1073741823,!1)}},unstable_createRoot:function(e,t){return Bs(e)||a("299","unstable_createRoot"),new js(e,!0,null!=t&&!0===t.hydrate)},unstable_flushControlled:function(e){var t=us;us=!0;try{Ja(e)}finally{(us=t)||os||Ds(1073741823,!1)}},__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:{Events:[A,I,H,R.injectEventPluginsByName,y,q,function(e){S(e,W)},Pe,_e,Mn,_]}};Vs=(qs={findFiberByHostInstance:F,bundleType:0,version:"16.8.6",rendererPackageName:"react-dom"}).findFiberByHostInstance,function(e){if("undefined"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)return!1;var t=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(t.isDisabled||!t.supportsFiber)return!0;try{var n=t.inject(e);Bo=Wo(function(e){return t.onCommitFiberRoot(n,e)}),Uo=Wo(function(e){return t.onCommitFiberUnmount(n,e)})}catch(e){}}(r({},qs,{overrideProps:null,currentDispatcherRef:qe.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=on(e))?null:e.stateNode},findFiberByHostInstance:function(e){return Vs?Vs(e):null}}));var Ys={default:Gs},$s=Ys&&Gs||Ys;e.exports=$s.default||$s},function(e,t,n){"use strict";e.exports=n(47)},function(e,t,n){"use strict";(function(e){
/** @license React v0.13.6
* scheduler.production.min.js
*
@@ -39,7 +49,7 @@ object-assign
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
-Object.defineProperty(t,"__esModule",{value:!0});var n=null,r=!1,o=3,i=-1,a=-1,l=!1,u=!1;function s(){if(!l){var e=n.expirationTime;u?C():u=!0,E(d,e)}}function c(){var e=n,t=n.next;if(n===t)n=null;else{var r=n.previous;n=r.next=t,t.previous=r}e.next=e.previous=null,r=e.callback,t=e.expirationTime,e=e.priorityLevel;var i=o,l=a;o=e,a=t;try{var u=r()}finally{o=i,a=l}if("function"==typeof u)if(u={callback:u,priorityLevel:e,expirationTime:t,next:null,previous:null},null===n)n=u.next=u.previous=u;else{r=null,e=n;do{if(e.expirationTime>=t){r=e;break}e=e.next}while(e!==n);null===r?r=n:r===n&&(n=u,s()),(t=r.previous).next=r.previous=u,u.next=r,u.previous=t}}function f(){if(-1===i&&null!==n&&1===n.priorityLevel){l=!0;try{do{c()}while(null!==n&&1===n.priorityLevel)}finally{l=!1,null!==n?s():u=!1}}}function d(e){l=!0;var o=r;r=e;try{if(e)for(;null!==n;){var i=t.unstable_now();if(!(n.expirationTime<=i))break;do{c()}while(null!==n&&n.expirationTime<=i)}else if(null!==n)do{c()}while(null!==n&&!k())}finally{l=!1,r=o,null!==n?s():u=!1,f()}}var p,h,m=Date,v="function"==typeof setTimeout?setTimeout:void 0,y="function"==typeof clearTimeout?clearTimeout:void 0,g="function"==typeof requestAnimationFrame?requestAnimationFrame:void 0,b="function"==typeof cancelAnimationFrame?cancelAnimationFrame:void 0;function x(e){p=g(function(t){y(h),e(t)}),h=v(function(){b(p),e(t.unstable_now())},100)}if("object"==typeof performance&&"function"==typeof performance.now){var w=performance;t.unstable_now=function(){return w.now()}}else t.unstable_now=function(){return m.now()};var E,C,k,T=null;if("undefined"!=typeof window?T=window:void 0!==e&&(T=e),T&&T._schedMock){var S=T._schedMock;E=S[0],C=S[1],k=S[2],t.unstable_now=S[3]}else if("undefined"==typeof window||"function"!=typeof MessageChannel){var _=null,O=function(e){if(null!==_)try{_(e)}finally{_=null}};E=function(e){null!==_?setTimeout(E,0,e):(_=e,setTimeout(O,0,!1))},C=function(){_=null},k=function(){return!1}}else{"undefined"!=typeof console&&("function"!=typeof g&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"),"function"!=typeof b&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"));var P=null,N=!1,D=-1,R=!1,M=!1,A=0,j=33,I=33;k=function(){return A<=t.unstable_now()};var L=new MessageChannel,F=L.port2;L.port1.onmessage=function(){N=!1;var e=P,n=D;P=null,D=-1;var r=t.unstable_now(),o=!1;if(0>=A-r){if(!(-1!==n&&n<=r))return R||(R=!0,x(U)),P=e,void(D=n);o=!0}if(null!==e){M=!0;try{e(o)}finally{M=!1}}};var U=function(e){if(null!==P){x(U);var t=e-A+I;t<I&&j<I?(8>t&&(t=8),I=t<j?j:t):j=t,A=e+I,N||(N=!0,F.postMessage(void 0))}else R=!1};E=function(e,t){P=e,D=t,M||0>t?F.postMessage(void 0):R||(R=!0,x(U))},C=function(){P=null,N=!1,D=-1}}t.unstable_ImmediatePriority=1,t.unstable_UserBlockingPriority=2,t.unstable_NormalPriority=3,t.unstable_IdlePriority=5,t.unstable_LowPriority=4,t.unstable_runWithPriority=function(e,n){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var r=o,a=i;o=e,i=t.unstable_now();try{return n()}finally{o=r,i=a,f()}},t.unstable_next=function(e){switch(o){case 1:case 2:case 3:var n=3;break;default:n=o}var r=o,a=i;o=n,i=t.unstable_now();try{return e()}finally{o=r,i=a,f()}},t.unstable_scheduleCallback=function(e,r){var a=-1!==i?i:t.unstable_now();if("object"==typeof r&&null!==r&&"number"==typeof r.timeout)r=a+r.timeout;else switch(o){case 1:r=a+-1;break;case 2:r=a+250;break;case 5:r=a+1073741823;break;case 4:r=a+1e4;break;default:r=a+5e3}if(e={callback:e,priorityLevel:o,expirationTime:r,next:null,previous:null},null===n)n=e.next=e.previous=e,s();else{a=null;var l=n;do{if(l.expirationTime>r){a=l;break}l=l.next}while(l!==n);null===a?a=n:a===n&&(n=e,s()),(r=a.previous).next=a.previous=e,e.next=a,e.previous=r}return e},t.unstable_cancelCallback=function(e){var t=e.next;if(null!==t){if(t===e)n=null;else{e===n&&(n=t);var r=e.previous;r.next=t,t.previous=r}e.next=e.previous=null}},t.unstable_wrapCallback=function(e){var n=o;return function(){var r=o,a=i;o=n,i=t.unstable_now();try{return e.apply(this,arguments)}finally{o=r,i=a,f()}}},t.unstable_getCurrentPriorityLevel=function(){return o},t.unstable_shouldYield=function(){return!r&&(null!==n&&n.expirationTime<a||k())},t.unstable_continueExecution=function(){null!==n&&s()},t.unstable_pauseExecution=function(){},t.unstable_getFirstCallbackNode=function(){return n}}).call(this,n(41))},function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){if(void 0===e)return void console.error("Autobind error: No context provided.");var t=Object.getPrototypeOf(e);o=arguments.length>1?Array.prototype.slice.call(arguments,1):Object.getOwnPropertyNames(t);o.forEach(function(e){var n=Object.getOwnPropertyDescriptor(t,e);void 0!==n?-1===r.indexOf(e)&&"function"==typeof n.value&&Object.defineProperty(t,e,function(e,t,n){var r=n.value;return{configurable:!0,get:function(){if(this===e||this.hasOwnProperty(t))return r;var n=r.bind(this);return Object.defineProperty(this,t,{value:n,configurable:!0,writable:!0}),n}}}(t,e,n)):console.warn('Autobind: "'+e+'" method not found in class.')})};var r=["constructor","render","componentWillMount","componentDidMount","componentWillReceiveProps","shouldComponentUpdate","componentWillUpdate","componentDidUpdate","componentWillUnmount"],o=[];e.exports=t.default},function(e,t,n){"use strict";var r=n(44);function o(){}function i(){}i.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,i,a){if(a!==r){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:o};return n.PropTypes=n,n}},function(e,t,n){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},function(e,t,n){var r;
+Object.defineProperty(t,"__esModule",{value:!0});var n=null,o=!1,r=3,i=-1,a=-1,s=!1,l=!1;function u(){if(!s){var e=n.expirationTime;l?x():l=!0,C(p,e)}}function c(){var e=n,t=n.next;if(n===t)n=null;else{var o=n.previous;n=o.next=t,t.previous=o}e.next=e.previous=null,o=e.callback,t=e.expirationTime,e=e.priorityLevel;var i=r,s=a;r=e,a=t;try{var l=o()}finally{r=i,a=s}if("function"==typeof l)if(l={callback:l,priorityLevel:e,expirationTime:t,next:null,previous:null},null===n)n=l.next=l.previous=l;else{o=null,e=n;do{if(e.expirationTime>=t){o=e;break}e=e.next}while(e!==n);null===o?o=n:o===n&&(n=l,u()),(t=o.previous).next=o.previous=l,l.next=o,l.previous=t}}function d(){if(-1===i&&null!==n&&1===n.priorityLevel){s=!0;try{do{c()}while(null!==n&&1===n.priorityLevel)}finally{s=!1,null!==n?u():l=!1}}}function p(e){s=!0;var r=o;o=e;try{if(e)for(;null!==n;){var i=t.unstable_now();if(!(n.expirationTime<=i))break;do{c()}while(null!==n&&n.expirationTime<=i)}else if(null!==n)do{c()}while(null!==n&&!T())}finally{s=!1,o=r,null!==n?u():l=!1,d()}}var h,f,m=Date,g="function"==typeof setTimeout?setTimeout:void 0,v="function"==typeof clearTimeout?clearTimeout:void 0,y="function"==typeof requestAnimationFrame?requestAnimationFrame:void 0,b="function"==typeof cancelAnimationFrame?cancelAnimationFrame:void 0;function w(e){h=y(function(t){v(f),e(t)}),f=g(function(){b(h),e(t.unstable_now())},100)}if("object"==typeof performance&&"function"==typeof performance.now){var E=performance;t.unstable_now=function(){return E.now()}}else t.unstable_now=function(){return m.now()};var C,x,T,k=null;if("undefined"!=typeof window?k=window:void 0!==e&&(k=e),k&&k._schedMock){var S=k._schedMock;C=S[0],x=S[1],T=S[2],t.unstable_now=S[3]}else if("undefined"==typeof window||"function"!=typeof MessageChannel){var D=null,M=function(e){if(null!==D)try{D(e)}finally{D=null}};C=function(e){null!==D?setTimeout(C,0,e):(D=e,setTimeout(M,0,!1))},x=function(){D=null},T=function(){return!1}}else{"undefined"!=typeof console&&("function"!=typeof y&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"),"function"!=typeof b&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"));var R=null,P=!1,_=-1,L=!1,O=!1,N=0,F=33,A=33;T=function(){return N<=t.unstable_now()};var I=new MessageChannel,H=I.port2;I.port1.onmessage=function(){P=!1;var e=R,n=_;R=null,_=-1;var o=t.unstable_now(),r=!1;if(0>=N-o){if(!(-1!==n&&n<=o))return L||(L=!0,w(z)),R=e,void(_=n);r=!0}if(null!==e){O=!0;try{e(r)}finally{O=!1}}};var z=function(e){if(null!==R){w(z);var t=e-N+A;t<A&&F<A?(8>t&&(t=8),A=t<F?F:t):F=t,N=e+A,P||(P=!0,H.postMessage(void 0))}else L=!1};C=function(e,t){R=e,_=t,O||0>t?H.postMessage(void 0):L||(L=!0,w(z))},x=function(){R=null,P=!1,_=-1}}t.unstable_ImmediatePriority=1,t.unstable_UserBlockingPriority=2,t.unstable_NormalPriority=3,t.unstable_IdlePriority=5,t.unstable_LowPriority=4,t.unstable_runWithPriority=function(e,n){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var o=r,a=i;r=e,i=t.unstable_now();try{return n()}finally{r=o,i=a,d()}},t.unstable_next=function(e){switch(r){case 1:case 2:case 3:var n=3;break;default:n=r}var o=r,a=i;r=n,i=t.unstable_now();try{return e()}finally{r=o,i=a,d()}},t.unstable_scheduleCallback=function(e,o){var a=-1!==i?i:t.unstable_now();if("object"==typeof o&&null!==o&&"number"==typeof o.timeout)o=a+o.timeout;else switch(r){case 1:o=a+-1;break;case 2:o=a+250;break;case 5:o=a+1073741823;break;case 4:o=a+1e4;break;default:o=a+5e3}if(e={callback:e,priorityLevel:r,expirationTime:o,next:null,previous:null},null===n)n=e.next=e.previous=e,u();else{a=null;var s=n;do{if(s.expirationTime>o){a=s;break}s=s.next}while(s!==n);null===a?a=n:a===n&&(n=e,u()),(o=a.previous).next=a.previous=e,e.next=a,e.previous=o}return e},t.unstable_cancelCallback=function(e){var t=e.next;if(null!==t){if(t===e)n=null;else{e===n&&(n=t);var o=e.previous;o.next=t,t.previous=o}e.next=e.previous=null}},t.unstable_wrapCallback=function(e){var n=r;return function(){var o=r,a=i;r=n,i=t.unstable_now();try{return e.apply(this,arguments)}finally{r=o,i=a,d()}}},t.unstable_getCurrentPriorityLevel=function(){return r},t.unstable_shouldYield=function(){return!o&&(null!==n&&n.expirationTime<a||T())},t.unstable_continueExecution=function(){null!==n&&u()},t.unstable_pauseExecution=function(){},t.unstable_getFirstCallbackNode=function(){return n}}).call(this,n(48))},function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){if(void 0===e)return void console.error("Autobind error: No context provided.");var t=Object.getPrototypeOf(e);r=arguments.length>1?Array.prototype.slice.call(arguments,1):Object.getOwnPropertyNames(t);r.forEach(function(e){var n=Object.getOwnPropertyDescriptor(t,e);void 0!==n?-1===o.indexOf(e)&&"function"==typeof n.value&&Object.defineProperty(t,e,function(e,t,n){var o=n.value;return{configurable:!0,get:function(){if(this===e||this.hasOwnProperty(t))return o;var n=o.bind(this);return Object.defineProperty(this,t,{value:n,configurable:!0,writable:!0}),n}}}(t,e,n)):console.warn('Autobind: "'+e+'" method not found in class.')})};var o=["constructor","render","componentWillMount","componentDidMount","componentWillReceiveProps","shouldComponentUpdate","componentWillUpdate","componentDidUpdate","componentWillUnmount"],r=[];e.exports=t.default},function(e,t,n){"use strict";var o=n(51);function r(){}function i(){}i.resetWarningCache=r,e.exports=function(){function e(e,t,n,r,i,a){if(a!==o){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:r};return n.PropTypes=n,n}},function(e,t,n){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},function(e,t,n){var o;
/*!
* jQuery JavaScript Library v3.4.1
* https://jquery.com/
@@ -66,7 +76,7 @@ Object.defineProperty(t,"__esModule",{value:!0});var n=null,r=!1,o=3,i=-1,a=-1,l
*
* Date: 2019-05-01T21:04Z
*/
-!function(t,n){"use strict";"object"==typeof e.exports?e.exports=t.document?n(t,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return n(e)}:n(t)}("undefined"!=typeof window?window:this,function(n,o){"use strict";var i=[],a=n.document,l=Object.getPrototypeOf,u=i.slice,s=i.concat,c=i.push,f=i.indexOf,d={},p=d.toString,h=d.hasOwnProperty,m=h.toString,v=m.call(Object),y={},g=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},b=function(e){return null!=e&&e===e.window},x={type:!0,src:!0,nonce:!0,noModule:!0};function w(e,t,n){var r,o,i=(n=n||a).createElement("script");if(i.text=e,t)for(r in x)(o=t[r]||t.getAttribute&&t.getAttribute(r))&&i.setAttribute(r,o);n.head.appendChild(i).parentNode.removeChild(i)}function E(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?d[p.call(e)]||"object":typeof e}var C=function(e,t){return new C.fn.init(e,t)},k=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function T(e){var t=!!e&&"length"in e&&e.length,n=E(e);return!g(e)&&!b(e)&&("array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e)}C.fn=C.prototype={jquery:"3.4.1",constructor:C,length:0,toArray:function(){return u.call(this)},get:function(e){return null==e?u.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=C.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return C.each(this,e)},map:function(e){return this.pushStack(C.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(u.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:c,sort:i.sort,splice:i.splice},C.extend=C.fn.extend=function(){var e,t,n,r,o,i,a=arguments[0]||{},l=1,u=arguments.length,s=!1;for("boolean"==typeof a&&(s=a,a=arguments[l]||{},l++),"object"==typeof a||g(a)||(a={}),l===u&&(a=this,l--);l<u;l++)if(null!=(e=arguments[l]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(s&&r&&(C.isPlainObject(r)||(o=Array.isArray(r)))?(n=a[t],i=o&&!Array.isArray(n)?[]:o||C.isPlainObject(n)?n:{},o=!1,a[t]=C.extend(s,i,r)):void 0!==r&&(a[t]=r));return a},C.extend({expando:"jQuery"+("3.4.1"+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==p.call(e))&&(!(t=l(e))||"function"==typeof(n=h.call(t,"constructor")&&t.constructor)&&m.call(n)===v)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t){w(e,{nonce:t&&t.nonce})},each:function(e,t){var n,r=0;if(T(e))for(n=e.length;r<n&&!1!==t.call(e[r],r,e[r]);r++);else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(k,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(T(Object(e))?C.merge(n,"string"==typeof e?[e]:e):c.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:f.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,o=e.length;r<n;r++)e[o++]=t[r];return e.length=o,e},grep:function(e,t,n){for(var r=[],o=0,i=e.length,a=!n;o<i;o++)!t(e[o],o)!==a&&r.push(e[o]);return r},map:function(e,t,n){var r,o,i=0,a=[];if(T(e))for(r=e.length;i<r;i++)null!=(o=t(e[i],i,n))&&a.push(o);else for(i in e)null!=(o=t(e[i],i,n))&&a.push(o);return s.apply([],a)},guid:1,support:y}),"function"==typeof Symbol&&(C.fn[Symbol.iterator]=i[Symbol.iterator]),C.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){d["[object "+t+"]"]=t.toLowerCase()});var S=
+!function(t,n){"use strict";"object"==typeof e.exports?e.exports=t.document?n(t,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return n(e)}:n(t)}("undefined"!=typeof window?window:this,function(n,r){"use strict";var i=[],a=n.document,s=Object.getPrototypeOf,l=i.slice,u=i.concat,c=i.push,d=i.indexOf,p={},h=p.toString,f=p.hasOwnProperty,m=f.toString,g=m.call(Object),v={},y=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},b=function(e){return null!=e&&e===e.window},w={type:!0,src:!0,nonce:!0,noModule:!0};function E(e,t,n){var o,r,i=(n=n||a).createElement("script");if(i.text=e,t)for(o in w)(r=t[o]||t.getAttribute&&t.getAttribute(o))&&i.setAttribute(o,r);n.head.appendChild(i).parentNode.removeChild(i)}function C(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?p[h.call(e)]||"object":typeof e}var x=function(e,t){return new x.fn.init(e,t)},T=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function k(e){var t=!!e&&"length"in e&&e.length,n=C(e);return!y(e)&&!b(e)&&("array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e)}x.fn=x.prototype={jquery:"3.4.1",constructor:x,length:0,toArray:function(){return l.call(this)},get:function(e){return null==e?l.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return x.each(this,e)},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(l.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:c,sort:i.sort,splice:i.splice},x.extend=x.fn.extend=function(){var e,t,n,o,r,i,a=arguments[0]||{},s=1,l=arguments.length,u=!1;for("boolean"==typeof a&&(u=a,a=arguments[s]||{},s++),"object"==typeof a||y(a)||(a={}),s===l&&(a=this,s--);s<l;s++)if(null!=(e=arguments[s]))for(t in e)o=e[t],"__proto__"!==t&&a!==o&&(u&&o&&(x.isPlainObject(o)||(r=Array.isArray(o)))?(n=a[t],i=r&&!Array.isArray(n)?[]:r||x.isPlainObject(n)?n:{},r=!1,a[t]=x.extend(u,i,o)):void 0!==o&&(a[t]=o));return a},x.extend({expando:"jQuery"+("3.4.1"+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==h.call(e))&&(!(t=s(e))||"function"==typeof(n=f.call(t,"constructor")&&t.constructor)&&m.call(n)===g)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t){E(e,{nonce:t&&t.nonce})},each:function(e,t){var n,o=0;if(k(e))for(n=e.length;o<n&&!1!==t.call(e[o],o,e[o]);o++);else for(o in e)if(!1===t.call(e[o],o,e[o]))break;return e},trim:function(e){return null==e?"":(e+"").replace(T,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(k(Object(e))?x.merge(n,"string"==typeof e?[e]:e):c.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:d.call(t,e,n)},merge:function(e,t){for(var n=+t.length,o=0,r=e.length;o<n;o++)e[r++]=t[o];return e.length=r,e},grep:function(e,t,n){for(var o=[],r=0,i=e.length,a=!n;r<i;r++)!t(e[r],r)!==a&&o.push(e[r]);return o},map:function(e,t,n){var o,r,i=0,a=[];if(k(e))for(o=e.length;i<o;i++)null!=(r=t(e[i],i,n))&&a.push(r);else for(i in e)null!=(r=t(e[i],i,n))&&a.push(r);return u.apply([],a)},guid:1,support:v}),"function"==typeof Symbol&&(x.fn[Symbol.iterator]=i[Symbol.iterator]),x.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){p["[object "+t+"]"]=t.toLowerCase()});var S=
/*!
* Sizzle CSS Selector Engine v2.3.4
* https://sizzlejs.com/
@@ -77,7 +87,15 @@ Object.defineProperty(t,"__esModule",{value:!0});var n=null,r=!1,o=3,i=-1,a=-1,l
*
* Date: 2019-04-08
*/
-function(e){var t,n,r,o,i,a,l,u,s,c,f,d,p,h,m,v,y,g,b,x="sizzle"+1*new Date,w=e.document,E=0,C=0,k=ue(),T=ue(),S=ue(),_=ue(),O=function(e,t){return e===t&&(f=!0),0},P={}.hasOwnProperty,N=[],D=N.pop,R=N.push,M=N.push,A=N.slice,j=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},I="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",F="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",U="\\["+L+"*("+F+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+F+"))|)"+L+"*\\]",z=":("+F+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+U+")*)|.*)\\)|)",H=new RegExp(L+"+","g"),W=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),B=new RegExp("^"+L+"*,"+L+"*"),q=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),$=new RegExp(L+"|>"),V=new RegExp(z),G=new RegExp("^"+F+"$"),K={ID:new RegExp("^#("+F+")"),CLASS:new RegExp("^\\.("+F+")"),TAG:new RegExp("^("+F+"|[*])"),ATTR:new RegExp("^"+U),PSEUDO:new RegExp("^"+z),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+I+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Q=/HTML$/i,Y=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,J=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,oe=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},ie=function(){d()},ae=xe(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{M.apply(N=A.call(w.childNodes),w.childNodes),N[w.childNodes.length].nodeType}catch(e){M={apply:N.length?function(e,t){R.apply(e,A.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}function le(e,t,r,o){var i,l,s,c,f,h,y,g=t&&t.ownerDocument,E=t?t.nodeType:9;if(r=r||[],"string"!=typeof e||!e||1!==E&&9!==E&&11!==E)return r;if(!o&&((t?t.ownerDocument||t:w)!==p&&d(t),t=t||p,m)){if(11!==E&&(f=Z.exec(e)))if(i=f[1]){if(9===E){if(!(s=t.getElementById(i)))return r;if(s.id===i)return r.push(s),r}else if(g&&(s=g.getElementById(i))&&b(t,s)&&s.id===i)return r.push(s),r}else{if(f[2])return M.apply(r,t.getElementsByTagName(e)),r;if((i=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return M.apply(r,t.getElementsByClassName(i)),r}if(n.qsa&&!_[e+" "]&&(!v||!v.test(e))&&(1!==E||"object"!==t.nodeName.toLowerCase())){if(y=e,g=t,1===E&&$.test(e)){for((c=t.getAttribute("id"))?c=c.replace(re,oe):t.setAttribute("id",c=x),l=(h=a(e)).length;l--;)h[l]="#"+c+" "+be(h[l]);y=h.join(","),g=ee.test(e)&&ye(t.parentNode)||t}try{return M.apply(r,g.querySelectorAll(y)),r}catch(t){_(e,!0)}finally{c===x&&t.removeAttribute("id")}}}return u(e.replace(W,"$1"),t,r,o)}function ue(){var e=[];return function t(n,o){return e.push(n+" ")>r.cacheLength&&delete t[e.shift()],t[n+" "]=o}}function se(e){return e[x]=!0,e}function ce(e){var t=p.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){for(var n=e.split("|"),o=n.length;o--;)r.attrHandle[n[o]]=t}function de(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function pe(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function he(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function me(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ae(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function ve(e){return se(function(t){return t=+t,se(function(n,r){for(var o,i=e([],n.length,t),a=i.length;a--;)n[o=i[a]]&&(n[o]=!(r[o]=n[o]))})})}function ye(e){return e&&void 0!==e.getElementsByTagName&&e}for(t in n=le.support={},i=le.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Q.test(t||n&&n.nodeName||"HTML")},d=le.setDocument=function(e){var t,o,a=e?e.ownerDocument||e:w;return a!==p&&9===a.nodeType&&a.documentElement?(h=(p=a).documentElement,m=!i(p),w!==p&&(o=p.defaultView)&&o.top!==o&&(o.addEventListener?o.addEventListener("unload",ie,!1):o.attachEvent&&o.attachEvent("onunload",ie)),n.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ce(function(e){return e.appendChild(p.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=J.test(p.getElementsByClassName),n.getById=ce(function(e){return h.appendChild(e).id=x,!p.getElementsByName||!p.getElementsByName(x).length}),n.getById?(r.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},r.find.ID=function(e,t){if(void 0!==t.getElementById&&m){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(te,ne);return function(e){var n=void 0!==e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},r.find.ID=function(e,t){if(void 0!==t.getElementById&&m){var n,r,o,i=t.getElementById(e);if(i){if((n=i.getAttributeNode("id"))&&n.value===e)return[i];for(o=t.getElementsByName(e),r=0;i=o[r++];)if((n=i.getAttributeNode("id"))&&n.value===e)return[i]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],o=0,i=t.getElementsByTagName(e);if("*"===e){for(;n=i[o++];)1===n.nodeType&&r.push(n);return r}return i},r.find.CLASS=n.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&m)return t.getElementsByClassName(e)},y=[],v=[],(n.qsa=J.test(p.querySelectorAll))&&(ce(function(e){h.appendChild(e).innerHTML="<a id='"+x+"'></a><select id='"+x+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+L+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+L+"*(?:value|"+I+")"),e.querySelectorAll("[id~="+x+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+x+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=p.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+L+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(n.matchesSelector=J.test(g=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ce(function(e){n.disconnectedMatch=g.call(e,"*"),g.call(e,"[s!='']:x"),y.push("!=",z)}),v=v.length&&new RegExp(v.join("|")),y=y.length&&new RegExp(y.join("|")),t=J.test(h.compareDocumentPosition),b=t||J.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},O=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e===p||e.ownerDocument===w&&b(w,e)?-1:t===p||t.ownerDocument===w&&b(w,t)?1:c?j(c,e)-j(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,o=e.parentNode,i=t.parentNode,a=[e],l=[t];if(!o||!i)return e===p?-1:t===p?1:o?-1:i?1:c?j(c,e)-j(c,t):0;if(o===i)return de(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)l.unshift(n);for(;a[r]===l[r];)r++;return r?de(a[r],l[r]):a[r]===w?-1:l[r]===w?1:0},p):p},le.matches=function(e,t){return le(e,null,null,t)},le.matchesSelector=function(e,t){if((e.ownerDocument||e)!==p&&d(e),n.matchesSelector&&m&&!_[t+" "]&&(!y||!y.test(t))&&(!v||!v.test(t)))try{var r=g.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){_(t,!0)}return le(t,p,null,[e]).length>0},le.contains=function(e,t){return(e.ownerDocument||e)!==p&&d(e),b(e,t)},le.attr=function(e,t){(e.ownerDocument||e)!==p&&d(e);var o=r.attrHandle[t.toLowerCase()],i=o&&P.call(r.attrHandle,t.toLowerCase())?o(e,t,!m):void 0;return void 0!==i?i:n.attributes||!m?e.getAttribute(t):(i=e.getAttributeNode(t))&&i.specified?i.value:null},le.escape=function(e){return(e+"").replace(re,oe)},le.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},le.uniqueSort=function(e){var t,r=[],o=0,i=0;if(f=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(O),f){for(;t=e[i++];)t===e[i]&&(o=r.push(i));for(;o--;)e.splice(r[o],1)}return c=null,e},o=le.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r++];)n+=o(t);return n},(r=le.selectors={cacheLength:50,createPseudo:se,match:K,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||le.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&le.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return K.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&V.test(n)&&(t=a(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=k[e+" "];return t||(t=new RegExp("(^|"+L+")"+e+"("+L+"|$)"))&&k(e,function(e){return t.test("string"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var o=le.attr(r,e);return null==o?"!="===t:!t||(o+="","="===t?o===n:"!="===t?o!==n:"^="===t?n&&0===o.indexOf(n):"*="===t?n&&o.indexOf(n)>-1:"$="===t?n&&o.slice(-n.length)===n:"~="===t?(" "+o.replace(H," ")+" ").indexOf(n)>-1:"|="===t&&(o===n||o.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,o){var i="nth"!==e.slice(0,3),a="last"!==e.slice(-4),l="of-type"===t;return 1===r&&0===o?function(e){return!!e.parentNode}:function(t,n,u){var s,c,f,d,p,h,m=i!==a?"nextSibling":"previousSibling",v=t.parentNode,y=l&&t.nodeName.toLowerCase(),g=!u&&!l,b=!1;if(v){if(i){for(;m;){for(d=t;d=d[m];)if(l?d.nodeName.toLowerCase()===y:1===d.nodeType)return!1;h=m="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?v.firstChild:v.lastChild],a&&g){for(b=(p=(s=(c=(f=(d=v)[x]||(d[x]={}))[d.uniqueID]||(f[d.uniqueID]={}))[e]||[])[0]===E&&s[1])&&s[2],d=p&&v.childNodes[p];d=++p&&d&&d[m]||(b=p=0)||h.pop();)if(1===d.nodeType&&++b&&d===t){c[e]=[E,p,b];break}}else if(g&&(b=p=(s=(c=(f=(d=t)[x]||(d[x]={}))[d.uniqueID]||(f[d.uniqueID]={}))[e]||[])[0]===E&&s[1]),!1===b)for(;(d=++p&&d&&d[m]||(b=p=0)||h.pop())&&((l?d.nodeName.toLowerCase()!==y:1!==d.nodeType)||!++b||(g&&((c=(f=d[x]||(d[x]={}))[d.uniqueID]||(f[d.uniqueID]={}))[e]=[E,b]),d!==t)););return(b-=o)===r||b%r==0&&b/r>=0}}},PSEUDO:function(e,t){var n,o=r.pseudos[e]||r.setFilters[e.toLowerCase()]||le.error("unsupported pseudo: "+e);return o[x]?o(t):o.length>1?(n=[e,e,"",t],r.setFilters.hasOwnProperty(e.toLowerCase())?se(function(e,n){for(var r,i=o(e,t),a=i.length;a--;)e[r=j(e,i[a])]=!(n[r]=i[a])}):function(e){return o(e,0,n)}):o}},pseudos:{not:se(function(e){var t=[],n=[],r=l(e.replace(W,"$1"));return r[x]?se(function(e,t,n,o){for(var i,a=r(e,null,o,[]),l=e.length;l--;)(i=a[l])&&(e[l]=!(t[l]=i))}):function(e,o,i){return t[0]=e,r(t,null,i,n),t[0]=null,!n.pop()}}),has:se(function(e){return function(t){return le(e,t).length>0}}),contains:se(function(e){return e=e.replace(te,ne),function(t){return(t.textContent||o(t)).indexOf(e)>-1}}),lang:se(function(e){return G.test(e||"")||le.error("unsupported lang: "+e),e=e.replace(te,ne).toLowerCase(),function(t){var n;do{if(n=m?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===p.activeElement&&(!p.hasFocus||p.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:me(!1),disabled:me(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return X.test(e.nodeName)},input:function(e){return Y.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:n>t?t:n;--r>=0;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=r.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})r.pseudos[t]=pe(t);for(t in{submit:!0,reset:!0})r.pseudos[t]=he(t);function ge(){}function be(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function xe(e,t,n){var r=t.dir,o=t.next,i=o||r,a=n&&"parentNode"===i,l=C++;return t.first?function(t,n,o){for(;t=t[r];)if(1===t.nodeType||a)return e(t,n,o);return!1}:function(t,n,u){var s,c,f,d=[E,l];if(u){for(;t=t[r];)if((1===t.nodeType||a)&&e(t,n,u))return!0}else for(;t=t[r];)if(1===t.nodeType||a)if(c=(f=t[x]||(t[x]={}))[t.uniqueID]||(f[t.uniqueID]={}),o&&o===t.nodeName.toLowerCase())t=t[r]||t;else{if((s=c[i])&&s[0]===E&&s[1]===l)return d[2]=s[2];if(c[i]=d,d[2]=e(t,n,u))return!0}return!1}}function we(e){return e.length>1?function(t,n,r){for(var o=e.length;o--;)if(!e[o](t,n,r))return!1;return!0}:e[0]}function Ee(e,t,n,r,o){for(var i,a=[],l=0,u=e.length,s=null!=t;l<u;l++)(i=e[l])&&(n&&!n(i,r,o)||(a.push(i),s&&t.push(l)));return a}function Ce(e,t,n,r,o,i){return r&&!r[x]&&(r=Ce(r)),o&&!o[x]&&(o=Ce(o,i)),se(function(i,a,l,u){var s,c,f,d=[],p=[],h=a.length,m=i||function(e,t,n){for(var r=0,o=t.length;r<o;r++)le(e,t[r],n);return n}(t||"*",l.nodeType?[l]:l,[]),v=!e||!i&&t?m:Ee(m,d,e,l,u),y=n?o||(i?e:h||r)?[]:a:v;if(n&&n(v,y,l,u),r)for(s=Ee(y,p),r(s,[],l,u),c=s.length;c--;)(f=s[c])&&(y[p[c]]=!(v[p[c]]=f));if(i){if(o||e){if(o){for(s=[],c=y.length;c--;)(f=y[c])&&s.push(v[c]=f);o(null,y=[],s,u)}for(c=y.length;c--;)(f=y[c])&&(s=o?j(i,f):d[c])>-1&&(i[s]=!(a[s]=f))}}else y=Ee(y===a?y.splice(h,y.length):y),o?o(null,a,y,u):M.apply(a,y)})}function ke(e){for(var t,n,o,i=e.length,a=r.relative[e[0].type],l=a||r.relative[" "],u=a?1:0,c=xe(function(e){return e===t},l,!0),f=xe(function(e){return j(t,e)>-1},l,!0),d=[function(e,n,r){var o=!a&&(r||n!==s)||((t=n).nodeType?c(e,n,r):f(e,n,r));return t=null,o}];u<i;u++)if(n=r.relative[e[u].type])d=[xe(we(d),n)];else{if((n=r.filter[e[u].type].apply(null,e[u].matches))[x]){for(o=++u;o<i&&!r.relative[e[o].type];o++);return Ce(u>1&&we(d),u>1&&be(e.slice(0,u-1).concat({value:" "===e[u-2].type?"*":""})).replace(W,"$1"),n,u<o&&ke(e.slice(u,o)),o<i&&ke(e=e.slice(o)),o<i&&be(e))}d.push(n)}return we(d)}return ge.prototype=r.filters=r.pseudos,r.setFilters=new ge,a=le.tokenize=function(e,t){var n,o,i,a,l,u,s,c=T[e+" "];if(c)return t?0:c.slice(0);for(l=e,u=[],s=r.preFilter;l;){for(a in n&&!(o=B.exec(l))||(o&&(l=l.slice(o[0].length)||l),u.push(i=[])),n=!1,(o=q.exec(l))&&(n=o.shift(),i.push({value:n,type:o[0].replace(W," ")}),l=l.slice(n.length)),r.filter)!(o=K[a].exec(l))||s[a]&&!(o=s[a](o))||(n=o.shift(),i.push({value:n,type:a,matches:o}),l=l.slice(n.length));if(!n)break}return t?l.length:l?le.error(e):T(e,u).slice(0)},l=le.compile=function(e,t){var n,o=[],i=[],l=S[e+" "];if(!l){for(t||(t=a(e)),n=t.length;n--;)(l=ke(t[n]))[x]?o.push(l):i.push(l);(l=S(e,function(e,t){var n=t.length>0,o=e.length>0,i=function(i,a,l,u,c){var f,h,v,y=0,g="0",b=i&&[],x=[],w=s,C=i||o&&r.find.TAG("*",c),k=E+=null==w?1:Math.random()||.1,T=C.length;for(c&&(s=a===p||a||c);g!==T&&null!=(f=C[g]);g++){if(o&&f){for(h=0,a||f.ownerDocument===p||(d(f),l=!m);v=e[h++];)if(v(f,a||p,l)){u.push(f);break}c&&(E=k)}n&&((f=!v&&f)&&y--,i&&b.push(f))}if(y+=g,n&&g!==y){for(h=0;v=t[h++];)v(b,x,a,l);if(i){if(y>0)for(;g--;)b[g]||x[g]||(x[g]=D.call(u));x=Ee(x)}M.apply(u,x),c&&!i&&x.length>0&&y+t.length>1&&le.uniqueSort(u)}return c&&(E=k,s=w),b};return n?se(i):i}(i,o))).selector=e}return l},u=le.select=function(e,t,n,o){var i,u,s,c,f,d="function"==typeof e&&e,p=!o&&a(e=d.selector||e);if(n=n||[],1===p.length){if((u=p[0]=p[0].slice(0)).length>2&&"ID"===(s=u[0]).type&&9===t.nodeType&&m&&r.relative[u[1].type]){if(!(t=(r.find.ID(s.matches[0].replace(te,ne),t)||[])[0]))return n;d&&(t=t.parentNode),e=e.slice(u.shift().value.length)}for(i=K.needsContext.test(e)?0:u.length;i--&&(s=u[i],!r.relative[c=s.type]);)if((f=r.find[c])&&(o=f(s.matches[0].replace(te,ne),ee.test(u[0].type)&&ye(t.parentNode)||t))){if(u.splice(i,1),!(e=o.length&&be(u)))return M.apply(n,o),n;break}}return(d||l(e,p))(o,t,!m,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},n.sortStable=x.split("").sort(O).join("")===x,n.detectDuplicates=!!f,d(),n.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(p.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(I,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),le}(n);C.find=S,C.expr=S.selectors,C.expr[":"]=C.expr.pseudos,C.uniqueSort=C.unique=S.uniqueSort,C.text=S.getText,C.isXMLDoc=S.isXML,C.contains=S.contains,C.escapeSelector=S.escape;var _=function(e,t,n){for(var r=[],o=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(o&&C(e).is(n))break;r.push(e)}return r},O=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},P=C.expr.match.needsContext;function N(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var D=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function R(e,t,n){return g(t)?C.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?C.grep(e,function(e){return e===t!==n}):"string"!=typeof t?C.grep(e,function(e){return f.call(t,e)>-1!==n}):C.filter(t,e,n)}C.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?C.find.matchesSelector(r,e)?[r]:[]:C.find.matches(e,C.grep(t,function(e){return 1===e.nodeType}))},C.fn.extend({find:function(e){var t,n,r=this.length,o=this;if("string"!=typeof e)return this.pushStack(C(e).filter(function(){for(t=0;t<r;t++)if(C.contains(o[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)C.find(e,o[t],n);return r>1?C.uniqueSort(n):n},filter:function(e){return this.pushStack(R(this,e||[],!1))},not:function(e){return this.pushStack(R(this,e||[],!0))},is:function(e){return!!R(this,"string"==typeof e&&P.test(e)?C(e):e||[],!1).length}});var M,A=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(C.fn.init=function(e,t,n){var r,o;if(!e)return this;if(n=n||M,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:A.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof C?t[0]:t,C.merge(this,C.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:a,!0)),D.test(r[1])&&C.isPlainObject(t))for(r in t)g(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(o=a.getElementById(r[2]))&&(this[0]=o,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):g(e)?void 0!==n.ready?n.ready(e):e(C):C.makeArray(e,this)}).prototype=C.fn,M=C(a);var j=/^(?:parents|prev(?:Until|All))/,I={children:!0,contents:!0,next:!0,prev:!0};function L(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}C.fn.extend({has:function(e){var t=C(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(C.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,o=this.length,i=[],a="string"!=typeof e&&C(e);if(!P.test(e))for(;r<o;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?a.index(n)>-1:1===n.nodeType&&C.find.matchesSelector(n,e))){i.push(n);break}return this.pushStack(i.length>1?C.uniqueSort(i):i)},index:function(e){return e?"string"==typeof e?f.call(C(e),this[0]):f.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(C.uniqueSort(C.merge(this.get(),C(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),C.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return _(e,"parentNode")},parentsUntil:function(e,t,n){return _(e,"parentNode",n)},next:function(e){return L(e,"nextSibling")},prev:function(e){return L(e,"previousSibling")},nextAll:function(e){return _(e,"nextSibling")},prevAll:function(e){return _(e,"previousSibling")},nextUntil:function(e,t,n){return _(e,"nextSibling",n)},prevUntil:function(e,t,n){return _(e,"previousSibling",n)},siblings:function(e){return O((e.parentNode||{}).firstChild,e)},children:function(e){return O(e.firstChild)},contents:function(e){return void 0!==e.contentDocument?e.contentDocument:(N(e,"template")&&(e=e.content||e),C.merge([],e.childNodes))}},function(e,t){C.fn[e]=function(n,r){var o=C.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(o=C.filter(r,o)),this.length>1&&(I[e]||C.uniqueSort(o),j.test(e)&&o.reverse()),this.pushStack(o)}});var F=/[^\x20\t\r\n\f]+/g;function U(e){return e}function z(e){throw e}function H(e,t,n,r){var o;try{e&&g(o=e.promise)?o.call(e).done(t).fail(n):e&&g(o=e.then)?o.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}C.Callbacks=function(e){e="string"==typeof e?function(e){var t={};return C.each(e.match(F)||[],function(e,n){t[n]=!0}),t}(e):C.extend({},e);var t,n,r,o,i=[],a=[],l=-1,u=function(){for(o=o||e.once,r=t=!0;a.length;l=-1)for(n=a.shift();++l<i.length;)!1===i[l].apply(n[0],n[1])&&e.stopOnFalse&&(l=i.length,n=!1);e.memory||(n=!1),t=!1,o&&(i=n?[]:"")},s={add:function(){return i&&(n&&!t&&(l=i.length-1,a.push(n)),function t(n){C.each(n,function(n,r){g(r)?e.unique&&s.has(r)||i.push(r):r&&r.length&&"string"!==E(r)&&t(r)})}(arguments),n&&!t&&u()),this},remove:function(){return C.each(arguments,function(e,t){for(var n;(n=C.inArray(t,i,n))>-1;)i.splice(n,1),n<=l&&l--}),this},has:function(e){return e?C.inArray(e,i)>-1:i.length>0},empty:function(){return i&&(i=[]),this},disable:function(){return o=a=[],i=n="",this},disabled:function(){return!i},lock:function(){return o=a=[],n||t||(i=n=""),this},locked:function(){return!!o},fireWith:function(e,n){return o||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||u()),this},fire:function(){return s.fireWith(this,arguments),this},fired:function(){return!!r}};return s},C.extend({Deferred:function(e){var t=[["notify","progress",C.Callbacks("memory"),C.Callbacks("memory"),2],["resolve","done",C.Callbacks("once memory"),C.Callbacks("once memory"),0,"resolved"],["reject","fail",C.Callbacks("once memory"),C.Callbacks("once memory"),1,"rejected"]],r="pending",o={state:function(){return r},always:function(){return i.done(arguments).fail(arguments),this},catch:function(e){return o.then(null,e)},pipe:function(){var e=arguments;return C.Deferred(function(n){C.each(t,function(t,r){var o=g(e[r[4]])&&e[r[4]];i[r[1]](function(){var e=o&&o.apply(this,arguments);e&&g(e.promise)?e.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[r[0]+"With"](this,o?[e]:arguments)})}),e=null}).promise()},then:function(e,r,o){var i=0;function a(e,t,r,o){return function(){var l=this,u=arguments,s=function(){var n,s;if(!(e<i)){if((n=r.apply(l,u))===t.promise())throw new TypeError("Thenable self-resolution");s=n&&("object"==typeof n||"function"==typeof n)&&n.then,g(s)?o?s.call(n,a(i,t,U,o),a(i,t,z,o)):(i++,s.call(n,a(i,t,U,o),a(i,t,z,o),a(i,t,U,t.notifyWith))):(r!==U&&(l=void 0,u=[n]),(o||t.resolveWith)(l,u))}},c=o?s:function(){try{s()}catch(n){C.Deferred.exceptionHook&&C.Deferred.exceptionHook(n,c.stackTrace),e+1>=i&&(r!==z&&(l=void 0,u=[n]),t.rejectWith(l,u))}};e?c():(C.Deferred.getStackHook&&(c.stackTrace=C.Deferred.getStackHook()),n.setTimeout(c))}}return C.Deferred(function(n){t[0][3].add(a(0,n,g(o)?o:U,n.notifyWith)),t[1][3].add(a(0,n,g(e)?e:U)),t[2][3].add(a(0,n,g(r)?r:z))}).promise()},promise:function(e){return null!=e?C.extend(e,o):o}},i={};return C.each(t,function(e,n){var a=n[2],l=n[5];o[n[1]]=a.add,l&&a.add(function(){r=l},t[3-e][2].disable,t[3-e][3].disable,t[0][2].lock,t[0][3].lock),a.add(n[3].fire),i[n[0]]=function(){return i[n[0]+"With"](this===i?void 0:this,arguments),this},i[n[0]+"With"]=a.fireWith}),o.promise(i),e&&e.call(i,i),i},when:function(e){var t=arguments.length,n=t,r=Array(n),o=u.call(arguments),i=C.Deferred(),a=function(e){return function(n){r[e]=this,o[e]=arguments.length>1?u.call(arguments):n,--t||i.resolveWith(r,o)}};if(t<=1&&(H(e,i.done(a(n)).resolve,i.reject,!t),"pending"===i.state()||g(o[n]&&o[n].then)))return i.then();for(;n--;)H(o[n],a(n),i.reject);return i.promise()}});var W=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;C.Deferred.exceptionHook=function(e,t){n.console&&n.console.warn&&e&&W.test(e.name)&&n.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},C.readyException=function(e){n.setTimeout(function(){throw e})};var B=C.Deferred();function q(){a.removeEventListener("DOMContentLoaded",q),n.removeEventListener("load",q),C.ready()}C.fn.ready=function(e){return B.then(e).catch(function(e){C.readyException(e)}),this},C.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--C.readyWait:C.isReady)||(C.isReady=!0,!0!==e&&--C.readyWait>0||B.resolveWith(a,[C]))}}),C.ready.then=B.then,"complete"===a.readyState||"loading"!==a.readyState&&!a.documentElement.doScroll?n.setTimeout(C.ready):(a.addEventListener("DOMContentLoaded",q),n.addEventListener("load",q));var $=function(e,t,n,r,o,i,a){var l=0,u=e.length,s=null==n;if("object"===E(n))for(l in o=!0,n)$(e,t,l,n[l],!0,i,a);else if(void 0!==r&&(o=!0,g(r)||(a=!0),s&&(a?(t.call(e,r),t=null):(s=t,t=function(e,t,n){return s.call(C(e),n)})),t))for(;l<u;l++)t(e[l],n,a?r:r.call(e[l],l,t(e[l],n)));return o?e:s?t.call(e):u?t(e[0],n):i},V=/^-ms-/,G=/-([a-z])/g;function K(e,t){return t.toUpperCase()}function Q(e){return e.replace(V,"ms-").replace(G,K)}var Y=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function X(){this.expando=C.expando+X.uid++}X.uid=1,X.prototype={cache:function(e){var t=e[this.expando];return t||(t={},Y(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,o=this.cache(e);if("string"==typeof t)o[Q(t)]=n;else for(r in t)o[Q(r)]=t[r];return o},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][Q(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(Q):(t=Q(t))in r?[t]:t.match(F)||[]).length;for(;n--;)delete r[t[n]]}(void 0===t||C.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!C.isEmptyObject(t)}};var J=new X,Z=new X,ee=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,te=/[A-Z]/g;function ne(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(te,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n=function(e){return"true"===e||"false"!==e&&("null"===e?null:e===+e+""?+e:ee.test(e)?JSON.parse(e):e)}(n)}catch(e){}Z.set(e,t,n)}else n=void 0;return n}C.extend({hasData:function(e){return Z.hasData(e)||J.hasData(e)},data:function(e,t,n){return Z.access(e,t,n)},removeData:function(e,t){Z.remove(e,t)},_data:function(e,t,n){return J.access(e,t,n)},_removeData:function(e,t){J.remove(e,t)}}),C.fn.extend({data:function(e,t){var n,r,o,i=this[0],a=i&&i.attributes;if(void 0===e){if(this.length&&(o=Z.get(i),1===i.nodeType&&!J.get(i,"hasDataAttrs"))){for(n=a.length;n--;)a[n]&&0===(r=a[n].name).indexOf("data-")&&(r=Q(r.slice(5)),ne(i,r,o[r]));J.set(i,"hasDataAttrs",!0)}return o}return"object"==typeof e?this.each(function(){Z.set(this,e)}):$(this,function(t){var n;if(i&&void 0===t)return void 0!==(n=Z.get(i,e))?n:void 0!==(n=ne(i,e))?n:void 0;this.each(function(){Z.set(this,e,t)})},null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){Z.remove(this,e)})}}),C.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=J.get(e,t),n&&(!r||Array.isArray(n)?r=J.access(e,t,C.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=C.queue(e,t),r=n.length,o=n.shift(),i=C._queueHooks(e,t);"inprogress"===o&&(o=n.shift(),r--),o&&("fx"===t&&n.unshift("inprogress"),delete i.stop,o.call(e,function(){C.dequeue(e,t)},i)),!r&&i&&i.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return J.get(e,n)||J.access(e,n,{empty:C.Callbacks("once memory").add(function(){J.remove(e,[t+"queue",n])})})}}),C.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length<n?C.queue(this[0],e):void 0===t?this:this.each(function(){var n=C.queue(this,e,t);C._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&C.dequeue(this,e)})},dequeue:function(e){return this.each(function(){C.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,o=C.Deferred(),i=this,a=this.length,l=function(){--r||o.resolveWith(i,[i])};for("string"!=typeof e&&(t=e,e=void 0),e=e||"fx";a--;)(n=J.get(i[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(l));return l(),o.promise(t)}});var re=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,oe=new RegExp("^(?:([+-])=|)("+re+")([a-z%]*)$","i"),ie=["Top","Right","Bottom","Left"],ae=a.documentElement,le=function(e){return C.contains(e.ownerDocument,e)},ue={composed:!0};ae.getRootNode&&(le=function(e){return C.contains(e.ownerDocument,e)||e.getRootNode(ue)===e.ownerDocument});var se=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&le(e)&&"none"===C.css(e,"display")},ce=function(e,t,n,r){var o,i,a={};for(i in t)a[i]=e.style[i],e.style[i]=t[i];for(i in o=n.apply(e,r||[]),t)e.style[i]=a[i];return o};function fe(e,t,n,r){var o,i,a=20,l=r?function(){return r.cur()}:function(){return C.css(e,t,"")},u=l(),s=n&&n[3]||(C.cssNumber[t]?"":"px"),c=e.nodeType&&(C.cssNumber[t]||"px"!==s&&+u)&&oe.exec(C.css(e,t));if(c&&c[3]!==s){for(u/=2,s=s||c[3],c=+u||1;a--;)C.style(e,t,c+s),(1-i)*(1-(i=l()/u||.5))<=0&&(a=0),c/=i;c*=2,C.style(e,t,c+s),n=n||[]}return n&&(c=+c||+u||0,o=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=s,r.start=c,r.end=o)),o}var de={};function pe(e){var t,n=e.ownerDocument,r=e.nodeName,o=de[r];return o||(t=n.body.appendChild(n.createElement(r)),o=C.css(t,"display"),t.parentNode.removeChild(t),"none"===o&&(o="block"),de[r]=o,o)}function he(e,t){for(var n,r,o=[],i=0,a=e.length;i<a;i++)(r=e[i]).style&&(n=r.style.display,t?("none"===n&&(o[i]=J.get(r,"display")||null,o[i]||(r.style.display="")),""===r.style.display&&se(r)&&(o[i]=pe(r))):"none"!==n&&(o[i]="none",J.set(r,"display",n)));for(i=0;i<a;i++)null!=o[i]&&(e[i].style.display=o[i]);return e}C.fn.extend({show:function(){return he(this,!0)},hide:function(){return he(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){se(this)?C(this).show():C(this).hide()})}});var me=/^(?:checkbox|radio)$/i,ve=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,ye=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function be(e,t){var n;return n=void 0!==e.getElementsByTagName?e.getElementsByTagName(t||"*"):void 0!==e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&N(e,t)?C.merge([e],n):n}function xe(e,t){for(var n=0,r=e.length;n<r;n++)J.set(e[n],"globalEval",!t||J.get(t[n],"globalEval"))}ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;var we,Ee,Ce=/<|&#?\w+;/;function ke(e,t,n,r,o){for(var i,a,l,u,s,c,f=t.createDocumentFragment(),d=[],p=0,h=e.length;p<h;p++)if((i=e[p])||0===i)if("object"===E(i))C.merge(d,i.nodeType?[i]:i);else if(Ce.test(i)){for(a=a||f.appendChild(t.createElement("div")),l=(ve.exec(i)||["",""])[1].toLowerCase(),u=ge[l]||ge._default,a.innerHTML=u[1]+C.htmlPrefilter(i)+u[2],c=u[0];c--;)a=a.lastChild;C.merge(d,a.childNodes),(a=f.firstChild).textContent=""}else d.push(t.createTextNode(i));for(f.textContent="",p=0;i=d[p++];)if(r&&C.inArray(i,r)>-1)o&&o.push(i);else if(s=le(i),a=be(f.appendChild(i),"script"),s&&xe(a),n)for(c=0;i=a[c++];)ye.test(i.type||"")&&n.push(i);return f}we=a.createDocumentFragment().appendChild(a.createElement("div")),(Ee=a.createElement("input")).setAttribute("type","radio"),Ee.setAttribute("checked","checked"),Ee.setAttribute("name","t"),we.appendChild(Ee),y.checkClone=we.cloneNode(!0).cloneNode(!0).lastChild.checked,we.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!we.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Se=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,_e=/^([^.]*)(?:\.(.+)|)/;function Oe(){return!0}function Pe(){return!1}function Ne(e,t){return e===function(){try{return a.activeElement}catch(e){}}()==("focus"===t)}function De(e,t,n,r,o,i){var a,l;if("object"==typeof t){for(l in"string"!=typeof n&&(r=r||n,n=void 0),t)De(e,l,n,r,t[l],i);return e}if(null==r&&null==o?(o=n,r=n=void 0):null==o&&("string"==typeof n?(o=r,r=void 0):(o=r,r=n,n=void 0)),!1===o)o=Pe;else if(!o)return e;return 1===i&&(a=o,(o=function(e){return C().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=C.guid++)),e.each(function(){C.event.add(this,t,o,r,n)})}function Re(e,t,n){n?(J.set(e,t,!1),C.event.add(e,t,{namespace:!1,handler:function(e){var r,o,i=J.get(this,t);if(1&e.isTrigger&&this[t]){if(i.length)(C.event.special[t]||{}).delegateType&&e.stopPropagation();else if(i=u.call(arguments),J.set(this,t,i),r=n(this,t),this[t](),i!==(o=J.get(this,t))||r?J.set(this,t,!1):o={},i!==o)return e.stopImmediatePropagation(),e.preventDefault(),o.value}else i.length&&(J.set(this,t,{value:C.event.trigger(C.extend(i[0],C.Event.prototype),i.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===J.get(e,t)&&C.event.add(e,t,Oe)}C.event={global:{},add:function(e,t,n,r,o){var i,a,l,u,s,c,f,d,p,h,m,v=J.get(e);if(v)for(n.handler&&(n=(i=n).handler,o=i.selector),o&&C.find.matchesSelector(ae,o),n.guid||(n.guid=C.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(t){return void 0!==C&&C.event.triggered!==t.type?C.event.dispatch.apply(e,arguments):void 0}),s=(t=(t||"").match(F)||[""]).length;s--;)p=m=(l=_e.exec(t[s])||[])[1],h=(l[2]||"").split(".").sort(),p&&(f=C.event.special[p]||{},p=(o?f.delegateType:f.bindType)||p,f=C.event.special[p]||{},c=C.extend({type:p,origType:m,data:r,handler:n,guid:n.guid,selector:o,needsContext:o&&C.expr.match.needsContext.test(o),namespace:h.join(".")},i),(d=u[p])||((d=u[p]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(p,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),o?d.splice(d.delegateCount++,0,c):d.push(c),C.event.global[p]=!0)},remove:function(e,t,n,r,o){var i,a,l,u,s,c,f,d,p,h,m,v=J.hasData(e)&&J.get(e);if(v&&(u=v.events)){for(s=(t=(t||"").match(F)||[""]).length;s--;)if(p=m=(l=_e.exec(t[s])||[])[1],h=(l[2]||"").split(".").sort(),p){for(f=C.event.special[p]||{},d=u[p=(r?f.delegateType:f.bindType)||p]||[],l=l[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=i=d.length;i--;)c=d[i],!o&&m!==c.origType||n&&n.guid!==c.guid||l&&!l.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(d.splice(i,1),c.selector&&d.delegateCount--,f.remove&&f.remove.call(e,c));a&&!d.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||C.removeEvent(e,p,v.handle),delete u[p])}else for(p in u)C.event.remove(e,p+t[s],n,r,!0);C.isEmptyObject(u)&&J.remove(e,"handle events")}},dispatch:function(e){var t,n,r,o,i,a,l=C.event.fix(e),u=new Array(arguments.length),s=(J.get(this,"events")||{})[l.type]||[],c=C.event.special[l.type]||{};for(u[0]=l,t=1;t<arguments.length;t++)u[t]=arguments[t];if(l.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,l)){for(a=C.event.handlers.call(this,l,s),t=0;(o=a[t++])&&!l.isPropagationStopped();)for(l.currentTarget=o.elem,n=0;(i=o.handlers[n++])&&!l.isImmediatePropagationStopped();)l.rnamespace&&!1!==i.namespace&&!l.rnamespace.test(i.namespace)||(l.handleObj=i,l.data=i.data,void 0!==(r=((C.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,u))&&!1===(l.result=r)&&(l.preventDefault(),l.stopPropagation()));return c.postDispatch&&c.postDispatch.call(this,l),l.result}},handlers:function(e,t){var n,r,o,i,a,l=[],u=t.delegateCount,s=e.target;if(u&&s.nodeType&&!("click"===e.type&&e.button>=1))for(;s!==this;s=s.parentNode||this)if(1===s.nodeType&&("click"!==e.type||!0!==s.disabled)){for(i=[],a={},n=0;n<u;n++)void 0===a[o=(r=t[n]).selector+" "]&&(a[o]=r.needsContext?C(o,this).index(s)>-1:C.find(o,this,null,[s]).length),a[o]&&i.push(r);i.length&&l.push({elem:s,handlers:i})}return s=this,u<t.length&&l.push({elem:s,handlers:t.slice(u)}),l},addProp:function(e,t){Object.defineProperty(C.Event.prototype,e,{enumerable:!0,configurable:!0,get:g(t)?function(){if(this.originalEvent)return t(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[e]},set:function(t){Object.defineProperty(this,e,{enumerable:!0,configurable:!0,writable:!0,value:t})}})},fix:function(e){return e[C.expando]?e:new C.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return me.test(t.type)&&t.click&&N(t,"input")&&Re(t,"click",Oe),!1},trigger:function(e){var t=this||e;return me.test(t.type)&&t.click&&N(t,"input")&&Re(t,"click"),!0},_default:function(e){var t=e.target;return me.test(t.type)&&t.click&&N(t,"input")&&J.get(t,"click")||N(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},C.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},C.Event=function(e,t){if(!(this instanceof C.Event))return new C.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?Oe:Pe,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&C.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[C.expando]=!0},C.Event.prototype={constructor:C.Event,isDefaultPrevented:Pe,isPropagationStopped:Pe,isImmediatePropagationStopped:Pe,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=Oe,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=Oe,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=Oe,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},C.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,char:!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&Te.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Se.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},C.event.addProp),C.each({focus:"focusin",blur:"focusout"},function(e,t){C.event.special[e]={setup:function(){return Re(this,e,Ne),!1},trigger:function(){return Re(this,e),!0},delegateType:t}}),C.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,t){C.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,o=e.relatedTarget,i=e.handleObj;return o&&(o===r||C.contains(r,o))||(e.type=i.origType,n=i.handler.apply(this,arguments),e.type=t),n}}}),C.fn.extend({on:function(e,t,n,r){return De(this,e,t,n,r)},one:function(e,t,n,r){return De(this,e,t,n,r,1)},off:function(e,t,n){var r,o;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,C(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(o in e)this.off(o,t,e[o]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Pe),this.each(function(){C.event.remove(this,e,n,t)})}});var Me=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,Ae=/<script|<style|<link/i,je=/checked\s*(?:[^=]|=\s*.checked.)/i,Ie=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Le(e,t){return N(e,"table")&&N(11!==t.nodeType?t:t.firstChild,"tr")&&C(e).children("tbody")[0]||e}function Fe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Ue(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function ze(e,t){var n,r,o,i,a,l,u,s;if(1===t.nodeType){if(J.hasData(e)&&(i=J.access(e),a=J.set(t,i),s=i.events))for(o in delete a.handle,a.events={},s)for(n=0,r=s[o].length;n<r;n++)C.event.add(t,o,s[o][n]);Z.hasData(e)&&(l=Z.access(e),u=C.extend({},l),Z.set(t,u))}}function He(e,t){var n=t.nodeName.toLowerCase();"input"===n&&me.test(e.type)?t.checked=e.checked:"input"!==n&&"textarea"!==n||(t.defaultValue=e.defaultValue)}function We(e,t,n,r){t=s.apply([],t);var o,i,a,l,u,c,f=0,d=e.length,p=d-1,h=t[0],m=g(h);if(m||d>1&&"string"==typeof h&&!y.checkClone&&je.test(h))return e.each(function(o){var i=e.eq(o);m&&(t[0]=h.call(this,o,i.html())),We(i,t,n,r)});if(d&&(i=(o=ke(t,e[0].ownerDocument,!1,e,r)).firstChild,1===o.childNodes.length&&(o=i),i||r)){for(l=(a=C.map(be(o,"script"),Fe)).length;f<d;f++)u=o,f!==p&&(u=C.clone(u,!0,!0),l&&C.merge(a,be(u,"script"))),n.call(e[f],u,f);if(l)for(c=a[a.length-1].ownerDocument,C.map(a,Ue),f=0;f<l;f++)u=a[f],ye.test(u.type||"")&&!J.access(u,"globalEval")&&C.contains(c,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?C._evalUrl&&!u.noModule&&C._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")}):w(u.textContent.replace(Ie,""),u,c))}return e}function Be(e,t,n){for(var r,o=t?C.filter(t,e):e,i=0;null!=(r=o[i]);i++)n||1!==r.nodeType||C.cleanData(be(r)),r.parentNode&&(n&&le(r)&&xe(be(r,"script")),r.parentNode.removeChild(r));return e}C.extend({htmlPrefilter:function(e){return e.replace(Me,"<$1></$2>")},clone:function(e,t,n){var r,o,i,a,l=e.cloneNode(!0),u=le(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||C.isXMLDoc(e)))for(a=be(l),r=0,o=(i=be(e)).length;r<o;r++)He(i[r],a[r]);if(t)if(n)for(i=i||be(e),a=a||be(l),r=0,o=i.length;r<o;r++)ze(i[r],a[r]);else ze(e,l);return(a=be(l,"script")).length>0&&xe(a,!u&&be(e,"script")),l},cleanData:function(e){for(var t,n,r,o=C.event.special,i=0;void 0!==(n=e[i]);i++)if(Y(n)){if(t=n[J.expando]){if(t.events)for(r in t.events)o[r]?C.event.remove(n,r):C.removeEvent(n,r,t.handle);n[J.expando]=void 0}n[Z.expando]&&(n[Z.expando]=void 0)}}}),C.fn.extend({detach:function(e){return Be(this,e,!0)},remove:function(e){return Be(this,e)},text:function(e){return $(this,function(e){return void 0===e?C.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return We(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Le(this,e).appendChild(e)})},prepend:function(){return We(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Le(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return We(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return We(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(C.cleanData(be(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return C.clone(this,e,t)})},html:function(e){return $(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Ae.test(e)&&!ge[(ve.exec(e)||["",""])[1].toLowerCase()]){e=C.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(C.cleanData(be(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=[];return We(this,arguments,function(t){var n=this.parentNode;C.inArray(this,e)<0&&(C.cleanData(be(this)),n&&n.replaceChild(t,this))},e)}}),C.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){C.fn[e]=function(e){for(var n,r=[],o=C(e),i=o.length-1,a=0;a<=i;a++)n=a===i?this:this.clone(!0),C(o[a])[t](n),c.apply(r,n.get());return this.pushStack(r)}});var qe=new RegExp("^("+re+")(?!px)[a-z%]+$","i"),$e=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=n),t.getComputedStyle(e)},Ve=new RegExp(ie.join("|"),"i");function Ge(e,t,n){var r,o,i,a,l=e.style;return(n=n||$e(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||le(e)||(a=C.style(e,t)),!y.pixelBoxStyles()&&qe.test(a)&&Ve.test(t)&&(r=l.width,o=l.minWidth,i=l.maxWidth,l.minWidth=l.maxWidth=l.width=a,a=n.width,l.width=r,l.minWidth=o,l.maxWidth=i)),void 0!==a?a+"":a}function Ke(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(c){s.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",c.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",ae.appendChild(s).appendChild(c);var e=n.getComputedStyle(c);r="1%"!==e.top,u=12===t(e.marginLeft),c.style.right="60%",l=36===t(e.right),o=36===t(e.width),c.style.position="absolute",i=12===t(c.offsetWidth/3),ae.removeChild(s),c=null}}function t(e){return Math.round(parseFloat(e))}var r,o,i,l,u,s=a.createElement("div"),c=a.createElement("div");c.style&&(c.style.backgroundClip="content-box",c.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===c.style.backgroundClip,C.extend(y,{boxSizingReliable:function(){return e(),o},pixelBoxStyles:function(){return e(),l},pixelPosition:function(){return e(),r},reliableMarginLeft:function(){return e(),u},scrollboxSize:function(){return e(),i}}))}();var Qe=["Webkit","Moz","ms"],Ye=a.createElement("div").style,Xe={};function Je(e){var t=C.cssProps[e]||Xe[e];return t||(e in Ye?e:Xe[e]=function(e){for(var t=e[0].toUpperCase()+e.slice(1),n=Qe.length;n--;)if((e=Qe[n]+t)in Ye)return e}(e)||e)}var Ze=/^(none|table(?!-c[ea]).+)/,et=/^--/,tt={position:"absolute",visibility:"hidden",display:"block"},nt={letterSpacing:"0",fontWeight:"400"};function rt(e,t,n){var r=oe.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function ot(e,t,n,r,o,i){var a="width"===t?1:0,l=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=C.css(e,n+ie[a],!0,o)),r?("content"===n&&(u-=C.css(e,"padding"+ie[a],!0,o)),"margin"!==n&&(u-=C.css(e,"border"+ie[a]+"Width",!0,o))):(u+=C.css(e,"padding"+ie[a],!0,o),"padding"!==n?u+=C.css(e,"border"+ie[a]+"Width",!0,o):l+=C.css(e,"border"+ie[a]+"Width",!0,o));return!r&&i>=0&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-i-u-l-.5))||0),u}function it(e,t,n){var r=$e(e),o=(!y.boxSizingReliable()||n)&&"border-box"===C.css(e,"boxSizing",!1,r),i=o,a=Ge(e,t,r),l="offset"+t[0].toUpperCase()+t.slice(1);if(qe.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&o||"auto"===a||!parseFloat(a)&&"inline"===C.css(e,"display",!1,r))&&e.getClientRects().length&&(o="border-box"===C.css(e,"boxSizing",!1,r),(i=l in e)&&(a=e[l])),(a=parseFloat(a)||0)+ot(e,t,n||(o?"border":"content"),i,r,a)+"px"}function at(e,t,n,r,o){return new at.prototype.init(e,t,n,r,o)}C.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Ge(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,i,a,l=Q(t),u=et.test(t),s=e.style;if(u||(t=Je(l)),a=C.cssHooks[t]||C.cssHooks[l],void 0===n)return a&&"get"in a&&void 0!==(o=a.get(e,!1,r))?o:s[t];"string"===(i=typeof n)&&(o=oe.exec(n))&&o[1]&&(n=fe(e,t,o),i="number"),null!=n&&n==n&&("number"!==i||u||(n+=o&&o[3]||(C.cssNumber[l]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(s[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?s.setProperty(t,n):s[t]=n))}},css:function(e,t,n,r){var o,i,a,l=Q(t);return et.test(t)||(t=Je(l)),(a=C.cssHooks[t]||C.cssHooks[l])&&"get"in a&&(o=a.get(e,!0,n)),void 0===o&&(o=Ge(e,t,r)),"normal"===o&&t in nt&&(o=nt[t]),""===n||n?(i=parseFloat(o),!0===n||isFinite(i)?i||0:o):o}}),C.each(["height","width"],function(e,t){C.cssHooks[t]={get:function(e,n,r){if(n)return!Ze.test(C.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?it(e,t,r):ce(e,tt,function(){return it(e,t,r)})},set:function(e,n,r){var o,i=$e(e),a=!y.scrollboxSize()&&"absolute"===i.position,l=(a||r)&&"border-box"===C.css(e,"boxSizing",!1,i),u=r?ot(e,t,r,l,i):0;return l&&a&&(u-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(i[t])-ot(e,t,"border",!1,i)-.5)),u&&(o=oe.exec(n))&&"px"!==(o[3]||"px")&&(e.style[t]=n,n=C.css(e,t)),rt(0,n,u)}}}),C.cssHooks.marginLeft=Ke(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Ge(e,"marginLeft"))||e.getBoundingClientRect().left-ce(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),C.each({margin:"",padding:"",border:"Width"},function(e,t){C.cssHooks[e+t]={expand:function(n){for(var r=0,o={},i="string"==typeof n?n.split(" "):[n];r<4;r++)o[e+ie[r]+t]=i[r]||i[r-2]||i[0];return o}},"margin"!==e&&(C.cssHooks[e+t].set=rt)}),C.fn.extend({css:function(e,t){return $(this,function(e,t,n){var r,o,i={},a=0;if(Array.isArray(t)){for(r=$e(e),o=t.length;a<o;a++)i[t[a]]=C.css(e,t[a],!1,r);return i}return void 0!==n?C.style(e,t,n):C.css(e,t)},e,t,arguments.length>1)}}),C.Tween=at,at.prototype={constructor:at,init:function(e,t,n,r,o,i){this.elem=e,this.prop=n,this.easing=o||C.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=i||(C.cssNumber[n]?"":"px")},cur:function(){var e=at.propHooks[this.prop];return e&&e.get?e.get(this):at.propHooks._default.get(this)},run:function(e){var t,n=at.propHooks[this.prop];return this.options.duration?this.pos=t=C.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):at.propHooks._default.set(this),this}},at.prototype.init.prototype=at.prototype,at.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=C.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){C.fx.step[e.prop]?C.fx.step[e.prop](e):1!==e.elem.nodeType||!C.cssHooks[e.prop]&&null==e.elem.style[Je(e.prop)]?e.elem[e.prop]=e.now:C.style(e.elem,e.prop,e.now+e.unit)}}},at.propHooks.scrollTop=at.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},C.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},C.fx=at.prototype.init,C.fx.step={};var lt,ut,st=/^(?:toggle|show|hide)$/,ct=/queueHooks$/;function ft(){ut&&(!1===a.hidden&&n.requestAnimationFrame?n.requestAnimationFrame(ft):n.setTimeout(ft,C.fx.interval),C.fx.tick())}function dt(){return n.setTimeout(function(){lt=void 0}),lt=Date.now()}function pt(e,t){var n,r=0,o={height:e};for(t=t?1:0;r<4;r+=2-t)o["margin"+(n=ie[r])]=o["padding"+n]=e;return t&&(o.opacity=o.width=e),o}function ht(e,t,n){for(var r,o=(mt.tweeners[t]||[]).concat(mt.tweeners["*"]),i=0,a=o.length;i<a;i++)if(r=o[i].call(n,t,e))return r}function mt(e,t,n){var r,o,i=0,a=mt.prefilters.length,l=C.Deferred().always(function(){delete u.elem}),u=function(){if(o)return!1;for(var t=lt||dt(),n=Math.max(0,s.startTime+s.duration-t),r=1-(n/s.duration||0),i=0,a=s.tweens.length;i<a;i++)s.tweens[i].run(r);return l.notifyWith(e,[s,r,n]),r<1&&a?n:(a||l.notifyWith(e,[s,1,0]),l.resolveWith(e,[s]),!1)},s=l.promise({elem:e,props:C.extend({},t),opts:C.extend(!0,{specialEasing:{},easing:C.easing._default},n),originalProperties:t,originalOptions:n,startTime:lt||dt(),duration:n.duration,tweens:[],createTween:function(t,n){var r=C.Tween(e,s.opts,t,n,s.opts.specialEasing[t]||s.opts.easing);return s.tweens.push(r),r},stop:function(t){var n=0,r=t?s.tweens.length:0;if(o)return this;for(o=!0;n<r;n++)s.tweens[n].run(1);return t?(l.notifyWith(e,[s,1,0]),l.resolveWith(e,[s,t])):l.rejectWith(e,[s,t]),this}}),c=s.props;for(!function(e,t){var n,r,o,i,a;for(n in e)if(o=t[r=Q(n)],i=e[n],Array.isArray(i)&&(o=i[1],i=e[n]=i[0]),n!==r&&(e[r]=i,delete e[n]),(a=C.cssHooks[r])&&"expand"in a)for(n in i=a.expand(i),delete e[r],i)n in e||(e[n]=i[n],t[n]=o);else t[r]=o}(c,s.opts.specialEasing);i<a;i++)if(r=mt.prefilters[i].call(s,e,c,s.opts))return g(r.stop)&&(C._queueHooks(s.elem,s.opts.queue).stop=r.stop.bind(r)),r;return C.map(c,ht,s),g(s.opts.start)&&s.opts.start.call(e,s),s.progress(s.opts.progress).done(s.opts.done,s.opts.complete).fail(s.opts.fail).always(s.opts.always),C.fx.timer(C.extend(u,{elem:e,anim:s,queue:s.opts.queue})),s}C.Animation=C.extend(mt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return fe(n.elem,e,oe.exec(t),n),n}]},tweener:function(e,t){g(e)?(t=e,e=["*"]):e=e.match(F);for(var n,r=0,o=e.length;r<o;r++)n=e[r],mt.tweeners[n]=mt.tweeners[n]||[],mt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,o,i,a,l,u,s,c,f="width"in t||"height"in t,d=this,p={},h=e.style,m=e.nodeType&&se(e),v=J.get(e,"fxshow");for(r in n.queue||(null==(a=C._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,l=a.empty.fire,a.empty.fire=function(){a.unqueued||l()}),a.unqueued++,d.always(function(){d.always(function(){a.unqueued--,C.queue(e,"fx").length||a.empty.fire()})})),t)if(o=t[r],st.test(o)){if(delete t[r],i=i||"toggle"===o,o===(m?"hide":"show")){if("show"!==o||!v||void 0===v[r])continue;m=!0}p[r]=v&&v[r]||C.style(e,r)}if((u=!C.isEmptyObject(t))||!C.isEmptyObject(p))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(s=v&&v.display)&&(s=J.get(e,"display")),"none"===(c=C.css(e,"display"))&&(s?c=s:(he([e],!0),s=e.style.display||s,c=C.css(e,"display"),he([e]))),("inline"===c||"inline-block"===c&&null!=s)&&"none"===C.css(e,"float")&&(u||(d.done(function(){h.display=s}),null==s&&(c=h.display,s="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",d.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,p)u||(v?"hidden"in v&&(m=v.hidden):v=J.access(e,"fxshow",{display:s}),i&&(v.hidden=!m),m&&he([e],!0),d.done(function(){for(r in m||he([e]),J.remove(e,"fxshow"),p)C.style(e,r,p[r])})),u=ht(m?v[r]:0,r,d),r in v||(v[r]=u.start,m&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?mt.prefilters.unshift(e):mt.prefilters.push(e)}}),C.speed=function(e,t,n){var r=e&&"object"==typeof e?C.extend({},e):{complete:n||!n&&t||g(e)&&e,duration:e,easing:n&&t||t&&!g(t)&&t};return C.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in C.fx.speeds?r.duration=C.fx.speeds[r.duration]:r.duration=C.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){g(r.old)&&r.old.call(this),r.queue&&C.dequeue(this,r.queue)},r},C.fn.extend({fadeTo:function(e,t,n,r){return this.filter(se).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var o=C.isEmptyObject(e),i=C.speed(t,n,r),a=function(){var t=mt(this,C.extend({},e),i);(o||J.get(this,"finish"))&&t.stop(!0)};return a.finish=a,o||!1===i.queue?this.each(a):this.queue(i.queue,a)},stop:function(e,t,n){var r=function(e){var t=e.stop;delete e.stop,t(n)};return"string"!=typeof e&&(n=t,t=e,e=void 0),t&&!1!==e&&this.queue(e||"fx",[]),this.each(function(){var t=!0,o=null!=e&&e+"queueHooks",i=C.timers,a=J.get(this);if(o)a[o]&&a[o].stop&&r(a[o]);else for(o in a)a[o]&&a[o].stop&&ct.test(o)&&r(a[o]);for(o=i.length;o--;)i[o].elem!==this||null!=e&&i[o].queue!==e||(i[o].anim.stop(n),t=!1,i.splice(o,1));!t&&n||C.dequeue(this,e)})},finish:function(e){return!1!==e&&(e=e||"fx"),this.each(function(){var t,n=J.get(this),r=n[e+"queue"],o=n[e+"queueHooks"],i=C.timers,a=r?r.length:0;for(n.finish=!0,C.queue(this,e,[]),o&&o.stop&&o.stop.call(this,!0),t=i.length;t--;)i[t].elem===this&&i[t].queue===e&&(i[t].anim.stop(!0),i.splice(t,1));for(t=0;t<a;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}}),C.each(["toggle","show","hide"],function(e,t){var n=C.fn[t];C.fn[t]=function(e,r,o){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(pt(t,!0),e,r,o)}}),C.each({slideDown:pt("show"),slideUp:pt("hide"),slideToggle:pt("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){C.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),C.timers=[],C.fx.tick=function(){var e,t=0,n=C.timers;for(lt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||C.fx.stop(),lt=void 0},C.fx.timer=function(e){C.timers.push(e),C.fx.start()},C.fx.interval=13,C.fx.start=function(){ut||(ut=!0,ft())},C.fx.stop=function(){ut=null},C.fx.speeds={slow:600,fast:200,_default:400},C.fn.delay=function(e,t){return e=C.fx&&C.fx.speeds[e]||e,t=t||"fx",this.queue(t,function(t,r){var o=n.setTimeout(t,e);r.stop=function(){n.clearTimeout(o)}})},function(){var e=a.createElement("input"),t=a.createElement("select").appendChild(a.createElement("option"));e.type="checkbox",y.checkOn=""!==e.value,y.optSelected=t.selected,(e=a.createElement("input")).value="t",e.type="radio",y.radioValue="t"===e.value}();var vt,yt=C.expr.attrHandle;C.fn.extend({attr:function(e,t){return $(this,C.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){C.removeAttr(this,e)})}}),C.extend({attr:function(e,t,n){var r,o,i=e.nodeType;if(3!==i&&8!==i&&2!==i)return void 0===e.getAttribute?C.prop(e,t,n):(1===i&&C.isXMLDoc(e)||(o=C.attrHooks[t.toLowerCase()]||(C.expr.match.bool.test(t)?vt:void 0)),void 0!==n?null===n?void C.removeAttr(e,t):o&&"set"in o&&void 0!==(r=o.set(e,n,t))?r:(e.setAttribute(t,n+""),n):o&&"get"in o&&null!==(r=o.get(e,t))?r:null==(r=C.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&N(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,o=t&&t.match(F);if(o&&1===e.nodeType)for(;n=o[r++];)e.removeAttribute(n)}}),vt={set:function(e,t,n){return!1===t?C.removeAttr(e,n):e.setAttribute(n,n),n}},C.each(C.expr.match.bool.source.match(/\w+/g),function(e,t){var n=yt[t]||C.find.attr;yt[t]=function(e,t,r){var o,i,a=t.toLowerCase();return r||(i=yt[a],yt[a]=o,o=null!=n(e,t,r)?a:null,yt[a]=i),o}});var gt=/^(?:input|select|textarea|button)$/i,bt=/^(?:a|area)$/i;function xt(e){return(e.match(F)||[]).join(" ")}function wt(e){return e.getAttribute&&e.getAttribute("class")||""}function Et(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(F)||[]}C.fn.extend({prop:function(e,t){return $(this,C.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[C.propFix[e]||e]})}}),C.extend({prop:function(e,t,n){var r,o,i=e.nodeType;if(3!==i&&8!==i&&2!==i)return 1===i&&C.isXMLDoc(e)||(t=C.propFix[t]||t,o=C.propHooks[t]),void 0!==n?o&&"set"in o&&void 0!==(r=o.set(e,n,t))?r:e[t]=n:o&&"get"in o&&null!==(r=o.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=C.find.attr(e,"tabindex");return t?parseInt(t,10):gt.test(e.nodeName)||bt.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),y.optSelected||(C.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),C.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){C.propFix[this.toLowerCase()]=this}),C.fn.extend({addClass:function(e){var t,n,r,o,i,a,l,u=0;if(g(e))return this.each(function(t){C(this).addClass(e.call(this,t,wt(this)))});if((t=Et(e)).length)for(;n=this[u++];)if(o=wt(n),r=1===n.nodeType&&" "+xt(o)+" "){for(a=0;i=t[a++];)r.indexOf(" "+i+" ")<0&&(r+=i+" ");o!==(l=xt(r))&&n.setAttribute("class",l)}return this},removeClass:function(e){var t,n,r,o,i,a,l,u=0;if(g(e))return this.each(function(t){C(this).removeClass(e.call(this,t,wt(this)))});if(!arguments.length)return this.attr("class","");if((t=Et(e)).length)for(;n=this[u++];)if(o=wt(n),r=1===n.nodeType&&" "+xt(o)+" "){for(a=0;i=t[a++];)for(;r.indexOf(" "+i+" ")>-1;)r=r.replace(" "+i+" "," ");o!==(l=xt(r))&&n.setAttribute("class",l)}return this},toggleClass:function(e,t){var n=typeof e,r="string"===n||Array.isArray(e);return"boolean"==typeof t&&r?t?this.addClass(e):this.removeClass(e):g(e)?this.each(function(n){C(this).toggleClass(e.call(this,n,wt(this),t),t)}):this.each(function(){var t,o,i,a;if(r)for(o=0,i=C(this),a=Et(e);t=a[o++];)i.hasClass(t)?i.removeClass(t):i.addClass(t);else void 0!==e&&"boolean"!==n||((t=wt(this))&&J.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":J.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;for(t=" "+e+" ";n=this[r++];)if(1===n.nodeType&&(" "+xt(wt(n))+" ").indexOf(t)>-1)return!0;return!1}});var Ct=/\r/g;C.fn.extend({val:function(e){var t,n,r,o=this[0];return arguments.length?(r=g(e),this.each(function(n){var o;1===this.nodeType&&(null==(o=r?e.call(this,n,C(this).val()):e)?o="":"number"==typeof o?o+="":Array.isArray(o)&&(o=C.map(o,function(e){return null==e?"":e+""})),(t=C.valHooks[this.type]||C.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,o,"value")||(this.value=o))})):o?(t=C.valHooks[o.type]||C.valHooks[o.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(o,"value"))?n:"string"==typeof(n=o.value)?n.replace(Ct,""):null==n?"":n:void 0}}),C.extend({valHooks:{option:{get:function(e){var t=C.find.attr(e,"value");return null!=t?t:xt(C.text(e))}},select:{get:function(e){var t,n,r,o=e.options,i=e.selectedIndex,a="select-one"===e.type,l=a?null:[],u=a?i+1:o.length;for(r=i<0?u:a?i:0;r<u;r++)if(((n=o[r]).selected||r===i)&&!n.disabled&&(!n.parentNode.disabled||!N(n.parentNode,"optgroup"))){if(t=C(n).val(),a)return t;l.push(t)}return l},set:function(e,t){for(var n,r,o=e.options,i=C.makeArray(t),a=o.length;a--;)((r=o[a]).selected=C.inArray(C.valHooks.option.get(r),i)>-1)&&(n=!0);return n||(e.selectedIndex=-1),i}}}}),C.each(["radio","checkbox"],function(){C.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=C.inArray(C(e).val(),t)>-1}},y.checkOn||(C.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in n;var kt=/^(?:focusinfocus|focusoutblur)$/,Tt=function(e){e.stopPropagation()};C.extend(C.event,{trigger:function(e,t,r,o){var i,l,u,s,c,f,d,p,m=[r||a],v=h.call(e,"type")?e.type:e,y=h.call(e,"namespace")?e.namespace.split("."):[];if(l=p=u=r=r||a,3!==r.nodeType&&8!==r.nodeType&&!kt.test(v+C.event.triggered)&&(v.indexOf(".")>-1&&(y=v.split("."),v=y.shift(),y.sort()),c=v.indexOf(":")<0&&"on"+v,(e=e[C.expando]?e:new C.Event(v,"object"==typeof e&&e)).isTrigger=o?2:3,e.namespace=y.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+y.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=r),t=null==t?[e]:C.makeArray(t,[e]),d=C.event.special[v]||{},o||!d.trigger||!1!==d.trigger.apply(r,t))){if(!o&&!d.noBubble&&!b(r)){for(s=d.delegateType||v,kt.test(s+v)||(l=l.parentNode);l;l=l.parentNode)m.push(l),u=l;u===(r.ownerDocument||a)&&m.push(u.defaultView||u.parentWindow||n)}for(i=0;(l=m[i++])&&!e.isPropagationStopped();)p=l,e.type=i>1?s:d.bindType||v,(f=(J.get(l,"events")||{})[e.type]&&J.get(l,"handle"))&&f.apply(l,t),(f=c&&l[c])&&f.apply&&Y(l)&&(e.result=f.apply(l,t),!1===e.result&&e.preventDefault());return e.type=v,o||e.isDefaultPrevented()||d._default&&!1!==d._default.apply(m.pop(),t)||!Y(r)||c&&g(r[v])&&!b(r)&&((u=r[c])&&(r[c]=null),C.event.triggered=v,e.isPropagationStopped()&&p.addEventListener(v,Tt),r[v](),e.isPropagationStopped()&&p.removeEventListener(v,Tt),C.event.triggered=void 0,u&&(r[c]=u)),e.result}},simulate:function(e,t,n){var r=C.extend(new C.Event,n,{type:e,isSimulated:!0});C.event.trigger(r,null,t)}}),C.fn.extend({trigger:function(e,t){return this.each(function(){C.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return C.event.trigger(e,t,n,!0)}}),y.focusin||C.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){C.event.simulate(t,e.target,C.event.fix(e))};C.event.special[t]={setup:function(){var r=this.ownerDocument||this,o=J.access(r,t);o||r.addEventListener(e,n,!0),J.access(r,t,(o||0)+1)},teardown:function(){var r=this.ownerDocument||this,o=J.access(r,t)-1;o?J.access(r,t,o):(r.removeEventListener(e,n,!0),J.remove(r,t))}}});var St=n.location,_t=Date.now(),Ot=/\?/;C.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new n.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||C.error("Invalid XML: "+e),t};var Pt=/\[\]$/,Nt=/\r?\n/g,Dt=/^(?:submit|button|image|reset|file)$/i,Rt=/^(?:input|select|textarea|keygen)/i;function Mt(e,t,n,r){var o;if(Array.isArray(t))C.each(t,function(t,o){n||Pt.test(e)?r(e,o):Mt(e+"["+("object"==typeof o&&null!=o?t:"")+"]",o,n,r)});else if(n||"object"!==E(t))r(e,t);else for(o in t)Mt(e+"["+o+"]",t[o],n,r)}C.param=function(e,t){var n,r=[],o=function(e,t){var n=g(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!C.isPlainObject(e))C.each(e,function(){o(this.name,this.value)});else for(n in e)Mt(n,e[n],t,o);return r.join("&")},C.fn.extend({serialize:function(){return C.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=C.prop(this,"elements");return e?C.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!C(this).is(":disabled")&&Rt.test(this.nodeName)&&!Dt.test(e)&&(this.checked||!me.test(e))}).map(function(e,t){var n=C(this).val();return null==n?null:Array.isArray(n)?C.map(n,function(e){return{name:t.name,value:e.replace(Nt,"\r\n")}}):{name:t.name,value:n.replace(Nt,"\r\n")}}).get()}});var At=/%20/g,jt=/#.*$/,It=/([?&])_=[^&]*/,Lt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Ft=/^(?:GET|HEAD)$/,Ut=/^\/\//,zt={},Ht={},Wt="*/".concat("*"),Bt=a.createElement("a");function qt(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,o=0,i=t.toLowerCase().match(F)||[];if(g(n))for(;r=i[o++];)"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function $t(e,t,n,r){var o={},i=e===Ht;function a(l){var u;return o[l]=!0,C.each(e[l]||[],function(e,l){var s=l(t,n,r);return"string"!=typeof s||i||o[s]?i?!(u=s):void 0:(t.dataTypes.unshift(s),a(s),!1)}),u}return a(t.dataTypes[0])||!o["*"]&&a("*")}function Vt(e,t){var n,r,o=C.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((o[n]?e:r||(r={}))[n]=t[n]);return r&&C.extend(!0,e,r),e}Bt.href=St.href,C.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:St.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(St.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Wt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":C.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Vt(Vt(e,C.ajaxSettings),t):Vt(C.ajaxSettings,e)},ajaxPrefilter:qt(zt),ajaxTransport:qt(Ht),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var r,o,i,l,u,s,c,f,d,p,h=C.ajaxSetup({},t),m=h.context||h,v=h.context&&(m.nodeType||m.jquery)?C(m):C.event,y=C.Deferred(),g=C.Callbacks("once memory"),b=h.statusCode||{},x={},w={},E="canceled",k={readyState:0,getResponseHeader:function(e){var t;if(c){if(!l)for(l={};t=Lt.exec(i);)l[t[1].toLowerCase()+" "]=(l[t[1].toLowerCase()+" "]||[]).concat(t[2]);t=l[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return c?i:null},setRequestHeader:function(e,t){return null==c&&(e=w[e.toLowerCase()]=w[e.toLowerCase()]||e,x[e]=t),this},overrideMimeType:function(e){return null==c&&(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)k.always(e[k.status]);else for(t in e)b[t]=[b[t],e[t]];return this},abort:function(e){var t=e||E;return r&&r.abort(t),T(0,t),this}};if(y.promise(k),h.url=((e||h.url||St.href)+"").replace(Ut,St.protocol+"//"),h.type=t.method||t.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(F)||[""],null==h.crossDomain){s=a.createElement("a");try{s.href=h.url,s.href=s.href,h.crossDomain=Bt.protocol+"//"+Bt.host!=s.protocol+"//"+s.host}catch(e){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=C.param(h.data,h.traditional)),$t(zt,h,t,k),c)return k;for(d in(f=C.event&&h.global)&&0==C.active++&&C.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Ft.test(h.type),o=h.url.replace(jt,""),h.hasContent?h.data&&h.processData&&0===(h.contentType||"").indexOf("application/x-www-form-urlencoded")&&(h.data=h.data.replace(At,"+")):(p=h.url.slice(o.length),h.data&&(h.processData||"string"==typeof h.data)&&(o+=(Ot.test(o)?"&":"?")+h.data,delete h.data),!1===h.cache&&(o=o.replace(It,"$1"),p=(Ot.test(o)?"&":"?")+"_="+_t+++p),h.url=o+p),h.ifModified&&(C.lastModified[o]&&k.setRequestHeader("If-Modified-Since",C.lastModified[o]),C.etag[o]&&k.setRequestHeader("If-None-Match",C.etag[o])),(h.data&&h.hasContent&&!1!==h.contentType||t.contentType)&&k.setRequestHeader("Content-Type",h.contentType),k.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+Wt+"; q=0.01":""):h.accepts["*"]),h.headers)k.setRequestHeader(d,h.headers[d]);if(h.beforeSend&&(!1===h.beforeSend.call(m,k,h)||c))return k.abort();if(E="abort",g.add(h.complete),k.done(h.success),k.fail(h.error),r=$t(Ht,h,t,k)){if(k.readyState=1,f&&v.trigger("ajaxSend",[k,h]),c)return k;h.async&&h.timeout>0&&(u=n.setTimeout(function(){k.abort("timeout")},h.timeout));try{c=!1,r.send(x,T)}catch(e){if(c)throw e;T(-1,e)}}else T(-1,"No Transport");function T(e,t,a,l){var s,d,p,x,w,E=t;c||(c=!0,u&&n.clearTimeout(u),r=void 0,i=l||"",k.readyState=e>0?4:0,s=e>=200&&e<300||304===e,a&&(x=function(e,t,n){for(var r,o,i,a,l=e.contents,u=e.dataTypes;"*"===u[0];)u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(o in l)if(l[o]&&l[o].test(r)){u.unshift(o);break}if(u[0]in n)i=u[0];else{for(o in n){if(!u[0]||e.converters[o+" "+u[0]]){i=o;break}a||(a=o)}i=i||a}if(i)return i!==u[0]&&u.unshift(i),n[i]}(h,k,a)),x=function(e,t,n,r){var o,i,a,l,u,s={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)s[a.toLowerCase()]=e.converters[a];for(i=c.shift();i;)if(e.responseFields[i]&&(n[e.responseFields[i]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=i,i=c.shift())if("*"===i)i=u;else if("*"!==u&&u!==i){if(!(a=s[u+" "+i]||s["* "+i]))for(o in s)if((l=o.split(" "))[1]===i&&(a=s[u+" "+l[0]]||s["* "+l[0]])){!0===a?a=s[o]:!0!==s[o]&&(i=l[0],c.unshift(l[1]));break}if(!0!==a)if(a&&e.throws)t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+i}}}return{state:"success",data:t}}(h,x,k,s),s?(h.ifModified&&((w=k.getResponseHeader("Last-Modified"))&&(C.lastModified[o]=w),(w=k.getResponseHeader("etag"))&&(C.etag[o]=w)),204===e||"HEAD"===h.type?E="nocontent":304===e?E="notmodified":(E=x.state,d=x.data,s=!(p=x.error))):(p=E,!e&&E||(E="error",e<0&&(e=0))),k.status=e,k.statusText=(t||E)+"",s?y.resolveWith(m,[d,E,k]):y.rejectWith(m,[k,E,p]),k.statusCode(b),b=void 0,f&&v.trigger(s?"ajaxSuccess":"ajaxError",[k,h,s?d:p]),g.fireWith(m,[k,E]),f&&(v.trigger("ajaxComplete",[k,h]),--C.active||C.event.trigger("ajaxStop")))}return k},getJSON:function(e,t,n){return C.get(e,t,n,"json")},getScript:function(e,t){return C.get(e,void 0,t,"script")}}),C.each(["get","post"],function(e,t){C[t]=function(e,n,r,o){return g(n)&&(o=o||r,r=n,n=void 0),C.ajax(C.extend({url:e,type:t,dataType:o,data:n,success:r},C.isPlainObject(e)&&e))}}),C._evalUrl=function(e,t){return C.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){C.globalEval(e,t)}})},C.fn.extend({wrapAll:function(e){var t;return this[0]&&(g(e)&&(e=e.call(this[0])),t=C(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return g(e)?this.each(function(t){C(this).wrapInner(e.call(this,t))}):this.each(function(){var t=C(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=g(e);return this.each(function(n){C(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){C(this).replaceWith(this.childNodes)}),this}}),C.expr.pseudos.hidden=function(e){return!C.expr.pseudos.visible(e)},C.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},C.ajaxSettings.xhr=function(){try{return new n.XMLHttpRequest}catch(e){}};var Gt={0:200,1223:204},Kt=C.ajaxSettings.xhr();y.cors=!!Kt&&"withCredentials"in Kt,y.ajax=Kt=!!Kt,C.ajaxTransport(function(e){var t,r;if(y.cors||Kt&&!e.crossDomain)return{send:function(o,i){var a,l=e.xhr();if(l.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(a in e.xhrFields)l[a]=e.xhrFields[a];for(a in e.mimeType&&l.overrideMimeType&&l.overrideMimeType(e.mimeType),e.crossDomain||o["X-Requested-With"]||(o["X-Requested-With"]="XMLHttpRequest"),o)l.setRequestHeader(a,o[a]);t=function(e){return function(){t&&(t=r=l.onload=l.onerror=l.onabort=l.ontimeout=l.onreadystatechange=null,"abort"===e?l.abort():"error"===e?"number"!=typeof l.status?i(0,"error"):i(l.status,l.statusText):i(Gt[l.status]||l.status,l.statusText,"text"!==(l.responseType||"text")||"string"!=typeof l.responseText?{binary:l.response}:{text:l.responseText},l.getAllResponseHeaders()))}},l.onload=t(),r=l.onerror=l.ontimeout=t("error"),void 0!==l.onabort?l.onabort=r:l.onreadystatechange=function(){4===l.readyState&&n.setTimeout(function(){t&&r()})},t=t("abort");try{l.send(e.hasContent&&e.data||null)}catch(e){if(t)throw e}},abort:function(){t&&t()}}}),C.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),C.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return C.globalEval(e),e}}}),C.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),C.ajaxTransport("script",function(e){var t,n;if(e.crossDomain||e.scriptAttrs)return{send:function(r,o){t=C("<script>").attr(e.scriptAttrs||{}).prop({charset:e.scriptCharset,src:e.url}).on("load error",n=function(e){t.remove(),n=null,e&&o("error"===e.type?404:200,e.type)}),a.head.appendChild(t[0])},abort:function(){n&&n()}}});var Qt,Yt=[],Xt=/(=)\?(?=&|$)|\?\?/;C.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Yt.pop()||C.expando+"_"+_t++;return this[e]=!0,e}}),C.ajaxPrefilter("json jsonp",function(e,t,r){var o,i,a,l=!1!==e.jsonp&&(Xt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Xt.test(e.data)&&"data");if(l||"jsonp"===e.dataTypes[0])return o=e.jsonpCallback=g(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,l?e[l]=e[l].replace(Xt,"$1"+o):!1!==e.jsonp&&(e.url+=(Ot.test(e.url)?"&":"?")+e.jsonp+"="+o),e.converters["script json"]=function(){return a||C.error(o+" was not called"),a[0]},e.dataTypes[0]="json",i=n[o],n[o]=function(){a=arguments},r.always(function(){void 0===i?C(n).removeProp(o):n[o]=i,e[o]&&(e.jsonpCallback=t.jsonpCallback,Yt.push(o)),a&&g(i)&&i(a[0]),a=i=void 0}),"script"}),y.createHTMLDocument=((Qt=a.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Qt.childNodes.length),C.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=a.implementation.createHTMLDocument("")).createElement("base")).href=a.location.href,t.head.appendChild(r)):t=a),i=!n&&[],(o=D.exec(e))?[t.createElement(o[1])]:(o=ke([e],t,i),i&&i.length&&C(i).remove(),C.merge([],o.childNodes)));var r,o,i},C.fn.load=function(e,t,n){var r,o,i,a=this,l=e.indexOf(" ");return l>-1&&(r=xt(e.slice(l)),e=e.slice(0,l)),g(t)?(n=t,t=void 0):t&&"object"==typeof t&&(o="POST"),a.length>0&&C.ajax({url:e,type:o||"GET",dataType:"html",data:t}).done(function(e){i=arguments,a.html(r?C("<div>").append(C.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,i||[e.responseText,t,e])})}),this},C.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){C.fn[t]=function(e){return this.on(t,e)}}),C.expr.pseudos.animated=function(e){return C.grep(C.timers,function(t){return e===t.elem}).length},C.offset={setOffset:function(e,t,n){var r,o,i,a,l,u,s=C.css(e,"position"),c=C(e),f={};"static"===s&&(e.style.position="relative"),l=c.offset(),i=C.css(e,"top"),u=C.css(e,"left"),("absolute"===s||"fixed"===s)&&(i+u).indexOf("auto")>-1?(a=(r=c.position()).top,o=r.left):(a=parseFloat(i)||0,o=parseFloat(u)||0),g(t)&&(t=t.call(e,n,C.extend({},l))),null!=t.top&&(f.top=t.top-l.top+a),null!=t.left&&(f.left=t.left-l.left+o),"using"in t?t.using.call(e,f):c.css(f)}},C.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){C.offset.setOffset(this,e,t)});var t,n,r=this[0];return r?r.getClientRects().length?(t=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:t.top+n.pageYOffset,left:t.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],o={top:0,left:0};if("fixed"===C.css(r,"position"))t=r.getBoundingClientRect();else{for(t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;e&&(e===n.body||e===n.documentElement)&&"static"===C.css(e,"position");)e=e.parentNode;e&&e!==r&&1===e.nodeType&&((o=C(e).offset()).top+=C.css(e,"borderTopWidth",!0),o.left+=C.css(e,"borderLeftWidth",!0))}return{top:t.top-o.top-C.css(r,"marginTop",!0),left:t.left-o.left-C.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent;e&&"static"===C.css(e,"position");)e=e.offsetParent;return e||ae})}}),C.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){var n="pageYOffset"===t;C.fn[e]=function(r){return $(this,function(e,r,o){var i;if(b(e)?i=e:9===e.nodeType&&(i=e.defaultView),void 0===o)return i?i[t]:e[r];i?i.scrollTo(n?i.pageXOffset:o,n?o:i.pageYOffset):e[r]=o},e,r,arguments.length)}}),C.each(["top","left"],function(e,t){C.cssHooks[t]=Ke(y.pixelPosition,function(e,n){if(n)return n=Ge(e,t),qe.test(n)?C(e).position()[t]+"px":n})}),C.each({Height:"height",Width:"width"},function(e,t){C.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,r){C.fn[r]=function(o,i){var a=arguments.length&&(n||"boolean"!=typeof o),l=n||(!0===o||!0===i?"margin":"border");return $(this,function(t,n,o){var i;return b(t)?0===r.indexOf("outer")?t["inner"+e]:t.document.documentElement["client"+e]:9===t.nodeType?(i=t.documentElement,Math.max(t.body["scroll"+e],i["scroll"+e],t.body["offset"+e],i["offset"+e],i["client"+e])):void 0===o?C.css(t,n,l):C.style(t,n,o,l)},t,a?o:void 0,a)}})}),C.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,t){C.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),C.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),C.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),C.proxy=function(e,t){var n,r,o;if("string"==typeof t&&(n=e[t],t=e,e=n),g(e))return r=u.call(arguments,2),(o=function(){return e.apply(t||this,r.concat(u.call(arguments)))}).guid=e.guid=e.guid||C.guid++,o},C.holdReady=function(e){e?C.readyWait++:C.ready(!0)},C.isArray=Array.isArray,C.parseJSON=JSON.parse,C.nodeName=N,C.isFunction=g,C.isWindow=b,C.camelCase=Q,C.type=E,C.now=Date.now,C.isNumeric=function(e){var t=C.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},void 0===(r=function(){return C}.apply(t,[]))||(e.exports=r);var Jt=n.jQuery,Zt=n.$;return C.noConflict=function(e){return n.$===C&&(n.$=Zt),e&&n.jQuery===C&&(n.jQuery=Jt),C},o||(n.jQuery=n.$=C),C})},function(e,t){e.exports=function(){throw new Error("define cannot be used indirect")}},function(e,t,n){"use strict";var r=n(6);t.__esModule=!0,t.default=function(e,t){return function(n){var r=n.currentTarget,a=n.target,l=(0,i.default)(r,e);l.some(function(e){return(0,o.default)(e,a)})&&t.call(this,n)}};var o=r(n(26)),i=r(n(12));e.exports=t.default},function(e,t,n){"use strict";var r=n(6);t.__esModule=!0,t.default=function(e){void 0===e&&(e=(0,o.default)());try{return e.activeElement}catch(e){}};var o=r(n(13));e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(n(0)),o=n(50),i=a(n(28));function a(e){return e&&e.__esModule?e:{default:e}}t.default=(0,i.default)(function(e,t,n,i,a){var l=e[t];return r.default.isValidElement(l)?new Error("Invalid "+i+" `"+a+"` of type ReactElement supplied to `"+n+"`,expected an element type (a string , component class, or function component)."):(0,o.isValidElementType)(l)?null:new Error("Invalid "+i+" `"+a+"` of value `"+l+"` supplied to `"+n+"`, expected an element type (a string , component class, or function component).")}),e.exports=t.default},function(e,t,n){"use strict";e.exports=n(51)},function(e,t,n){"use strict";
+function(e){var t,n,o,r,i,a,s,l,u,c,d,p,h,f,m,g,v,y,b,w="sizzle"+1*new Date,E=e.document,C=0,x=0,T=le(),k=le(),S=le(),D=le(),M=function(e,t){return e===t&&(d=!0),0},R={}.hasOwnProperty,P=[],_=P.pop,L=P.push,O=P.push,N=P.slice,F=function(e,t){for(var n=0,o=e.length;n<o;n++)if(e[n]===t)return n;return-1},A="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",I="[\\x20\\t\\r\\n\\f]",H="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",z="\\["+I+"*("+H+")(?:"+I+"*([*^$|!~]?=)"+I+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+H+"))|)"+I+"*\\]",j=":("+H+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+z+")*)|.*)\\)|)",B=new RegExp(I+"+","g"),U=new RegExp("^"+I+"+|((?:^|[^\\\\])(?:\\\\.)*)"+I+"+$","g"),W=new RegExp("^"+I+"*,"+I+"*"),q=new RegExp("^"+I+"*([>+~]|"+I+")"+I+"*"),V=new RegExp(I+"|>"),G=new RegExp(j),Y=new RegExp("^"+H+"$"),$={ID:new RegExp("^#("+H+")"),CLASS:new RegExp("^\\.("+H+")"),TAG:new RegExp("^("+H+"|[*])"),ATTR:new RegExp("^"+z),PSEUDO:new RegExp("^"+j),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+I+"*(even|odd|(([+-]|)(\\d*)n|)"+I+"*(?:([+-]|)"+I+"*(\\d+)|))"+I+"*\\)|)","i"),bool:new RegExp("^(?:"+A+")$","i"),needsContext:new RegExp("^"+I+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+I+"*((?:-\\d)?\\d*)"+I+"*\\)|)(?=[^-]|$)","i")},X=/HTML$/i,K=/^(?:input|select|textarea|button)$/i,Q=/^h\d$/i,J=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+I+"?|("+I+")|.)","ig"),ne=function(e,t,n){var o="0x"+t-65536;return o!=o||n?t:o<0?String.fromCharCode(o+65536):String.fromCharCode(o>>10|55296,1023&o|56320)},oe=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,re=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},ie=function(){p()},ae=we(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{O.apply(P=N.call(E.childNodes),E.childNodes),P[E.childNodes.length].nodeType}catch(e){O={apply:P.length?function(e,t){L.apply(e,N.call(t))}:function(e,t){for(var n=e.length,o=0;e[n++]=t[o++];);e.length=n-1}}}function se(e,t,o,r){var i,s,u,c,d,f,v,y=t&&t.ownerDocument,C=t?t.nodeType:9;if(o=o||[],"string"!=typeof e||!e||1!==C&&9!==C&&11!==C)return o;if(!r&&((t?t.ownerDocument||t:E)!==h&&p(t),t=t||h,m)){if(11!==C&&(d=Z.exec(e)))if(i=d[1]){if(9===C){if(!(u=t.getElementById(i)))return o;if(u.id===i)return o.push(u),o}else if(y&&(u=y.getElementById(i))&&b(t,u)&&u.id===i)return o.push(u),o}else{if(d[2])return O.apply(o,t.getElementsByTagName(e)),o;if((i=d[3])&&n.getElementsByClassName&&t.getElementsByClassName)return O.apply(o,t.getElementsByClassName(i)),o}if(n.qsa&&!D[e+" "]&&(!g||!g.test(e))&&(1!==C||"object"!==t.nodeName.toLowerCase())){if(v=e,y=t,1===C&&V.test(e)){for((c=t.getAttribute("id"))?c=c.replace(oe,re):t.setAttribute("id",c=w),s=(f=a(e)).length;s--;)f[s]="#"+c+" "+be(f[s]);v=f.join(","),y=ee.test(e)&&ve(t.parentNode)||t}try{return O.apply(o,y.querySelectorAll(v)),o}catch(t){D(e,!0)}finally{c===w&&t.removeAttribute("id")}}}return l(e.replace(U,"$1"),t,o,r)}function le(){var e=[];return function t(n,r){return e.push(n+" ")>o.cacheLength&&delete t[e.shift()],t[n+" "]=r}}function ue(e){return e[w]=!0,e}function ce(e){var t=h.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function de(e,t){for(var n=e.split("|"),r=n.length;r--;)o.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,o=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(o)return o;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function he(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function fe(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function me(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ae(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function ge(e){return ue(function(t){return t=+t,ue(function(n,o){for(var r,i=e([],n.length,t),a=i.length;a--;)n[r=i[a]]&&(n[r]=!(o[r]=n[r]))})})}function ve(e){return e&&void 0!==e.getElementsByTagName&&e}for(t in n=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!X.test(t||n&&n.nodeName||"HTML")},p=se.setDocument=function(e){var t,r,a=e?e.ownerDocument||e:E;return a!==h&&9===a.nodeType&&a.documentElement?(f=(h=a).documentElement,m=!i(h),E!==h&&(r=h.defaultView)&&r.top!==r&&(r.addEventListener?r.addEventListener("unload",ie,!1):r.attachEvent&&r.attachEvent("onunload",ie)),n.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ce(function(e){return e.appendChild(h.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=J.test(h.getElementsByClassName),n.getById=ce(function(e){return f.appendChild(e).id=w,!h.getElementsByName||!h.getElementsByName(w).length}),n.getById?(o.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},o.find.ID=function(e,t){if(void 0!==t.getElementById&&m){var n=t.getElementById(e);return n?[n]:[]}}):(o.filter.ID=function(e){var t=e.replace(te,ne);return function(e){var n=void 0!==e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},o.find.ID=function(e,t){if(void 0!==t.getElementById&&m){var n,o,r,i=t.getElementById(e);if(i){if((n=i.getAttributeNode("id"))&&n.value===e)return[i];for(r=t.getElementsByName(e),o=0;i=r[o++];)if((n=i.getAttributeNode("id"))&&n.value===e)return[i]}return[]}}),o.find.TAG=n.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,o=[],r=0,i=t.getElementsByTagName(e);if("*"===e){for(;n=i[r++];)1===n.nodeType&&o.push(n);return o}return i},o.find.CLASS=n.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&m)return t.getElementsByClassName(e)},v=[],g=[],(n.qsa=J.test(h.querySelectorAll))&&(ce(function(e){f.appendChild(e).innerHTML="<a id='"+w+"'></a><select id='"+w+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&g.push("[*^$]="+I+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||g.push("\\["+I+"*(?:value|"+A+")"),e.querySelectorAll("[id~="+w+"-]").length||g.push("~="),e.querySelectorAll(":checked").length||g.push(":checked"),e.querySelectorAll("a#"+w+"+*").length||g.push(".#.+[+~]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=h.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&g.push("name"+I+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&g.push(":enabled",":disabled"),f.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")})),(n.matchesSelector=J.test(y=f.matches||f.webkitMatchesSelector||f.mozMatchesSelector||f.oMatchesSelector||f.msMatchesSelector))&&ce(function(e){n.disconnectedMatch=y.call(e,"*"),y.call(e,"[s!='']:x"),v.push("!=",j)}),g=g.length&&new RegExp(g.join("|")),v=v.length&&new RegExp(v.join("|")),t=J.test(f.compareDocumentPosition),b=t||J.test(f.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,o=t&&t.parentNode;return e===o||!(!o||1!==o.nodeType||!(n.contains?n.contains(o):e.compareDocumentPosition&&16&e.compareDocumentPosition(o)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},M=t?function(e,t){if(e===t)return d=!0,0;var o=!e.compareDocumentPosition-!t.compareDocumentPosition;return o||(1&(o=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===o?e===h||e.ownerDocument===E&&b(E,e)?-1:t===h||t.ownerDocument===E&&b(E,t)?1:c?F(c,e)-F(c,t):0:4&o?-1:1)}:function(e,t){if(e===t)return d=!0,0;var n,o=0,r=e.parentNode,i=t.parentNode,a=[e],s=[t];if(!r||!i)return e===h?-1:t===h?1:r?-1:i?1:c?F(c,e)-F(c,t):0;if(r===i)return pe(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)s.unshift(n);for(;a[o]===s[o];)o++;return o?pe(a[o],s[o]):a[o]===E?-1:s[o]===E?1:0},h):h},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==h&&p(e),n.matchesSelector&&m&&!D[t+" "]&&(!v||!v.test(t))&&(!g||!g.test(t)))try{var o=y.call(e,t);if(o||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return o}catch(e){D(t,!0)}return se(t,h,null,[e]).length>0},se.contains=function(e,t){return(e.ownerDocument||e)!==h&&p(e),b(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!==h&&p(e);var r=o.attrHandle[t.toLowerCase()],i=r&&R.call(o.attrHandle,t.toLowerCase())?r(e,t,!m):void 0;return void 0!==i?i:n.attributes||!m?e.getAttribute(t):(i=e.getAttributeNode(t))&&i.specified?i.value:null},se.escape=function(e){return(e+"").replace(oe,re)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,o=[],r=0,i=0;if(d=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(M),d){for(;t=e[i++];)t===e[i]&&(r=o.push(i));for(;r--;)e.splice(o[r],1)}return c=null,e},r=se.getText=function(e){var t,n="",o=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=r(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[o++];)n+=r(t);return n},(o=se.selectors={cacheLength:50,createPseudo:ue,match:$,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return $.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&G.test(n)&&(t=a(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=T[e+" "];return t||(t=new RegExp("(^|"+I+")"+e+"("+I+"|$)"))&&T(e,function(e){return t.test("string"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(o){var r=se.attr(o,e);return null==r?"!="===t:!t||(r+="","="===t?r===n:"!="===t?r!==n:"^="===t?n&&0===r.indexOf(n):"*="===t?n&&r.indexOf(n)>-1:"$="===t?n&&r.slice(-n.length)===n:"~="===t?(" "+r.replace(B," ")+" ").indexOf(n)>-1:"|="===t&&(r===n||r.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,o,r){var i="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===o&&0===r?function(e){return!!e.parentNode}:function(t,n,l){var u,c,d,p,h,f,m=i!==a?"nextSibling":"previousSibling",g=t.parentNode,v=s&&t.nodeName.toLowerCase(),y=!l&&!s,b=!1;if(g){if(i){for(;m;){for(p=t;p=p[m];)if(s?p.nodeName.toLowerCase()===v:1===p.nodeType)return!1;f=m="only"===e&&!f&&"nextSibling"}return!0}if(f=[a?g.firstChild:g.lastChild],a&&y){for(b=(h=(u=(c=(d=(p=g)[w]||(p[w]={}))[p.uniqueID]||(d[p.uniqueID]={}))[e]||[])[0]===C&&u[1])&&u[2],p=h&&g.childNodes[h];p=++h&&p&&p[m]||(b=h=0)||f.pop();)if(1===p.nodeType&&++b&&p===t){c[e]=[C,h,b];break}}else if(y&&(b=h=(u=(c=(d=(p=t)[w]||(p[w]={}))[p.uniqueID]||(d[p.uniqueID]={}))[e]||[])[0]===C&&u[1]),!1===b)for(;(p=++h&&p&&p[m]||(b=h=0)||f.pop())&&((s?p.nodeName.toLowerCase()!==v:1!==p.nodeType)||!++b||(y&&((c=(d=p[w]||(p[w]={}))[p.uniqueID]||(d[p.uniqueID]={}))[e]=[C,b]),p!==t)););return(b-=r)===o||b%o==0&&b/o>=0}}},PSEUDO:function(e,t){var n,r=o.pseudos[e]||o.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return r[w]?r(t):r.length>1?(n=[e,e,"",t],o.setFilters.hasOwnProperty(e.toLowerCase())?ue(function(e,n){for(var o,i=r(e,t),a=i.length;a--;)e[o=F(e,i[a])]=!(n[o]=i[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:ue(function(e){var t=[],n=[],o=s(e.replace(U,"$1"));return o[w]?ue(function(e,t,n,r){for(var i,a=o(e,null,r,[]),s=e.length;s--;)(i=a[s])&&(e[s]=!(t[s]=i))}):function(e,r,i){return t[0]=e,o(t,null,i,n),t[0]=null,!n.pop()}}),has:ue(function(e){return function(t){return se(e,t).length>0}}),contains:ue(function(e){return e=e.replace(te,ne),function(t){return(t.textContent||r(t)).indexOf(e)>-1}}),lang:ue(function(e){return Y.test(e||"")||se.error("unsupported lang: "+e),e=e.replace(te,ne).toLowerCase(),function(t){var n;do{if(n=m?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===f},focus:function(e){return e===h.activeElement&&(!h.hasFocus||h.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:me(!1),disabled:me(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!o.pseudos.empty(e)},header:function(e){return Q.test(e.nodeName)},input:function(e){return K.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ge(function(){return[0]}),last:ge(function(e,t){return[t-1]}),eq:ge(function(e,t,n){return[n<0?n+t:n]}),even:ge(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ge(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ge(function(e,t,n){for(var o=n<0?n+t:n>t?t:n;--o>=0;)e.push(o);return e}),gt:ge(function(e,t,n){for(var o=n<0?n+t:n;++o<t;)e.push(o);return e})}}).pseudos.nth=o.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})o.pseudos[t]=he(t);for(t in{submit:!0,reset:!0})o.pseudos[t]=fe(t);function ye(){}function be(e){for(var t=0,n=e.length,o="";t<n;t++)o+=e[t].value;return o}function we(e,t,n){var o=t.dir,r=t.next,i=r||o,a=n&&"parentNode"===i,s=x++;return t.first?function(t,n,r){for(;t=t[o];)if(1===t.nodeType||a)return e(t,n,r);return!1}:function(t,n,l){var u,c,d,p=[C,s];if(l){for(;t=t[o];)if((1===t.nodeType||a)&&e(t,n,l))return!0}else for(;t=t[o];)if(1===t.nodeType||a)if(c=(d=t[w]||(t[w]={}))[t.uniqueID]||(d[t.uniqueID]={}),r&&r===t.nodeName.toLowerCase())t=t[o]||t;else{if((u=c[i])&&u[0]===C&&u[1]===s)return p[2]=u[2];if(c[i]=p,p[2]=e(t,n,l))return!0}return!1}}function Ee(e){return e.length>1?function(t,n,o){for(var r=e.length;r--;)if(!e[r](t,n,o))return!1;return!0}:e[0]}function Ce(e,t,n,o,r){for(var i,a=[],s=0,l=e.length,u=null!=t;s<l;s++)(i=e[s])&&(n&&!n(i,o,r)||(a.push(i),u&&t.push(s)));return a}function xe(e,t,n,o,r,i){return o&&!o[w]&&(o=xe(o)),r&&!r[w]&&(r=xe(r,i)),ue(function(i,a,s,l){var u,c,d,p=[],h=[],f=a.length,m=i||function(e,t,n){for(var o=0,r=t.length;o<r;o++)se(e,t[o],n);return n}(t||"*",s.nodeType?[s]:s,[]),g=!e||!i&&t?m:Ce(m,p,e,s,l),v=n?r||(i?e:f||o)?[]:a:g;if(n&&n(g,v,s,l),o)for(u=Ce(v,h),o(u,[],s,l),c=u.length;c--;)(d=u[c])&&(v[h[c]]=!(g[h[c]]=d));if(i){if(r||e){if(r){for(u=[],c=v.length;c--;)(d=v[c])&&u.push(g[c]=d);r(null,v=[],u,l)}for(c=v.length;c--;)(d=v[c])&&(u=r?F(i,d):p[c])>-1&&(i[u]=!(a[u]=d))}}else v=Ce(v===a?v.splice(f,v.length):v),r?r(null,a,v,l):O.apply(a,v)})}function Te(e){for(var t,n,r,i=e.length,a=o.relative[e[0].type],s=a||o.relative[" "],l=a?1:0,c=we(function(e){return e===t},s,!0),d=we(function(e){return F(t,e)>-1},s,!0),p=[function(e,n,o){var r=!a&&(o||n!==u)||((t=n).nodeType?c(e,n,o):d(e,n,o));return t=null,r}];l<i;l++)if(n=o.relative[e[l].type])p=[we(Ee(p),n)];else{if((n=o.filter[e[l].type].apply(null,e[l].matches))[w]){for(r=++l;r<i&&!o.relative[e[r].type];r++);return xe(l>1&&Ee(p),l>1&&be(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(U,"$1"),n,l<r&&Te(e.slice(l,r)),r<i&&Te(e=e.slice(r)),r<i&&be(e))}p.push(n)}return Ee(p)}return ye.prototype=o.filters=o.pseudos,o.setFilters=new ye,a=se.tokenize=function(e,t){var n,r,i,a,s,l,u,c=k[e+" "];if(c)return t?0:c.slice(0);for(s=e,l=[],u=o.preFilter;s;){for(a in n&&!(r=W.exec(s))||(r&&(s=s.slice(r[0].length)||s),l.push(i=[])),n=!1,(r=q.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(U," ")}),s=s.slice(n.length)),o.filter)!(r=$[a].exec(s))||u[a]&&!(r=u[a](r))||(n=r.shift(),i.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?se.error(e):k(e,l).slice(0)},s=se.compile=function(e,t){var n,r=[],i=[],s=S[e+" "];if(!s){for(t||(t=a(e)),n=t.length;n--;)(s=Te(t[n]))[w]?r.push(s):i.push(s);(s=S(e,function(e,t){var n=t.length>0,r=e.length>0,i=function(i,a,s,l,c){var d,f,g,v=0,y="0",b=i&&[],w=[],E=u,x=i||r&&o.find.TAG("*",c),T=C+=null==E?1:Math.random()||.1,k=x.length;for(c&&(u=a===h||a||c);y!==k&&null!=(d=x[y]);y++){if(r&&d){for(f=0,a||d.ownerDocument===h||(p(d),s=!m);g=e[f++];)if(g(d,a||h,s)){l.push(d);break}c&&(C=T)}n&&((d=!g&&d)&&v--,i&&b.push(d))}if(v+=y,n&&y!==v){for(f=0;g=t[f++];)g(b,w,a,s);if(i){if(v>0)for(;y--;)b[y]||w[y]||(w[y]=_.call(l));w=Ce(w)}O.apply(l,w),c&&!i&&w.length>0&&v+t.length>1&&se.uniqueSort(l)}return c&&(C=T,u=E),b};return n?ue(i):i}(i,r))).selector=e}return s},l=se.select=function(e,t,n,r){var i,l,u,c,d,p="function"==typeof e&&e,h=!r&&a(e=p.selector||e);if(n=n||[],1===h.length){if((l=h[0]=h[0].slice(0)).length>2&&"ID"===(u=l[0]).type&&9===t.nodeType&&m&&o.relative[l[1].type]){if(!(t=(o.find.ID(u.matches[0].replace(te,ne),t)||[])[0]))return n;p&&(t=t.parentNode),e=e.slice(l.shift().value.length)}for(i=$.needsContext.test(e)?0:l.length;i--&&(u=l[i],!o.relative[c=u.type]);)if((d=o.find[c])&&(r=d(u.matches[0].replace(te,ne),ee.test(l[0].type)&&ve(t.parentNode)||t))){if(l.splice(i,1),!(e=r.length&&be(l)))return O.apply(n,r),n;break}}return(p||s(e,h))(r,t,!m,n,!t||ee.test(e)&&ve(t.parentNode)||t),n},n.sortStable=w.split("").sort(M).join("")===w,n.detectDuplicates=!!d,p(),n.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(h.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||de("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||de("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||de(A,function(e,t,n){var o;if(!n)return!0===e[t]?t.toLowerCase():(o=e.getAttributeNode(t))&&o.specified?o.value:null}),se}(n);x.find=S,x.expr=S.selectors,x.expr[":"]=x.expr.pseudos,x.uniqueSort=x.unique=S.uniqueSort,x.text=S.getText,x.isXMLDoc=S.isXML,x.contains=S.contains,x.escapeSelector=S.escape;var D=function(e,t,n){for(var o=[],r=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(r&&x(e).is(n))break;o.push(e)}return o},M=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},R=x.expr.match.needsContext;function P(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var _=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function L(e,t,n){return y(t)?x.grep(e,function(e,o){return!!t.call(e,o,e)!==n}):t.nodeType?x.grep(e,function(e){return e===t!==n}):"string"!=typeof t?x.grep(e,function(e){return d.call(t,e)>-1!==n}):x.filter(t,e,n)}x.filter=function(e,t,n){var o=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===o.nodeType?x.find.matchesSelector(o,e)?[o]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},x.fn.extend({find:function(e){var t,n,o=this.length,r=this;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;t<o;t++)if(x.contains(r[t],this))return!0}));for(n=this.pushStack([]),t=0;t<o;t++)x.find(e,r[t],n);return o>1?x.uniqueSort(n):n},filter:function(e){return this.pushStack(L(this,e||[],!1))},not:function(e){return this.pushStack(L(this,e||[],!0))},is:function(e){return!!L(this,"string"==typeof e&&R.test(e)?x(e):e||[],!1).length}});var O,N=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(x.fn.init=function(e,t,n){var o,r;if(!e)return this;if(n=n||O,"string"==typeof e){if(!(o="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:N.exec(e))||!o[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(o[1]){if(t=t instanceof x?t[0]:t,x.merge(this,x.parseHTML(o[1],t&&t.nodeType?t.ownerDocument||t:a,!0)),_.test(o[1])&&x.isPlainObject(t))for(o in t)y(this[o])?this[o](t[o]):this.attr(o,t[o]);return this}return(r=a.getElementById(o[2]))&&(this[0]=r,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):y(e)?void 0!==n.ready?n.ready(e):e(x):x.makeArray(e,this)}).prototype=x.fn,O=x(a);var F=/^(?:parents|prev(?:Until|All))/,A={children:!0,contents:!0,next:!0,prev:!0};function I(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}x.fn.extend({has:function(e){var t=x(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(x.contains(this,t[e]))return!0})},closest:function(e,t){var n,o=0,r=this.length,i=[],a="string"!=typeof e&&x(e);if(!R.test(e))for(;o<r;o++)for(n=this[o];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?a.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){i.push(n);break}return this.pushStack(i.length>1?x.uniqueSort(i):i)},index:function(e){return e?"string"==typeof e?d.call(x(e),this[0]):d.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(x.uniqueSort(x.merge(this.get(),x(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return D(e,"parentNode")},parentsUntil:function(e,t,n){return D(e,"parentNode",n)},next:function(e){return I(e,"nextSibling")},prev:function(e){return I(e,"previousSibling")},nextAll:function(e){return D(e,"nextSibling")},prevAll:function(e){return D(e,"previousSibling")},nextUntil:function(e,t,n){return D(e,"nextSibling",n)},prevUntil:function(e,t,n){return D(e,"previousSibling",n)},siblings:function(e){return M((e.parentNode||{}).firstChild,e)},children:function(e){return M(e.firstChild)},contents:function(e){return void 0!==e.contentDocument?e.contentDocument:(P(e,"template")&&(e=e.content||e),x.merge([],e.childNodes))}},function(e,t){x.fn[e]=function(n,o){var r=x.map(this,t,n);return"Until"!==e.slice(-5)&&(o=n),o&&"string"==typeof o&&(r=x.filter(o,r)),this.length>1&&(A[e]||x.uniqueSort(r),F.test(e)&&r.reverse()),this.pushStack(r)}});var H=/[^\x20\t\r\n\f]+/g;function z(e){return e}function j(e){throw e}function B(e,t,n,o){var r;try{e&&y(r=e.promise)?r.call(e).done(t).fail(n):e&&y(r=e.then)?r.call(e,t,n):t.apply(void 0,[e].slice(o))}catch(e){n.apply(void 0,[e])}}x.Callbacks=function(e){e="string"==typeof e?function(e){var t={};return x.each(e.match(H)||[],function(e,n){t[n]=!0}),t}(e):x.extend({},e);var t,n,o,r,i=[],a=[],s=-1,l=function(){for(r=r||e.once,o=t=!0;a.length;s=-1)for(n=a.shift();++s<i.length;)!1===i[s].apply(n[0],n[1])&&e.stopOnFalse&&(s=i.length,n=!1);e.memory||(n=!1),t=!1,r&&(i=n?[]:"")},u={add:function(){return i&&(n&&!t&&(s=i.length-1,a.push(n)),function t(n){x.each(n,function(n,o){y(o)?e.unique&&u.has(o)||i.push(o):o&&o.length&&"string"!==C(o)&&t(o)})}(arguments),n&&!t&&l()),this},remove:function(){return x.each(arguments,function(e,t){for(var n;(n=x.inArray(t,i,n))>-1;)i.splice(n,1),n<=s&&s--}),this},has:function(e){return e?x.inArray(e,i)>-1:i.length>0},empty:function(){return i&&(i=[]),this},disable:function(){return r=a=[],i=n="",this},disabled:function(){return!i},lock:function(){return r=a=[],n||t||(i=n=""),this},locked:function(){return!!r},fireWith:function(e,n){return r||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||l()),this},fire:function(){return u.fireWith(this,arguments),this},fired:function(){return!!o}};return u},x.extend({Deferred:function(e){var t=[["notify","progress",x.Callbacks("memory"),x.Callbacks("memory"),2],["resolve","done",x.Callbacks("once memory"),x.Callbacks("once memory"),0,"resolved"],["reject","fail",x.Callbacks("once memory"),x.Callbacks("once memory"),1,"rejected"]],o="pending",r={state:function(){return o},always:function(){return i.done(arguments).fail(arguments),this},catch:function(e){return r.then(null,e)},pipe:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var r=y(e[o[4]])&&e[o[4]];i[o[1]](function(){var e=r&&r.apply(this,arguments);e&&y(e.promise)?e.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[o[0]+"With"](this,r?[e]:arguments)})}),e=null}).promise()},then:function(e,o,r){var i=0;function a(e,t,o,r){return function(){var s=this,l=arguments,u=function(){var n,u;if(!(e<i)){if((n=o.apply(s,l))===t.promise())throw new TypeError("Thenable self-resolution");u=n&&("object"==typeof n||"function"==typeof n)&&n.then,y(u)?r?u.call(n,a(i,t,z,r),a(i,t,j,r)):(i++,u.call(n,a(i,t,z,r),a(i,t,j,r),a(i,t,z,t.notifyWith))):(o!==z&&(s=void 0,l=[n]),(r||t.resolveWith)(s,l))}},c=r?u:function(){try{u()}catch(n){x.Deferred.exceptionHook&&x.Deferred.exceptionHook(n,c.stackTrace),e+1>=i&&(o!==j&&(s=void 0,l=[n]),t.rejectWith(s,l))}};e?c():(x.Deferred.getStackHook&&(c.stackTrace=x.Deferred.getStackHook()),n.setTimeout(c))}}return x.Deferred(function(n){t[0][3].add(a(0,n,y(r)?r:z,n.notifyWith)),t[1][3].add(a(0,n,y(e)?e:z)),t[2][3].add(a(0,n,y(o)?o:j))}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return x.each(t,function(e,n){var a=n[2],s=n[5];r[n[1]]=a.add,s&&a.add(function(){o=s},t[3-e][2].disable,t[3-e][3].disable,t[0][2].lock,t[0][3].lock),a.add(n[3].fire),i[n[0]]=function(){return i[n[0]+"With"](this===i?void 0:this,arguments),this},i[n[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=arguments.length,n=t,o=Array(n),r=l.call(arguments),i=x.Deferred(),a=function(e){return function(n){o[e]=this,r[e]=arguments.length>1?l.call(arguments):n,--t||i.resolveWith(o,r)}};if(t<=1&&(B(e,i.done(a(n)).resolve,i.reject,!t),"pending"===i.state()||y(r[n]&&r[n].then)))return i.then();for(;n--;)B(r[n],a(n),i.reject);return i.promise()}});var U=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;x.Deferred.exceptionHook=function(e,t){n.console&&n.console.warn&&e&&U.test(e.name)&&n.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},x.readyException=function(e){n.setTimeout(function(){throw e})};var W=x.Deferred();function q(){a.removeEventListener("DOMContentLoaded",q),n.removeEventListener("load",q),x.ready()}x.fn.ready=function(e){return W.then(e).catch(function(e){x.readyException(e)}),this},x.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--x.readyWait:x.isReady)||(x.isReady=!0,!0!==e&&--x.readyWait>0||W.resolveWith(a,[x]))}}),x.ready.then=W.then,"complete"===a.readyState||"loading"!==a.readyState&&!a.documentElement.doScroll?n.setTimeout(x.ready):(a.addEventListener("DOMContentLoaded",q),n.addEventListener("load",q));var V=function(e,t,n,o,r,i,a){var s=0,l=e.length,u=null==n;if("object"===C(n))for(s in r=!0,n)V(e,t,s,n[s],!0,i,a);else if(void 0!==o&&(r=!0,y(o)||(a=!0),u&&(a?(t.call(e,o),t=null):(u=t,t=function(e,t,n){return u.call(x(e),n)})),t))for(;s<l;s++)t(e[s],n,a?o:o.call(e[s],s,t(e[s],n)));return r?e:u?t.call(e):l?t(e[0],n):i},G=/^-ms-/,Y=/-([a-z])/g;function $(e,t){return t.toUpperCase()}function X(e){return e.replace(G,"ms-").replace(Y,$)}var K=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Q(){this.expando=x.expando+Q.uid++}Q.uid=1,Q.prototype={cache:function(e){var t=e[this.expando];return t||(t={},K(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var o,r=this.cache(e);if("string"==typeof t)r[X(t)]=n;else for(o in t)r[X(o)]=t[o];return r},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][X(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,o=e[this.expando];if(void 0!==o){if(void 0!==t){n=(t=Array.isArray(t)?t.map(X):(t=X(t))in o?[t]:t.match(H)||[]).length;for(;n--;)delete o[t[n]]}(void 0===t||x.isEmptyObject(o))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!x.isEmptyObject(t)}};var J=new Q,Z=new Q,ee=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,te=/[A-Z]/g;function ne(e,t,n){var o;if(void 0===n&&1===e.nodeType)if(o="data-"+t.replace(te,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(o))){try{n=function(e){return"true"===e||"false"!==e&&("null"===e?null:e===+e+""?+e:ee.test(e)?JSON.parse(e):e)}(n)}catch(e){}Z.set(e,t,n)}else n=void 0;return n}x.extend({hasData:function(e){return Z.hasData(e)||J.hasData(e)},data:function(e,t,n){return Z.access(e,t,n)},removeData:function(e,t){Z.remove(e,t)},_data:function(e,t,n){return J.access(e,t,n)},_removeData:function(e,t){J.remove(e,t)}}),x.fn.extend({data:function(e,t){var n,o,r,i=this[0],a=i&&i.attributes;if(void 0===e){if(this.length&&(r=Z.get(i),1===i.nodeType&&!J.get(i,"hasDataAttrs"))){for(n=a.length;n--;)a[n]&&0===(o=a[n].name).indexOf("data-")&&(o=X(o.slice(5)),ne(i,o,r[o]));J.set(i,"hasDataAttrs",!0)}return r}return"object"==typeof e?this.each(function(){Z.set(this,e)}):V(this,function(t){var n;if(i&&void 0===t)return void 0!==(n=Z.get(i,e))?n:void 0!==(n=ne(i,e))?n:void 0;this.each(function(){Z.set(this,e,t)})},null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){Z.remove(this,e)})}}),x.extend({queue:function(e,t,n){var o;if(e)return t=(t||"fx")+"queue",o=J.get(e,t),n&&(!o||Array.isArray(n)?o=J.access(e,t,x.makeArray(n)):o.push(n)),o||[]},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),o=n.length,r=n.shift(),i=x._queueHooks(e,t);"inprogress"===r&&(r=n.shift(),o--),r&&("fx"===t&&n.unshift("inprogress"),delete i.stop,r.call(e,function(){x.dequeue(e,t)},i)),!o&&i&&i.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return J.get(e,n)||J.access(e,n,{empty:x.Callbacks("once memory").add(function(){J.remove(e,[t+"queue",n])})})}}),x.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length<n?x.queue(this[0],e):void 0===t?this:this.each(function(){var n=x.queue(this,e,t);x._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,o=1,r=x.Deferred(),i=this,a=this.length,s=function(){--o||r.resolveWith(i,[i])};for("string"!=typeof e&&(t=e,e=void 0),e=e||"fx";a--;)(n=J.get(i[a],e+"queueHooks"))&&n.empty&&(o++,n.empty.add(s));return s(),r.promise(t)}});var oe=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,re=new RegExp("^(?:([+-])=|)("+oe+")([a-z%]*)$","i"),ie=["Top","Right","Bottom","Left"],ae=a.documentElement,se=function(e){return x.contains(e.ownerDocument,e)},le={composed:!0};ae.getRootNode&&(se=function(e){return x.contains(e.ownerDocument,e)||e.getRootNode(le)===e.ownerDocument});var ue=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&se(e)&&"none"===x.css(e,"display")},ce=function(e,t,n,o){var r,i,a={};for(i in t)a[i]=e.style[i],e.style[i]=t[i];for(i in r=n.apply(e,o||[]),t)e.style[i]=a[i];return r};function de(e,t,n,o){var r,i,a=20,s=o?function(){return o.cur()}:function(){return x.css(e,t,"")},l=s(),u=n&&n[3]||(x.cssNumber[t]?"":"px"),c=e.nodeType&&(x.cssNumber[t]||"px"!==u&&+l)&&re.exec(x.css(e,t));if(c&&c[3]!==u){for(l/=2,u=u||c[3],c=+l||1;a--;)x.style(e,t,c+u),(1-i)*(1-(i=s()/l||.5))<=0&&(a=0),c/=i;c*=2,x.style(e,t,c+u),n=n||[]}return n&&(c=+c||+l||0,r=n[1]?c+(n[1]+1)*n[2]:+n[2],o&&(o.unit=u,o.start=c,o.end=r)),r}var pe={};function he(e){var t,n=e.ownerDocument,o=e.nodeName,r=pe[o];return r||(t=n.body.appendChild(n.createElement(o)),r=x.css(t,"display"),t.parentNode.removeChild(t),"none"===r&&(r="block"),pe[o]=r,r)}function fe(e,t){for(var n,o,r=[],i=0,a=e.length;i<a;i++)(o=e[i]).style&&(n=o.style.display,t?("none"===n&&(r[i]=J.get(o,"display")||null,r[i]||(o.style.display="")),""===o.style.display&&ue(o)&&(r[i]=he(o))):"none"!==n&&(r[i]="none",J.set(o,"display",n)));for(i=0;i<a;i++)null!=r[i]&&(e[i].style.display=r[i]);return e}x.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ue(this)?x(this).show():x(this).hide()})}});var me=/^(?:checkbox|radio)$/i,ge=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,ve=/^$|^module$|\/(?:java|ecma)script/i,ye={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function be(e,t){var n;return n=void 0!==e.getElementsByTagName?e.getElementsByTagName(t||"*"):void 0!==e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&P(e,t)?x.merge([e],n):n}function we(e,t){for(var n=0,o=e.length;n<o;n++)J.set(e[n],"globalEval",!t||J.get(t[n],"globalEval"))}ye.optgroup=ye.option,ye.tbody=ye.tfoot=ye.colgroup=ye.caption=ye.thead,ye.th=ye.td;var Ee,Ce,xe=/<|&#?\w+;/;function Te(e,t,n,o,r){for(var i,a,s,l,u,c,d=t.createDocumentFragment(),p=[],h=0,f=e.length;h<f;h++)if((i=e[h])||0===i)if("object"===C(i))x.merge(p,i.nodeType?[i]:i);else if(xe.test(i)){for(a=a||d.appendChild(t.createElement("div")),s=(ge.exec(i)||["",""])[1].toLowerCase(),l=ye[s]||ye._default,a.innerHTML=l[1]+x.htmlPrefilter(i)+l[2],c=l[0];c--;)a=a.lastChild;x.merge(p,a.childNodes),(a=d.firstChild).textContent=""}else p.push(t.createTextNode(i));for(d.textContent="",h=0;i=p[h++];)if(o&&x.inArray(i,o)>-1)r&&r.push(i);else if(u=se(i),a=be(d.appendChild(i),"script"),u&&we(a),n)for(c=0;i=a[c++];)ve.test(i.type||"")&&n.push(i);return d}Ee=a.createDocumentFragment().appendChild(a.createElement("div")),(Ce=a.createElement("input")).setAttribute("type","radio"),Ce.setAttribute("checked","checked"),Ce.setAttribute("name","t"),Ee.appendChild(Ce),v.checkClone=Ee.cloneNode(!0).cloneNode(!0).lastChild.checked,Ee.innerHTML="<textarea>x</textarea>",v.noCloneChecked=!!Ee.cloneNode(!0).lastChild.defaultValue;var ke=/^key/,Se=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,De=/^([^.]*)(?:\.(.+)|)/;function Me(){return!0}function Re(){return!1}function Pe(e,t){return e===function(){try{return a.activeElement}catch(e){}}()==("focus"===t)}function _e(e,t,n,o,r,i){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(o=o||n,n=void 0),t)_e(e,s,n,o,t[s],i);return e}if(null==o&&null==r?(r=n,o=n=void 0):null==r&&("string"==typeof n?(r=o,o=void 0):(r=o,o=n,n=void 0)),!1===r)r=Re;else if(!r)return e;return 1===i&&(a=r,(r=function(e){return x().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=x.guid++)),e.each(function(){x.event.add(this,t,r,o,n)})}function Le(e,t,n){n?(J.set(e,t,!1),x.event.add(e,t,{namespace:!1,handler:function(e){var o,r,i=J.get(this,t);if(1&e.isTrigger&&this[t]){if(i.length)(x.event.special[t]||{}).delegateType&&e.stopPropagation();else if(i=l.call(arguments),J.set(this,t,i),o=n(this,t),this[t](),i!==(r=J.get(this,t))||o?J.set(this,t,!1):r={},i!==r)return e.stopImmediatePropagation(),e.preventDefault(),r.value}else i.length&&(J.set(this,t,{value:x.event.trigger(x.extend(i[0],x.Event.prototype),i.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===J.get(e,t)&&x.event.add(e,t,Me)}x.event={global:{},add:function(e,t,n,o,r){var i,a,s,l,u,c,d,p,h,f,m,g=J.get(e);if(g)for(n.handler&&(n=(i=n).handler,r=i.selector),r&&x.find.matchesSelector(ae,r),n.guid||(n.guid=x.guid++),(l=g.events)||(l=g.events={}),(a=g.handle)||(a=g.handle=function(t){return void 0!==x&&x.event.triggered!==t.type?x.event.dispatch.apply(e,arguments):void 0}),u=(t=(t||"").match(H)||[""]).length;u--;)h=m=(s=De.exec(t[u])||[])[1],f=(s[2]||"").split(".").sort(),h&&(d=x.event.special[h]||{},h=(r?d.delegateType:d.bindType)||h,d=x.event.special[h]||{},c=x.extend({type:h,origType:m,data:o,handler:n,guid:n.guid,selector:r,needsContext:r&&x.expr.match.needsContext.test(r),namespace:f.join(".")},i),(p=l[h])||((p=l[h]=[]).delegateCount=0,d.setup&&!1!==d.setup.call(e,o,f,a)||e.addEventListener&&e.addEventListener(h,a)),d.add&&(d.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),r?p.splice(p.delegateCount++,0,c):p.push(c),x.event.global[h]=!0)},remove:function(e,t,n,o,r){var i,a,s,l,u,c,d,p,h,f,m,g=J.hasData(e)&&J.get(e);if(g&&(l=g.events)){for(u=(t=(t||"").match(H)||[""]).length;u--;)if(h=m=(s=De.exec(t[u])||[])[1],f=(s[2]||"").split(".").sort(),h){for(d=x.event.special[h]||{},p=l[h=(o?d.delegateType:d.bindType)||h]||[],s=s[2]&&new RegExp("(^|\\.)"+f.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=i=p.length;i--;)c=p[i],!r&&m!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||o&&o!==c.selector&&("**"!==o||!c.selector)||(p.splice(i,1),c.selector&&p.delegateCount--,d.remove&&d.remove.call(e,c));a&&!p.length&&(d.teardown&&!1!==d.teardown.call(e,f,g.handle)||x.removeEvent(e,h,g.handle),delete l[h])}else for(h in l)x.event.remove(e,h+t[u],n,o,!0);x.isEmptyObject(l)&&J.remove(e,"handle events")}},dispatch:function(e){var t,n,o,r,i,a,s=x.event.fix(e),l=new Array(arguments.length),u=(J.get(this,"events")||{})[s.type]||[],c=x.event.special[s.type]||{};for(l[0]=s,t=1;t<arguments.length;t++)l[t]=arguments[t];if(s.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,s)){for(a=x.event.handlers.call(this,s,u),t=0;(r=a[t++])&&!s.isPropagationStopped();)for(s.currentTarget=r.elem,n=0;(i=r.handlers[n++])&&!s.isImmediatePropagationStopped();)s.rnamespace&&!1!==i.namespace&&!s.rnamespace.test(i.namespace)||(s.handleObj=i,s.data=i.data,void 0!==(o=((x.event.special[i.origType]||{}).handle||i.handler).apply(r.elem,l))&&!1===(s.result=o)&&(s.preventDefault(),s.stopPropagation()));return c.postDispatch&&c.postDispatch.call(this,s),s.result}},handlers:function(e,t){var n,o,r,i,a,s=[],l=t.delegateCount,u=e.target;if(l&&u.nodeType&&!("click"===e.type&&e.button>=1))for(;u!==this;u=u.parentNode||this)if(1===u.nodeType&&("click"!==e.type||!0!==u.disabled)){for(i=[],a={},n=0;n<l;n++)void 0===a[r=(o=t[n]).selector+" "]&&(a[r]=o.needsContext?x(r,this).index(u)>-1:x.find(r,this,null,[u]).length),a[r]&&i.push(o);i.length&&s.push({elem:u,handlers:i})}return u=this,l<t.length&&s.push({elem:u,handlers:t.slice(l)}),s},addProp:function(e,t){Object.defineProperty(x.Event.prototype,e,{enumerable:!0,configurable:!0,get:y(t)?function(){if(this.originalEvent)return t(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[e]},set:function(t){Object.defineProperty(this,e,{enumerable:!0,configurable:!0,writable:!0,value:t})}})},fix:function(e){return e[x.expando]?e:new x.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return me.test(t.type)&&t.click&&P(t,"input")&&Le(t,"click",Me),!1},trigger:function(e){var t=this||e;return me.test(t.type)&&t.click&&P(t,"input")&&Le(t,"click"),!0},_default:function(e){var t=e.target;return me.test(t.type)&&t.click&&P(t,"input")&&J.get(t,"click")||P(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},x.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},x.Event=function(e,t){if(!(this instanceof x.Event))return new x.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?Me:Re,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&x.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[x.expando]=!0},x.Event.prototype={constructor:x.Event,isDefaultPrevented:Re,isPropagationStopped:Re,isImmediatePropagationStopped:Re,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=Me,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=Me,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=Me,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},x.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,char:!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&ke.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Se.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},x.event.addProp),x.each({focus:"focusin",blur:"focusout"},function(e,t){x.event.special[e]={setup:function(){return Le(this,e,Pe),!1},trigger:function(){return Le(this,e),!0},delegateType:t}}),x.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,o=this,r=e.relatedTarget,i=e.handleObj;return r&&(r===o||x.contains(o,r))||(e.type=i.origType,n=i.handler.apply(this,arguments),e.type=t),n}}}),x.fn.extend({on:function(e,t,n,o){return _e(this,e,t,n,o)},one:function(e,t,n,o){return _e(this,e,t,n,o,1)},off:function(e,t,n){var o,r;if(e&&e.preventDefault&&e.handleObj)return o=e.handleObj,x(e.delegateTarget).off(o.namespace?o.origType+"."+o.namespace:o.origType,o.selector,o.handler),this;if("object"==typeof e){for(r in e)this.off(r,t,e[r]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Re),this.each(function(){x.event.remove(this,e,n,t)})}});var Oe=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,Ne=/<script|<style|<link/i,Fe=/checked\s*(?:[^=]|=\s*.checked.)/i,Ae=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Ie(e,t){return P(e,"table")&&P(11!==t.nodeType?t:t.firstChild,"tr")&&x(e).children("tbody")[0]||e}function He(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function ze(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function je(e,t){var n,o,r,i,a,s,l,u;if(1===t.nodeType){if(J.hasData(e)&&(i=J.access(e),a=J.set(t,i),u=i.events))for(r in delete a.handle,a.events={},u)for(n=0,o=u[r].length;n<o;n++)x.event.add(t,r,u[r][n]);Z.hasData(e)&&(s=Z.access(e),l=x.extend({},s),Z.set(t,l))}}function Be(e,t){var n=t.nodeName.toLowerCase();"input"===n&&me.test(e.type)?t.checked=e.checked:"input"!==n&&"textarea"!==n||(t.defaultValue=e.defaultValue)}function Ue(e,t,n,o){t=u.apply([],t);var r,i,a,s,l,c,d=0,p=e.length,h=p-1,f=t[0],m=y(f);if(m||p>1&&"string"==typeof f&&!v.checkClone&&Fe.test(f))return e.each(function(r){var i=e.eq(r);m&&(t[0]=f.call(this,r,i.html())),Ue(i,t,n,o)});if(p&&(i=(r=Te(t,e[0].ownerDocument,!1,e,o)).firstChild,1===r.childNodes.length&&(r=i),i||o)){for(s=(a=x.map(be(r,"script"),He)).length;d<p;d++)l=r,d!==h&&(l=x.clone(l,!0,!0),s&&x.merge(a,be(l,"script"))),n.call(e[d],l,d);if(s)for(c=a[a.length-1].ownerDocument,x.map(a,ze),d=0;d<s;d++)l=a[d],ve.test(l.type||"")&&!J.access(l,"globalEval")&&x.contains(c,l)&&(l.src&&"module"!==(l.type||"").toLowerCase()?x._evalUrl&&!l.noModule&&x._evalUrl(l.src,{nonce:l.nonce||l.getAttribute("nonce")}):E(l.textContent.replace(Ae,""),l,c))}return e}function We(e,t,n){for(var o,r=t?x.filter(t,e):e,i=0;null!=(o=r[i]);i++)n||1!==o.nodeType||x.cleanData(be(o)),o.parentNode&&(n&&se(o)&&we(be(o,"script")),o.parentNode.removeChild(o));return e}x.extend({htmlPrefilter:function(e){return e.replace(Oe,"<$1></$2>")},clone:function(e,t,n){var o,r,i,a,s=e.cloneNode(!0),l=se(e);if(!(v.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(a=be(s),o=0,r=(i=be(e)).length;o<r;o++)Be(i[o],a[o]);if(t)if(n)for(i=i||be(e),a=a||be(s),o=0,r=i.length;o<r;o++)je(i[o],a[o]);else je(e,s);return(a=be(s,"script")).length>0&&we(a,!l&&be(e,"script")),s},cleanData:function(e){for(var t,n,o,r=x.event.special,i=0;void 0!==(n=e[i]);i++)if(K(n)){if(t=n[J.expando]){if(t.events)for(o in t.events)r[o]?x.event.remove(n,o):x.removeEvent(n,o,t.handle);n[J.expando]=void 0}n[Z.expando]&&(n[Z.expando]=void 0)}}}),x.fn.extend({detach:function(e){return We(this,e,!0)},remove:function(e){return We(this,e)},text:function(e){return V(this,function(e){return void 0===e?x.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Ue(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Ie(this,e).appendChild(e)})},prepend:function(){return Ue(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Ie(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Ue(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Ue(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(x.cleanData(be(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return V(this,function(e){var t=this[0]||{},n=0,o=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Ne.test(e)&&!ye[(ge.exec(e)||["",""])[1].toLowerCase()]){e=x.htmlPrefilter(e);try{for(;n<o;n++)1===(t=this[n]||{}).nodeType&&(x.cleanData(be(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=[];return Ue(this,arguments,function(t){var n=this.parentNode;x.inArray(this,e)<0&&(x.cleanData(be(this)),n&&n.replaceChild(t,this))},e)}}),x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){for(var n,o=[],r=x(e),i=r.length-1,a=0;a<=i;a++)n=a===i?this:this.clone(!0),x(r[a])[t](n),c.apply(o,n.get());return this.pushStack(o)}});var qe=new RegExp("^("+oe+")(?!px)[a-z%]+$","i"),Ve=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=n),t.getComputedStyle(e)},Ge=new RegExp(ie.join("|"),"i");function Ye(e,t,n){var o,r,i,a,s=e.style;return(n=n||Ve(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||se(e)||(a=x.style(e,t)),!v.pixelBoxStyles()&&qe.test(a)&&Ge.test(t)&&(o=s.width,r=s.minWidth,i=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=o,s.minWidth=r,s.maxWidth=i)),void 0!==a?a+"":a}function $e(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(c){u.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",c.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",ae.appendChild(u).appendChild(c);var e=n.getComputedStyle(c);o="1%"!==e.top,l=12===t(e.marginLeft),c.style.right="60%",s=36===t(e.right),r=36===t(e.width),c.style.position="absolute",i=12===t(c.offsetWidth/3),ae.removeChild(u),c=null}}function t(e){return Math.round(parseFloat(e))}var o,r,i,s,l,u=a.createElement("div"),c=a.createElement("div");c.style&&(c.style.backgroundClip="content-box",c.cloneNode(!0).style.backgroundClip="",v.clearCloneStyle="content-box"===c.style.backgroundClip,x.extend(v,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),s},pixelPosition:function(){return e(),o},reliableMarginLeft:function(){return e(),l},scrollboxSize:function(){return e(),i}}))}();var Xe=["Webkit","Moz","ms"],Ke=a.createElement("div").style,Qe={};function Je(e){var t=x.cssProps[e]||Qe[e];return t||(e in Ke?e:Qe[e]=function(e){for(var t=e[0].toUpperCase()+e.slice(1),n=Xe.length;n--;)if((e=Xe[n]+t)in Ke)return e}(e)||e)}var Ze=/^(none|table(?!-c[ea]).+)/,et=/^--/,tt={position:"absolute",visibility:"hidden",display:"block"},nt={letterSpacing:"0",fontWeight:"400"};function ot(e,t,n){var o=re.exec(t);return o?Math.max(0,o[2]-(n||0))+(o[3]||"px"):t}function rt(e,t,n,o,r,i){var a="width"===t?1:0,s=0,l=0;if(n===(o?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(l+=x.css(e,n+ie[a],!0,r)),o?("content"===n&&(l-=x.css(e,"padding"+ie[a],!0,r)),"margin"!==n&&(l-=x.css(e,"border"+ie[a]+"Width",!0,r))):(l+=x.css(e,"padding"+ie[a],!0,r),"padding"!==n?l+=x.css(e,"border"+ie[a]+"Width",!0,r):s+=x.css(e,"border"+ie[a]+"Width",!0,r));return!o&&i>=0&&(l+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-i-l-s-.5))||0),l}function it(e,t,n){var o=Ve(e),r=(!v.boxSizingReliable()||n)&&"border-box"===x.css(e,"boxSizing",!1,o),i=r,a=Ye(e,t,o),s="offset"+t[0].toUpperCase()+t.slice(1);if(qe.test(a)){if(!n)return a;a="auto"}return(!v.boxSizingReliable()&&r||"auto"===a||!parseFloat(a)&&"inline"===x.css(e,"display",!1,o))&&e.getClientRects().length&&(r="border-box"===x.css(e,"boxSizing",!1,o),(i=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+rt(e,t,n||(r?"border":"content"),i,o,a)+"px"}function at(e,t,n,o,r){return new at.prototype.init(e,t,n,o,r)}x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Ye(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,o){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var r,i,a,s=X(t),l=et.test(t),u=e.style;if(l||(t=Je(s)),a=x.cssHooks[t]||x.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(r=a.get(e,!1,o))?r:u[t];"string"===(i=typeof n)&&(r=re.exec(n))&&r[1]&&(n=de(e,t,r),i="number"),null!=n&&n==n&&("number"!==i||l||(n+=r&&r[3]||(x.cssNumber[s]?"":"px")),v.clearCloneStyle||""!==n||0!==t.indexOf("background")||(u[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,o))||(l?u.setProperty(t,n):u[t]=n))}},css:function(e,t,n,o){var r,i,a,s=X(t);return et.test(t)||(t=Je(s)),(a=x.cssHooks[t]||x.cssHooks[s])&&"get"in a&&(r=a.get(e,!0,n)),void 0===r&&(r=Ye(e,t,o)),"normal"===r&&t in nt&&(r=nt[t]),""===n||n?(i=parseFloat(r),!0===n||isFinite(i)?i||0:r):r}}),x.each(["height","width"],function(e,t){x.cssHooks[t]={get:function(e,n,o){if(n)return!Ze.test(x.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?it(e,t,o):ce(e,tt,function(){return it(e,t,o)})},set:function(e,n,o){var r,i=Ve(e),a=!v.scrollboxSize()&&"absolute"===i.position,s=(a||o)&&"border-box"===x.css(e,"boxSizing",!1,i),l=o?rt(e,t,o,s,i):0;return s&&a&&(l-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(i[t])-rt(e,t,"border",!1,i)-.5)),l&&(r=re.exec(n))&&"px"!==(r[3]||"px")&&(e.style[t]=n,n=x.css(e,t)),ot(0,n,l)}}}),x.cssHooks.marginLeft=$e(v.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Ye(e,"marginLeft"))||e.getBoundingClientRect().left-ce(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),x.each({margin:"",padding:"",border:"Width"},function(e,t){x.cssHooks[e+t]={expand:function(n){for(var o=0,r={},i="string"==typeof n?n.split(" "):[n];o<4;o++)r[e+ie[o]+t]=i[o]||i[o-2]||i[0];return r}},"margin"!==e&&(x.cssHooks[e+t].set=ot)}),x.fn.extend({css:function(e,t){return V(this,function(e,t,n){var o,r,i={},a=0;if(Array.isArray(t)){for(o=Ve(e),r=t.length;a<r;a++)i[t[a]]=x.css(e,t[a],!1,o);return i}return void 0!==n?x.style(e,t,n):x.css(e,t)},e,t,arguments.length>1)}}),x.Tween=at,at.prototype={constructor:at,init:function(e,t,n,o,r,i){this.elem=e,this.prop=n,this.easing=r||x.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=o,this.unit=i||(x.cssNumber[n]?"":"px")},cur:function(){var e=at.propHooks[this.prop];return e&&e.get?e.get(this):at.propHooks._default.get(this)},run:function(e){var t,n=at.propHooks[this.prop];return this.options.duration?this.pos=t=x.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):at.propHooks._default.set(this),this}},at.prototype.init.prototype=at.prototype,at.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=x.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){x.fx.step[e.prop]?x.fx.step[e.prop](e):1!==e.elem.nodeType||!x.cssHooks[e.prop]&&null==e.elem.style[Je(e.prop)]?e.elem[e.prop]=e.now:x.style(e.elem,e.prop,e.now+e.unit)}}},at.propHooks.scrollTop=at.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},x.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},x.fx=at.prototype.init,x.fx.step={};var st,lt,ut=/^(?:toggle|show|hide)$/,ct=/queueHooks$/;function dt(){lt&&(!1===a.hidden&&n.requestAnimationFrame?n.requestAnimationFrame(dt):n.setTimeout(dt,x.fx.interval),x.fx.tick())}function pt(){return n.setTimeout(function(){st=void 0}),st=Date.now()}function ht(e,t){var n,o=0,r={height:e};for(t=t?1:0;o<4;o+=2-t)r["margin"+(n=ie[o])]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}function ft(e,t,n){for(var o,r=(mt.tweeners[t]||[]).concat(mt.tweeners["*"]),i=0,a=r.length;i<a;i++)if(o=r[i].call(n,t,e))return o}function mt(e,t,n){var o,r,i=0,a=mt.prefilters.length,s=x.Deferred().always(function(){delete l.elem}),l=function(){if(r)return!1;for(var t=st||pt(),n=Math.max(0,u.startTime+u.duration-t),o=1-(n/u.duration||0),i=0,a=u.tweens.length;i<a;i++)u.tweens[i].run(o);return s.notifyWith(e,[u,o,n]),o<1&&a?n:(a||s.notifyWith(e,[u,1,0]),s.resolveWith(e,[u]),!1)},u=s.promise({elem:e,props:x.extend({},t),opts:x.extend(!0,{specialEasing:{},easing:x.easing._default},n),originalProperties:t,originalOptions:n,startTime:st||pt(),duration:n.duration,tweens:[],createTween:function(t,n){var o=x.Tween(e,u.opts,t,n,u.opts.specialEasing[t]||u.opts.easing);return u.tweens.push(o),o},stop:function(t){var n=0,o=t?u.tweens.length:0;if(r)return this;for(r=!0;n<o;n++)u.tweens[n].run(1);return t?(s.notifyWith(e,[u,1,0]),s.resolveWith(e,[u,t])):s.rejectWith(e,[u,t]),this}}),c=u.props;for(!function(e,t){var n,o,r,i,a;for(n in e)if(r=t[o=X(n)],i=e[n],Array.isArray(i)&&(r=i[1],i=e[n]=i[0]),n!==o&&(e[o]=i,delete e[n]),(a=x.cssHooks[o])&&"expand"in a)for(n in i=a.expand(i),delete e[o],i)n in e||(e[n]=i[n],t[n]=r);else t[o]=r}(c,u.opts.specialEasing);i<a;i++)if(o=mt.prefilters[i].call(u,e,c,u.opts))return y(o.stop)&&(x._queueHooks(u.elem,u.opts.queue).stop=o.stop.bind(o)),o;return x.map(c,ft,u),y(u.opts.start)&&u.opts.start.call(e,u),u.progress(u.opts.progress).done(u.opts.done,u.opts.complete).fail(u.opts.fail).always(u.opts.always),x.fx.timer(x.extend(l,{elem:e,anim:u,queue:u.opts.queue})),u}x.Animation=x.extend(mt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return de(n.elem,e,re.exec(t),n),n}]},tweener:function(e,t){y(e)?(t=e,e=["*"]):e=e.match(H);for(var n,o=0,r=e.length;o<r;o++)n=e[o],mt.tweeners[n]=mt.tweeners[n]||[],mt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var o,r,i,a,s,l,u,c,d="width"in t||"height"in t,p=this,h={},f=e.style,m=e.nodeType&&ue(e),g=J.get(e,"fxshow");for(o in n.queue||(null==(a=x._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,x.queue(e,"fx").length||a.empty.fire()})})),t)if(r=t[o],ut.test(r)){if(delete t[o],i=i||"toggle"===r,r===(m?"hide":"show")){if("show"!==r||!g||void 0===g[o])continue;m=!0}h[o]=g&&g[o]||x.style(e,o)}if((l=!x.isEmptyObject(t))||!x.isEmptyObject(h))for(o in d&&1===e.nodeType&&(n.overflow=[f.overflow,f.overflowX,f.overflowY],null==(u=g&&g.display)&&(u=J.get(e,"display")),"none"===(c=x.css(e,"display"))&&(u?c=u:(fe([e],!0),u=e.style.display||u,c=x.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=u)&&"none"===x.css(e,"float")&&(l||(p.done(function(){f.display=u}),null==u&&(c=f.display,u="none"===c?"":c)),f.display="inline-block")),n.overflow&&(f.overflow="hidden",p.always(function(){f.overflow=n.overflow[0],f.overflowX=n.overflow[1],f.overflowY=n.overflow[2]})),l=!1,h)l||(g?"hidden"in g&&(m=g.hidden):g=J.access(e,"fxshow",{display:u}),i&&(g.hidden=!m),m&&fe([e],!0),p.done(function(){for(o in m||fe([e]),J.remove(e,"fxshow"),h)x.style(e,o,h[o])})),l=ft(m?g[o]:0,o,p),o in g||(g[o]=l.start,m&&(l.end=l.start,l.start=0))}],prefilter:function(e,t){t?mt.prefilters.unshift(e):mt.prefilters.push(e)}}),x.speed=function(e,t,n){var o=e&&"object"==typeof e?x.extend({},e):{complete:n||!n&&t||y(e)&&e,duration:e,easing:n&&t||t&&!y(t)&&t};return x.fx.off?o.duration=0:"number"!=typeof o.duration&&(o.duration in x.fx.speeds?o.duration=x.fx.speeds[o.duration]:o.duration=x.fx.speeds._default),null!=o.queue&&!0!==o.queue||(o.queue="fx"),o.old=o.complete,o.complete=function(){y(o.old)&&o.old.call(this),o.queue&&x.dequeue(this,o.queue)},o},x.fn.extend({fadeTo:function(e,t,n,o){return this.filter(ue).css("opacity",0).show().end().animate({opacity:t},e,n,o)},animate:function(e,t,n,o){var r=x.isEmptyObject(e),i=x.speed(t,n,o),a=function(){var t=mt(this,x.extend({},e),i);(r||J.get(this,"finish"))&&t.stop(!0)};return a.finish=a,r||!1===i.queue?this.each(a):this.queue(i.queue,a)},stop:function(e,t,n){var o=function(e){var t=e.stop;delete e.stop,t(n)};return"string"!=typeof e&&(n=t,t=e,e=void 0),t&&!1!==e&&this.queue(e||"fx",[]),this.each(function(){var t=!0,r=null!=e&&e+"queueHooks",i=x.timers,a=J.get(this);if(r)a[r]&&a[r].stop&&o(a[r]);else for(r in a)a[r]&&a[r].stop&&ct.test(r)&&o(a[r]);for(r=i.length;r--;)i[r].elem!==this||null!=e&&i[r].queue!==e||(i[r].anim.stop(n),t=!1,i.splice(r,1));!t&&n||x.dequeue(this,e)})},finish:function(e){return!1!==e&&(e=e||"fx"),this.each(function(){var t,n=J.get(this),o=n[e+"queue"],r=n[e+"queueHooks"],i=x.timers,a=o?o.length:0;for(n.finish=!0,x.queue(this,e,[]),r&&r.stop&&r.stop.call(this,!0),t=i.length;t--;)i[t].elem===this&&i[t].queue===e&&(i[t].anim.stop(!0),i.splice(t,1));for(t=0;t<a;t++)o[t]&&o[t].finish&&o[t].finish.call(this);delete n.finish})}}),x.each(["toggle","show","hide"],function(e,t){var n=x.fn[t];x.fn[t]=function(e,o,r){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ht(t,!0),e,o,r)}}),x.each({slideDown:ht("show"),slideUp:ht("hide"),slideToggle:ht("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){x.fn[e]=function(e,n,o){return this.animate(t,e,n,o)}}),x.timers=[],x.fx.tick=function(){var e,t=0,n=x.timers;for(st=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||x.fx.stop(),st=void 0},x.fx.timer=function(e){x.timers.push(e),x.fx.start()},x.fx.interval=13,x.fx.start=function(){lt||(lt=!0,dt())},x.fx.stop=function(){lt=null},x.fx.speeds={slow:600,fast:200,_default:400},x.fn.delay=function(e,t){return e=x.fx&&x.fx.speeds[e]||e,t=t||"fx",this.queue(t,function(t,o){var r=n.setTimeout(t,e);o.stop=function(){n.clearTimeout(r)}})},function(){var e=a.createElement("input"),t=a.createElement("select").appendChild(a.createElement("option"));e.type="checkbox",v.checkOn=""!==e.value,v.optSelected=t.selected,(e=a.createElement("input")).value="t",e.type="radio",v.radioValue="t"===e.value}();var gt,vt=x.expr.attrHandle;x.fn.extend({attr:function(e,t){return V(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})}}),x.extend({attr:function(e,t,n){var o,r,i=e.nodeType;if(3!==i&&8!==i&&2!==i)return void 0===e.getAttribute?x.prop(e,t,n):(1===i&&x.isXMLDoc(e)||(r=x.attrHooks[t.toLowerCase()]||(x.expr.match.bool.test(t)?gt:void 0)),void 0!==n?null===n?void x.removeAttr(e,t):r&&"set"in r&&void 0!==(o=r.set(e,n,t))?o:(e.setAttribute(t,n+""),n):r&&"get"in r&&null!==(o=r.get(e,t))?o:null==(o=x.find.attr(e,t))?void 0:o)},attrHooks:{type:{set:function(e,t){if(!v.radioValue&&"radio"===t&&P(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,o=0,r=t&&t.match(H);if(r&&1===e.nodeType)for(;n=r[o++];)e.removeAttribute(n)}}),gt={set:function(e,t,n){return!1===t?x.removeAttr(e,n):e.setAttribute(n,n),n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,t){var n=vt[t]||x.find.attr;vt[t]=function(e,t,o){var r,i,a=t.toLowerCase();return o||(i=vt[a],vt[a]=r,r=null!=n(e,t,o)?a:null,vt[a]=i),r}});var yt=/^(?:input|select|textarea|button)$/i,bt=/^(?:a|area)$/i;function wt(e){return(e.match(H)||[]).join(" ")}function Et(e){return e.getAttribute&&e.getAttribute("class")||""}function Ct(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(H)||[]}x.fn.extend({prop:function(e,t){return V(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[x.propFix[e]||e]})}}),x.extend({prop:function(e,t,n){var o,r,i=e.nodeType;if(3!==i&&8!==i&&2!==i)return 1===i&&x.isXMLDoc(e)||(t=x.propFix[t]||t,r=x.propHooks[t]),void 0!==n?r&&"set"in r&&void 0!==(o=r.set(e,n,t))?o:e[t]=n:r&&"get"in r&&null!==(o=r.get(e,t))?o:e[t]},propHooks:{tabIndex:{get:function(e){var t=x.find.attr(e,"tabindex");return t?parseInt(t,10):yt.test(e.nodeName)||bt.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),v.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.fn.extend({addClass:function(e){var t,n,o,r,i,a,s,l=0;if(y(e))return this.each(function(t){x(this).addClass(e.call(this,t,Et(this)))});if((t=Ct(e)).length)for(;n=this[l++];)if(r=Et(n),o=1===n.nodeType&&" "+wt(r)+" "){for(a=0;i=t[a++];)o.indexOf(" "+i+" ")<0&&(o+=i+" ");r!==(s=wt(o))&&n.setAttribute("class",s)}return this},removeClass:function(e){var t,n,o,r,i,a,s,l=0;if(y(e))return this.each(function(t){x(this).removeClass(e.call(this,t,Et(this)))});if(!arguments.length)return this.attr("class","");if((t=Ct(e)).length)for(;n=this[l++];)if(r=Et(n),o=1===n.nodeType&&" "+wt(r)+" "){for(a=0;i=t[a++];)for(;o.indexOf(" "+i+" ")>-1;)o=o.replace(" "+i+" "," ");r!==(s=wt(o))&&n.setAttribute("class",s)}return this},toggleClass:function(e,t){var n=typeof e,o="string"===n||Array.isArray(e);return"boolean"==typeof t&&o?t?this.addClass(e):this.removeClass(e):y(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,Et(this),t),t)}):this.each(function(){var t,r,i,a;if(o)for(r=0,i=x(this),a=Ct(e);t=a[r++];)i.hasClass(t)?i.removeClass(t):i.addClass(t);else void 0!==e&&"boolean"!==n||((t=Et(this))&&J.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":J.get(this,"__className__")||""))})},hasClass:function(e){var t,n,o=0;for(t=" "+e+" ";n=this[o++];)if(1===n.nodeType&&(" "+wt(Et(n))+" ").indexOf(t)>-1)return!0;return!1}});var xt=/\r/g;x.fn.extend({val:function(e){var t,n,o,r=this[0];return arguments.length?(o=y(e),this.each(function(n){var r;1===this.nodeType&&(null==(r=o?e.call(this,n,x(this).val()):e)?r="":"number"==typeof r?r+="":Array.isArray(r)&&(r=x.map(r,function(e){return null==e?"":e+""})),(t=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,r,"value")||(this.value=r))})):r?(t=x.valHooks[r.type]||x.valHooks[r.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(r,"value"))?n:"string"==typeof(n=r.value)?n.replace(xt,""):null==n?"":n:void 0}}),x.extend({valHooks:{option:{get:function(e){var t=x.find.attr(e,"value");return null!=t?t:wt(x.text(e))}},select:{get:function(e){var t,n,o,r=e.options,i=e.selectedIndex,a="select-one"===e.type,s=a?null:[],l=a?i+1:r.length;for(o=i<0?l:a?i:0;o<l;o++)if(((n=r[o]).selected||o===i)&&!n.disabled&&(!n.parentNode.disabled||!P(n.parentNode,"optgroup"))){if(t=x(n).val(),a)return t;s.push(t)}return s},set:function(e,t){for(var n,o,r=e.options,i=x.makeArray(t),a=r.length;a--;)((o=r[a]).selected=x.inArray(x.valHooks.option.get(o),i)>-1)&&(n=!0);return n||(e.selectedIndex=-1),i}}}}),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=x.inArray(x(e).val(),t)>-1}},v.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),v.focusin="onfocusin"in n;var Tt=/^(?:focusinfocus|focusoutblur)$/,kt=function(e){e.stopPropagation()};x.extend(x.event,{trigger:function(e,t,o,r){var i,s,l,u,c,d,p,h,m=[o||a],g=f.call(e,"type")?e.type:e,v=f.call(e,"namespace")?e.namespace.split("."):[];if(s=h=l=o=o||a,3!==o.nodeType&&8!==o.nodeType&&!Tt.test(g+x.event.triggered)&&(g.indexOf(".")>-1&&(v=g.split("."),g=v.shift(),v.sort()),c=g.indexOf(":")<0&&"on"+g,(e=e[x.expando]?e:new x.Event(g,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=v.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+v.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=o),t=null==t?[e]:x.makeArray(t,[e]),p=x.event.special[g]||{},r||!p.trigger||!1!==p.trigger.apply(o,t))){if(!r&&!p.noBubble&&!b(o)){for(u=p.delegateType||g,Tt.test(u+g)||(s=s.parentNode);s;s=s.parentNode)m.push(s),l=s;l===(o.ownerDocument||a)&&m.push(l.defaultView||l.parentWindow||n)}for(i=0;(s=m[i++])&&!e.isPropagationStopped();)h=s,e.type=i>1?u:p.bindType||g,(d=(J.get(s,"events")||{})[e.type]&&J.get(s,"handle"))&&d.apply(s,t),(d=c&&s[c])&&d.apply&&K(s)&&(e.result=d.apply(s,t),!1===e.result&&e.preventDefault());return e.type=g,r||e.isDefaultPrevented()||p._default&&!1!==p._default.apply(m.pop(),t)||!K(o)||c&&y(o[g])&&!b(o)&&((l=o[c])&&(o[c]=null),x.event.triggered=g,e.isPropagationStopped()&&h.addEventListener(g,kt),o[g](),e.isPropagationStopped()&&h.removeEventListener(g,kt),x.event.triggered=void 0,l&&(o[c]=l)),e.result}},simulate:function(e,t,n){var o=x.extend(new x.Event,n,{type:e,isSimulated:!0});x.event.trigger(o,null,t)}}),x.fn.extend({trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return x.event.trigger(e,t,n,!0)}}),v.focusin||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){x.event.simulate(t,e.target,x.event.fix(e))};x.event.special[t]={setup:function(){var o=this.ownerDocument||this,r=J.access(o,t);r||o.addEventListener(e,n,!0),J.access(o,t,(r||0)+1)},teardown:function(){var o=this.ownerDocument||this,r=J.access(o,t)-1;r?J.access(o,t,r):(o.removeEventListener(e,n,!0),J.remove(o,t))}}});var St=n.location,Dt=Date.now(),Mt=/\?/;x.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new n.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||x.error("Invalid XML: "+e),t};var Rt=/\[\]$/,Pt=/\r?\n/g,_t=/^(?:submit|button|image|reset|file)$/i,Lt=/^(?:input|select|textarea|keygen)/i;function Ot(e,t,n,o){var r;if(Array.isArray(t))x.each(t,function(t,r){n||Rt.test(e)?o(e,r):Ot(e+"["+("object"==typeof r&&null!=r?t:"")+"]",r,n,o)});else if(n||"object"!==C(t))o(e,t);else for(r in t)Ot(e+"["+r+"]",t[r],n,o)}x.param=function(e,t){var n,o=[],r=function(e,t){var n=y(t)?t():t;o[o.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!x.isPlainObject(e))x.each(e,function(){r(this.name,this.value)});else for(n in e)Ot(n,e[n],t,r);return o.join("&")},x.fn.extend({serialize:function(){return x.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=x.prop(this,"elements");return e?x.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!x(this).is(":disabled")&&Lt.test(this.nodeName)&&!_t.test(e)&&(this.checked||!me.test(e))}).map(function(e,t){var n=x(this).val();return null==n?null:Array.isArray(n)?x.map(n,function(e){return{name:t.name,value:e.replace(Pt,"\r\n")}}):{name:t.name,value:n.replace(Pt,"\r\n")}}).get()}});var Nt=/%20/g,Ft=/#.*$/,At=/([?&])_=[^&]*/,It=/^(.*?):[ \t]*([^\r\n]*)$/gm,Ht=/^(?:GET|HEAD)$/,zt=/^\/\//,jt={},Bt={},Ut="*/".concat("*"),Wt=a.createElement("a");function qt(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var o,r=0,i=t.toLowerCase().match(H)||[];if(y(n))for(;o=i[r++];)"+"===o[0]?(o=o.slice(1)||"*",(e[o]=e[o]||[]).unshift(n)):(e[o]=e[o]||[]).push(n)}}function Vt(e,t,n,o){var r={},i=e===Bt;function a(s){var l;return r[s]=!0,x.each(e[s]||[],function(e,s){var u=s(t,n,o);return"string"!=typeof u||i||r[u]?i?!(l=u):void 0:(t.dataTypes.unshift(u),a(u),!1)}),l}return a(t.dataTypes[0])||!r["*"]&&a("*")}function Gt(e,t){var n,o,r=x.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((r[n]?e:o||(o={}))[n]=t[n]);return o&&x.extend(!0,e,o),e}Wt.href=St.href,x.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:St.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(St.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Ut,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":x.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Gt(Gt(e,x.ajaxSettings),t):Gt(x.ajaxSettings,e)},ajaxPrefilter:qt(jt),ajaxTransport:qt(Bt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var o,r,i,s,l,u,c,d,p,h,f=x.ajaxSetup({},t),m=f.context||f,g=f.context&&(m.nodeType||m.jquery)?x(m):x.event,v=x.Deferred(),y=x.Callbacks("once memory"),b=f.statusCode||{},w={},E={},C="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(c){if(!s)for(s={};t=It.exec(i);)s[t[1].toLowerCase()+" "]=(s[t[1].toLowerCase()+" "]||[]).concat(t[2]);t=s[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return c?i:null},setRequestHeader:function(e,t){return null==c&&(e=E[e.toLowerCase()]=E[e.toLowerCase()]||e,w[e]=t),this},overrideMimeType:function(e){return null==c&&(f.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)T.always(e[T.status]);else for(t in e)b[t]=[b[t],e[t]];return this},abort:function(e){var t=e||C;return o&&o.abort(t),k(0,t),this}};if(v.promise(T),f.url=((e||f.url||St.href)+"").replace(zt,St.protocol+"//"),f.type=t.method||t.type||f.method||f.type,f.dataTypes=(f.dataType||"*").toLowerCase().match(H)||[""],null==f.crossDomain){u=a.createElement("a");try{u.href=f.url,u.href=u.href,f.crossDomain=Wt.protocol+"//"+Wt.host!=u.protocol+"//"+u.host}catch(e){f.crossDomain=!0}}if(f.data&&f.processData&&"string"!=typeof f.data&&(f.data=x.param(f.data,f.traditional)),Vt(jt,f,t,T),c)return T;for(p in(d=x.event&&f.global)&&0==x.active++&&x.event.trigger("ajaxStart"),f.type=f.type.toUpperCase(),f.hasContent=!Ht.test(f.type),r=f.url.replace(Ft,""),f.hasContent?f.data&&f.processData&&0===(f.contentType||"").indexOf("application/x-www-form-urlencoded")&&(f.data=f.data.replace(Nt,"+")):(h=f.url.slice(r.length),f.data&&(f.processData||"string"==typeof f.data)&&(r+=(Mt.test(r)?"&":"?")+f.data,delete f.data),!1===f.cache&&(r=r.replace(At,"$1"),h=(Mt.test(r)?"&":"?")+"_="+Dt+++h),f.url=r+h),f.ifModified&&(x.lastModified[r]&&T.setRequestHeader("If-Modified-Since",x.lastModified[r]),x.etag[r]&&T.setRequestHeader("If-None-Match",x.etag[r])),(f.data&&f.hasContent&&!1!==f.contentType||t.contentType)&&T.setRequestHeader("Content-Type",f.contentType),T.setRequestHeader("Accept",f.dataTypes[0]&&f.accepts[f.dataTypes[0]]?f.accepts[f.dataTypes[0]]+("*"!==f.dataTypes[0]?", "+Ut+"; q=0.01":""):f.accepts["*"]),f.headers)T.setRequestHeader(p,f.headers[p]);if(f.beforeSend&&(!1===f.beforeSend.call(m,T,f)||c))return T.abort();if(C="abort",y.add(f.complete),T.done(f.success),T.fail(f.error),o=Vt(Bt,f,t,T)){if(T.readyState=1,d&&g.trigger("ajaxSend",[T,f]),c)return T;f.async&&f.timeout>0&&(l=n.setTimeout(function(){T.abort("timeout")},f.timeout));try{c=!1,o.send(w,k)}catch(e){if(c)throw e;k(-1,e)}}else k(-1,"No Transport");function k(e,t,a,s){var u,p,h,w,E,C=t;c||(c=!0,l&&n.clearTimeout(l),o=void 0,i=s||"",T.readyState=e>0?4:0,u=e>=200&&e<300||304===e,a&&(w=function(e,t,n){for(var o,r,i,a,s=e.contents,l=e.dataTypes;"*"===l[0];)l.shift(),void 0===o&&(o=e.mimeType||t.getResponseHeader("Content-Type"));if(o)for(r in s)if(s[r]&&s[r].test(o)){l.unshift(r);break}if(l[0]in n)i=l[0];else{for(r in n){if(!l[0]||e.converters[r+" "+l[0]]){i=r;break}a||(a=r)}i=i||a}if(i)return i!==l[0]&&l.unshift(i),n[i]}(f,T,a)),w=function(e,t,n,o){var r,i,a,s,l,u={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)u[a.toLowerCase()]=e.converters[a];for(i=c.shift();i;)if(e.responseFields[i]&&(n[e.responseFields[i]]=t),!l&&o&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=i,i=c.shift())if("*"===i)i=l;else if("*"!==l&&l!==i){if(!(a=u[l+" "+i]||u["* "+i]))for(r in u)if((s=r.split(" "))[1]===i&&(a=u[l+" "+s[0]]||u["* "+s[0]])){!0===a?a=u[r]:!0!==u[r]&&(i=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e.throws)t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+l+" to "+i}}}return{state:"success",data:t}}(f,w,T,u),u?(f.ifModified&&((E=T.getResponseHeader("Last-Modified"))&&(x.lastModified[r]=E),(E=T.getResponseHeader("etag"))&&(x.etag[r]=E)),204===e||"HEAD"===f.type?C="nocontent":304===e?C="notmodified":(C=w.state,p=w.data,u=!(h=w.error))):(h=C,!e&&C||(C="error",e<0&&(e=0))),T.status=e,T.statusText=(t||C)+"",u?v.resolveWith(m,[p,C,T]):v.rejectWith(m,[T,C,h]),T.statusCode(b),b=void 0,d&&g.trigger(u?"ajaxSuccess":"ajaxError",[T,f,u?p:h]),y.fireWith(m,[T,C]),d&&(g.trigger("ajaxComplete",[T,f]),--x.active||x.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return x.get(e,t,n,"json")},getScript:function(e,t){return x.get(e,void 0,t,"script")}}),x.each(["get","post"],function(e,t){x[t]=function(e,n,o,r){return y(n)&&(r=r||o,o=n,n=void 0),x.ajax(x.extend({url:e,type:t,dataType:r,data:n,success:o},x.isPlainObject(e)&&e))}}),x._evalUrl=function(e,t){return x.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){x.globalEval(e,t)}})},x.fn.extend({wrapAll:function(e){var t;return this[0]&&(y(e)&&(e=e.call(this[0])),t=x(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return y(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=y(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){x(this).replaceWith(this.childNodes)}),this}}),x.expr.pseudos.hidden=function(e){return!x.expr.pseudos.visible(e)},x.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},x.ajaxSettings.xhr=function(){try{return new n.XMLHttpRequest}catch(e){}};var Yt={0:200,1223:204},$t=x.ajaxSettings.xhr();v.cors=!!$t&&"withCredentials"in $t,v.ajax=$t=!!$t,x.ajaxTransport(function(e){var t,o;if(v.cors||$t&&!e.crossDomain)return{send:function(r,i){var a,s=e.xhr();if(s.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(a in e.xhrFields)s[a]=e.xhrFields[a];for(a in e.mimeType&&s.overrideMimeType&&s.overrideMimeType(e.mimeType),e.crossDomain||r["X-Requested-With"]||(r["X-Requested-With"]="XMLHttpRequest"),r)s.setRequestHeader(a,r[a]);t=function(e){return function(){t&&(t=o=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,"abort"===e?s.abort():"error"===e?"number"!=typeof s.status?i(0,"error"):i(s.status,s.statusText):i(Yt[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=t(),o=s.onerror=s.ontimeout=t("error"),void 0!==s.onabort?s.onabort=o:s.onreadystatechange=function(){4===s.readyState&&n.setTimeout(function(){t&&o()})},t=t("abort");try{s.send(e.hasContent&&e.data||null)}catch(e){if(t)throw e}},abort:function(){t&&t()}}}),x.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),x.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return x.globalEval(e),e}}}),x.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),x.ajaxTransport("script",function(e){var t,n;if(e.crossDomain||e.scriptAttrs)return{send:function(o,r){t=x("<script>").attr(e.scriptAttrs||{}).prop({charset:e.scriptCharset,src:e.url}).on("load error",n=function(e){t.remove(),n=null,e&&r("error"===e.type?404:200,e.type)}),a.head.appendChild(t[0])},abort:function(){n&&n()}}});var Xt,Kt=[],Qt=/(=)\?(?=&|$)|\?\?/;x.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Kt.pop()||x.expando+"_"+Dt++;return this[e]=!0,e}}),x.ajaxPrefilter("json jsonp",function(e,t,o){var r,i,a,s=!1!==e.jsonp&&(Qt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Qt.test(e.data)&&"data");if(s||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=y(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,s?e[s]=e[s].replace(Qt,"$1"+r):!1!==e.jsonp&&(e.url+=(Mt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return a||x.error(r+" was not called"),a[0]},e.dataTypes[0]="json",i=n[r],n[r]=function(){a=arguments},o.always(function(){void 0===i?x(n).removeProp(r):n[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Kt.push(r)),a&&y(i)&&i(a[0]),a=i=void 0}),"script"}),v.createHTMLDocument=((Xt=a.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Xt.childNodes.length),x.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(v.createHTMLDocument?((o=(t=a.implementation.createHTMLDocument("")).createElement("base")).href=a.location.href,t.head.appendChild(o)):t=a),i=!n&&[],(r=_.exec(e))?[t.createElement(r[1])]:(r=Te([e],t,i),i&&i.length&&x(i).remove(),x.merge([],r.childNodes)));var o,r,i},x.fn.load=function(e,t,n){var o,r,i,a=this,s=e.indexOf(" ");return s>-1&&(o=wt(e.slice(s)),e=e.slice(0,s)),y(t)?(n=t,t=void 0):t&&"object"==typeof t&&(r="POST"),a.length>0&&x.ajax({url:e,type:r||"GET",dataType:"html",data:t}).done(function(e){i=arguments,a.html(o?x("<div>").append(x.parseHTML(e)).find(o):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,i||[e.responseText,t,e])})}),this},x.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){x.fn[t]=function(e){return this.on(t,e)}}),x.expr.pseudos.animated=function(e){return x.grep(x.timers,function(t){return e===t.elem}).length},x.offset={setOffset:function(e,t,n){var o,r,i,a,s,l,u=x.css(e,"position"),c=x(e),d={};"static"===u&&(e.style.position="relative"),s=c.offset(),i=x.css(e,"top"),l=x.css(e,"left"),("absolute"===u||"fixed"===u)&&(i+l).indexOf("auto")>-1?(a=(o=c.position()).top,r=o.left):(a=parseFloat(i)||0,r=parseFloat(l)||0),y(t)&&(t=t.call(e,n,x.extend({},s))),null!=t.top&&(d.top=t.top-s.top+a),null!=t.left&&(d.left=t.left-s.left+r),"using"in t?t.using.call(e,d):c.css(d)}},x.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){x.offset.setOffset(this,e,t)});var t,n,o=this[0];return o?o.getClientRects().length?(t=o.getBoundingClientRect(),n=o.ownerDocument.defaultView,{top:t.top+n.pageYOffset,left:t.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,o=this[0],r={top:0,left:0};if("fixed"===x.css(o,"position"))t=o.getBoundingClientRect();else{for(t=this.offset(),n=o.ownerDocument,e=o.offsetParent||n.documentElement;e&&(e===n.body||e===n.documentElement)&&"static"===x.css(e,"position");)e=e.parentNode;e&&e!==o&&1===e.nodeType&&((r=x(e).offset()).top+=x.css(e,"borderTopWidth",!0),r.left+=x.css(e,"borderLeftWidth",!0))}return{top:t.top-r.top-x.css(o,"marginTop",!0),left:t.left-r.left-x.css(o,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent;e&&"static"===x.css(e,"position");)e=e.offsetParent;return e||ae})}}),x.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){var n="pageYOffset"===t;x.fn[e]=function(o){return V(this,function(e,o,r){var i;if(b(e)?i=e:9===e.nodeType&&(i=e.defaultView),void 0===r)return i?i[t]:e[o];i?i.scrollTo(n?i.pageXOffset:r,n?r:i.pageYOffset):e[o]=r},e,o,arguments.length)}}),x.each(["top","left"],function(e,t){x.cssHooks[t]=$e(v.pixelPosition,function(e,n){if(n)return n=Ye(e,t),qe.test(n)?x(e).position()[t]+"px":n})}),x.each({Height:"height",Width:"width"},function(e,t){x.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,o){x.fn[o]=function(r,i){var a=arguments.length&&(n||"boolean"!=typeof r),s=n||(!0===r||!0===i?"margin":"border");return V(this,function(t,n,r){var i;return b(t)?0===o.indexOf("outer")?t["inner"+e]:t.document.documentElement["client"+e]:9===t.nodeType?(i=t.documentElement,Math.max(t.body["scroll"+e],i["scroll"+e],t.body["offset"+e],i["offset"+e],i["client"+e])):void 0===r?x.css(t,n,s):x.style(t,n,r,s)},t,a?r:void 0,a)}})}),x.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,t){x.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),x.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),x.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,o){return this.on(t,e,n,o)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),x.proxy=function(e,t){var n,o,r;if("string"==typeof t&&(n=e[t],t=e,e=n),y(e))return o=l.call(arguments,2),(r=function(){return e.apply(t||this,o.concat(l.call(arguments)))}).guid=e.guid=e.guid||x.guid++,r},x.holdReady=function(e){e?x.readyWait++:x.ready(!0)},x.isArray=Array.isArray,x.parseJSON=JSON.parse,x.nodeName=P,x.isFunction=y,x.isWindow=b,x.camelCase=X,x.type=C,x.now=Date.now,x.isNumeric=function(e){var t=x.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},void 0===(o=function(){return x}.apply(t,[]))||(e.exports=o);var Jt=n.jQuery,Zt=n.$;return x.noConflict=function(e){return n.$===x&&(n.$=Zt),e&&n.jQuery===x&&(n.jQuery=Jt),x},r||(n.jQuery=n.$=x),x})},function(e,t){e.exports=function(){throw new Error("define cannot be used indirect")}},function(e,t,n){"use strict";e.exports=n(55)},function(e,t,n){"use strict";
+/** @license React v16.8.6
+ * react-dom-server.browser.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */var o=n(22),r=n(0);function i(e){for(var t=arguments.length-1,n="https://reactjs.org/docs/error-decoder.html?invariant="+e,o=0;o<t;o++)n+="&args[]="+encodeURIComponent(arguments[o+1]);!function(e,t,n,o,r,i,a,s){if(!e){if(e=void 0,void 0===t)e=Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var l=[n,o,r,i,a,s],u=0;(e=Error(t.replace(/%s/g,function(){return l[u++]}))).name="Invariant Violation"}throw e.framesToPop=1,e}}(!1,"Minified React error #"+e+"; visit %s for the full message or use the non-minified dev environment for full errors and additional helpful warnings. ",n)}var a="function"==typeof Symbol&&Symbol.for,s=a?Symbol.for("react.portal"):60106,l=a?Symbol.for("react.fragment"):60107,u=a?Symbol.for("react.strict_mode"):60108,c=a?Symbol.for("react.profiler"):60114,d=a?Symbol.for("react.provider"):60109,p=a?Symbol.for("react.context"):60110,h=a?Symbol.for("react.concurrent_mode"):60111,f=a?Symbol.for("react.forward_ref"):60112,m=a?Symbol.for("react.suspense"):60113,g=a?Symbol.for("react.memo"):60115,v=a?Symbol.for("react.lazy"):60116;function y(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case h:return"ConcurrentMode";case l:return"Fragment";case s:return"Portal";case c:return"Profiler";case u:return"StrictMode";case m:return"Suspense"}if("object"==typeof e)switch(e.$$typeof){case p:return"Context.Consumer";case d:return"Context.Provider";case f:var t=e.render;return t=t.displayName||t.name||"",e.displayName||(""!==t?"ForwardRef("+t+")":"ForwardRef");case g:return y(e.type);case v:if(e=1===e._status?e._result:null)return y(e)}return null}var b=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;b.hasOwnProperty("ReactCurrentDispatcher")||(b.ReactCurrentDispatcher={current:null});var w={};function E(e,t){for(var n=0|e._threadCount;n<=t;n++)e[n]=e._currentValue2,e._threadCount=n+1}for(var C=new Uint16Array(16),x=0;15>x;x++)C[x]=x+1;C[15]=0;var T=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,k=Object.prototype.hasOwnProperty,S={},D={};function M(e){return!!k.call(D,e)||!k.call(S,e)&&(T.test(e)?D[e]=!0:(S[e]=!0,!1))}function R(e,t,n,o){if(null==t||function(e,t,n,o){if(null!==n&&0===n.type)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return!o&&(null!==n?!n.acceptsBooleans:"data-"!==(e=e.toLowerCase().slice(0,5))&&"aria-"!==e);default:return!1}}(e,t,n,o))return!0;if(o)return!1;if(null!==n)switch(n.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function P(e,t,n,o,r){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=o,this.attributeNamespace=r,this.mustUseProperty=n,this.propertyName=e,this.type=t}var _={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){_[e]=new P(e,0,!1,e,null)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];_[t]=new P(t,1,!1,e[1],null)}),["contentEditable","draggable","spellCheck","value"].forEach(function(e){_[e]=new P(e,2,!1,e.toLowerCase(),null)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){_[e]=new P(e,2,!1,e,null)}),"allowFullScreen async autoFocus autoPlay controls default defer disabled formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){_[e]=new P(e,3,!1,e.toLowerCase(),null)}),["checked","multiple","muted","selected"].forEach(function(e){_[e]=new P(e,3,!0,e,null)}),["capture","download"].forEach(function(e){_[e]=new P(e,4,!1,e,null)}),["cols","rows","size","span"].forEach(function(e){_[e]=new P(e,6,!1,e,null)}),["rowSpan","start"].forEach(function(e){_[e]=new P(e,5,!1,e.toLowerCase(),null)});var L=/[\-:]([a-z])/g;function O(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(L,O);_[t]=new P(t,1,!1,e,null)}),"xlink:actuate xlink:arcrole xlink:href xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(L,O);_[t]=new P(t,1,!1,e,"http://www.w3.org/1999/xlink")}),["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(L,O);_[t]=new P(t,1,!1,e,"http://www.w3.org/XML/1998/namespace")}),["tabIndex","crossOrigin"].forEach(function(e){_[e]=new P(e,1,!1,e.toLowerCase(),null)});var N=/["'&<>]/;function F(e){if("boolean"==typeof e||"number"==typeof e)return""+e;e=""+e;var t=N.exec(e);if(t){var n,o="",r=0;for(n=t.index;n<e.length;n++){switch(e.charCodeAt(n)){case 34:t=""";break;case 38:t="&";break;case 39:t="'";break;case 60:t="<";break;case 62:t=">";break;default:continue}r!==n&&(o+=e.substring(r,n)),r=n+1,o+=t}e=r!==n?o+e.substring(r,n):o}return e}var A=null,I=null,H=null,z=!1,j=!1,B=null,U=0;function W(){return null===A&&i("321"),A}function q(){return 0<U&&i("312"),{memoizedState:null,queue:null,next:null}}function V(){return null===H?null===I?(z=!1,I=H=q()):(z=!0,H=I):null===H.next?(z=!1,H=H.next=q()):(z=!0,H=H.next),H}function G(e,t,n,o){for(;j;)j=!1,U+=1,H=null,n=e(t,o);return I=A=null,U=0,H=B=null,n}function Y(e,t){return"function"==typeof t?t(e):t}function $(e,t,n){if(A=W(),H=V(),z){var o=H.queue;if(t=o.dispatch,null!==B&&void 0!==(n=B.get(o))){B.delete(o),o=H.memoizedState;do{o=e(o,n.action),n=n.next}while(null!==n);return H.memoizedState=o,[o,t]}return[H.memoizedState,t]}return e=e===Y?"function"==typeof t?t():t:void 0!==n?n(t):t,H.memoizedState=e,e=(e=H.queue={last:null,dispatch:null}).dispatch=function(e,t,n){if(25>U||i("301"),e===A)if(j=!0,e={action:n,next:null},null===B&&(B=new Map),void 0===(n=B.get(t)))B.set(t,e);else{for(t=n;null!==t.next;)t=t.next;t.next=e}}.bind(null,A,e),[H.memoizedState,e]}function X(){}var K=0,Q={readContext:function(e){var t=K;return E(e,t),e[t]},useContext:function(e){W();var t=K;return E(e,t),e[t]},useMemo:function(e,t){if(A=W(),t=void 0===t?null:t,null!==(H=V())){var n=H.memoizedState;if(null!==n&&null!==t){e:{var o=n[1];if(null===o)o=!1;else{for(var r=0;r<o.length&&r<t.length;r++){var i=t[r],a=o[r];if((i!==a||0===i&&1/i!=1/a)&&(i==i||a==a)){o=!1;break e}}o=!0}}if(o)return n[0]}}return e=e(),H.memoizedState=[e,t],e},useReducer:$,useRef:function(e){A=W();var t=(H=V()).memoizedState;return null===t?(e={current:e},H.memoizedState=e):t},useState:function(e){return $(Y,e)},useLayoutEffect:function(){},useCallback:function(e){return e},useImperativeHandle:X,useEffect:X,useDebugValue:X},J={html:"http://www.w3.org/1999/xhtml",mathml:"http://www.w3.org/1998/Math/MathML",svg:"http://www.w3.org/2000/svg"};function Z(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}var ee={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},te=o({menuitem:!0},ee),ne={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},oe=["Webkit","ms","Moz","O"];Object.keys(ne).forEach(function(e){oe.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),ne[t]=ne[e]})});var re=/([A-Z])/g,ie=/^ms-/,ae=r.Children.toArray,se=b.ReactCurrentDispatcher,le={listing:!0,pre:!0,textarea:!0},ue=/^[a-zA-Z][a-zA-Z:_\.\-\d]*$/,ce={},de={};var pe=Object.prototype.hasOwnProperty,he={children:null,dangerouslySetInnerHTML:null,suppressContentEditableWarning:null,suppressHydrationWarning:null};function fe(e,t){void 0===e&&i("152",y(t)||"Component")}function me(e,t,n){function a(r,a){var s=function(e,t,n){var o=e.contextType;if("object"==typeof o&&null!==o)return E(o,n),o[n];if(e=e.contextTypes){for(var r in n={},e)n[r]=t[r];t=n}else t=w;return t}(a,t,n),l=[],u=!1,c={isMounted:function(){return!1},enqueueForceUpdate:function(){if(null===l)return null},enqueueReplaceState:function(e,t){u=!0,l=[t]},enqueueSetState:function(e,t){if(null===l)return null;l.push(t)}},d=void 0;if(a.prototype&&a.prototype.isReactComponent){if(d=new a(r.props,s,c),"function"==typeof a.getDerivedStateFromProps){var p=a.getDerivedStateFromProps.call(null,r.props,d.state);null!=p&&(d.state=o({},d.state,p))}}else if(A={},d=a(r.props,s,c),null==(d=G(a,r.props,d,s))||null==d.render)return void fe(e=d,a);if(d.props=r.props,d.context=s,d.updater=c,void 0===(c=d.state)&&(d.state=c=null),"function"==typeof d.UNSAFE_componentWillMount||"function"==typeof d.componentWillMount)if("function"==typeof d.componentWillMount&&"function"!=typeof a.getDerivedStateFromProps&&d.componentWillMount(),"function"==typeof d.UNSAFE_componentWillMount&&"function"!=typeof a.getDerivedStateFromProps&&d.UNSAFE_componentWillMount(),l.length){c=l;var h=u;if(l=null,u=!1,h&&1===c.length)d.state=c[0];else{p=h?c[0]:d.state;var f=!0;for(h=h?1:0;h<c.length;h++){var m=c[h];null!=(m="function"==typeof m?m.call(d,p,r.props,s):m)&&(f?(f=!1,p=o({},p,m)):o(p,m))}d.state=p}}else l=null;if(fe(e=d.render(),a),r=void 0,"function"==typeof d.getChildContext&&"object"==typeof(s=a.childContextTypes))for(var g in r=d.getChildContext())g in s||i("108",y(a)||"Unknown",g);r&&(t=o({},t,r))}for(;r.isValidElement(e);){var s=e,l=s.type;if("function"!=typeof l)break;a(s,l)}return{child:e,context:t}}var ge=function(){function e(t,n){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function");r.isValidElement(t)?t.type!==l?t=[t]:(t=t.props.children,t=r.isValidElement(t)?[t]:ae(t)):t=ae(t),t={type:null,domNamespace:J.html,children:t,childIndex:0,context:w,footer:""};var o=C[0];if(0===o){var a=C,s=2*(o=a.length);65536>=s||i("304");var u=new Uint16Array(s);for(u.set(a),(C=u)[0]=o+1,a=o;a<s-1;a++)C[a]=a+1;C[s-1]=0}else C[0]=C[o];this.threadID=o,this.stack=[t],this.exhausted=!1,this.currentSelectValue=null,this.previousWasTextNode=!1,this.makeStaticMarkup=n,this.suspenseDepth=0,this.contextIndex=-1,this.contextStack=[],this.contextValueStack=[]}return e.prototype.destroy=function(){if(!this.exhausted){this.exhausted=!0,this.clearProviders();var e=this.threadID;C[e]=C[0],C[0]=e}},e.prototype.pushProvider=function(e){var t=++this.contextIndex,n=e.type._context,o=this.threadID;E(n,o);var r=n[o];this.contextStack[t]=n,this.contextValueStack[t]=r,n[o]=e.props.value},e.prototype.popProvider=function(){var e=this.contextIndex,t=this.contextStack[e],n=this.contextValueStack[e];this.contextStack[e]=null,this.contextValueStack[e]=null,this.contextIndex--,t[this.threadID]=n},e.prototype.clearProviders=function(){for(var e=this.contextIndex;0<=e;e--)this.contextStack[e][this.threadID]=this.contextValueStack[e]},e.prototype.read=function(e){if(this.exhausted)return null;var t=K;K=this.threadID;var n=se.current;se.current=Q;try{for(var o=[""],r=!1;o[0].length<e;){if(0===this.stack.length){this.exhausted=!0;var a=this.threadID;C[a]=C[0],C[0]=a;break}var s=this.stack[this.stack.length-1];if(r||s.childIndex>=s.children.length){var l=s.footer;if(""!==l&&(this.previousWasTextNode=!1),this.stack.pop(),"select"===s.type)this.currentSelectValue=null;else if(null!=s.type&&null!=s.type.type&&s.type.type.$$typeof===d)this.popProvider(s.type);else if(s.type===m){this.suspenseDepth--;var u=o.pop();if(r){r=!1;var c=s.fallbackFrame;c||i("303"),this.stack.push(c);continue}o[this.suspenseDepth]+=u}o[this.suspenseDepth]+=l}else{var p=s.children[s.childIndex++],h="";try{h+=this.render(p,s.context,s.domNamespace)}catch(e){throw e}o.length<=this.suspenseDepth&&o.push(""),o[this.suspenseDepth]+=h}}return o[0]}finally{se.current=n,K=t}},e.prototype.render=function(e,t,n){if("string"==typeof e||"number"==typeof e)return""===(n=""+e)?"":this.makeStaticMarkup?F(n):this.previousWasTextNode?"\x3c!-- --\x3e"+F(n):(this.previousWasTextNode=!0,F(n));if(e=(t=me(e,t,this.threadID)).child,t=t.context,null===e||!1===e)return"";if(!r.isValidElement(e)){if(null!=e&&null!=e.$$typeof){var a=e.$$typeof;a===s&&i("257"),i("258",a.toString())}return e=ae(e),this.stack.push({type:null,domNamespace:n,children:e,childIndex:0,context:t,footer:""}),""}if("string"==typeof(a=e.type))return this.renderDOM(e,t,n);switch(a){case u:case h:case c:case l:return e=ae(e.props.children),this.stack.push({type:null,domNamespace:n,children:e,childIndex:0,context:t,footer:""}),"";case m:i("294")}if("object"==typeof a&&null!==a)switch(a.$$typeof){case f:A={};var y=a.render(e.props,e.ref);return y=G(a.render,e.props,y,e.ref),y=ae(y),this.stack.push({type:null,domNamespace:n,children:y,childIndex:0,context:t,footer:""}),"";case g:return e=[r.createElement(a.type,o({ref:e.ref},e.props))],this.stack.push({type:null,domNamespace:n,children:e,childIndex:0,context:t,footer:""}),"";case d:return n={type:e,domNamespace:n,children:a=ae(e.props.children),childIndex:0,context:t,footer:""},this.pushProvider(e),this.stack.push(n),"";case p:a=e.type,y=e.props;var b=this.threadID;return E(a,b),a=ae(y.children(a[b])),this.stack.push({type:e,domNamespace:n,children:a,childIndex:0,context:t,footer:""}),"";case v:i("295")}i("130",null==a?a:typeof a,"")},e.prototype.renderDOM=function(e,t,n){var a=e.type.toLowerCase();n===J.html&&Z(a),ce.hasOwnProperty(a)||(ue.test(a)||i("65",a),ce[a]=!0);var s=e.props;if("input"===a)s=o({type:void 0},s,{defaultChecked:void 0,defaultValue:void 0,value:null!=s.value?s.value:s.defaultValue,checked:null!=s.checked?s.checked:s.defaultChecked});else if("textarea"===a){var l=s.value;if(null==l){l=s.defaultValue;var u=s.children;null!=u&&(null!=l&&i("92"),Array.isArray(u)&&(1>=u.length||i("93"),u=u[0]),l=""+u),null==l&&(l="")}s=o({},s,{value:void 0,children:""+l})}else if("select"===a)this.currentSelectValue=null!=s.value?s.value:s.defaultValue,s=o({},s,{value:void 0});else if("option"===a){u=this.currentSelectValue;var c=function(e){if(null==e)return e;var t="";return r.Children.forEach(e,function(e){null!=e&&(t+=e)}),t}(s.children);if(null!=u){var d=null!=s.value?s.value+"":c;if(l=!1,Array.isArray(u)){for(var p=0;p<u.length;p++)if(""+u[p]===d){l=!0;break}}else l=""+u===d;s=o({selected:void 0,children:void 0},s,{selected:l,children:c})}}for(w in(l=s)&&(te[a]&&(null!=l.children||null!=l.dangerouslySetInnerHTML)&&i("137",a,""),null!=l.dangerouslySetInnerHTML&&(null!=l.children&&i("60"),"object"==typeof l.dangerouslySetInnerHTML&&"__html"in l.dangerouslySetInnerHTML||i("61")),null!=l.style&&"object"!=typeof l.style&&i("62","")),l=s,u=this.makeStaticMarkup,c=1===this.stack.length,d="<"+e.type,l)if(pe.call(l,w)){var h=l[w];if(null!=h){if("style"===w){p=void 0;var f="",m="";for(p in h)if(h.hasOwnProperty(p)){var g=0===p.indexOf("--"),v=h[p];if(null!=v){var y=p;if(de.hasOwnProperty(y))y=de[y];else{var b=y.replace(re,"-$1").toLowerCase().replace(ie,"-ms-");y=de[y]=b}f+=m+y+":",m=p,f+=g=null==v||"boolean"==typeof v||""===v?"":g||"number"!=typeof v||0===v||ne.hasOwnProperty(m)&&ne[m]?(""+v).trim():v+"px",m=";"}}h=f||null}p=null;e:if(g=a,v=l,-1===g.indexOf("-"))g="string"==typeof v.is;else switch(g){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":g=!1;break e;default:g=!0}g?he.hasOwnProperty(w)||(p=M(p=w)&&null!=h?p+'="'+F(h)+'"':""):(g=w,p=h,h=_.hasOwnProperty(g)?_[g]:null,(v="style"!==g)&&(v=null!==h?0===h.type:2<g.length&&("o"===g[0]||"O"===g[0])&&("n"===g[1]||"N"===g[1])),v||R(g,p,h,!1)?p="":null!==h?(g=h.attributeName,p=3===(h=h.type)||4===h&&!0===p?g+'=""':g+'="'+F(p)+'"'):p=M(g)?g+'="'+F(p)+'"':""),p&&(d+=" "+p)}}u||c&&(d+=' data-reactroot=""');var w=d;l="",ee.hasOwnProperty(a)?w+="/>":(w+=">",l="</"+e.type+">");e:{if(null!=(u=s.dangerouslySetInnerHTML)){if(null!=u.__html){u=u.__html;break e}}else if("string"==typeof(u=s.children)||"number"==typeof u){u=F(u);break e}u=null}return null!=u?(s=[],le[a]&&"\n"===u.charAt(0)&&(w+="\n"),w+=u):s=ae(s.children),e=e.type,n=null==n||"http://www.w3.org/1999/xhtml"===n?Z(e):"http://www.w3.org/2000/svg"===n&&"foreignObject"===e?"http://www.w3.org/1999/xhtml":n,this.stack.push({domNamespace:n,type:a,children:s,childIndex:0,context:t,footer:l}),this.previousWasTextNode=!1,w},e}(),ve={renderToString:function(e){e=new ge(e,!1);try{return e.read(1/0)}finally{e.destroy()}},renderToStaticMarkup:function(e){e=new ge(e,!0);try{return e.read(1/0)}finally{e.destroy()}},renderToNodeStream:function(){i("207")},renderToStaticNodeStream:function(){i("208")},version:"16.8.6"},ye={default:ve},be=ye&&ve||ye;e.exports=be.default||be},function(e,t,n){"use strict";var o,r=this&&this.__extends||(o=function(e,t){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)},function(e,t){function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),i=this&&this.__assign||function(){return(i=Object.assign||function(e){for(var t,n=1,o=arguments.length;n<o;n++)for(var r in t=arguments[n])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e}).apply(this,arguments)};t.__esModule=!0;var a=n(0),s=n(8),l=n(29),u=n(30),c=n(17),d=n(31),p=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.state={data:[]},t.ref=null,t.htmlProps=null,t.mainId="tabulator-"+ +new Date+"-"+Math.floor(9999999*Math.random()),t.table=null,t.pickValidHTMLProps=function(){t.htmlProps||(t.htmlProps=l.pickHTMLProps(t.props),delete t.htmlProps.data,delete t.htmlProps.columns)},t}return r(t,e),t.prototype.componentDidMount=function(){var e=s.findDOMNode(this.ref),t=this,n=this.props,o=n.columns,r=n.data,a=n.options,l=u.propsToOptions(this.props);new d(e,i({columns:o},l,{layout:"fitColumns",tableBuilding:function(){t.table=this,t.props.tableBuilding&&t.props.tableBuilding()},dataLoaded:function(){t.props.dataLoaded&&t.props.dataLoaded()}},a,{data:r})),r&&r.length>0&&this.setState({data:r})},t.prototype.componentWillUnmount=function(){this.table.destroy()},t.prototype.componentWillReceiveProps=function(e){var t=this;c.isSameArray(this.state.data,e.data)||this.setState({data:e.data},function(){t.table.setData(t.state.data)})},t.prototype.render=function(){var e=this;this.pickValidHTMLProps();var t=this.props.className;return a.createElement("div",i({ref:function(t){return e.ref=t},"data-instance":this.mainId},this.htmlProps,{className:t}))},t}(a.Component);t.default=p},function(e,t,n){"use strict";var o,r,i=this&&this.__extends||(o=function(e,t){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)},function(e,t){function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});t.__esModule=!0;var a=n(0),s=n(28),l=n(58),u=n(59),c=n(64);var d=[{title:"Name",field:"name",width:150},{title:"Age",field:"age",align:"left",formatter:"progress"},{title:"Favourite Color",field:"color"},{title:"Date Of Birth",field:"dob"},{title:"Rating",field:"rating",align:"center",formatter:"star"},{title:"Passed?",field:"passed",align:"center",formatter:"tickCross"},{title:"Custom",field:"custom",align:"center",formatter:n(17).reactFormatter(a.createElement(function(e){var t=e.cell._cell.row.data;return a.createElement("button",{onClick:function(){return alert(t.name)}},"Show")},null))}],p=[{id:1,name:"Oli Bob",age:"12",color:"red",dob:"01/01/1980",rating:5,passed:!0,pets:["cat","dog"]},{id:2,name:"Mary May",age:"1",color:"green",dob:"12/05/1989",rating:4,passed:!0,pets:["cat"]},{id:3,name:"Christine Lobowski",age:"42",color:"green",dob:"10/05/1985",rating:4,passed:!1},{id:4,name:"Brendon Philips",age:"125",color:"red",dob:"01/08/1980",rating:4.5,passed:!0},{id:5,name:"Margret Marmajuke",age:"16",color:"yellow",dob:"07/01/1999",rating:4,passed:!1},{id:6,name:"Van Ng",age:"37",color:"green",dob:"06/10/1982",rating:4,passed:!0,pets:["dog","fish"]},{id:7,name:"Duc Ng",age:"37",color:"yellow",dob:"10/10/1982",rating:4,passed:!0,pets:["dog"]}],h=((r={})[""]=" ",r.red="red",r.green="green",r.yellow="yellow",r),f=[{title:"Name",field:"name",width:150,editor:"input",headerFilter:"input"},{title:"Age",field:"age",align:"left",formatter:"progress",editor:"progress"},{title:"Favourite Color",field:"color",editor:"select",editorParams:{allowEmpty:!0,showListOnEmpty:!0,values:h},headerFilter:"select",headerFilterParams:{values:h}},{title:"Date Of Birth",field:"dob",editor:l.default,editorParams:{format:"MM/dd/yyyy"}},{title:"Pets",field:"pets",editor:u.default,editorParams:{values:[{id:"cat",name:"cat"},{id:"dog",name:"dog"},{id:"fish",name:"fish"}]},formatter:c.default,formatterParams:{style:"PILL"}},{title:"Passed?",field:"passed",align:"center",formatter:"tickCross",editor:!0}],m=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.state={data:[]},t.ref=null,t.rowClick=function(e,n){console.log("ref table: ",t.ref.table),console.log("rowClick id: ${row.getData().id}",n,e)},t.setData=function(){t.setState({data:p})},t.clearData=function(){t.setState({data:[]})},t}return i(t,e),t.prototype.render=function(){var e=this;return a.createElement("div",null,a.createElement(s.default,{ref:function(t){return e.ref=t},columns:d,data:p,rowClick:this.rowClick,options:{height:150,movableRows:!0},"data-custom-attr":"test-custom-attribute",className:"custom-css-class"}),a.createElement("h3",null,"Asynchronous data: (e.g. fetch) - ",a.createElement("button",{onClick:this.setData},"Set Data")," ",a.createElement("button",{onClick:this.clearData},"Clear")),a.createElement(s.default,{columns:d,data:this.state.data}),a.createElement("h3",null,"Editable Table"),a.createElement(s.default,{columns:f,data:p,cellEdited:function(e){return console.log("cellEdited",e)},dataEdited:function(e){return console.log("dataEdited",e)},footerElement:a.createElement("span",null,"Footer")}),a.createElement("p",null,a.createElement("a",{href:"https://github.com/ngduc/react-tabulator",target:"_blank"},"Back to: Github Repo: react-tabulator")),a.createElement("p",null,a.createElement("a",{href:"http://tabulator.info/examples/4.0",target:"_blank"},"More Tabulator's Examples")))},t}(a.Component);t.default=m},function(e,t,n){"use strict";var o,r=this&&this.__extends||(o=function(e,t){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)},function(e,t){function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});t.__esModule=!0;var i=n(0),a=n(8),s=n(86),l={width:"100%",height:"100%",fontSize:"1em",fontFamily:"inherit"},u=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.state={value:""},t.ref=null,t.format=t.props.editorParams.format||"MM/dd/yyyy",t.setValueOnSuccess=function(e){void 0===e&&(e=t.state.value);var n=t.props.success,o=e;o.indexOf("-")>0&&(o=s.format(e,t.format)),n(o)},t.onChange=function(e){var n=e.target.value;t.setState({value:n})},t.onKeyPress=function(e){var n=t.props.cancel;13===e.keyCode?t.setValueOnSuccess():27===e.keyCode&&n()},t.onBlur=function(){t.setValueOnSuccess()},t}return r(t,e),t.prototype.componentDidMount=function(){var e=this;this.props.onRendered(function(){var t=e.props.cell.getValue();e.setState({value:t}),e.ref.focus()})},t.prototype.render=function(){var e=this,t=this.props.cell,n=s.parse(t.getValue(),this.format,new Date,{awareOfUnicodeTokens:!0}),o=s.format(n,"yyyy-MM-dd");return i.createElement("input",{type:"date",ref:function(t){return e.ref=t},defaultValue:o,onBlur:this.onBlur,onChange:this.onChange,onKeyUp:this.onKeyPress,style:l})},t}(i.Component);t.default=function(e,t,n,o,r){var s=document.createElement("div");return s.style.height="100%",a.render(i.createElement(u,{cell:e,onRendered:t,success:n,cancel:o,editorParams:r}),s),s}},function(e,t,n){"use strict";var o,r=this&&this.__extends||(o=function(e,t){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)},function(e,t){function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});t.__esModule=!0;var i=n(0),a=n(8),s=n(17),l=n(60),u=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.state={value:"",values:[],autofocus:!1},t.ref=null,t.setValueOnSuccess=function(e){void 0===e&&(e=t.state.values);var n=t.props,o=n.success;n.cancel;o(e)},t.handleDelete=function(e){var n=t.state.values.filter(function(t,n){return n!==e});t.setState({values:n},function(){t.setValueOnSuccess(n)})},t.handleAddition=function(e){var n=t.state.values;e.name&&(n.push({id:e.name,name:e.name}),t.setState({values:n},function(){t.setValueOnSuccess(n)}))},t.handleBlur=function(){var e=t.props.cancel,n=t.ref.input.input.value;if(n){var o=s.clone(t.state.values);o.push({id:n,name:n}),t.setValueOnSuccess(o)}else e();var r=a.findDOMNode(t.ref);r&&r.parentElement.parentElement.parentElement&&(r.parentElement.parentElement.parentElement.style.overflow="hidden")},t}return r(t,e),t.prototype.componentDidMount=function(){var e=this;this.props.onRendered(function(){var t=a.findDOMNode(e.ref);t.style.zIndex=1,t.parentElement.parentElement.parentElement.style.overflow="inherit",t.querySelector("input").focus();var n=(e.props.cell.getValue()||[]).map(function(e){return"string"==typeof e?{id:e,name:e}:e});e.setState({values:n})})},t.prototype.render=function(){var e=this,t=this.props.editorParams,n=this.state.values,o=t.values;return i.createElement("div",null,i.createElement(l,{ref:function(t){return e.ref=t},placeholder:"Select or Type",tags:n,suggestions:o,allowNew:!0,autoresize:!0,autofocus:this.state.autofocus,handleAddition:this.handleAddition,handleDelete:this.handleDelete,handleBlur:this.handleBlur,minQueryLength:0}))},t}(i.Component);t.default=function(e,t,n,o,r){var s=document.createElement("div");return s.style.height="100%",a.render(i.createElement(u,{cell:e,onRendered:t,success:n,cancel:o,editorParams:r}),s),s}},function(e,t,n){"use strict";var o=n(0),r=n(2),i=n(61),a=n(62),s=n(63),l=13,u=9,c=8,d=38,p=40,h={root:"react-tags",rootFocused:"is-focused",selected:"react-tags__selected",selectedTag:"react-tags__selected-tag",selectedTagName:"react-tags__selected-tag-name",search:"react-tags__search",searchInput:"react-tags__search-input",suggestions:"react-tags__suggestions",suggestionActive:"is-active",suggestionDisabled:"is-disabled"},f=function(e){function t(t){e.call(this,t),this.state={query:"",focused:!1,expandable:!1,selectedIndex:-1,classNames:Object.assign({},h,this.props.classNames)},this.inputEventHandlers={onChange:function(){},onBlur:this.handleBlur.bind(this),onFocus:this.handleFocus.bind(this),onInput:this.handleInput.bind(this),onKeyDown:this.handleKeyDown.bind(this)}}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.componentWillReceiveProps=function(e){this.setState({classNames:Object.assign({},h,e.classNames)})},t.prototype.handleInput=function(e){var t=e.target.value;this.props.handleInputChange&&this.props.handleInputChange(t),this.setState({query:t})},t.prototype.handleKeyDown=function(e){var t=this.state,n=t.query,o=t.selectedIndex,r=this.props,i=r.delimiters,a=r.delimiterChars;(i.indexOf(e.keyCode)>-1||a.indexOf(e.key)>-1)&&((n||o>-1)&&e.preventDefault(),this.handleDelimiter()),e.keyCode===c&&0===n.length&&this.props.allowBackspace&&this.deleteTag(this.props.tags.length-1),e.keyCode===d&&(e.preventDefault(),o<=0?this.setState({selectedIndex:this.suggestions.state.options.length-1}):this.setState({selectedIndex:o-1})),e.keyCode===p&&(e.preventDefault(),this.setState({selectedIndex:(o+1)%this.suggestions.state.options.length}))},t.prototype.handleDelimiter=function(){var e=this.state,t=e.query,n=e.selectedIndex;if(t.length>=this.props.minQueryLength){var o=this.suggestions.state.options.findIndex(function(e){return 0===e.name.search(new RegExp("^"+t+"$","i"))}),r=-1===n?o:n;r>-1?this.addTag(this.suggestions.state.options[r]):this.props.allowNew&&this.addTag({name:t})}},t.prototype.handleClick=function(e){document.activeElement!==e.target&&this.input.input.focus()},t.prototype.handleBlur=function(){this.setState({focused:!1,selectedIndex:-1}),this.props.handleBlur&&this.props.handleBlur(),this.props.addOnBlur&&this.handleDelimiter()},t.prototype.handleFocus=function(){this.setState({focused:!0}),this.props.handleFocus&&this.props.handleFocus()},t.prototype.addTag=function(e){e.disabled||("function"!=typeof this.props.handleValidate||this.props.handleValidate(e))&&(this.props.handleAddition(e),this.setState({query:"",selectedIndex:-1}))},t.prototype.deleteTag=function(e){this.props.handleDelete(e),this.props.clearInputOnDelete&&""!==this.state.query&&this.setState({query:""})},t.prototype.render=function(){var e=this,t=this.props.tagComponent||i,n=this.props.tags.map(function(n,r){return o.createElement(t,{key:r,tag:n,classNames:e.state.classNames,onDelete:e.deleteTag.bind(e,r)})}),r=this.state.focused&&this.state.query.length>=this.props.minQueryLength,l=[this.state.classNames.root];return this.state.focused&&l.push(this.state.classNames.rootFocused),o.createElement("div",{className:l.join(" "),onClick:this.handleClick.bind(this)},o.createElement("div",{className:this.state.classNames.selected,"aria-live":"polite","aria-relevant":"additions removals"},n),o.createElement("div",{className:this.state.classNames.search},o.createElement(a,Object.assign({},this.state,{inputAttributes:this.props.inputAttributes,inputEventHandlers:this.inputEventHandlers,ref:function(t){e.input=t},listboxId:"ReactTags-listbox",autofocus:this.props.autofocus,autoresize:this.props.autoresize,expandable:r,placeholder:this.props.placeholder})),o.createElement(s,Object.assign({},this.state,{ref:function(t){e.suggestions=t},listboxId:"ReactTags-listbox",expandable:r,suggestions:this.props.suggestions,suggestionsFilter:this.props.suggestionsFilter,addTag:this.addTag.bind(this),maxSuggestionsLength:this.props.maxSuggestionsLength}))))},t}(o.Component);f.defaultProps={tags:[],placeholder:"Add new tag",suggestions:[],suggestionsFilter:null,autofocus:!0,autoresize:!0,delimiters:[u,l],delimiterChars:[],minQueryLength:2,maxSuggestionsLength:6,allowNew:!1,allowBackspace:!0,tagComponent:null,inputAttributes:{},addOnBlur:!1,clearInputOnDelete:!0},f.propTypes={tags:r.arrayOf(r.object),placeholder:r.string,suggestions:r.arrayOf(r.object),suggestionsFilter:r.func,autofocus:r.bool,autoresize:r.bool,delimiters:r.arrayOf(r.number),delimiterChars:r.arrayOf(r.string),handleDelete:r.func.isRequired,handleAddition:r.func.isRequired,handleInputChange:r.func,handleFocus:r.func,handleBlur:r.func,handleValidate:r.func,minQueryLength:r.number,maxSuggestionsLength:r.number,classNames:r.object,allowNew:r.bool,allowBackspace:r.bool,tagComponent:r.oneOfType([r.func,r.element]),inputAttributes:r.object,addOnBlur:r.bool,clearInputOnDelete:r.bool},e.exports=f},function(e,t,n){"use strict";var o=n(0);e.exports=function(e){return o.createElement("button",{type:"button",className:e.classNames.selectedTag,title:"Click to remove tag",onClick:e.onDelete},o.createElement("span",{className:e.classNames.selectedTagName},e.tag.name))}},function(e,t,n){"use strict";var o=n(0),r={position:"absolute",width:0,height:0,visibility:"hidden",overflow:"scroll",whiteSpace:"pre"},i=["fontSize","fontFamily","fontWeight","fontStyle","letterSpacing"],a=function(e){function t(t){e.call(this,t),this.state={inputWidth:null}}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.componentDidMount=function(){this.props.autoresize&&(this.copyInputStyles(),this.updateInputWidth()),this.props.autofocus&&this.input.focus()},t.prototype.componentDidUpdate=function(){this.updateInputWidth()},t.prototype.copyInputStyles=function(){var e=this,t=window.getComputedStyle(this.input);i.forEach(function(n){e.sizer.style[n]=t[n]})},t.prototype.updateInputWidth=function(){var e;this.props.autoresize&&(e=Math.ceil(this.sizer.scrollWidth)+2),e!==this.state.inputWidth&&this.setState({inputWidth:e})},t.prototype.render=function(){var e=this,t=this.props,n=t.inputAttributes,i=t.inputEventHandlers,a=t.query,s=t.placeholder,l=t.expandable,u=t.listboxId,c=t.selectedIndex;return o.createElement("div",{className:this.props.classNames.searchInput},o.createElement("input",Object.assign({},n,i,{ref:function(t){e.input=t},value:a,placeholder:s,role:"combobox","aria-autocomplete":"list","aria-label":s,"aria-owns":u,"aria-activedescendant":c>-1?u+"-"+c:null,"aria-expanded":l,style:{width:this.state.inputWidth}})),o.createElement("div",{ref:function(t){e.sizer=t},style:r},a||s))},t}(o.Component);e.exports=a},function(e,t,n){"use strict";var o=n(0);function r(e){return e.replace(/[-\\^$*+?.()|[\]{}]/g,"\\$&")}function i(e,t){if(t){var n=RegExp(r(t),"gi");e=e.replace(n,"<mark>$&</mark>")}return{__html:e}}function a(e,t,n,o){if(!o){var i=new RegExp("(?:^|\\s)"+r(e),"i");o=function(e){return i.test(e.name)}}return t.filter(function(t){return o(t,e)}).slice(0,n)}var s=function(e){function t(t){e.call(this,t),this.state={options:a(this.props.query,this.props.suggestions,this.props.maxSuggestionsLength,this.props.suggestionsFilter)}}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.componentWillReceiveProps=function(e){this.setState({options:a(e.query,e.suggestions,e.maxSuggestionsLength,e.suggestionsFilter)})},t.prototype.handleMouseDown=function(e,t){t.preventDefault(),this.props.addTag(e)},t.prototype.render=function(){var e=this;if(!this.props.expandable||!this.state.options.length)return null;var t=this.state.options.map(function(t,n){var r=e.props.listboxId+"-"+n,a=[];return e.props.selectedIndex===n&&a.push(e.props.classNames.suggestionActive),t.disabled&&a.push(e.props.classNames.suggestionDisabled),o.createElement("li",{id:r,key:r,role:"option",className:a.join(" "),"aria-disabled":!0===t.disabled,onMouseDown:e.handleMouseDown.bind(e,t)},o.createElement("span",{dangerouslySetInnerHTML:i(t.name,e.props.query)}))});return o.createElement("div",{className:this.props.classNames.suggestions},o.createElement("ul",{role:"listbox",id:this.props.listboxId},t))},t}(o.Component);e.exports=s},function(e,t,n){"use strict";t.__esModule=!0;var o=n(0),r=n(8),i=function(){var e=document.createElement("div");return e.style.height="100%",e};t.default=function(e,t,n){var a=t.style||"",s=e.getValue()||[],l=s&&s.length>0&&"string"==typeof s[0]?o.createElement("span",null,s.join(", ")):o.createElement("span",null);"PILL"===a&&(l=o.createElement("div",null,s.map(function(e){return"string"==typeof e?o.createElement("span",{key:e},e):o.createElement("span",{key:e.name},e.name)})));var u=i();return u.className="multi-value-formatter-content",u.title=s&&s.length>0&&"string"==typeof s[0]?s.join(", "):"",r.render(l,u),u}},function(e,t,n){"use strict";var o=n(6);t.__esModule=!0,t.default=function(e,t){return function(n){var o=n.currentTarget,a=n.target,s=(0,i.default)(o,e);s.some(function(e){return(0,r.default)(e,a)})&&t.call(this,n)}};var r=o(n(34)),i=o(n(12));e.exports=t.default},function(e,t,n){"use strict";var o=n(6);t.__esModule=!0,t.default=function(e){void 0===e&&(e=(0,r.default)());try{return e.activeElement}catch(e){}};var r=o(n(13));e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=a(n(0)),r=n(68),i=a(n(24));function a(e){return e&&e.__esModule?e:{default:e}}t.default=(0,i.default)(function(e,t,n,i,a){var s=e[t];return o.default.isValidElement(s)?new Error("Invalid "+i+" `"+a+"` of type ReactElement supplied to `"+n+"`,expected an element type (a string , component class, or function component)."):(0,r.isValidElementType)(s)?null:new Error("Invalid "+i+" `"+a+"` of value `"+s+"` supplied to `"+n+"`, expected an element type (a string , component class, or function component).")}),e.exports=t.default},function(e,t,n){"use strict";e.exports=n(69)},function(e,t,n){"use strict";
/** @license React v16.8.6
* react-is.production.min.js
*
@@ -85,5 +103,5 @@ function(e){var t,n,r,o,i,a,l,u,s,c,f,d,p,h,m,v,y,g,b,x="sizzle"+1*new Date,w=e.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
- */Object.defineProperty(t,"__esModule",{value:!0});var r="function"==typeof Symbol&&Symbol.for,o=r?Symbol.for("react.element"):60103,i=r?Symbol.for("react.portal"):60106,a=r?Symbol.for("react.fragment"):60107,l=r?Symbol.for("react.strict_mode"):60108,u=r?Symbol.for("react.profiler"):60114,s=r?Symbol.for("react.provider"):60109,c=r?Symbol.for("react.context"):60110,f=r?Symbol.for("react.async_mode"):60111,d=r?Symbol.for("react.concurrent_mode"):60111,p=r?Symbol.for("react.forward_ref"):60112,h=r?Symbol.for("react.suspense"):60113,m=r?Symbol.for("react.memo"):60115,v=r?Symbol.for("react.lazy"):60116;function y(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case o:switch(e=e.type){case f:case d:case a:case u:case l:case h:return e;default:switch(e=e&&e.$$typeof){case c:case p:case s:return e;default:return t}}case v:case m:case i:return t}}}function g(e){return y(e)===d}t.typeOf=y,t.AsyncMode=f,t.ConcurrentMode=d,t.ContextConsumer=c,t.ContextProvider=s,t.Element=o,t.ForwardRef=p,t.Fragment=a,t.Lazy=v,t.Memo=m,t.Portal=i,t.Profiler=u,t.StrictMode=l,t.Suspense=h,t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===a||e===d||e===u||e===l||e===h||"object"==typeof e&&null!==e&&(e.$$typeof===v||e.$$typeof===m||e.$$typeof===s||e.$$typeof===c||e.$$typeof===p)},t.isAsyncMode=function(e){return g(e)||y(e)===f},t.isConcurrentMode=g,t.isContextConsumer=function(e){return y(e)===c},t.isContextProvider=function(e){return y(e)===s},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===o},t.isForwardRef=function(e){return y(e)===p},t.isFragment=function(e){return y(e)===a},t.isLazy=function(e){return y(e)===v},t.isMemo=function(e){return y(e)===m},t.isPortal=function(e){return y(e)===i},t.isProfiler=function(e){return y(e)===u},t.isStrictMode=function(e){return y(e)===l},t.isSuspense=function(e){return y(e)===h}},function(e,t,n){"use strict";var r=n(6);t.__esModule=!0,t.default=void 0;var o=r(n(53));t.addClass=o.default;var i=r(n(54));t.removeClass=i.default;var a=r(n(29));t.hasClass=a.default;var l={addClass:o.default,removeClass:i.default,hasClass:a.default};t.default=l},function(e,t,n){"use strict";var r=n(6);t.__esModule=!0,t.default=function(e,t){e.classList?e.classList.add(t):(0,o.default)(e,t)||("string"==typeof e.className?e.className=e.className+" "+t:e.setAttribute("class",(e.className&&e.className.baseVal||"")+" "+t))};var o=r(n(29));e.exports=t.default},function(e,t,n){"use strict";function r(e,t){return e.replace(new RegExp("(^|\\s)"+t+"(?:\\s|$)","g"),"$1").replace(/\s+/g," ").replace(/^\s*|\s*$/g,"")}e.exports=function(e,t){e.classList?e.classList.remove(t):"string"==typeof e.className?e.className=r(e.className,t):e.setAttribute("class",r(e.className&&e.className.baseVal||"",t))}},function(e,t,n){"use strict";var r=n(6);t.__esModule=!0,t.default=function(e){return(0,o.default)(e).replace(i,"-ms-")};var o=r(n(56)),i=/^ms-/;e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e){return e.replace(r,"-$1").toLowerCase()};var r=/([A-Z])/g;e.exports=t.default},function(e,t,n){"use strict";var r=n(6);t.__esModule=!0,t.default=function(e){if(!e)throw new TypeError("No Element passed to `getComputedStyle()`");var t=e.ownerDocument;return"defaultView"in t?t.defaultView.opener?e.ownerDocument.defaultView.getComputedStyle(e,null):window.getComputedStyle(e,null):{getPropertyValue:function(t){var n=e.style;"float"==(t=(0,o.default)(t))&&(t="styleFloat");var r=e.currentStyle[t]||null;if(null==r&&n&&n[t]&&(r=n[t]),a.test(r)&&!i.test(t)){var l=n.left,u=e.runtimeStyle,s=u&&u.left;s&&(u.left=e.currentStyle.left),n.left="fontSize"===t?"1em":r,r=n.pixelLeft+"px",n.left=l,s&&(u.left=s)}return r}}};var o=r(n(30)),i=/^(top|right|bottom|left)$/,a=/^([+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|))(?!px)[a-z%]+$/i;e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t){return"removeProperty"in e.style?e.style.removeProperty(t):e.style.removeAttribute(t)},e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e){return!(!e||!r.test(e))};var r=/^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i;e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e){return(0,r.default)(e)||(t=e,t&&"body"===t.tagName.toLowerCase())?function(e){var t=(0,o.default)(e),n=(0,r.default)(t);return t.body.clientWidth<n.innerWidth}(e):e.scrollHeight>e.clientHeight;var t};var r=i(n(61)),o=i(n(13));function i(e){return e&&e.__esModule?e:{default:e}}e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e){return e===e.window?e:9===e.nodeType&&(e.defaultView||e.parentWindow)},e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.ariaHidden=i,t.hideSiblings=function(e,t){var n=t.root,r=t.backdrop;o(e,[n,r],function(e){return i(!0,e)})},t.showSiblings=function(e,t){var n=t.root,r=t.backdrop;o(e,[n,r],function(e){return i(!1,e)})};var r=["template","script","style"],o=function(e,t,n){t=[].concat(t),[].forEach.call(e.children,function(e){var o,i,a;-1===t.indexOf(e)&&(i=(o=e).nodeType,a=o.tagName,1===i&&-1===r.indexOf(a.toLowerCase()))&&n(e)})};function i(e,t){t&&(e?t.setAttribute("aria-hidden","true"):t.removeAttribute("aria-hidden"))}},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var r=u(n(1)),o=u(n(20)),i=u(n(0)),a=u(n(10)),l=u(n(64));function u(e){return e&&e.__esModule?e:{default:e}}var s=function(e){var t,n;function r(){return e.apply(this,arguments)||this}return n=e,(t=r).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n,r.prototype.render=function(){var e=this;return this.props.children?i.default.createElement(l.default,{container:this.props.container,onContainerResolved:this.props.onRendered},function(t){return a.default.createPortal(e.props.children,t)}):null},r}(i.default.Component);s.displayName="Portal",s.propTypes={container:r.default.oneOfType([o.default,r.default.func]),onRendered:r.default.func};var c=s;t.default=c,e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var r=c(n(1)),o=c(n(20)),i=c(n(9)),a=c(n(13)),l=c(n(0)),u=c(n(10)),s=c(n(32));function c(e){return e&&e.__esModule?e:{default:e}}function f(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}var d={container:r.default.oneOfType([o.default,r.default.func]),onContainerResolved:r.default.func},p=function(e){var t,n;function r(){for(var t,n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];if(t=e.call.apply(e,[this].concat(r))||this,!i.default)return f(t);var a=t.props.container;return"function"==typeof a&&(a=a()),a&&!u.default.findDOMNode(a)?f(t):(t.setContainer(a),t)}n=e,(t=r).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var o=r.prototype;return o.UNSAFE_componentWillReceiveProps=function(e){e.container!==this.props.container&&this.setContainer(e.container)},o.componentDidMount=function(){this._container?this.props.onContainerResolved&&this.props.onContainerResolved():(this.setContainer(this.props.container),this.forceUpdate(this.props.onContainerResolved))},o.componentWillUnmount=function(){this._container=null},o.setContainer=function(e){this._container=(0,s.default)(e,(0,a.default)().body)},o.render=function(){return this._container?this.props.children(this._container):null},r}(l.default.Component);p.propTypes=d;var h=p;t.default=h,e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e){return(0,o.default)(r.default.findDOMNode(e))};var r=i(n(10)),o=i(n(13));function i(e){return e&&e.__esModule?e:{default:e}}e.exports=t.default},function(e,t){e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},function(t,n,r){"use strict";r.r(n);var o=r(0),i=r.n(o),a=r(10),l=r.n(a),u=r(7),s=r.n(u),c=r(1),f=r.n(c),d=r(2);function p(e){return"/"===e.charAt(0)}function h(e,t){for(var n=t,r=n+1,o=e.length;r<o;n+=1,r+=1)e[n]=e[r];e.pop()}var m=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=e&&e.split("/")||[],r=t&&t.split("/")||[],o=e&&p(e),i=t&&p(t),a=o||i;if(e&&p(e)?r=n:n.length&&(r.pop(),r=r.concat(n)),!r.length)return"/";var l=void 0;if(r.length){var u=r[r.length-1];l="."===u||".."===u||""===u}else l=!1;for(var s=0,c=r.length;c>=0;c--){var f=r[c];"."===f?h(r,c):".."===f?(h(r,c),s++):s&&(h(r,c),s--)}if(!a)for(;s--;s)r.unshift("..");!a||""===r[0]||r[0]&&p(r[0])||r.unshift("");var d=r.join("/");return l&&"/"!==d.substr(-1)&&(d+="/"),d};"function"==typeof Symbol&&Symbol.iterator;var v=!0,y="Invariant failed";var g=function(e,t){if(!e)throw v?new Error(y):new Error(y+": "+(t||""))};function b(e){return"/"===e.charAt(0)?e:"/"+e}function x(e,t){return function(e,t){return new RegExp("^"+t+"(\\/|\\?|#|$)","i").test(e)}(e,t)?e.substr(t.length):e}function w(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function E(e){var t=e.pathname,n=e.search,r=e.hash,o=t||"/";return n&&"?"!==n&&(o+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(o+="#"===r.charAt(0)?r:"#"+r),o}function C(e,t,n,r){var o;"string"==typeof e?(o=function(e){var t=e||"/",n="",r="",o=t.indexOf("#");-1!==o&&(r=t.substr(o),t=t.substr(0,o));var i=t.indexOf("?");return-1!==i&&(n=t.substr(i),t=t.substr(0,i)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e)).state=t:(void 0===(o=Object(d.a)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(e){throw e instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):e}return n&&(o.key=n),r?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=m(o.pathname,r.pathname)):o.pathname=r.pathname:o.pathname||(o.pathname="/"),o}function k(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,o){if(null!=e){var i="function"==typeof e?e(t,n):e;"string"==typeof i?"function"==typeof r?r(i,o):o(!0):o(!1!==i)}else o(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter(function(e){return e!==r})}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];t.forEach(function(e){return e.apply(void 0,n)})}}}var T=!("undefined"==typeof window||!window.document||!window.document.createElement);function S(e,t){t(window.confirm(e))}var _="popstate",O="hashchange";function P(){try{return window.history.state||{}}catch(e){return{}}}function N(e){void 0===e&&(e={}),T||g(!1);var t,n=window.history,r=(-1===(t=window.navigator.userAgent).indexOf("Android 2.")&&-1===t.indexOf("Android 4.0")||-1===t.indexOf("Mobile Safari")||-1!==t.indexOf("Chrome")||-1!==t.indexOf("Windows Phone"))&&window.history&&"pushState"in window.history,o=!(-1===window.navigator.userAgent.indexOf("Trident")),i=e,a=i.forceRefresh,l=void 0!==a&&a,u=i.getUserConfirmation,s=void 0===u?S:u,c=i.keyLength,f=void 0===c?6:c,p=e.basename?w(b(e.basename)):"";function h(e){var t=e||{},n=t.key,r=t.state,o=window.location,i=o.pathname+o.search+o.hash;return p&&(i=x(i,p)),C(i,r,n)}function m(){return Math.random().toString(36).substr(2,f)}var v=k();function y(e){Object(d.a)(H,e),H.length=n.length,v.notifyListeners(H.location,H.action)}function N(e){(function(e){void 0===e.state&&navigator.userAgent.indexOf("CriOS")})(e)||M(h(e.state))}function D(){M(h(P()))}var R=!1;function M(e){if(R)R=!1,y();else{v.confirmTransitionTo(e,"POP",s,function(t){t?y({action:"POP",location:e}):function(e){var t=H.location,n=j.indexOf(t.key);-1===n&&(n=0);var r=j.indexOf(e.key);-1===r&&(r=0);var o=n-r;o&&(R=!0,L(o))}(e)})}}var A=h(P()),j=[A.key];function I(e){return p+E(e)}function L(e){n.go(e)}var F=0;function U(e){1===(F+=e)&&1===e?(window.addEventListener(_,N),o&&window.addEventListener(O,D)):0===F&&(window.removeEventListener(_,N),o&&window.removeEventListener(O,D))}var z=!1;var H={length:n.length,action:"POP",location:A,createHref:I,push:function(e,t){var o=C(e,t,m(),H.location);v.confirmTransitionTo(o,"PUSH",s,function(e){if(e){var t=I(o),i=o.key,a=o.state;if(r)if(n.pushState({key:i,state:a},null,t),l)window.location.href=t;else{var u=j.indexOf(H.location.key),s=j.slice(0,-1===u?0:u+1);s.push(o.key),j=s,y({action:"PUSH",location:o})}else window.location.href=t}})},replace:function(e,t){var o=C(e,t,m(),H.location);v.confirmTransitionTo(o,"REPLACE",s,function(e){if(e){var t=I(o),i=o.key,a=o.state;if(r)if(n.replaceState({key:i,state:a},null,t),l)window.location.replace(t);else{var u=j.indexOf(H.location.key);-1!==u&&(j[u]=o.key),y({action:"REPLACE",location:o})}else window.location.replace(t)}})},go:L,goBack:function(){L(-1)},goForward:function(){L(1)},block:function(e){void 0===e&&(e=!1);var t=v.setPrompt(e);return z||(U(1),z=!0),function(){return z&&(z=!1,U(-1)),t()}},listen:function(e){var t=v.appendListener(e);return U(1),function(){U(-1),t()}}};return H}var D=r(11),R=r.n(D),M=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e};function A(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var j=function(e){function t(){var n,r;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);for(var o=arguments.length,i=Array(o),a=0;a<o;a++)i[a]=arguments[a];return n=r=A(this,e.call.apply(e,[this].concat(i))),r.state={match:r.computeMatch(r.props.history.location.pathname)},A(r,n)}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.getChildContext=function(){return{router:M({},this.context.router,{history:this.props.history,route:{location:this.props.history.location,match:this.state.match}})}},t.prototype.computeMatch=function(e){return{path:"/",url:"/",params:{},isExact:"/"===e}},t.prototype.componentWillMount=function(){var e=this,t=this.props,n=t.children,r=t.history;R()(null==n||1===i.a.Children.count(n),"A <Router> may have only one child element"),this.unlisten=r.listen(function(){e.setState({match:e.computeMatch(r.location.pathname)})})},t.prototype.componentWillReceiveProps=function(e){s()(this.props.history===e.history,"You cannot change <Router history>")},t.prototype.componentWillUnmount=function(){this.unlisten()},t.prototype.render=function(){var e=this.props.children;return e?i.a.Children.only(e):null},t}(i.a.Component);j.propTypes={history:f.a.object.isRequired,children:f.a.node},j.contextTypes={router:f.a.object},j.childContextTypes={router:f.a.object.isRequired};var I=j;function L(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var F=function(e){function t(){var n,r;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);for(var o=arguments.length,i=Array(o),a=0;a<o;a++)i[a]=arguments[a];return n=r=L(this,e.call.apply(e,[this].concat(i))),r.history=N(r.props),L(r,n)}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.componentWillMount=function(){s()(!this.props.history,"<BrowserRouter> ignores the history prop. To use a custom history, use `import { Router }` instead of `import { BrowserRouter as Router }`.")},t.prototype.render=function(){return i.a.createElement(I,{history:this.history,children:this.props.children})},t}(i.a.Component);F.propTypes={basename:f.a.string,forceRefresh:f.a.bool,getUserConfirmation:f.a.func,keyLength:f.a.number,children:f.a.node};var U=F,z=r(36),H=r.n(z),W={},B=0,q=function(e,t){var n=""+t.end+t.strict+t.sensitive,r=W[n]||(W[n]={});if(r[e])return r[e];var o=[],i={re:H()(e,o,t),keys:o};return B<1e4&&(r[e]=i,B++),i},$=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments[2];"string"==typeof t&&(t={path:t});var r=t,o=r.path,i=r.exact,a=void 0!==i&&i,l=r.strict,u=void 0!==l&&l,s=r.sensitive,c=void 0!==s&&s;if(null==o)return n;var f=q(o,{end:a,strict:u,sensitive:c}),d=f.re,p=f.keys,h=d.exec(e);if(!h)return null;var m=h[0],v=h.slice(1),y=e===m;return a&&!y?null:{path:o,url:"/"===o&&""===m?"/":m,isExact:y,params:p.reduce(function(e,t,n){return e[t.name]=v[n],e},{})}};var V=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.componentWillMount=function(){R()(this.context.router,"You should not use <Switch> outside a <Router>")},t.prototype.componentWillReceiveProps=function(e){s()(!(e.location&&!this.props.location),'<Switch> elements should not change from uncontrolled to controlled (or vice versa). You initially used no "location" prop and then provided one on a subsequent render.'),s()(!(!e.location&&this.props.location),'<Switch> elements should not change from controlled to uncontrolled (or vice versa). You provided a "location" prop initially but omitted it on a subsequent render.')},t.prototype.render=function(){var e=this.context.router.route,t=this.props.children,n=this.props.location||e.location,r=void 0,o=void 0;return i.a.Children.forEach(t,function(t){if(null==r&&i.a.isValidElement(t)){var a=t.props,l=a.path,u=a.exact,s=a.strict,c=a.sensitive,f=a.from,d=l||f;o=t,r=$(n.pathname,{path:d,exact:u,strict:s,sensitive:c},e.match)}}),r?i.a.cloneElement(o,{location:n,computedMatch:r}):null},t}(i.a.Component);V.contextTypes={router:f.a.shape({route:f.a.object.isRequired}).isRequired},V.propTypes={children:f.a.node,location:f.a.object};var G=V,K=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e};function Q(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var Y=function(e){return 0===i.a.Children.count(e)},X=function(e){function t(){var n,r;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);for(var o=arguments.length,i=Array(o),a=0;a<o;a++)i[a]=arguments[a];return n=r=Q(this,e.call.apply(e,[this].concat(i))),r.state={match:r.computeMatch(r.props,r.context.router)},Q(r,n)}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.getChildContext=function(){return{router:K({},this.context.router,{route:{location:this.props.location||this.context.router.route.location,match:this.state.match}})}},t.prototype.computeMatch=function(e,t){var n=e.computedMatch,r=e.location,o=e.path,i=e.strict,a=e.exact,l=e.sensitive;if(n)return n;R()(t,"You should not use <Route> or withRouter() outside a <Router>");var u=t.route,s=(r||u.location).pathname;return $(s,{path:o,strict:i,exact:a,sensitive:l},u.match)},t.prototype.componentWillMount=function(){s()(!(this.props.component&&this.props.render),"You should not use <Route component> and <Route render> in the same route; <Route render> will be ignored"),s()(!(this.props.component&&this.props.children&&!Y(this.props.children)),"You should not use <Route component> and <Route children> in the same route; <Route children> will be ignored"),s()(!(this.props.render&&this.props.children&&!Y(this.props.children)),"You should not use <Route render> and <Route children> in the same route; <Route children> will be ignored")},t.prototype.componentWillReceiveProps=function(e,t){s()(!(e.location&&!this.props.location),'<Route> elements should not change from uncontrolled to controlled (or vice versa). You initially used no "location" prop and then provided one on a subsequent render.'),s()(!(!e.location&&this.props.location),'<Route> elements should not change from controlled to uncontrolled (or vice versa). You provided a "location" prop initially but omitted it on a subsequent render.'),this.setState({match:this.computeMatch(e,t.router)})},t.prototype.render=function(){var e=this.state.match,t=this.props,n=t.children,r=t.component,o=t.render,a=this.context.router,l=a.history,u=a.route,s=a.staticContext,c={match:e,location:this.props.location||u.location,history:l,staticContext:s};return r?e?i.a.createElement(r,c):null:o?e?o(c):null:"function"==typeof n?n(c):n&&!Y(n)?i.a.Children.only(n):null},t}(i.a.Component);X.propTypes={computedMatch:f.a.object,path:f.a.string,exact:f.a.bool,strict:f.a.bool,sensitive:f.a.bool,component:f.a.func,render:f.a.func,children:f.a.oneOfType([f.a.func,f.a.node]),location:f.a.object},X.contextTypes={router:f.a.shape({history:f.a.object.isRequired,route:f.a.object.isRequired,staticContext:f.a.object})},X.childContextTypes={router:f.a.object.isRequired};var J=X;function Z(e,t){if(null==e)throw"LogTools: sender not set";console.log(e+": "+t)}var ee=r(5),te=r.n(ee);function ne(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class re{}ne(re,"RooDirectoryID",-1),ne(re,"upload_chunk_size",102400);var oe=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e};function ie(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var ae=function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)},le=function(e){function t(){var n,r;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);for(var o=arguments.length,i=Array(o),a=0;a<o;a++)i[a]=arguments[a];return n=r=ie(this,e.call.apply(e,[this].concat(i))),r.handleClick=function(e){if(r.props.onClick&&r.props.onClick(e),!e.defaultPrevented&&0===e.button&&!r.props.target&&!ae(e)){e.preventDefault();var t=r.context.router.history,n=r.props,o=n.replace,i=n.to;o?t.replace(i):t.push(i)}},ie(r,n)}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.render=function(){var e=this.props,t=(e.replace,e.to),n=e.innerRef,r=function(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}(e,["replace","to","innerRef"]);R()(this.context.router,"You should not use <Link> outside a <Router>"),R()(void 0!==t,'You must specify the "to" property');var o=this.context.router.history,a="string"==typeof t?C(t,null,null,o.location):t,l=o.createHref(a);return i.a.createElement("a",oe({},r,{onClick:this.handleClick,href:l,ref:n}))},t}(i.a.Component);le.propTypes={onClick:f.a.func,target:f.a.string,replace:f.a.bool,to:f.a.oneOfType([f.a.string,f.a.object]).isRequired,innerRef:f.a.oneOfType([f.a.string,f.a.func])},le.defaultProps={replace:!1},le.contextTypes={router:f.a.shape({history:f.a.shape({push:f.a.func.isRequired,replace:f.a.func.isRequired,createHref:f.a.func.isRequired}).isRequired}).isRequired};var ue=le;function se(e,t,n){return Z("ApiQuery","query to "+e),fetch(e,{method:t,headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify(n)}).then(function(e){return e.json()})}class ce{constructor(){this.URL_Auth="api/Auth/Auth",this.URL_UserInfo="api/Auth/UserInfo",this.AuthCoockieName="AuthToken"}async AuthAsync(e,t){return await se(this.URL_Auth,"Post",{Login:e,Password:t}).then(function(e){return e.Successe?this._SetTocken(e.Token):this._SetTocken(""),e}.bind(this))}Logout(){this._SetTocken("")}async GetUserInfoAsync(){return await se(this.URL_UserInfo,"Post").then(function(e){return e.Successe?this._SetTocken(e.Token):this._SetTocken(""),e}.bind(this))}IsAuth(){return""!=this._GetTocken()}_getCookie(e){let t=document.cookie.match(new RegExp("(?:^|; )"+e.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g,"\\$1")+"=([^;]*)"));return t?decodeURIComponent(t[1]):""}_GetTocken(){return this._getCookie(this.AuthCoockieName)}_SetTocken(e){document.cookie=this.AuthCoockieName+"="+e}}class fe extends i.a.Component{constructor(e){super(e),te()(this),Z("MenuControl","start"),this.authServices=new ce}OnAuthChange(){this.forceUpdate()}render(){return i.a.createElement("div",null,i.a.createElement("table",null,i.a.createElement("thead",null,i.a.createElement("tr",null,i.a.createElement("td",null,"Menu:"),i.a.createElement("td",null,i.a.createElement(ue,{to:"/"},i.a.createElement("button",null,"FS"))),this.authServices.IsAuth()?i.a.createElement("td",null,i.a.createElement(ue,{to:"/Admin"},i.a.createElement("button",null,"Admin"))):i.a.createElement("td",null)))))}}var de=r(4),pe=r(3),he=r.n(pe),me=r(21),ve=r.n(me),ye=r(8),ge=r(33),be=r.n(ge),xe=i.a.createContext(new Map),we=(xe.Consumer,xe.Provider);function Ee(e,t){var n=Object(o.useContext)(xe);return e||n.get(t)||t}i.a.Component;var Ce=function(e){return e[0].toUpperCase()+ve()(e).slice(1)};function ke(e,t){var n=void 0===t?{}:t,r=n.displayName,o=void 0===r?Ce(e):r,a=n.Component,l=void 0===a?"div":a,u=n.defaultProps,s=i.a.forwardRef(function(t,n){var r=t.className,o=t.bsPrefix,a=t.as,u=void 0===a?l:a,s=Object(de.a)(t,["className","bsPrefix","as"]),c=Ee(o,e);return i.a.createElement(u,Object(d.a)({ref:n,className:he()(r,c)},s))});return s.defaultProps=u,s.displayName=o,s}var Te=i.a.createContext({controlId:void 0}),Se=i.a.forwardRef(function(e,t){var n=e.bsPrefix,r=e.className,a=e.children,l=e.controlId,u=e.as,s=void 0===u?"div":u,c=Object(de.a)(e,["bsPrefix","className","children","controlId","as"]);n=Ee(n,"form-group");var f=Object(o.useMemo)(function(){return{controlId:l}},[l]);return i.a.createElement(Te.Provider,{value:f},i.a.createElement(s,Object(d.a)({},c,{ref:t,className:he()(r,n)}),a))});Se.displayName="FormGroup";var _e=Se,Oe={type:f.a.string.isRequired,as:f.a.elementType},Pe=i.a.forwardRef(function(e,t){var n=e.as,r=void 0===n?"div":n,o=e.className,a=e.type,l=Object(de.a)(e,["as","className","type"]);return i.a.createElement(r,Object(d.a)({},l,{ref:t,className:he()(o,a&&a+"-feedback")}))});Pe.displayName="Feedback",Pe.propTypes=Oe,Pe.defaultProps={type:"valid"};var Ne=Pe,De=i.a.forwardRef(function(e,t){var n,r,a=e.bsPrefix,l=e.type,u=e.size,s=e.id,c=e.className,f=e.isValid,p=e.isInvalid,h=e.plaintext,m=e.readOnly,v=e.as,y=void 0===v?"input":v,g=Object(de.a)(e,["bsPrefix","type","size","id","className","isValid","isInvalid","plaintext","readOnly","as"]),b=Object(o.useContext)(Te).controlId;if(a=Ee(a,"form-control"),h)(r={})[a+"-plaintext"]=!0,n=r;else if("file"===l){var x;(x={})[a+"-file"]=!0,n=x}else{var w;(w={})[a]=!0,w[a+"-"+u]=u,n=w}return i.a.createElement(y,Object(d.a)({},g,{type:l,ref:t,readOnly:m,id:s||b,className:he()(c,n,f&&"is-valid",p&&"is-invalid")}))});De.displayName="FormControl",De.Feedback=Ne;var Re=De,Me=i.a.forwardRef(function(e,t){var n=e.id,r=e.bsPrefix,a=e.className,l=e.isValid,u=e.isInvalid,s=e.isStatic,c=Object(de.a)(e,["id","bsPrefix","className","isValid","isInvalid","isStatic"]);r=Ee(r,"form-check-input");var f=Object(o.useContext)(Te),p=f.controlId,h=f.custom;return i.a.createElement("input",Object(d.a)({},c,{ref:t,id:n||p,className:he()(a,!h&&r,h&&"custom-control-input",l&&"is-valid",u&&"is-invalid",s&&"position-static")}))});Me.displayName="FormCheckInput",Me.defaultProps={type:"checkbox"};var Ae=Me,je=i.a.forwardRef(function(e,t){var n=e.bsPrefix,r=e.className,a=e.htmlFor,l=Object(de.a)(e,["bsPrefix","className","htmlFor"]);n=Ee(n,"form-check-label");var u=Object(o.useContext)(Te),s=u.controlId,c=u.custom;return i.a.createElement("label",Object(d.a)({},l,{ref:t,htmlFor:a||s,className:he()(r,!c&&n,c&&"custom-control-label")}))});je.displayName="FormCheckLabel",je.defaultProps={type:"checkbox"};var Ie=je,Le=i.a.forwardRef(function(e,t){var n=e.id,r=e.bsPrefix,a=e.inline,l=e.disabled,u=e.isValid,s=e.isInvalid,c=e.feedback,f=e.className,p=e.style,h=e.title,m=e.type,v=e.label,y=e.children,g=e.custom,b=Object(de.a)(e,["id","bsPrefix","inline","disabled","isValid","isInvalid","feedback","className","style","title","type","label","children","custom"]);r=Ee(r,"form-check");var x=Object(o.useContext)(Te).controlId,w=Object(o.useMemo)(function(){return{controlId:n||x,custom:g}},[x,g,n]),E=null!=v&&!1!==v&&!y,C=i.a.createElement(Ae,Object(d.a)({},b,{type:m,ref:t,isValid:u,isInvalid:s,isStatic:!E,disabled:l}));return i.a.createElement(Te.Provider,{value:w},i.a.createElement("div",{style:p,className:he()(f,!g&&r,g&&"custom-control custom-"+m,a&&(g?"custom-control":r)+"-inline")},y||i.a.createElement(i.a.Fragment,null,C,E&&i.a.createElement(Ie,{title:h},v),(u||s)&&i.a.createElement(Ne,{type:u?"valid":"invalid"},c))))});Le.displayName="FormCheck",Le.defaultProps={type:"checkbox",inline:!1,disabled:!1,isValid:!1,isInvalid:!1,title:""},Le.Input=Ae,Le.Label=Ie;var Fe=Le,Ue=["xl","lg","md","sm","xs"],ze=i.a.forwardRef(function(e,t){var n=e.bsPrefix,r=e.className,o=e.as,a=void 0===o?"div":o,l=Object(de.a)(e,["bsPrefix","className","as"]),u=Ee(n,"col"),s=[],c=[];return Ue.forEach(function(e){var t,n,r,o=l[e];if(delete l[e],null!=o&&"object"==typeof o){var i=o.span;t=void 0===i||i,n=o.offset,r=o.order}else t=o;var a="xs"!==e?"-"+e:"";null!=t&&s.push(!0===t?""+u+a:""+u+a+"-"+t),null!=r&&c.push("order"+a+"-"+r),null!=n&&c.push("offset"+a+"-"+n)}),s.length||s.push(u),i.a.createElement(a,Object(d.a)({},l,{ref:t,className:he.a.apply(void 0,[r].concat(s,c))}))});ze.displayName="Col";var He=ze,We=i.a.forwardRef(function(e,t){var n=e.bsPrefix,r=e.column,a=e.srOnly,l=e.className,u=e.htmlFor,s=Object(de.a)(e,["bsPrefix","column","srOnly","className","htmlFor"]),c=Object(o.useContext)(Te).controlId;n=Ee(n,"form-label");var f=he()(l,n,a&&"sr-only",r&&"col-form-label");return u=u||c,r?i.a.createElement(He,Object(d.a)({as:"label",className:f,htmlFor:u},s)):i.a.createElement("label",Object(d.a)({ref:t,className:f,htmlFor:u},s))});We.displayName="FormLabel",We.defaultProps={column:!1,srOnly:!1};var Be=We,qe=i.a.forwardRef(function(e,t){var n=e.bsPrefix,r=e.className,o=e.as,a=void 0===o?"small":o,l=e.muted,u=Object(de.a)(e,["bsPrefix","className","as","muted"]);return n=Ee(n,"form-text"),i.a.createElement(a,Object(d.a)({},u,{ref:t,className:he()(r,n,l&&"text-muted")}))});qe.displayName="FormText";var $e=qe,Ve=i.a.forwardRef(function(e,t){var n=e.bsPrefix,r=e.inline,o=e.className,a=e.validated,l=e.as,u=void 0===l?"form":l,s=Object(de.a)(e,["bsPrefix","inline","className","validated","as"]);return n=Ee(n,"form"),i.a.createElement(u,Object(d.a)({},s,{ref:t,className:he()(o,a&&"was-validated",r&&n+"-inline")}))});Ve.displayName="Form",Ve.defaultProps={inline:!1},Ve.Row=ke("form-row"),Ve.Group=_e,Ve.Control=Re,Ve.Check=Fe,Ve.Label=Be,Ve.Text=$e;var Ge=Ve,Ke=r(16),Qe=r.n(Ke);class Ye{static Sho(e,t){let n=new Date,r=n.getHours()+":"+n.getMinutes()+":"+n.getSeconds()+" | "+e;Qe.a.success(r,t,{timeOut:3e3,progressBar:!0,closeButton:!0})}static MesOk(e,t){let n=new Date,r=n.getHours()+":"+n.getMinutes()+":"+n.getSeconds()+" | "+e;Qe.a.success(r,t,{closeButton:!0,progressBar:!0})}static MesOk_NoHide(e,t){let n=new Date,r=n.getHours()+":"+n.getMinutes()+":"+n.getSeconds()+" | "+e;Qe.a.success(r,t,{timeOut:-1,closeButton:!0,progressBar:!0})}static MesEr(e,t){let n=new Date,r=n.getHours()+":"+n.getMinutes()+":"+n.getSeconds()+" | "+e;Qe.a.error(r,t,{timeOut:-1,closeButton:!0})}}class Xe extends i.a.Component{constructor(e){super(e),te()(this),Z("UserControl","start"),this.state={UserName:""},this.authServices=new ce,this.authServices.IsAuth()&&this.authServices.GetUserInfoAsync().then(function(e){e.Successe?(this.setState({UserName:e.UserName}),this.props.ParentComponent.OnAuthChange()):(this.setState({UserName:""}),Ye.MesEr(e.ResMessage,"Auth"))}.bind(this))}AuthClick(){let e=this.refs.Login.value,t=this.refs.Password.value;this.authServices.AuthAsync(e,t).then(function(e){e.Successe?(this.setState({UserName:e.UserName}),this.props.ParentComponent.OnAuthChange()):(this.setState({UserName:""}),Ye.MesEr(e.ResMessage,"Auth"))}.bind(this))}LogoutClick(){this.authServices.Logout(),this.setState({UserName:""}),this.props.ParentComponent.OnAuthChange()}render(){let e=this.state;return i.a.createElement("div",null,this.authServices.IsAuth()?i.a.createElement("div",null,i.a.createElement("p",null,"Вы авторизованы. Пользователь: ",e.UserName,"."),i.a.createElement("button",{onClick:this.LogoutClick},"Logout")):i.a.createElement("div",null,i.a.createElement("p",null,"Вы не авторизованы ",e.UserName,". Вход:"),i.a.createElement(Ge.Control,{ref:"Login",type:"text",placeholder:"Enter login"}),i.a.createElement(Ge.Text,{className:"text-muted"},"We'll never share your login with anyone else."),i.a.createElement("br",null),i.a.createElement(Ge.Control,{ref:"Password",type:"password",placeholder:"Password"}),i.a.createElement("br",null),i.a.createElement("button",{onClick:this.AuthClick},"Auth")))}}class Je{constructor(){this.URL_DirectoryItems="api/Explorer/GetDirectoryItems?ID=",this.URL_ScanDirectory="api/Explorer/ScanDirectory?ID=",this.URL_Delete="api/Explorer/DeleteFile",this.URL_Move="api/Explorer/MoveElement",this.URL_Download="api/Explorer/GetFile?ID=",this.URL_CreateDirectory="api/Explorer/CreateDirectory?"}async DirectoryGetItemsAsync(e){let t=this.URL_DirectoryItems+e;return await se(t,"Get")}async ScanDirectoryAsync(e){let t=this.URL_ScanDirectory+e;return await se(t,"Get")}async DeleteAsync(e){return await se(this.URL_Delete,"POST",{ID:e})}async MoveAsync(e,t){return await se(this.URL_Move,"POST",{ID:e,NewParent:t})}OpenDownload(e){let t=this.URL_Download+e;window.open(t,"_blank")}async CreateDirectoryAsync(e,t){return await se(this.URL_CreateDirectory,"POST",{ParentID:t,Name:e})}}function Ze(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}var et=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.filter(function(e){return null!=e}).reduce(function(e,t){if("function"!=typeof t)throw new Error("Invalid Argument Type, must only provide functions, undefined, or null.");return null===e?t:function(){for(var n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];e.apply(this,r),t.apply(this,r)}},null)};function tt(e){return!e||"#"===e.trim()}var nt=function(e){function t(t,n){var r;return(r=e.call(this,t,n)||this).handleClick=r.handleClick.bind(Ze(r)),r.handleKeyDown=r.handleKeyDown.bind(Ze(r)),r}Object(ye.a)(t,e);var n=t.prototype;return n.handleClick=function(e){var t=this.props,n=t.disabled,r=t.href,o=t.onClick;(n||tt(r))&&e.preventDefault(),n?e.stopPropagation():o&&o(e)},n.handleKeyDown=function(e){" "===e.key&&(e.preventDefault(),this.handleClick(e))},n.render=function(){var e=this.props,t=e.as,n=void 0===t?"a":t,r=e.disabled,o=e.onKeyDown,a=e.innerRef,l=Object(de.a)(e,["as","disabled","onKeyDown","innerRef"]);return tt(l.href)&&(l.role=l.role||"button",l.href=l.href||"#"),r&&(l.tabIndex=-1,l["aria-disabled"]=!0),a&&(l.ref=a),i.a.createElement(n,Object(d.a)({},l,{onClick:this.handleClick,onKeyDown:et(this.handleKeyDown,o)}))},t}(i.a.Component),rt=i.a.forwardRef(function(e,t){var n=e.bsPrefix,r=e.variant,o=e.size,a=e.active,l=e.className,u=e.block,s=e.type,c=e.as,f=Object(de.a)(e,["bsPrefix","variant","size","active","className","block","type","as"]),p=Ee(n,"btn"),h=he()(l,p,a&&"active",p+"-"+r,u&&p+"-block",o&&p+"-"+o);if(f.href)return i.a.createElement(nt,Object(d.a)({},f,{as:c,innerRef:t,className:he()(h,f.disabled&&"disabled")}));var m=c||"button";return t&&(f.ref=t),i.a.createElement(m,Object(d.a)({},f,{type:s,className:h}))});rt.displayName="Button",rt.defaultProps={variant:"primary",active:!1,disabled:!1,type:"button"};var ot=rt;class it extends i.a.Component{constructor(e){super(e),te()(this),Z("FileExplorerRow "+this.props.ID,"start"),this.state={ID:this.props.ID,Data:this.props.data,ShoSelect:this.props.ShoSelect}}componentWillReceiveProps(e){this.props=e,null!=this.refs.Select&&(this.refs.Select.checked=!1),this.setState({ID:this.props.ID,Data:this.props.data,ShoSelect:this.props.ShoSelect})}GetDate(){return this.state.Data}GetRowID(){return this.state.ID}GetDataID(){return this.state.Data.ID}IsCheked(){return null!=this.refs.Select&&this.refs.Select.checked}OnDirectoryClick(){this.props.ParentComponent.OnDirectoryClick(this.GetDataID())}render(){let e=this.state,t=e.Data;return i.a.createElement("tr",null,i.a.createElement("td",null,t.ID),e.ShoSelect?i.a.createElement("td",null,i.a.createElement("input",{ref:"Select",type:"checkbox"})):null,"RootDirectory"===t.Type||"Directory"===t.Type?i.a.createElement("td",null,i.a.createElement(ue,{to:`/?ID=${t.ID}`},i.a.createElement(ot,{id:t.ID,onClick:this.OnDirectoryClick,variant:"outline-dark"},t.Name))):i.a.createElement("td",null,t.Name),i.a.createElement("td",null,t.Type),i.a.createElement("td",null,t.Size))}}class at extends i.a.Component{constructor(e){super(e),te()(this),Z("FileExplorerControl","start"),this.state={data:{},ShoSelect:this.props.ShoSelect},this.ChildRows=[],this.fileExplorerServices=new Je,this.LoadDirectory()}OnBackClick(e){this.props.ParentComponent.SetID(this.state.data.ParentID),Z("FileExplorerControl","OnBackClick "+this.state.data.ParentID),this.LoadDirectory()}OnDirectoryClick(e){this.props.ParentComponent.SetID(e),Z("FileExplorerControl","MoveToDirectory "+e),this.LoadDirectory()}OnSortClick(e){let t=e.target.attributes[0].value,n=this.state.data;n.items.sort(function(e,t){var n,r,o=arguments.length;if(0===o)return(e,t)=>(e<t?-1:e>t&&1)||0;if(1===o)switch(typeof e){case"number":return e<0?(e,t)=>(e<t?1:e>t&&-1)||0:(e,t)=>(e<t?-1:e>t&&1)||0;case"string":return(t,n)=>(t[e]<n[e]?-1:t[e]>n[e]&&1)||0}if(2===o&&"number"==typeof t)return t<0?(t,n)=>(t[e]<n[e]?1:t[e]>n[e]&&-1)||0:(t,n)=>(t[e]<n[e]?-1:t[e]>n[e]&&1)||0;if("object"==typeof e)n=Object.getOwnPropertyNames(e),r=n.map(t=>e[t]),o=n.length;else{n=new Array(o),r=new Array(o);for(let e=o;e--;)n[e]=arguments[e],r[e]=1}return(e,t)=>{for(let i=0;i<o;i++){if(e[n[i]]<t[n[i]])return r[i];if(e[n[i]]>t[n[i]])return-r[i]}return 0}}(t,1)),this.setState({data:n})}LoadDirectory(){let e=this.props.ParentComponent.GetID();Z("FileExplorerControl","LoadDirectory "+e),this.fileExplorerServices.DirectoryGetItemsAsync(e).then(function(t){this.setState({data:t,ShoSelect:!(!this.props.ShoSelect||-1==e)})}.bind(this))}OnScanDirClick(e){let t=this.props.ParentComponent.GetID();Z("FileExplorerControl","ScanDirectory "+t),this.fileExplorerServices.ScanDirectoryAsync(t).then(function(e){this.LoadDirectory()}.bind(this))}GetSelectedID(){return this.ChildRows.filter(e=>e.IsCheked()).map(e=>e.GetDataID())}render(){let e=this.state.data;return"{}"!==JSON.stringify(e)?(Z("FileExplorerControl","Data"),i.a.createElement("div",null,this.props.ParentComponent.GetID()!=re.RooDirectoryID?i.a.createElement("p",null,i.a.createElement(ue,{to:`/?ID=${e.ParentID}`},i.a.createElement("button",{onClick:this.OnBackClick},"l- На уровень вверх - ",e.ParentName))):null,i.a.createElement("p",null,e.LogicPath),i.a.createElement("p",null,i.a.createElement("button",{onClick:this.LoadDirectory},"Update"),i.a.createElement("button",{onClick:this.OnScanDirClick},"Rescan")),i.a.createElement("table",null,i.a.createElement("thead",null,i.a.createElement("tr",null,i.a.createElement("th",null,i.a.createElement("button",{property:"ID",onClick:this.OnSortClick},"ID")),this.state.ShoSelect?i.a.createElement("th",null,"Select"):null,i.a.createElement("th",null,i.a.createElement("button",{property:"Name",onClick:this.OnSortClick},"Name")),i.a.createElement("th",null,i.a.createElement("button",{property:"Type",onClick:this.OnSortClick},"Type")),i.a.createElement("th",null,i.a.createElement("button",{property:"Size",onClick:this.OnSortClick},"Size")))),i.a.createElement("tbody",null,e.items.map(function(e,t,n){return[i.a.createElement(it,{ref:e=>{null!=e?this.ChildRows[t]=e:this.ChildRows.splice(t,1)},ShoSelect:this.state.ShoSelect,key:t,ID:t,data:e,ParentComponent:this})]}.bind(this)))))):(Z("FileExplorerControl","NoData"),i.a.createElement("div",null,i.a.createElement("p",null,"NoData")))}}var lt=r(17),ut=r.n(lt),st=r(13),ct=r.n(st),ft=r(9),dt=r.n(ft),pt=r(14),ht=r.n(pt),mt=r(34),vt=r.n(mt),yt=!1,gt=i.a.createContext(null),bt="unmounted",xt="exited",wt="entering",Et="entered",Ct=function(e){function t(t,n){var r;r=e.call(this,t,n)||this;var o,i=n&&!n.isMounting?t.enter:t.appear;return r.appearStatus=null,t.in?i?(o=xt,r.appearStatus=wt):o=Et:o=t.unmountOnExit||t.mountOnEnter?bt:xt,r.state={status:o},r.nextCallback=null,r}Object(ye.a)(t,e),t.getDerivedStateFromProps=function(e,t){return e.in&&t.status===bt?{status:xt}:null};var n=t.prototype;return n.componentDidMount=function(){this.updateStatus(!0,this.appearStatus)},n.componentDidUpdate=function(e){var t=null;if(e!==this.props){var n=this.state.status;this.props.in?n!==wt&&n!==Et&&(t=wt):n!==wt&&n!==Et||(t="exiting")}this.updateStatus(!1,t)},n.componentWillUnmount=function(){this.cancelNextCallback()},n.getTimeouts=function(){var e,t,n,r=this.props.timeout;return e=t=n=r,null!=r&&"number"!=typeof r&&(e=r.exit,t=r.enter,n=void 0!==r.appear?r.appear:t),{exit:e,enter:t,appear:n}},n.updateStatus=function(e,t){if(void 0===e&&(e=!1),null!==t){this.cancelNextCallback();var n=l.a.findDOMNode(this);t===wt?this.performEnter(n,e):this.performExit(n)}else this.props.unmountOnExit&&this.state.status===xt&&this.setState({status:bt})},n.performEnter=function(e,t){var n=this,r=this.props.enter,o=this.context?this.context.isMounting:t,i=this.getTimeouts(),a=o?i.appear:i.enter;!t&&!r||yt?this.safeSetState({status:Et},function(){n.props.onEntered(e)}):(this.props.onEnter(e,o),this.safeSetState({status:wt},function(){n.props.onEntering(e,o),n.onTransitionEnd(e,a,function(){n.safeSetState({status:Et},function(){n.props.onEntered(e,o)})})}))},n.performExit=function(e){var t=this,n=this.props.exit,r=this.getTimeouts();n&&!yt?(this.props.onExit(e),this.safeSetState({status:"exiting"},function(){t.props.onExiting(e),t.onTransitionEnd(e,r.exit,function(){t.safeSetState({status:xt},function(){t.props.onExited(e)})})})):this.safeSetState({status:xt},function(){t.props.onExited(e)})},n.cancelNextCallback=function(){null!==this.nextCallback&&(this.nextCallback.cancel(),this.nextCallback=null)},n.safeSetState=function(e,t){t=this.setNextCallback(t),this.setState(e,t)},n.setNextCallback=function(e){var t=this,n=!0;return this.nextCallback=function(r){n&&(n=!1,t.nextCallback=null,e(r))},this.nextCallback.cancel=function(){n=!1},this.nextCallback},n.onTransitionEnd=function(e,t,n){this.setNextCallback(n);var r=null==t&&!this.props.addEndListener;e&&!r?(this.props.addEndListener&&this.props.addEndListener(e,this.nextCallback),null!=t&&setTimeout(this.nextCallback,t)):setTimeout(this.nextCallback,0)},n.render=function(){var e=this.state.status;if(e===bt)return null;var t=this.props,n=t.children,r=Object(de.a)(t,["children"]);if(delete r.in,delete r.mountOnEnter,delete r.unmountOnExit,delete r.appear,delete r.enter,delete r.exit,delete r.timeout,delete r.addEndListener,delete r.onEnter,delete r.onEntering,delete r.onEntered,delete r.onExit,delete r.onExiting,delete r.onExited,"function"==typeof n)return i.a.createElement(gt.Provider,{value:null},n(e,r));var o=i.a.Children.only(n);return i.a.createElement(gt.Provider,{value:null},i.a.cloneElement(o,r))},t}(i.a.Component);function kt(){}Ct.contextType=gt,Ct.propTypes={},Ct.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1,enter:!0,exit:!0,onEnter:kt,onEntering:kt,onEntered:kt,onExit:kt,onExiting:kt,onExited:kt},Ct.UNMOUNTED=0,Ct.EXITED=1,Ct.ENTERING=2,Ct.ENTERED=3,Ct.EXITING=4;var Tt,St=Ct,_t=r(35),Ot=r.n(_t);var Pt=((Tt={})[wt]="show",Tt[Et]="show",Tt),Nt=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];return(t=e.call.apply(e,[this].concat(r))||this).handleEnter=function(e){!function(e){e.offsetHeight}(e),t.props.onEnter&&t.props.onEnter(e)},t}return Object(ye.a)(t,e),t.prototype.render=function(){var e=this.props,t=e.className,n=e.children,r=Object(de.a)(e,["className","children"]);return i.a.createElement(St,Object(d.a)({addEndListener:Ot.a},r,{onEnter:this.handleEnter}),function(e,r){return i.a.cloneElement(n,Object(d.a)({},r,{className:he()("fade",t,n.props.className,Pt[e])}))})},t}(i.a.Component);Nt.defaultProps={in:!1,timeout:300,mountOnEnter:!1,unmountOnExit:!1,appear:!1};var Dt=Nt,Rt=ke("modal-body"),Mt=i.a.forwardRef(function(e,t){var n=e.bsPrefix,r=e.className,o=e.centered,a=e.size,l=e.children,u=e.scrollable,s=Object(de.a)(e,["bsPrefix","className","centered","size","children","scrollable"]),c=(n=Ee(n,"modal"))+"-dialog";return i.a.createElement("div",Object(d.a)({},s,{ref:t,className:he()(c,r,a&&n+"-"+a,o&&c+"-centered",u&&c+"-scrollable")}),i.a.createElement("div",{className:he()(n+"-content")},l))});Mt.displayName="ModalDialog";var At=Mt,jt=ke("modal-footer");var It=function(e){var t=Object(o.useRef)(e);return Object(o.useEffect)(function(){t.current=e},[e]),t};var Lt={label:f.a.string.isRequired,onClick:f.a.func},Ft=i.a.forwardRef(function(e,t){var n=e.label,r=e.onClick,o=e.className,a=Object(de.a)(e,["label","onClick","className"]);return i.a.createElement("button",Object(d.a)({ref:t,type:"button",className:he()("close",o),onClick:r},a),i.a.createElement("span",{"aria-hidden":"true"},"×"),i.a.createElement("span",{className:"sr-only"},n))});Ft.displayName="CloseButton",Ft.propTypes=Lt,Ft.defaultProps={label:"Close"};var Ut=Ft,zt=i.a.createContext({onHide:function(){}}),Ht=i.a.forwardRef(function(e,t){var n=e.bsPrefix,r=e.closeLabel,a=e.closeButton,l=e.onHide,u=e.className,s=e.children,c=Object(de.a)(e,["bsPrefix","closeLabel","closeButton","onHide","className","children"]);n=Ee(n,"modal-header");var f=Object(o.useContext)(zt),p=function(e){var t=It(e);return Object(o.useCallback)(function(){return t.current&&t.current.apply(t,arguments)},[t])}(function(){f&&f.onHide(),l&&l()});return i.a.createElement("div",Object(d.a)({ref:t},c,{className:he()(u,n)}),s,a&&i.a.createElement(Ut,{label:r,onClick:p}))});Ht.displayName="ModalHeader",Ht.defaultProps={closeLabel:"Close",closeButton:!1};var Wt,Bt=Ht,qt=ke("modal-title",{Component:(Wt="h4",i.a.forwardRef(function(e,t){return i.a.createElement("div",Object(d.a)({},e,{ref:t,className:he()(e.className,Wt)}))}))}),$t=r(12),Vt=r.n($t),Gt=r(15),Kt=r.n(Gt),Qt=r(22),Yt=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",Xt=".sticky-top",Jt=".navbar-toggler",Zt={show:!1,backdrop:!0,keyboard:!0,autoFocus:!0,enforceFocus:!0,restoreFocus:!0,animation:!0,dialogAs:At,manager:new(function(e){function t(){for(var t,n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];return(t=e.call.apply(e,[this].concat(r))||this).adjustAndStore=function(e,t,n){var r=t.style[e];t.dataset[e]=r,Kt()(t,e,parseFloat(Kt()(t,e))+n+"px")},t.restore=function(e,t){var n=t.dataset[e];void 0!==n&&(delete t.dataset[e],Kt()(t,e,n))},t}Object(ye.a)(t,e);var n=t.prototype;return n.setContainerStyle=function(t,n){var r=this;if(e.prototype.setContainerStyle.call(this,t,n),t.overflowing){var o=ht()();Vt()(n,Yt).forEach(function(e){return r.adjustAndStore("paddingRight",e,o)}),Vt()(n,Xt).forEach(function(e){return r.adjustAndStore("margingRight",e,-o)}),Vt()(n,Jt).forEach(function(e){return r.adjustAndStore("margingRight",e,o)})}},n.removeContainerStyle=function(t,n){var r=this;e.prototype.removeContainerStyle.call(this,t,n),Vt()(n,Yt).forEach(function(e){return r.restore("paddingRight",e)}),Vt()(n,Xt).forEach(function(e){return r.restore("margingRight",e)}),Vt()(n,Jt).forEach(function(e){return r.restore("margingRight",e)})},t}(r.n(Qt).a))};function en(e){return i.a.createElement(Dt,e)}function tn(e){return i.a.createElement(Dt,e)}var nn=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];return(t=e.call.apply(e,[this].concat(r))||this).state={style:{}},t.modalContext={onHide:function(){return t.props.onHide()}},t.setModalRef=function(e){t._modal=e},t.handleDialogMouseDown=function(){t._waitingForMouseUp=!0},t.handleMouseUp=function(e){t._waitingForMouseUp&&e.target===t._modal.dialog&&(t._ignoreBackdropClick=!0),t._waitingForMouseUp=!1},t.handleClick=function(e){t._ignoreBackdropClick||e.target!==e.currentTarget?t._ignoreBackdropClick=!1:t.props.onHide()},t.handleEnter=function(e){var n;e&&(e.style.display="block",t.updateDialogStyle(e));for(var r=arguments.length,o=new Array(r>1?r-1:0),i=1;i<r;i++)o[i-1]=arguments[i];t.props.onEnter&&(n=t.props).onEnter.apply(n,[e].concat(o))},t.handleEntering=function(e){for(var n,r=arguments.length,o=new Array(r>1?r-1:0),i=1;i<r;i++)o[i-1]=arguments[i];t.props.onEntering&&(n=t.props).onEntering.apply(n,[e].concat(o)),ut.a.on(window,"resize",t.handleWindowResize)},t.handleExited=function(e){var n;e&&(e.style.display="");for(var r=arguments.length,o=new Array(r>1?r-1:0),i=1;i<r;i++)o[i-1]=arguments[i];t.props.onExited&&(n=t.props).onExited.apply(n,o),ut.a.off(window,"resize",t.handleWindowResize)},t.handleWindowResize=function(){t.updateDialogStyle(t._modal.dialog)},t.renderBackdrop=function(e){var n=t.props,r=n.bsPrefix,o=n.backdropClassName;return i.a.createElement("div",Object(d.a)({},e,{className:he()(r+"-backdrop",o)}))},t}Object(ye.a)(t,e);var n=t.prototype;return n.componentWillUnmount=function(){ut.a.off(window,"resize",this.handleWindowResize)},n.updateDialogStyle=function(e){if(dt.a){var t=this.props.manager.isContainerOverflowing(this._modal),n=e.scrollHeight>ct()(e).documentElement.clientHeight;this.setState({style:{paddingRight:t&&!n?ht()():void 0,paddingLeft:!t&&n?ht()():void 0}})}},n.render=function(){var e=this.props,t=e.bsPrefix,n=e.className,r=e.style,o=e.dialogClassName,a=e.children,l=e.dialogAs,u=e.show,s=e.animation,c=e.backdrop,f=e.keyboard,p=e.manager,h=e.onEscapeKeyDown,m=e.onShow,v=e.onHide,y=e.container,g=e.autoFocus,b=e.enforceFocus,x=e.restoreFocus,w=e.onEntered,E=e.onExit,C=e.onExiting,k=(e.onExited,e.onEntering,e.onEnter,e.onEntering,e.backdropClassName,Object(de.a)(e,["bsPrefix","className","style","dialogClassName","children","dialogAs","show","animation","backdrop","keyboard","manager","onEscapeKeyDown","onShow","onHide","container","autoFocus","enforceFocus","restoreFocus","onEntered","onExit","onExiting","onExited","onEntering","onEnter","onEntering","backdropClassName"])),T=!0===c?this.handleClick:null,S=Object(d.a)({},r,this.state.style);return s||(S.display="block"),i.a.createElement(zt.Provider,{value:this.modalContext},i.a.createElement(vt.a,{show:u,backdrop:c,container:y,keyboard:f,autoFocus:g,enforceFocus:b,restoreFocus:x,onEscapeKeyDown:h,onShow:m,onHide:v,onEntered:w,onExit:E,onExiting:C,manager:p,ref:this.setModalRef,style:S,className:he()(n,t),containerClassName:t+"-open",transition:s?en:void 0,backdropTransition:s?tn:void 0,renderBackdrop:this.renderBackdrop,onClick:T,onMouseUp:this.handleMouseUp,onEnter:this.handleEnter,onEntering:this.handleEntering,onExited:this.handleExited},i.a.createElement(l,Object(d.a)({},k,{onMouseDown:this.handleDialogMouseDown,className:o}),a)))},t}(i.a.Component);nn.defaultProps=Zt;var rn=function(e,t){"string"==typeof t&&(t={prefix:t});var n=e.prototype&&e.prototype.isReactComponent,r=t,a=r.prefix,l=r.forwardRefAs,u=void 0===l?n?"ref":"innerRef":l;return be()(function(t,n){var r=Object(d.a)({},t);r[u]=n;var l=Object(o.useContext)(xe);return i.a.createElement(e,Object(d.a)({},r,{bsPrefix:r.bsPrefix||l.get(a)||a}))},{displayName:"Bootstrap("+(e.displayName||e.name)+")"})}(nn,"modal");rn.Body=Rt,rn.Header=Bt,rn.Title=qt,rn.Footer=jt,rn.Dialog=At,rn.TRANSITION_DURATION=300,rn.BACKDROP_TRANSITION_DURATION=150;var on=rn;class an extends i.a.Component{constructor(e){super(e),te()(this),Z("ExplorerActionsControl","start"),this.state={ResultMsg:"",MoveWindowsShow:!1},this.fileExplorerServices=new Je}OnDownloadClick(e){this.props.ParentComponent.refs.FileExplorerControl.GetSelectedID().map(e=>{Z("ExplorerActionsControl","OnDownload "+e),this.fileExplorerServices.OpenDownload(e)})}OnDeleteClick(e){let t=this.props.ParentComponent.refs.FileExplorerControl.GetSelectedID().map(e=>(Z("ExplorerActionsControl","OnDelete "+e),this.fileExplorerServices.DeleteAsync(e))),n="";Promise.all(t).then(function(e){e.map(function(e){n+="Succese: "+e.Successe+" ResultMsg:"+e.ResMessage+" | "}),Ye.MesOk(n,"Move"),this.props.ParentComponent.OnItemsChange()}.bind(this))}OnMoveClick(e){let t=this.props.ParentComponent.refs.FileExplorerControl.GetSelectedID();0!=t.length&&(this.selected=t,this.setState({MoveWindowsShow:!0}))}OnCreateDirectoryClick(e){let t=this.refs.DirectoryName.value,n=this.props.ParentComponent.GetID();this.fileExplorerServices.CreateDirectoryAsync(t,n).then(function(e){this.props.ParentComponent.OnItemsChange(),Ye.MesOk("Complete","CreateDir")}.bind(this)),this.refs.DirectoryName.value=""}OnMoveWindowCloseClick(){this.setState({MoveWindowsShow:!1})}GetID(){return null!=this.SelectedID?this.SelectedID:this.props.ParentComponent.GetID()}SetID(e){this.SelectedID=e}OnMoveWindowClick(){let t=this.selected.map(function(e){return Z("ExplorerActionsControl","OnMove "+e),this.fileExplorerServices.MoveAsync(e,this.SelectedID)}.bind(this)),n="";Promise.all(t).then(function(t){n+="Succese: "+e.Successe+" ResultMsg:"+e.ResMessage+" | ",Ye.MesOk(n,"Move"),this.props.ParentComponent.OnItemsChange()}.bind(this)),this.setState({MoveWindowsShow:!1})}render(){return i.a.createElement("div",null,i.a.createElement("p",null,"ExplorerControlPanel"),i.a.createElement("p",null,i.a.createElement("input",{ref:"DirectoryName"}),i.a.createElement("button",{onClick:this.OnCreateDirectoryClick},"CreateDirectory")),""!=this.state.ResultMsg?i.a.createElement("p",null,this.state.ResultMsg):"",i.a.createElement("table",null,i.a.createElement("thead",null,i.a.createElement("tr",null,i.a.createElement("th",null,i.a.createElement("button",{onClick:this.OnDownloadClick},"Скачать")),i.a.createElement("th",null,i.a.createElement("button",{onClick:this.OnDeleteClick},"Удалить")),i.a.createElement("th",null,i.a.createElement("button",{onClick:this.OnMoveClick},"Переместить"))))),i.a.createElement(on,{ref:"Modal",show:this.state.MoveWindowsShow,onHide:this.OnMoveWindowCloseClick,size:"lg","aria-labelledby":"contained-modal-title-vcenter",centered:!0},i.a.createElement(on.Header,{closeButton:!0},i.a.createElement(on.Title,null,"Select destination directory")),i.a.createElement(on.Body,null,i.a.createElement(at,{ref:"FileExplorerControl",ParentComponent:this,ShoSelect:!1})),i.a.createElement(on.Footer,null,i.a.createElement(ot,{variant:"secondary",onClick:this.OnMoveWindowCloseClick},"Cansel"),i.a.createElement(ot,{variant:"primary",onClick:this.OnMoveWindowClick},"Move to directory"))))}}class ln{constructor(){this.URL_Start="/api/UploadFiles/StartUpload",this.URL_Upload="/api/UploadFiles/UploadBlob",this.URL_Cansel="/api/UploadFiles/Cansel",this.upload_chunk_size=re.upload_chunk_size,this.ID=-1,this._ContinueDownload=!1,this._file=null,this._ParentID=null,this.OnProggresseChange=null,this.OnIDReceived=null,this.OnError=null}async _ReadBlobAsync(e,t){return new Promise(function(n,r){let o=this._file.slice(e,t),i=new FileReader;i.onload=function(){n(i.result)},i.onerror=r,i.readAsDataURL(o)}.bind(this))}async _StartUploadAsync(){let e;return await se(this.URL_Start,"Post",{ParentID:this._ParentID,Name:this._file.name,Size:this._file.size}).then(function(t){e=t}.bind(this)),e}async _UploadBlobAsync(e,t){if(Z("UploadServices","_UploadBlobAsync"),!this._ContinueDownload)return{State:!0};if(""!=e){let n;return Z("UploadServices",this.URL_Upload+t),await se(this.URL_Upload,"Post",{ID:this.ID,chunk:e}).then(function(e){n=e}.bind(this)),n}}async UploadFileAsync(e,t){this._file=e,this._ParentID=t;let n=await this._StartUploadAsync();if(n.State){this._ContinueDownload=!0,this.ID=n.ID,null!=this.OnIDReceived&&this.OnIDReceived(this.ID);for(let t=0,n=0;t<this._file.size;t+=this.upload_chunk_size,n++){if(!this._ContinueDownload)return;let r=await this._ReadBlobAsync(t,t+this.upload_chunk_size),o=await this._UploadBlobAsync(r,n);if(!o.State)return void(null!=this.OnError&&this.OnError(o.Msg));let i=Math.round(100*t/e.size);Z("UploadServices","p = "+i),null!=this.OnProggresseChange&&this.OnProggresseChange(i)}this._ContinueDownload=!1}else null!=this.OnError&&this.OnError(n.Msg)}Cansel(){this._ContinueDownload=!1,setTimeout(function(){se(this.URL_Cansel,"Post",{ID:this.ID})}.bind(this),500)}}class un extends i.a.Component{constructor(e){super(e),te()(this),Z("UploaderControl","start"),this.state={progress:0,ButtonUploadEnable:!0,_state:0,FileInfo:{},ResultMsg:""},this.uploadServices=new ln,this.uploadServices.OnProggresseChange=this.OnProgresseChange,this.uploadServices.OnError=this.OnError}UploadClick(){let e=this.refs.file,t=e.files;if(0==t.length)return;let n=t[0];this.setState({ButtonUploadEnable:!1,_state:1,FileInfo:{name:n.name,size:n.size}}),this.uploadServices.UploadFileAsync(n,this.props.ParentComponent.GetID()).then(function(){Ye.MesOk("Complete","Upload"),this.setState({ButtonUploadEnable:!0,_state:0,FileInfo:{},ResultMsg:""}),this.props.ParentComponent.OnItemsChange(),e.value=""}.bind(this))}CancelClick(){this.uploadServices.Cansel(),this.setState({ButtonUploadEnable:!0,_state:0,FileInfo:{}})}OnProgresseChange(e){this.setState({progress:e})}OnError(e){this.setState({progress:0,ButtonUploadEnable:!0,_state:0,FileInfo:{},ResultMsg:e})}render(){return i.a.createElement("div",null,i.a.createElement("h2",null,"Upload"),i.a.createElement("p",null,i.a.createElement("input",{ref:"file",type:"file",disabled:!this.state.ButtonUploadEnable}),i.a.createElement("button",{disabled:!this.state.ButtonUploadEnable,onClick:this.UploadClick},"Upload"),i.a.createElement("button",{disabled:this.state.ButtonUploadEnable,onClick:this.CancelClick},"Cancel")),1==this.state._state?i.a.createElement("div",null,i.a.createElement("p",null,"Прогресс ",this.state.progress," %"),i.a.createElement("p",null,"Выполняется загрука файла:"),i.a.createElement("p",null,"Имя файла: ",this.state.FileInfo.name),i.a.createElement("p",null,"Размеры файла: ",this.state.FileInfo.size)):"",""!=this.state.ResultMsg?i.a.createElement("p",null,"Результат: ",this.state.ResultMsg):null)}}var sn=i.a.forwardRef(function(e,t){var n=e.bsPrefix,r=e.className,o=Object(de.a)(e,["bsPrefix","className"]),a=Ee(n,"btn-toolbar");return i.a.createElement("div",Object(d.a)({},o,{ref:t,className:he()(r,a)}))});sn.displayName="ButtonToolbar",sn.defaultProps={role:"toolbar"};var cn=sn;class fn extends i.a.Component{constructor(e){super(e),te()(this),Z("BootstrapControl","start")}ToastifyTest(){this.Leght=(null==this.Leght?0:this.Leght)+500}render(){return i.a.createElement("div",null,i.a.createElement("p",null,"Bootstrap test"),i.a.createElement(cn,null,i.a.createElement(ot,{onClick:this.ToastifyTest,variant:"outline-primary"},"Primary"),i.a.createElement(ot,{variant:"outline-secondary"},"Secondary"),i.a.createElement(ot,{variant:"outline-success"},"Success"),i.a.createElement(ot,{variant:"outline-warning"},"Warning"),i.a.createElement(ot,{variant:"outline-danger"},"Danger"),i.a.createElement(ot,{variant:"outline-info"},"Info"),i.a.createElement(ot,{variant:"outline-light"},"Light"),i.a.createElement(ot,{variant:"outline-dark"},"Dark")))}}class dn extends i.a.Component{constructor(e){super(e),te()(this),Z("FileExplorerPage","start");var t=new URL(window.location.href).searchParams.get("ID");null!=t?this.SetID(t):this.SetID(-1)}OnAuthChange(){this.OnItemsChange(),this.refs.MenuControl.OnAuthChange()}OnItemsChange(){this.refs.FileExplorerControl.LoadDirectory()}SetID(e){this.CurrentID=e,Z("FileExplorerPage",this.CurrentID)}GetID(){return this.CurrentID}render(){return i.a.createElement("div",null,i.a.createElement("hr",null),i.a.createElement(fe,{ref:"MenuControl",ParentComponent:this}),i.a.createElement("hr",null),i.a.createElement(Xe,{ref:"UserControl",ParentComponent:this}),i.a.createElement("hr",null),i.a.createElement(at,{ref:"FileExplorerControl",ParentComponent:this,ShoSelect:!0}),i.a.createElement("hr",null),this.GetID()!=re.RooDirectoryID?i.a.createElement("div",null,i.a.createElement(an,{ref:"ExplorerActionsControl",ParentComponent:this}),i.a.createElement("hr",null),i.a.createElement(un,{ref:"UploaderControl",ParentComponent:this}),i.a.createElement("hr",null)):"",i.a.createElement(fn,null),i.a.createElement("hr",null))}}class pn extends i.a.Component{constructor(e){super(e),te()(this),Z("AdministratorPage","start"),this.state={ActiveWindows:0},this.authServices=new ce}OnAuthChange(){this.refs.MenuControl.OnAuthChange()}OnUsersClick(){this.setState({ActiveWindows:0})}OnGroupsClick(){this.setState({ActiveWindows:1})}render(){return i.a.createElement("div",null,i.a.createElement("hr",null),i.a.createElement(MenuControl,{ref:"MenuControl",ParentComponent:this}),i.a.createElement("hr",null),this.authServices.IsAuth()?i.a.createElement("div",null,i.a.createElement(Nav,{variant:"tabs"},i.a.createElement(Nav.Item,null,i.a.createElement(Nav.Link,{onClick:this.OnUsersClick}," Users")),i.a.createElement(Nav.Item,null,i.a.createElement(Nav.Link,{onClick:this.OnGroupsClick}," Groups"))),0==this.state.ActiveWindows?i.a.createElement("div",null,"UsersWindows"):i.a.createElement("div",null,"GroupsWindow")):i.a.createElement("p",null,"Вы не авторизованы"))}}l.a.render(i.a.createElement(class extends i.a.Component{constructor(e){super(e),Z("RouteSystem","start")}render(){return i.a.createElement(U,null,i.a.createElement(G,null,i.a.createElement(J,{ref:"CurrentPage",exact:!0,path:"/",component:dn}),i.a.createElement(J,{ref:"CurrentPage",exact:!0,path:"/App",component:dn}),i.a.createElement(J,{ref:"CurrentPage",exact:!0,path:"/index.html",component:dn}),i.a.createElement(J,{ref:"CurrentPage",path:"/?ID=:ID",component:dn}),i.a.createElement(J,{ref:"CurrentPage",path:"/Admin",component:pn})))}},null),document.getElementById("App")),console.log("index.js")}]);
+ */Object.defineProperty(t,"__esModule",{value:!0});var o="function"==typeof Symbol&&Symbol.for,r=o?Symbol.for("react.element"):60103,i=o?Symbol.for("react.portal"):60106,a=o?Symbol.for("react.fragment"):60107,s=o?Symbol.for("react.strict_mode"):60108,l=o?Symbol.for("react.profiler"):60114,u=o?Symbol.for("react.provider"):60109,c=o?Symbol.for("react.context"):60110,d=o?Symbol.for("react.async_mode"):60111,p=o?Symbol.for("react.concurrent_mode"):60111,h=o?Symbol.for("react.forward_ref"):60112,f=o?Symbol.for("react.suspense"):60113,m=o?Symbol.for("react.memo"):60115,g=o?Symbol.for("react.lazy"):60116;function v(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case d:case p:case a:case l:case s:case f:return e;default:switch(e=e&&e.$$typeof){case c:case h:case u:return e;default:return t}}case g:case m:case i:return t}}}function y(e){return v(e)===p}t.typeOf=v,t.AsyncMode=d,t.ConcurrentMode=p,t.ContextConsumer=c,t.ContextProvider=u,t.Element=r,t.ForwardRef=h,t.Fragment=a,t.Lazy=g,t.Memo=m,t.Portal=i,t.Profiler=l,t.StrictMode=s,t.Suspense=f,t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===a||e===p||e===l||e===s||e===f||"object"==typeof e&&null!==e&&(e.$$typeof===g||e.$$typeof===m||e.$$typeof===u||e.$$typeof===c||e.$$typeof===h)},t.isAsyncMode=function(e){return y(e)||v(e)===d},t.isConcurrentMode=y,t.isContextConsumer=function(e){return v(e)===c},t.isContextProvider=function(e){return v(e)===u},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===r},t.isForwardRef=function(e){return v(e)===h},t.isFragment=function(e){return v(e)===a},t.isLazy=function(e){return v(e)===g},t.isMemo=function(e){return v(e)===m},t.isPortal=function(e){return v(e)===i},t.isProfiler=function(e){return v(e)===l},t.isStrictMode=function(e){return v(e)===s},t.isSuspense=function(e){return v(e)===f}},function(e,t,n){"use strict";var o=n(6);t.__esModule=!0,t.default=void 0;var r=o(n(71));t.addClass=r.default;var i=o(n(72));t.removeClass=i.default;var a=o(n(36));t.hasClass=a.default;var s={addClass:r.default,removeClass:i.default,hasClass:a.default};t.default=s},function(e,t,n){"use strict";var o=n(6);t.__esModule=!0,t.default=function(e,t){e.classList?e.classList.add(t):(0,r.default)(e,t)||("string"==typeof e.className?e.className=e.className+" "+t:e.setAttribute("class",(e.className&&e.className.baseVal||"")+" "+t))};var r=o(n(36));e.exports=t.default},function(e,t,n){"use strict";function o(e,t){return e.replace(new RegExp("(^|\\s)"+t+"(?:\\s|$)","g"),"$1").replace(/\s+/g," ").replace(/^\s*|\s*$/g,"")}e.exports=function(e,t){e.classList?e.classList.remove(t):"string"==typeof e.className?e.className=o(e.className,t):e.setAttribute("class",o(e.className&&e.className.baseVal||"",t))}},function(e,t,n){"use strict";var o=n(6);t.__esModule=!0,t.default=function(e){return(0,r.default)(e).replace(i,"-ms-")};var r=o(n(74)),i=/^ms-/;e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e){return e.replace(o,"-$1").toLowerCase()};var o=/([A-Z])/g;e.exports=t.default},function(e,t,n){"use strict";var o=n(6);t.__esModule=!0,t.default=function(e){if(!e)throw new TypeError("No Element passed to `getComputedStyle()`");var t=e.ownerDocument;return"defaultView"in t?t.defaultView.opener?e.ownerDocument.defaultView.getComputedStyle(e,null):window.getComputedStyle(e,null):{getPropertyValue:function(t){var n=e.style;"float"==(t=(0,r.default)(t))&&(t="styleFloat");var o=e.currentStyle[t]||null;if(null==o&&n&&n[t]&&(o=n[t]),a.test(o)&&!i.test(t)){var s=n.left,l=e.runtimeStyle,u=l&&l.left;u&&(l.left=e.currentStyle.left),n.left="fontSize"===t?"1em":o,o=n.pixelLeft+"px",n.left=s,u&&(l.left=u)}return o}}};var r=o(n(37)),i=/^(top|right|bottom|left)$/,a=/^([+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|))(?!px)[a-z%]+$/i;e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t){return"removeProperty"in e.style?e.style.removeProperty(t):e.style.removeAttribute(t)},e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e){return!(!e||!o.test(e))};var o=/^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i;e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e){return(0,o.default)(e)||(t=e,t&&"body"===t.tagName.toLowerCase())?function(e){var t=(0,r.default)(e),n=(0,o.default)(t);return t.body.clientWidth<n.innerWidth}(e):e.scrollHeight>e.clientHeight;var t};var o=i(n(79)),r=i(n(13));function i(e){return e&&e.__esModule?e:{default:e}}e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e){return e===e.window?e:9===e.nodeType&&(e.defaultView||e.parentWindow)},e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.ariaHidden=i,t.hideSiblings=function(e,t){var n=t.root,o=t.backdrop;r(e,[n,o],function(e){return i(!0,e)})},t.showSiblings=function(e,t){var n=t.root,o=t.backdrop;r(e,[n,o],function(e){return i(!1,e)})};var o=["template","script","style"],r=function(e,t,n){t=[].concat(t),[].forEach.call(e.children,function(e){var r,i,a;-1===t.indexOf(e)&&(i=(r=e).nodeType,a=r.tagName,1===i&&-1===o.indexOf(a.toLowerCase()))&&n(e)})};function i(e,t){t&&(e?t.setAttribute("aria-hidden","true"):t.removeAttribute("aria-hidden"))}},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var o=l(n(2)),r=l(n(23)),i=l(n(0)),a=l(n(8)),s=l(n(82));function l(e){return e&&e.__esModule?e:{default:e}}var u=function(e){var t,n;function o(){return e.apply(this,arguments)||this}return n=e,(t=o).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n,o.prototype.render=function(){var e=this;return this.props.children?i.default.createElement(s.default,{container:this.props.container,onContainerResolved:this.props.onRendered},function(t){return a.default.createPortal(e.props.children,t)}):null},o}(i.default.Component);u.displayName="Portal",u.propTypes={container:o.default.oneOfType([r.default,o.default.func]),onRendered:o.default.func};var c=u;t.default=c,e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var o=c(n(2)),r=c(n(23)),i=c(n(11)),a=c(n(13)),s=c(n(0)),l=c(n(8)),u=c(n(39));function c(e){return e&&e.__esModule?e:{default:e}}function d(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}var p={container:o.default.oneOfType([r.default,o.default.func]),onContainerResolved:o.default.func},h=function(e){var t,n;function o(){for(var t,n=arguments.length,o=new Array(n),r=0;r<n;r++)o[r]=arguments[r];if(t=e.call.apply(e,[this].concat(o))||this,!i.default)return d(t);var a=t.props.container;return"function"==typeof a&&(a=a()),a&&!l.default.findDOMNode(a)?d(t):(t.setContainer(a),t)}n=e,(t=o).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var r=o.prototype;return r.UNSAFE_componentWillReceiveProps=function(e){e.container!==this.props.container&&this.setContainer(e.container)},r.componentDidMount=function(){this._container?this.props.onContainerResolved&&this.props.onContainerResolved():(this.setContainer(this.props.container),this.forceUpdate(this.props.onContainerResolved))},r.componentWillUnmount=function(){this._container=null},r.setContainer=function(e){this._container=(0,u.default)(e,(0,a.default)().body)},r.render=function(){return this._container?this.props.children(this._container):null},o}(s.default.Component);h.propTypes=p;var f=h;t.default=f,e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e){return(0,r.default)(o.default.findDOMNode(e))};var o=i(n(8)),r=i(n(13));function i(e){return e&&e.__esModule?e:{default:e}}e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,i.default)(function(){for(var e=arguments.length,n=Array(e),o=0;o<e;o++)n[o]=arguments[o];var r=null;return t.forEach(function(e){if(null==r){var t=e.apply(void 0,n);null!=t&&(r=t)}}),r})};var o,r=n(24),i=(o=r)&&o.__esModule?o:{default:o};e.exports=t.default},function(e,t){e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},function(e,t,n){"use strict";function o(e){if(null===e||!0===e||!1===e)return NaN;var t=Number(e);return isNaN(t)?t:t<0?Math.ceil(t):Math.floor(t)}n.r(t);var r=6e4;function i(e){var t=new Date(e.getTime()),n=t.getTimezoneOffset();t.setSeconds(0,0);var o=t.getTime()%r;return n*r+o}var a=36e5,s=6e4,l=2,u={dateTimeDelimeter:/[T ]/,plainTime:/:/,timeZoneDelimeter:/[Z ]/i,YY:/^(\d{2})$/,YYY:[/^([+-]\d{2})$/,/^([+-]\d{3})$/,/^([+-]\d{4})$/],YYYY:/^(\d{4})/,YYYYY:[/^([+-]\d{4})/,/^([+-]\d{5})/,/^([+-]\d{6})/],MM:/^-(\d{2})$/,DDD:/^-?(\d{3})$/,MMDD:/^-?(\d{2})-?(\d{2})$/,Www:/^-?W(\d{2})$/,WwwD:/^-?W(\d{2})-?(\d{1})$/,HH:/^(\d{2}([.,]\d*)?)$/,HHMM:/^(\d{2}):?(\d{2}([.,]\d*)?)$/,HHMMSS:/^(\d{2}):?(\d{2}):?(\d{2}([.,]\d*)?)$/,timezone:/([Z+-].*)$/,timezoneZ:/^(Z)$/,timezoneHH:/^([+-])(\d{2})$/,timezoneHHMM:/^([+-])(\d{2}):?(\d{2})$/};function c(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");if(null===e)return new Date(NaN);var n=t||{},r=null==n.additionalDigits?l:o(n.additionalDigits);if(2!==r&&1!==r&&0!==r)throw new RangeError("additionalDigits must be 0, 1 or 2");if(e instanceof Date||"object"==typeof e&&"[object Date]"===Object.prototype.toString.call(e))return new Date(e.getTime());if("number"==typeof e||"[object Number]"===Object.prototype.toString.call(e))return new Date(e);if("string"!=typeof e&&"[object String]"!==Object.prototype.toString.call(e))return new Date(NaN);var c=function(e){var t,n={},o=e.split(u.dateTimeDelimeter);u.plainTime.test(o[0])?(n.date=null,t=o[0]):(n.date=o[0],t=o[1],u.timeZoneDelimeter.test(n.date)&&(n.date=e.split(u.timeZoneDelimeter)[0],t=e.substr(n.date.length,e.length)));if(t){var r=u.timezone.exec(t);r?(n.time=t.replace(r[1],""),n.timezone=r[1]):n.time=t}return n}(e),p=function(e,t){var n,o=u.YYY[t],r=u.YYYYY[t];if(n=u.YYYY.exec(e)||r.exec(e)){var i=n[1];return{year:parseInt(i,10),restDateString:e.slice(i.length)}}if(n=u.YY.exec(e)||o.exec(e)){var a=n[1];return{year:100*parseInt(a,10),restDateString:e.slice(a.length)}}return{year:null}}(c.date,r),h=p.year,b=function(e,t){if(null===t)return null;var n,o,r,i;if(0===e.length)return(o=new Date(0)).setUTCFullYear(t),o;if(n=u.MM.exec(e))return o=new Date(0),r=parseInt(n[1],10)-1,m(t,r)?(o.setUTCFullYear(t,r),o):new Date(NaN);if(n=u.DDD.exec(e)){o=new Date(0);var a=parseInt(n[1],10);return function(e,t){if(t<1)return!1;var n=f(e);if(n&&t>366)return!1;if(!n&&t>365)return!1;return!0}(t,a)?(o.setUTCFullYear(t,0,a),o):new Date(NaN)}if(n=u.MMDD.exec(e)){o=new Date(0),r=parseInt(n[1],10)-1;var s=parseInt(n[2],10);return m(t,r,s)?(o.setUTCFullYear(t,r,s),o):new Date(NaN)}if(n=u.Www.exec(e))return i=parseInt(n[1],10)-1,g(t,i)?d(t,i):new Date(NaN);if(n=u.WwwD.exec(e)){i=parseInt(n[1],10)-1;var l=parseInt(n[2],10)-1;return g(t,i,l)?d(t,i,l):new Date(NaN)}return null}(p.restDateString,h);if(isNaN(b))return new Date(NaN);if(b){var w,E=b.getTime(),C=0;if(c.time&&(C=function(e){var t,n,o;if(t=u.HH.exec(e))return v(n=parseFloat(t[1].replace(",",".")))?n%24*a:NaN;if(t=u.HHMM.exec(e))return n=parseInt(t[1],10),o=parseFloat(t[2].replace(",",".")),v(n,o)?n%24*a+o*s:NaN;if(t=u.HHMMSS.exec(e)){n=parseInt(t[1],10),o=parseInt(t[2],10);var r=parseFloat(t[3].replace(",","."));return v(n,o,r)?n%24*a+o*s+1e3*r:NaN}return null}(c.time),isNaN(C)))return new Date(NaN);if(c.timezone){if(w=function(e){var t,n,o;if(t=u.timezoneZ.exec(e))return 0;if(t=u.timezoneHH.exec(e))return y(o=parseInt(t[2],10))?(n=o*a,"+"===t[1]?-n:n):NaN;if(t=u.timezoneHHMM.exec(e)){o=parseInt(t[2],10);var r=parseInt(t[3],10);return y(o,r)?(n=o*a+r*s,"+"===t[1]?-n:n):NaN}return 0}(c.timezone),isNaN(w))return new Date(NaN)}else w=i(new Date(E+C)),w=i(new Date(E+C+w));return new Date(E+C+w)}return new Date(NaN)}function d(e,t,n){t=t||0,n=n||0;var o=new Date(0);o.setUTCFullYear(e,0,4);var r=7*t+n+1-(o.getUTCDay()||7);return o.setUTCDate(o.getUTCDate()+r),o}var p=[31,28,31,30,31,30,31,31,30,31,30,31],h=[31,29,31,30,31,30,31,31,30,31,30,31];function f(e){return e%400==0||e%4==0&&e%100!=0}function m(e,t,n){if(t<0||t>11)return!1;if(null!=n){if(n<1)return!1;var o=f(e);if(o&&n>h[t])return!1;if(!o&&n>p[t])return!1}return!0}function g(e,t,n){return!(t<0||t>52)&&(null==n||!(n<0||n>6))}function v(e,t,n){return(null==e||!(e<0||e>=25))&&((null==t||!(t<0||t>=60))&&(null==n||!(n<0||n>=60)))}function y(e,t){return null==t||!(t<0||t>59)}function b(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=c(e,n),i=o(t);return r.setDate(r.getDate()+i),r}function w(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=c(e,n).getTime(),i=o(t);return new Date(r+i)}var E=36e5;function C(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");return w(e,o(t)*E,n)}function x(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=t||{},r=n.locale,i=r&&r.options&&r.options.weekStartsOn,a=null==i?0:o(i),s=null==n.weekStartsOn?a:o(n.weekStartsOn);if(!(s>=0&&s<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var l=c(e,n),u=l.getDay(),d=(u<s?7:0)+u-s;return l.setDate(l.getDate()-d),l.setHours(0,0,0,0),l}function T(e){e=e||{};var t={};for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}function k(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=T(t);return n.weekStartsOn=1,x(e,n)}function S(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),o=n.getFullYear(),r=new Date(0);r.setFullYear(o+1,0,4),r.setHours(0,0,0,0);var i=k(r,t),a=new Date(0);a.setFullYear(o,0,4),a.setHours(0,0,0,0);var s=k(a,t);return n.getTime()>=i.getTime()?o+1:n.getTime()>=s.getTime()?o:o-1}function D(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=S(e,t),o=new Date(0);return o.setFullYear(n,0,4),o.setHours(0,0,0,0),k(o,t)}function M(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t);return n.setHours(0,0,0,0),n}var R=864e5;function P(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=M(e,n),r=M(t,n),a=o.getTime()-i(o),s=r.getTime()-i(r);return Math.round((a-s)/R)}function _(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=c(e,n),i=o(t),a=P(r,D(r,n),n),s=new Date(0);return s.setFullYear(i,0,4),s.setHours(0,0,0,0),(r=D(s,n)).setDate(r.getDate()+a),r}function L(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=o(t);return _(e,S(e,n)+r,n)}var O=6e4;function N(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");return w(e,o(t)*O,n)}function F(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),o=n.getFullYear(),r=n.getMonth(),i=new Date(0);return i.setFullYear(o,r+1,0),i.setHours(0,0,0,0),i.getDate()}function A(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=c(e,n),i=o(t),a=r.getMonth()+i,s=new Date(0);s.setFullYear(r.getFullYear(),a,1),s.setHours(0,0,0,0);var l=F(s,n);return r.setMonth(a,Math.min(l,r.getDate())),r}function I(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");return A(e,3*o(t),n)}function H(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");return w(e,1e3*o(t),n)}function z(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");return b(e,7*o(t),n)}function j(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");return A(e,12*o(t),n)}function B(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=e||{},r=t||{},i=c(o.start,n).getTime(),a=c(o.end,n).getTime(),s=c(r.start,n).getTime(),l=c(r.end,n).getTime();if(!(i<=a&&s<=l))throw new RangeError("Invalid interval");return i<l&&s<a}function U(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=c(e,n);if(isNaN(o))return NaN;var r,i,a=o.getTime();return(null==t?[]:"function"==typeof t.forEach?t:Array.prototype.slice.call(t)).forEach(function(e,t){var o=c(e,n);if(isNaN(o))return r=NaN,void(i=NaN);var s=Math.abs(a-o.getTime());(null==r||s<i)&&(r=t,i=s)}),r}function W(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=c(e,n);if(isNaN(o))return new Date(NaN);var r,i,a=o.getTime();return(null==t?[]:"function"==typeof t.forEach?t:Array.prototype.slice.call(t)).forEach(function(e){var t=c(e,n);if(isNaN(t))return r=new Date(NaN),void(i=NaN);var o=Math.abs(a-t.getTime());(null==r||o<i)&&(r=t,i=o)}),r}function q(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=c(e,n),r=c(t,n),i=o.getTime()-r.getTime();return i<0?-1:i>0?1:i}function V(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=c(e,n),r=c(t,n),i=o.getTime()-r.getTime();return i>0?-1:i<0?1:i}function G(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");return S(e,n)-S(t,n)}var Y=6048e5;function $(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=k(e,n),r=k(t,n),a=o.getTime()-i(o),s=r.getTime()-i(r);return Math.round((a-s)/Y)}function X(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=c(e,n),r=c(t,n);return 12*(o.getFullYear()-r.getFullYear())+(o.getMonth()-r.getMonth())}function K(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t);return Math.floor(n.getMonth()/3)+1}function Q(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=c(e,n),r=c(t,n);return 4*(o.getFullYear()-r.getFullYear())+(K(o,n)-K(r,n))}var J=6048e5;function Z(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=x(e,n),r=x(t,n),a=o.getTime()-i(o),s=r.getTime()-i(r);return Math.round((a-s)/J)}function ee(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=c(e,n),r=c(t,n);return o.getFullYear()-r.getFullYear()}function te(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=c(e,n),r=c(t,n),i=q(o,r,n),a=Math.abs(P(o,r,n));o.setDate(o.getDate()-i*a);var s=i*(a-(q(o,r,n)===-i));return 0===s?0:s}function ne(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=c(e,n),r=c(t,n);return o.getTime()-r.getTime()}var oe=36e5;function re(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=ne(e,t,n)/oe;return o>0?Math.floor(o):Math.ceil(o)}function ie(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");return L(e,-o(t),n)}function ae(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=c(e,n),r=c(t,n),i=q(o,r,n),a=Math.abs(G(o,r,n)),s=i*(a-(q(o=ie(o,i*a,n),r,n)===-i));return 0===s?0:s}var se=6e4;function le(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=ne(e,t,n)/se;return o>0?Math.floor(o):Math.ceil(o)}function ue(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=c(e,n),r=c(t,n),i=q(o,r,n),a=Math.abs(X(o,r,n));o.setMonth(o.getMonth()-i*a);var s=i*(a-(q(o,r,n)===-i));return 0===s?0:s}function ce(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=ue(e,t,n)/3;return o>0?Math.floor(o):Math.ceil(o)}function de(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=ne(e,t,n)/1e3;return o>0?Math.floor(o):Math.ceil(o)}function pe(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=te(e,t,n)/7;return o>0?Math.floor(o):Math.ceil(o)}function he(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=c(e,n),r=c(t,n),i=q(o,r,n),a=Math.abs(ee(o,r,n));o.setFullYear(o.getFullYear()-i*a);var s=i*(a-(q(o,r,n)===-i));return 0===s?0:s}function fe(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=e||{},o=c(n.start,t),r=c(n.end,t).getTime();if(!(o.getTime()<=r))throw new RangeError("Invalid interval");var i=[],a=o;for(a.setHours(0,0,0,0);a.getTime()<=r;)i.push(c(a,t)),a.setDate(a.getDate()+1);return i}function me(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=e||{},o=c(n.start,t),r=c(n.end,t),i=r.getTime();if(!(o.getTime()<=i))throw new RangeError("Invalid interval");var a=x(o,t),s=x(r,t);a.setHours(15),s.setHours(15),i=s.getTime();for(var l=[],u=a;u.getTime()<=i;)u.setHours(0),l.push(c(u,t)),(u=z(u,1)).setHours(15);return l}function ge(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return 0===c(e,t).getDay()}function ve(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t).getDay();return 0===n||6===n}function ye(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=t||{},r=n.locale,i=r&&r.options&&r.options.weekStartsOn,a=null==i?0:o(i),s=null==n.weekStartsOn?a:o(n.weekStartsOn);if(!(s>=0&&s<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var l=e||{},u=c(l.start,t),d=c(l.end,t).getTime();if(!(u.getTime()<=d))throw new RangeError("Invalid interval");for(var p=fe(l),h=[],f=0;f++<p.length;){var m=p[f];ve(m)&&(h.push(new Date(m)),ge(m)&&(f+=5))}return h}function be(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t);return n.setDate(1),n.setHours(0,0,0,0),n}function we(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),o=n.getMonth();return n.setFullYear(n.getFullYear(),o+1,0),n.setHours(23,59,59,999),n}function Ee(e,t){if(arguments.length<1)throw new TypeError("1 arguments required, but only "+arguments.length+" present");return ye({start:be(e,t),end:we(e,t)})}function Ce(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),o=new Date(0);return o.setFullYear(n.getFullYear(),0,1),o.setHours(0,0,0,0),o}function xe(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),o=n.getFullYear();return n.setFullYear(o+1,0,0),n.setHours(23,59,59,999),n}function Te(e,t){if(arguments.length<1)throw new TypeError("1 arguments required, but only "+arguments.length+" present");return ye({start:Ce(e,t),end:xe(e,t)})}function ke(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t);return n.setHours(23,59,59,999),n}function Se(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),o=n.getFullYear(),r=9+10*Math.floor(o/10);return n.setFullYear(r,11,31),n.setHours(23,59,59,999),n}function De(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t);return n.setMinutes(59,59,999),n}function Me(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=t||{},r=n.locale,i=r&&r.options&&r.options.weekStartsOn,a=null==i?0:o(i),s=null==n.weekStartsOn?a:o(n.weekStartsOn);if(!(s>=0&&s<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var l=c(e,n),u=l.getDay(),d=6+(u<s?-7:0)-(u-s);return l.setDate(l.getDate()+d),l.setHours(23,59,59,999),l}function Re(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=T(t);return n.weekStartsOn=1,Me(e,n)}function Pe(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=S(e,t),o=new Date(0);o.setFullYear(n+1,0,4),o.setHours(0,0,0,0);var r=k(o,t);return r.setMilliseconds(r.getMilliseconds()-1),r}function _e(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t);return n.setSeconds(59,999),n}function Le(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),o=n.getMonth(),r=o-o%3+3;return n.setMonth(r,0),n.setHours(23,59,59,999),n}function Oe(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t);return n.setMilliseconds(999),n}function Ne(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t);return!isNaN(n)}var Fe={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}};function Ae(e){return function(t){var n=t||{},o=n.width?String(n.width):e.defaultWidth;return e.formats[o]||e.formats[e.defaultWidth]}}var Ie={date:Ae({formats:{full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},defaultWidth:"full"}),time:Ae({formats:{full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},defaultWidth:"full"}),dateTime:Ae({formats:{full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})},He={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"};function ze(e){return function(t,n){var o=n||{},r=o.width?String(o.width):e.defaultWidth;return("formatting"===(o.context?String(o.context):"standalone")&&e.formattingValues?e.formattingValues[r]||e.formattingValues[e.defaultFormattingWidth]:e.values[r]||e.values[e.defaultWidth])[e.argumentCallback?e.argumentCallback(t):t]}}function je(e){return function(t,n){var o=String(t),r=n||{},i=r.width,a=i&&e.matchPatterns[i]||e.matchPatterns[e.defaultMatchWidth],s=o.match(a);if(!s)return null;var l,u=s[0],c=i&&e.parsePatterns[i]||e.parsePatterns[e.defaultParseWidth];return l="[object Array]"===Object.prototype.toString.call(c)?c.findIndex(function(e){return e.test(o)}):function(e,t){for(var n in e)if(e.hasOwnProperty(n)&&t(e[n]))return n}(c,function(e){return e.test(o)}),l=e.valueCallback?e.valueCallback(l):l,{value:l=r.valueCallback?r.valueCallback(l):l,rest:o.slice(u.length)}}}var Be,Ue={formatDistance:function(e,t,n){var o;return n=n||{},o="string"==typeof Fe[e]?Fe[e]:1===t?Fe[e].one:Fe[e].other.replace("{{count}}",t),n.addSuffix?n.comparison>0?"in "+o:o+" ago":o},formatLong:Ie,formatRelative:function(e,t,n,o){return He[e]},localize:{ordinalNumber:function(e,t){var n=Number(e),o=n%100;if(o>20||o<10)switch(o%10){case 1:return n+"st";case 2:return n+"nd";case 3:return n+"rd"}return n+"th"},era:ze({values:{narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},defaultWidth:"wide"}),quarter:ze({values:{narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:ze({values:{narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},defaultWidth:"wide"}),day:ze({values:{narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},defaultWidth:"wide"}),dayPeriod:ze({values:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},defaultWidth:"wide",formattingValues:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},defaulFormattingWidth:"wide"})},match:{ordinalNumber:(Be={matchPattern:/^(\d+)(th|st|nd|rd)?/i,parsePattern:/\d+/i,valueCallback:function(e){return parseInt(e,10)}},function(e,t){var n=String(e),o=t||{},r=n.match(Be.matchPattern);if(!r)return null;var i=r[0],a=n.match(Be.parsePattern);if(!a)return null;var s=Be.valueCallback?Be.valueCallback(a[0]):a[0];return{value:s=o.valueCallback?o.valueCallback(s):s,rest:n.slice(i.length)}}),era:je({matchPatterns:{narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^b/i,/^(a|c)/i]},defaultParseWidth:"any"}),quarter:je({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:je({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:"any"}),day:je({matchPatterns:{narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},defaultParseWidth:"any"}),dayPeriod:je({matchPatterns:{narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},defaultParseWidth:"any"})},options:{weekStartsOn:0,firstWeekContainsDate:1}},We=864e5;function qe(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),o=n.getUTCDay(),r=(o<1?7:0)+o-1;return n.setUTCDate(n.getUTCDate()-r),n.setUTCHours(0,0,0,0),n}function Ve(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),o=n.getUTCFullYear(),r=new Date(0);r.setUTCFullYear(o+1,0,4),r.setUTCHours(0,0,0,0);var i=qe(r,t),a=new Date(0);a.setUTCFullYear(o,0,4),a.setUTCHours(0,0,0,0);var s=qe(a,t);return n.getTime()>=i.getTime()?o+1:n.getTime()>=s.getTime()?o:o-1}var Ge=6048e5;function Ye(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),o=qe(n,t).getTime()-function(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=Ve(e,t),o=new Date(0);return o.setUTCFullYear(n,0,4),o.setUTCHours(0,0,0,0),qe(o,t)}(n,t).getTime();return Math.round(o/Ge)+1}function $e(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=t||{},r=n.locale,i=r&&r.options&&r.options.weekStartsOn,a=null==i?0:o(i),s=null==n.weekStartsOn?a:o(n.weekStartsOn);if(!(s>=0&&s<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var l=c(e,n),u=l.getUTCDay(),d=(u<s?7:0)+u-s;return l.setUTCDate(l.getUTCDate()-d),l.setUTCHours(0,0,0,0),l}function Xe(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),r=n.getUTCFullYear(),i=t||{},a=i.locale,s=a&&a.options&&a.options.firstWeekContainsDate,l=null==s?1:o(s),u=null==i.firstWeekContainsDate?l:o(i.firstWeekContainsDate);if(!(u>=1&&u<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var d=new Date(0);d.setUTCFullYear(r+1,0,u),d.setUTCHours(0,0,0,0);var p=$e(d,t),h=new Date(0);h.setUTCFullYear(r,0,u),h.setUTCHours(0,0,0,0);var f=$e(h,t);return n.getTime()>=p.getTime()?r+1:n.getTime()>=f.getTime()?r:r-1}var Ke=6048e5;function Qe(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),r=$e(n,t).getTime()-function(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=t||{},r=n.locale,i=r&&r.options&&r.options.firstWeekContainsDate,a=null==i?1:o(i),s=null==n.firstWeekContainsDate?a:o(n.firstWeekContainsDate),l=Xe(e,t),u=new Date(0);return u.setUTCFullYear(l,0,s),u.setUTCHours(0,0,0,0),$e(u,t)}(n,t).getTime();return Math.round(r/Ke)+1}var Je="midnight",Ze="noon",et="morning",tt="afternoon",nt="evening",ot="night";function rt(e,t){for(var n=e<0?"-":"",o=Math.abs(e).toString();o.length<t;)o="0"+o;return n+o}function it(e,t){var n=t||"",o=e>0?"-":"+",r=Math.abs(e);return o+rt(Math.floor(r/60),2)+n+rt(r%60,2)}function at(e,t){return e%60==0?(e>0?"-":"+")+rt(Math.abs(e)/60,2):it(e,t)}function st(e,t){var n=e>0?"-":"+",o=Math.abs(e),r=Math.floor(o/60),i=o%60;if(0===i)return n+String(r);var a=t||"";return n+String(r)+a+rt(i,2)}var lt={G:function(e,t,n){var o=e.getUTCFullYear()>0?1:0;switch(t){case"G":case"GG":case"GGG":return n.era(o,{width:"abbreviated"});case"GGGGG":return n.era(o,{width:"narrow"});case"GGGG":default:return n.era(o,{width:"wide"})}},y:function(e,t,n,o){var r=e.getUTCFullYear(),i=r>0?r:1-r;return"yy"===t?rt(i%100,2):"yo"===t?n.ordinalNumber(i,{unit:"year"}):rt(i,t.length)},Y:function(e,t,n,o){var r=Xe(e,o),i=r>0?r:1-r;return"YY"===t?rt(i%100,2):"Yo"===t?n.ordinalNumber(i,{unit:"year"}):rt(i,t.length)},R:function(e,t,n,o){return rt(Ve(e,o),t.length)},u:function(e,t,n,o){return rt(e.getUTCFullYear(),t.length)},Q:function(e,t,n,o){var r=Math.ceil((e.getUTCMonth()+1)/3);switch(t){case"Q":return String(r);case"QQ":return rt(r,2);case"Qo":return n.ordinalNumber(r,{unit:"quarter"});case"QQQ":return n.quarter(r,{width:"abbreviated",context:"formatting"});case"QQQQQ":return n.quarter(r,{width:"narrow",context:"formatting"});case"QQQQ":default:return n.quarter(r,{width:"wide",context:"formatting"})}},q:function(e,t,n,o){var r=Math.ceil((e.getUTCMonth()+1)/3);switch(t){case"q":return String(r);case"qq":return rt(r,2);case"qo":return n.ordinalNumber(r,{unit:"quarter"});case"qqq":return n.quarter(r,{width:"abbreviated",context:"standalone"});case"qqqqq":return n.quarter(r,{width:"narrow",context:"standalone"});case"qqqq":default:return n.quarter(r,{width:"wide",context:"standalone"})}},M:function(e,t,n,o){var r=e.getUTCMonth();switch(t){case"M":return String(r+1);case"MM":return rt(r+1,2);case"Mo":return n.ordinalNumber(r+1,{unit:"month"});case"MMM":return n.month(r,{width:"abbreviated",context:"formatting"});case"MMMMM":return n.month(r,{width:"narrow",context:"formatting"});case"MMMM":default:return n.month(r,{width:"wide",context:"formatting"})}},L:function(e,t,n,o){var r=e.getUTCMonth();switch(t){case"L":return String(r+1);case"LL":return rt(r+1,2);case"Lo":return n.ordinalNumber(r+1,{unit:"month"});case"LLL":return n.month(r,{width:"abbreviated",context:"standalone"});case"LLLLL":return n.month(r,{width:"narrow",context:"standalone"});case"LLLL":default:return n.month(r,{width:"wide",context:"standalone"})}},w:function(e,t,n,o){var r=Qe(e,o);return"wo"===t?n.ordinalNumber(r,{unit:"week"}):rt(r,t.length)},I:function(e,t,n,o){var r=Ye(e,o);return"Io"===t?n.ordinalNumber(r,{unit:"week"}):rt(r,t.length)},d:function(e,t,n,o){var r=e.getUTCDate();return"do"===t?n.ordinalNumber(r,{unit:"date"}):rt(r,t.length)},D:function(e,t,n,o){var r=function(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),o=n.getTime();n.setUTCMonth(0,1),n.setUTCHours(0,0,0,0);var r=o-n.getTime();return Math.floor(r/We)+1}(e,o);return"Do"===t?n.ordinalNumber(r,{unit:"dayOfYear"}):rt(r,t.length)},E:function(e,t,n,o){var r=e.getUTCDay();switch(t){case"E":case"EE":case"EEE":return n.day(r,{width:"abbreviated",context:"formatting"});case"EEEEE":return n.day(r,{width:"narrow",context:"formatting"});case"EEEEEE":return n.day(r,{width:"short",context:"formatting"});case"EEEE":default:return n.day(r,{width:"wide",context:"formatting"})}},e:function(e,t,n,o){var r=e.getUTCDay(),i=(r-o.weekStartsOn+8)%7||7;switch(t){case"e":return String(i);case"ee":return rt(i,2);case"eo":return n.ordinalNumber(i,{unit:"day"});case"eee":return n.day(r,{width:"abbreviated",context:"formatting"});case"eeeee":return n.day(r,{width:"narrow",context:"formatting"});case"eeeeee":return n.day(r,{width:"short",context:"formatting"});case"eeee":default:return n.day(r,{width:"wide",context:"formatting"})}},c:function(e,t,n,o){var r=e.getUTCDay(),i=(r-o.weekStartsOn+8)%7||7;switch(t){case"c":return String(i);case"cc":return rt(i,t.length);case"co":return n.ordinalNumber(i,{unit:"day"});case"ccc":return n.day(r,{width:"abbreviated",context:"standalone"});case"ccccc":return n.day(r,{width:"narrow",context:"standalone"});case"cccccc":return n.day(r,{width:"short",context:"standalone"});case"cccc":default:return n.day(r,{width:"wide",context:"standalone"})}},i:function(e,t,n,o){var r=e.getUTCDay(),i=0===r?7:r;switch(t){case"i":return String(i);case"ii":return rt(i,t.length);case"io":return n.ordinalNumber(i,{unit:"day"});case"iii":return n.day(r,{width:"abbreviated",context:"formatting"});case"iiiii":return n.day(r,{width:"narrow",context:"formatting"});case"iiiiii":return n.day(r,{width:"short",context:"formatting"});case"iiii":default:return n.day(r,{width:"wide",context:"formatting"})}},a:function(e,t,n){var o=e.getUTCHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":case"aaa":return n.dayPeriod(o,{width:"abbreviated",context:"formatting"});case"aaaaa":return n.dayPeriod(o,{width:"narrow",context:"formatting"});case"aaaa":default:return n.dayPeriod(o,{width:"wide",context:"formatting"})}},b:function(e,t,n){var o,r=e.getUTCHours();switch(o=12===r?Ze:0===r?Je:r/12>=1?"pm":"am",t){case"b":case"bb":case"bbb":return n.dayPeriod(o,{width:"abbreviated",context:"formatting"});case"bbbbb":return n.dayPeriod(o,{width:"narrow",context:"formatting"});case"bbbb":default:return n.dayPeriod(o,{width:"wide",context:"formatting"})}},B:function(e,t,n){var o,r=e.getUTCHours();switch(o=r>=17?nt:r>=12?tt:r>=4?et:ot,t){case"B":case"BB":case"BBB":return n.dayPeriod(o,{width:"abbreviated",context:"formatting"});case"BBBBB":return n.dayPeriod(o,{width:"narrow",context:"formatting"});case"BBBB":default:return n.dayPeriod(o,{width:"wide",context:"formatting"})}},h:function(e,t,n,o){var r=e.getUTCHours()%12;return 0===r&&(r=12),"ho"===t?n.ordinalNumber(r,{unit:"hour"}):rt(r,t.length)},H:function(e,t,n,o){var r=e.getUTCHours();return"Ho"===t?n.ordinalNumber(r,{unit:"hour"}):rt(r,t.length)},K:function(e,t,n,o){var r=e.getUTCHours()%12;return"Ko"===t?n.ordinalNumber(r,{unit:"hour"}):rt(r,t.length)},k:function(e,t,n,o){var r=e.getUTCHours();return 0===r&&(r=24),"ko"===t?n.ordinalNumber(r,{unit:"hour"}):rt(r,t.length)},m:function(e,t,n,o){var r=e.getUTCMinutes();return"mo"===t?n.ordinalNumber(r,{unit:"minute"}):rt(r,t.length)},s:function(e,t,n,o){var r=e.getUTCSeconds();return"so"===t?n.ordinalNumber(r,{unit:"second"}):rt(r,t.length)},S:function(e,t,n,o){var r=t.length,i=e.getUTCMilliseconds();return rt(Math.floor(i*Math.pow(10,r-3)),r)},X:function(e,t,n,o){var r=(o._originalDate||e).getTimezoneOffset();if(0===r)return"Z";switch(t){case"X":return at(r);case"XXXX":case"XX":return it(r);case"XXXXX":case"XXX":default:return it(r,":")}},x:function(e,t,n,o){var r=(o._originalDate||e).getTimezoneOffset();switch(t){case"x":return at(r);case"xxxx":case"xx":return it(r);case"xxxxx":case"xxx":default:return it(r,":")}},O:function(e,t,n,o){var r=(o._originalDate||e).getTimezoneOffset();switch(t){case"O":case"OO":case"OOO":return"GMT"+st(r,":");case"OOOO":default:return"GMT"+it(r,":")}},z:function(e,t,n,o){var r=(o._originalDate||e).getTimezoneOffset();switch(t){case"z":case"zz":case"zzz":return"GMT"+st(r,":");case"zzzz":default:return"GMT"+it(r,":")}},t:function(e,t,n,o){var r=o._originalDate||e;return rt(Math.floor(r.getTime()/1e3),t.length)},T:function(e,t,n,o){return rt((o._originalDate||e).getTime(),t.length)}};function ut(e,t,n){switch(e){case"P":return t.date({width:"short"});case"PP":return t.date({width:"medium"});case"PPP":return t.date({width:"long"});case"PPPP":default:return t.date({width:"full"})}}function ct(e,t,n){switch(e){case"p":return t.time({width:"short"});case"pp":return t.time({width:"medium"});case"ppp":return t.time({width:"long"});case"pppp":default:return t.time({width:"full"})}}var dt={p:ct,P:function(e,t,n){var o,r=e.match(/(P+)(p+)?/),i=r[1],a=r[2];if(!a)return ut(e,t);switch(i){case"P":o=t.dateTime({width:"short"});break;case"PP":o=t.dateTime({width:"medium"});break;case"PPP":o=t.dateTime({width:"long"});break;case"PPPP":default:o=t.dateTime({width:"full"})}return o.replace("{{date}}",ut(i,t)).replace("{{time}}",ct(a,t))}};function pt(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");return w(e,-o(t),n)}var ht=["D","DD","YY","YYYY"];function ft(e){return-1!==ht.indexOf(e)}function mt(e){throw new RangeError("`options.awareOfUnicodeTokens` must be set to `true` to use `"+e+"` token; see: https://git.io/fxCyr")}var gt=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,vt=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,yt=/^'(.*?)'?$/,bt=/''/g;function wt(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=String(t),a=n||{},s=a.locale||Ue,l=s.options&&s.options.firstWeekContainsDate,u=null==l?1:o(l),d=null==a.firstWeekContainsDate?u:o(a.firstWeekContainsDate);if(!(d>=1&&d<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var p=s.options&&s.options.weekStartsOn,h=null==p?0:o(p),f=null==a.weekStartsOn?h:o(a.weekStartsOn);if(!(f>=0&&f<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");if(!s.localize)throw new RangeError("locale must contain localize property");if(!s.formatLong)throw new RangeError("locale must contain formatLong property");var m=c(e,a);if(!Ne(m,a))return"Invalid Date";var g=pt(m,i(m),a),v={firstWeekContainsDate:d,weekStartsOn:f,locale:s,_originalDate:m};return r.match(vt).map(function(e){var t=e[0];return"p"===t||"P"===t?(0,dt[t])(e,s.formatLong,v):e}).join("").match(gt).map(function(e){if("''"===e)return"'";var t=e[0];if("'"===t)return e.match(yt)[1].replace(bt,"'");var n=lt[t];return n?(!a.awareOfUnicodeTokens&&ft(e)&&mt(e),n(g,e,s.localize,v)):e}).join("")}var Et=1440,Ct=2520,xt=43200,Tt=86400;function kt(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=n||{},r=o.locale||Ue;if(!r.formatDistance)throw new RangeError("locale must contain formatDistance property");var a=q(e,t,o);if(isNaN(a))return"Invalid Date";var s,l,u=T(o);u.addSuffix=Boolean(o.addSuffix),u.comparison=a,a>0?(s=c(t,o),l=c(e,o)):(s=c(e,o),l=c(t,o));var d,p=de(l,s,o),h=(i(l)-i(s))/1e3,f=Math.round((p-h)/60);if(f<2)return o.includeSeconds?p<5?r.formatDistance("lessThanXSeconds",5,u):p<10?r.formatDistance("lessThanXSeconds",10,u):p<20?r.formatDistance("lessThanXSeconds",20,u):p<40?r.formatDistance("halfAMinute",null,u):p<60?r.formatDistance("lessThanXMinutes",1,u):r.formatDistance("xMinutes",1,u):0===f?r.formatDistance("lessThanXMinutes",1,u):r.formatDistance("xMinutes",f,u);if(f<45)return r.formatDistance("xMinutes",f,u);if(f<90)return r.formatDistance("aboutXHours",1,u);if(f<Et){var m=Math.round(f/60);return r.formatDistance("aboutXHours",m,u)}if(f<Ct)return r.formatDistance("xDays",1,u);if(f<xt){var g=Math.round(f/Et);return r.formatDistance("xDays",g,u)}if(f<Tt)return d=Math.round(f/xt),r.formatDistance("aboutXMonths",d,u);if((d=ue(l,s,o))<12){var v=Math.round(f/xt);return r.formatDistance("xMonths",v,u)}var y=d%12,b=Math.floor(d/12);return y<3?r.formatDistance("aboutXYears",b,u):y<9?r.formatDistance("overXYears",b,u):r.formatDistance("almostXYears",b+1,u)}var St=1440,Dt=43200,Mt=525600;function Rt(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=n||{},r=o.locale||Ue;if(!r.formatDistance)throw new RangeError("locale must contain localize.formatDistance property");var a=q(e,t,o);if(isNaN(a))return"Invalid Date";var s,l,u=T(o);u.addSuffix=Boolean(o.addSuffix),u.comparison=a,a>0?(s=c(t,o),l=c(e,o)):(s=c(e,o),l=c(t,o));var d,p=null==o.roundingMethod?"round":String(o.roundingMethod);if("floor"===p)d=Math.floor;else if("ceil"===p)d=Math.ceil;else{if("round"!==p)throw new RangeError("roundingMethod must be 'floor', 'ceil' or 'round'");d=Math.round}var h,f=de(l,s,n),m=d((f-(i(l)-i(s))/1e3)/60);if("second"===(h=null==o.unit?m<1?"second":m<60?"minute":m<St?"hour":m<Dt?"day":m<Mt?"month":"year":String(o.unit)))return r.formatDistance("xSeconds",f,u);if("minute"===h)return r.formatDistance("xMinutes",m,u);if("hour"===h){var g=d(m/60);return r.formatDistance("xHours",g,u)}if("day"===h){var v=d(m/St);return r.formatDistance("xDays",v,u)}if("month"===h){var y=d(m/Dt);return r.formatDistance("xMonths",y,u)}if("year"===h){var b=d(m/Mt);return r.formatDistance("xYears",b,u)}throw new RangeError("unit must be 'second', 'minute', 'hour', 'day', 'month' or 'year'")}function Pt(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=c(e,n),r=c(t,n),a=n||{},s=a.locale||Ue;if(!s.localize)throw new RangeError("locale must contain localize property");if(!s.formatLong)throw new RangeError("locale must contain formatLong property");if(!s.formatRelative)throw new RangeError("locale must contain formatRelative property");var l,u=P(o,r,a);if(isNaN(u))return"Invalid Date";l=u<-6?"other":u<-1?"lastWeek":u<0?"yesterday":u<1?"today":u<2?"tomorrow":u<7?"nextWeek":"other";var d=pt(o,i(o),a),p=pt(r,i(r),a);return wt(o,s.formatRelative(l,d,p,a),a)}function _t(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return c(1e3*o(e),t)}function Lt(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return c(e,t).getDate()}function Ot(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return c(e,t).getDay()}function Nt(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t);return P(n,Ce(n,t),t)+1}function Ft(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t).getFullYear();return n%400==0||n%4==0&&n%100!=0}function At(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t);return isNaN(n)?NaN:Ft(n,t)?366:365}function It(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t).getFullYear();return 10*Math.floor(n/10)}function Ht(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return c(e,t).getHours()}function zt(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t).getDay();return 0===n&&(n=7),n}var jt=6048e5;function Bt(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),o=k(n,t).getTime()-D(n,t).getTime();return Math.round(o/jt)+1}var Ut=6048e5;function Wt(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=D(e,t),o=D(z(n,60,t),t).valueOf()-n.valueOf();return Math.round(o/Ut)}function qt(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return c(e,t).getMilliseconds()}function Vt(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return c(e,t).getMinutes()}function Gt(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return c(e,t).getMonth()}var Yt=864e5;function $t(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=e||{},r=t||{},i=c(o.start,n).getTime(),a=c(o.end,n).getTime(),s=c(r.start,n).getTime(),l=c(r.end,n).getTime();if(!(i<=a&&s<=l))throw new RangeError("Invalid interval");if(!(i<l&&s<a))return 0;var u=(l>a?a:l)-(s<i?i:s);return Math.ceil(u/Yt)}function Xt(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return c(e,t).getSeconds()}function Kt(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return c(e,t).getTime()}function Qt(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return Math.floor(Kt(e,t)/1e3)}function Jt(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),r=n.getFullYear(),i=t||{},a=i.locale,s=a&&a.options&&a.options.firstWeekContainsDate,l=null==s?1:o(s),u=null==i.firstWeekContainsDate?l:o(i.firstWeekContainsDate);if(!(u>=1&&u<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var d=new Date(0);d.setFullYear(r+1,0,u),d.setHours(0,0,0,0);var p=x(d,t),h=new Date(0);h.setFullYear(r,0,u),h.setHours(0,0,0,0);var f=x(h,t);return n.getTime()>=p.getTime()?r+1:n.getTime()>=f.getTime()?r:r-1}function Zt(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=t||{},r=n.locale,i=r&&r.options&&r.options.firstWeekContainsDate,a=null==i?1:o(i),s=null==n.firstWeekContainsDate?a:o(n.firstWeekContainsDate),l=Jt(e,t),u=new Date(0);return u.setFullYear(l,0,s),u.setHours(0,0,0,0),x(u,t)}var en=6048e5;function tn(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),o=x(n,t).getTime()-Zt(n,t).getTime();return Math.round(o/en)+1}function nn(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=t||{},r=n.locale,i=r&&r.options&&r.options.weekStartsOn,a=null==i?0:o(i),s=null==n.weekStartsOn?a:o(n.weekStartsOn);if(!(s>=0&&s<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var l=Ot(be(e,t),t),u=(l<s?7-s:l)>Ot(e,t)?7-s:0;return Math.ceil((Lt(e,t)+u)/7)}function on(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),o=n.getMonth();return n.setFullYear(n.getFullYear(),o+1,0),n.setHours(0,0,0,0),n}function rn(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return Z(on(e,t),be(e,t),t)+1}function an(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return c(e,t).getFullYear()}function sn(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=c(e,n),r=c(t,n);return o.getTime()>r.getTime()}function ln(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=c(e,n),r=c(t,n);return o.getTime()<r.getTime()}function un(e){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return e instanceof Date||"object"==typeof e&&"[object Date]"===Object.prototype.toString.call(e)}function cn(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=c(e,n),r=c(t,n);return o.getTime()===r.getTime()}function dn(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return 1===c(e,t).getDate()}function pn(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return 5===c(e,t).getDay()}function hn(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t);return ke(n,t).getTime()===we(n,t).getTime()}function fn(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return 1===c(e,t).getDay()}function mn(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=M(e,n),r=M(t,n);return o.getTime()===r.getTime()}function gn(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t);return n.setMinutes(0,0,0),n}function vn(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=gn(e,n),r=gn(t,n);return o.getTime()===r.getTime()}function yn(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=x(e,n),r=x(t,n);return o.getTime()===r.getTime()}function bn(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=T(n);return o.weekStartsOn=1,yn(e,t,o)}function wn(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=D(e,n),r=D(t,n);return o.getTime()===r.getTime()}function En(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t);return n.setSeconds(0,0),n}function Cn(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=En(e,n),r=En(t,n);return o.getTime()===r.getTime()}function xn(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=c(e,n),r=c(t,n);return o.getFullYear()===r.getFullYear()&&o.getMonth()===r.getMonth()}function Tn(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),o=n.getMonth(),r=o-o%3;return n.setMonth(r,1),n.setHours(0,0,0,0),n}function kn(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=Tn(e,n),r=Tn(t,n);return o.getTime()===r.getTime()}function Sn(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t);return n.setMilliseconds(0),n}function Dn(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=Sn(e,n),r=Sn(t,n);return o.getTime()===r.getTime()}function Mn(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=c(e,n),r=c(t,n);return o.getFullYear()===r.getFullYear()}function Rn(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return 6===c(e,t).getDay()}function Pn(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return 4===c(e,t).getDay()}function _n(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return 2===c(e,t).getDay()}function Ln(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");return 3===c(e,t).getDay()}function On(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var o=t||{},r=c(e,n).getTime(),i=c(o.start,n).getTime(),a=c(o.end,n).getTime();if(!(i<=a))throw new RangeError("Invalid interval");return r>=i&&r<=a}function Nn(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),o=n.getFullYear(),r=9+10*Math.floor(o/10);return n.setFullYear(r+1,0,0),n.setHours(0,0,0,0),n}function Fn(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=t||{},r=n.locale,i=r&&r.options&&r.options.weekStartsOn,a=null==i?0:o(i),s=null==n.weekStartsOn?a:o(n.weekStartsOn);if(!(s>=0&&s<=6))throw new RangeError("weekStartsOn must be between 0 and 6");var l=c(e,t),u=l.getDay(),d=6+(u<s?-7:0)-(u-s);return l.setHours(0,0,0,0),l.setDate(l.getDate()+d),l}function An(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=T(t);return n.weekStartsOn=1,Fn(e,n)}function In(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=S(e,t),o=new Date(0);o.setFullYear(n+1,0,4),o.setHours(0,0,0,0);var r=k(o,t);return r.setDate(r.getDate()-1),r}function Hn(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),o=n.getMonth(),r=o-o%3+3;return n.setMonth(r,0),n.setHours(0,0,0,0),n}function zn(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),o=n.getFullYear();return n.setFullYear(o+1,0,0),n.setHours(0,0,0,0),n}function jn(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n;return(null==e?[]:"function"==typeof e.forEach?e:Array.prototype.slice.call(e)).forEach(function(e){var o=c(e,t);(void 0===n||n<o||isNaN(o))&&(n=o)}),n}function Bn(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n;return(null==e?[]:"function"==typeof e.forEach?e:Array.prototype.slice.call(e)).forEach(function(e){var o=c(e,t);(void 0===n||n>o||isNaN(o))&&(n=o)}),n}function Un(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=n||{},i=r.locale,a=i&&i.options&&i.options.weekStartsOn,s=null==a?0:o(a),l=null==r.weekStartsOn?s:o(r.weekStartsOn);if(!(l>=0&&l<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var u=c(e,n),d=o(t),p=((d%7+7)%7<l?7:0)+d-u.getUTCDay();return u.setUTCDate(u.getUTCDate()+p),u}var Wn=36e5,qn=6e4,Vn=1e3,Gn={month:/^(1[0-2]|0?\d)/,date:/^(3[0-1]|[0-2]?\d)/,dayOfYear:/^(36[0-6]|3[0-5]\d|[0-2]?\d?\d)/,week:/^(5[0-3]|[0-4]?\d)/,hour23h:/^(2[0-3]|[0-1]?\d)/,hour24h:/^(2[0-4]|[0-1]?\d)/,hour11h:/^(1[0-1]|0?\d)/,hour12h:/^(1[0-2]|0?\d)/,minute:/^[0-5]?\d/,second:/^[0-5]?\d/,singleDigit:/^\d/,twoDigits:/^\d{1,2}/,threeDigits:/^\d{1,3}/,fourDigits:/^\d{1,4}/,anyDigitsSigned:/^-?\d+/,singleDigitSigned:/^-?\d/,twoDigitsSigned:/^-?\d{1,2}/,threeDigitsSigned:/^-?\d{1,3}/,fourDigitsSigned:/^-?\d{1,4}/},Yn=/^([+-])(\d{2})(\d{2})?|Z/,$n=/^([+-])(\d{2})(\d{2})|Z/,Xn=/^([+-])(\d{2})(\d{2})((\d{2}))?|Z/,Kn=/^([+-])(\d{2}):(\d{2})|Z/,Qn=/^([+-])(\d{2}):(\d{2})(:(\d{2}))?|Z/;function Jn(e,t,n){var o=t.match(e);if(!o)return null;var r=parseInt(o[0],10);return{value:n?n(r):r,rest:t.slice(o[0].length)}}function Zn(e,t){var n=t.match(e);if(!n)return null;if("Z"===n[0])return{value:0,rest:t.slice(1)};var o="+"===n[1]?1:-1,r=n[2]?parseInt(n[2],10):0,i=n[3]?parseInt(n[3],10):0,a=n[5]?parseInt(n[5],10):0;return{value:o*(r*Wn+i*qn+a*Vn),rest:t.slice(n[0].length)}}function eo(e,t){return Jn(Gn.anyDigitsSigned,e,t)}function to(e,t,n){switch(e){case 1:return Jn(Gn.singleDigit,t,n);case 2:return Jn(Gn.twoDigits,t,n);case 3:return Jn(Gn.threeDigits,t,n);case 4:return Jn(Gn.fourDigits,t,n);default:return Jn(new RegExp("^\\d{1,"+e+"}"),t,n)}}function no(e,t,n){switch(e){case 1:return Jn(Gn.singleDigitSigned,t,n);case 2:return Jn(Gn.twoDigitsSigned,t,n);case 3:return Jn(Gn.threeDigitsSigned,t,n);case 4:return Jn(Gn.fourDigitsSigned,t,n);default:return Jn(new RegExp("^-?\\d{1,"+e+"}"),t,n)}}function oo(e){switch(e){case"morning":return 4;case"evening":return 17;case"pm":case"noon":case"afternoon":return 12;case"am":case"midnight":case"night":default:return 0}}function ro(e,t){var n,o=t>0,r=o?t:1-t;if(r<=50)n=e||100;else{var i=r+50;n=e+100*Math.floor(i/100)-(e>=i%100?100:0)}return o?n:1-n}var io=[31,28,31,30,31,30,31,31,30,31,30,31],ao=[31,29,31,30,31,30,31,31,30,31,30,31];function so(e){return e%400==0||e%4==0&&e%100!=0}var lo={G:{priority:140,parse:function(e,t,n,o){switch(t){case"G":case"GG":case"GGG":return n.era(e,{width:"abbreviated"})||n.era(e,{width:"narrow"});case"GGGGG":return n.era(e,{width:"narrow"});case"GGGG":default:return n.era(e,{width:"wide"})||n.era(e,{width:"abbreviated"})||n.era(e,{width:"narrow"})}},set:function(e,t,n){return e.setUTCFullYear(1===t?10:-9,0,1),e.setUTCHours(0,0,0,0),e}},y:{priority:130,parse:function(e,t,n,o){var r=function(e){return{year:e,isTwoDigitYear:"yy"===t}};switch(t){case"y":return to(4,e,r);case"yo":return n.ordinalNumber(e,{unit:"year",valueCallback:r});default:return to(t.length,e,r)}},validate:function(e,t,n){return t.isTwoDigitYear||t.year>0},set:function(e,t,n){var o=Xe(e,n);if(t.isTwoDigitYear){var r=ro(t.year,o);return e.setUTCFullYear(r,0,1),e.setUTCHours(0,0,0,0),e}var i=o>0?t.year:1-t.year;return e.setUTCFullYear(i,0,1),e.setUTCHours(0,0,0,0),e}},Y:{priority:130,parse:function(e,t,n,o){var r=function(e){return{year:e,isTwoDigitYear:"YY"===t}};switch(t){case"Y":return to(4,e,r);case"Yo":return n.ordinalNumber(e,{unit:"year",valueCallback:r});default:return to(t.length,e,r)}},validate:function(e,t,n){return t.isTwoDigitYear||t.year>0},set:function(e,t,n){var o=e.getUTCFullYear();if(t.isTwoDigitYear){var r=ro(t.year,o);return e.setUTCFullYear(r,0,n.firstWeekContainsDate),e.setUTCHours(0,0,0,0),$e(e,n)}var i=o>0?t.year:1-t.year;return e.setUTCFullYear(i,0,n.firstWeekContainsDate),e.setUTCHours(0,0,0,0),$e(e,n)}},R:{priority:130,parse:function(e,t,n,o){return no("R"===t?4:t.length,e)},set:function(e,t,n){var o=new Date(0);return o.setUTCFullYear(t,0,4),o.setUTCHours(0,0,0,0),qe(o)}},u:{priority:130,parse:function(e,t,n,o){return no("u"===t?4:t.length,e)},set:function(e,t,n){return e.setUTCFullYear(t,0,1),e.setUTCHours(0,0,0,0),e}},Q:{priority:120,parse:function(e,t,n,o){switch(t){case"Q":case"QQ":return to(t.length,e);case"Qo":return n.ordinalNumber(e,{unit:"quarter"});case"QQQ":return n.quarter(e,{width:"abbreviated",context:"formatting"})||n.quarter(e,{width:"narrow",context:"formatting"});case"QQQQQ":return n.quarter(e,{width:"narrow",context:"formatting"});case"QQQQ":default:return n.quarter(e,{width:"wide",context:"formatting"})||n.quarter(e,{width:"abbreviated",context:"formatting"})||n.quarter(e,{width:"narrow",context:"formatting"})}},validate:function(e,t,n){return t>=1&&t<=4},set:function(e,t,n){return e.setUTCMonth(3*(t-1),1),e.setUTCHours(0,0,0,0),e}},q:{priority:120,parse:function(e,t,n,o){switch(t){case"q":case"qq":return to(t.length,e);case"qo":return n.ordinalNumber(e,{unit:"quarter"});case"qqq":return n.quarter(e,{width:"abbreviated",context:"standalone"})||n.quarter(e,{width:"narrow",context:"standalone"});case"qqqqq":return n.quarter(e,{width:"narrow",context:"standalone"});case"qqqq":default:return n.quarter(e,{width:"wide",context:"standalone"})||n.quarter(e,{width:"abbreviated",context:"standalone"})||n.quarter(e,{width:"narrow",context:"standalone"})}},validate:function(e,t,n){return t>=1&&t<=4},set:function(e,t,n){return e.setUTCMonth(3*(t-1),1),e.setUTCHours(0,0,0,0),e}},M:{priority:110,parse:function(e,t,n,o){var r=function(e){return e-1};switch(t){case"M":return Jn(Gn.month,e,r);case"MM":return to(2,e,r);case"Mo":return n.ordinalNumber(e,{unit:"month",valueCallback:r});case"MMM":return n.month(e,{width:"abbreviated",context:"formatting"})||n.month(e,{width:"narrow",context:"formatting"});case"MMMMM":return n.month(e,{width:"narrow",context:"formatting"});case"MMMM":default:return n.month(e,{width:"wide",context:"formatting"})||n.month(e,{width:"abbreviated",context:"formatting"})||n.month(e,{width:"narrow",context:"formatting"})}},validate:function(e,t,n){return t>=0&&t<=11},set:function(e,t,n){return e.setUTCMonth(t,1),e.setUTCHours(0,0,0,0),e}},L:{priority:110,parse:function(e,t,n,o){var r=function(e){return e-1};switch(t){case"L":return Jn(Gn.month,e,r);case"LL":return to(2,e,r);case"Lo":return n.ordinalNumber(e,{unit:"month",valueCallback:r});case"LLL":return n.month(e,{width:"abbreviated",context:"standalone"})||n.month(e,{width:"narrow",context:"standalone"});case"LLLLL":return n.month(e,{width:"narrow",context:"standalone"});case"LLLL":default:return n.month(e,{width:"wide",context:"standalone"})||n.month(e,{width:"abbreviated",context:"standalone"})||n.month(e,{width:"narrow",context:"standalone"})}},validate:function(e,t,n){return t>=0&&t<=11},set:function(e,t,n){return e.setUTCMonth(t,1),e.setUTCHours(0,0,0,0),e}},w:{priority:100,parse:function(e,t,n,o){switch(t){case"w":return Jn(Gn.week,e);case"wo":return n.ordinalNumber(e,{unit:"week"});default:return to(t.length,e)}},validate:function(e,t,n){return t>=1&&t<=53},set:function(e,t,n){return $e(function(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=c(e,n),i=o(t),a=Qe(r,n)-i;return r.setUTCDate(r.getUTCDate()-7*a),r}(e,t,n),n)}},I:{priority:100,parse:function(e,t,n,o){switch(t){case"I":return Jn(Gn.week,e);case"Io":return n.ordinalNumber(e,{unit:"week"});default:return to(t.length,e)}},validate:function(e,t,n){return t>=1&&t<=53},set:function(e,t,n){return qe(function(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=c(e,n),i=o(t),a=Ye(r,n)-i;return r.setUTCDate(r.getUTCDate()-7*a),r}(e,t,n),n)}},d:{priority:90,parse:function(e,t,n,o){switch(t){case"d":return Jn(Gn.date,e);case"do":return n.ordinalNumber(e,{unit:"date"});default:return to(t.length,e)}},validate:function(e,t,n){var o=so(e.getUTCFullYear()),r=e.getUTCMonth();return o?t>=1&&t<=ao[r]:t>=1&&t<=io[r]},set:function(e,t,n){return e.setUTCDate(t),e.setUTCHours(0,0,0,0),e}},D:{priority:90,parse:function(e,t,n,o){switch(t){case"D":case"DD":return Jn(Gn.dayOfYear,e);case"Do":return n.ordinalNumber(e,{unit:"date"});default:return to(t.length,e)}},validate:function(e,t,n){return so(e.getUTCFullYear())?t>=1&&t<=366:t>=1&&t<=365},set:function(e,t,n){return e.setUTCMonth(0,t),e.setUTCHours(0,0,0,0),e}},E:{priority:90,parse:function(e,t,n,o){switch(t){case"E":case"EE":case"EEE":return n.day(e,{width:"abbreviated",context:"formatting"})||n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"});case"EEEEE":return n.day(e,{width:"narrow",context:"formatting"});case"EEEEEE":return n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"});case"EEEE":default:return n.day(e,{width:"wide",context:"formatting"})||n.day(e,{width:"abbreviated",context:"formatting"})||n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"})}},validate:function(e,t,n){return t>=0&&t<=6},set:function(e,t,n){return(e=Un(e,t,n)).setUTCHours(0,0,0,0),e}},e:{priority:90,parse:function(e,t,n,o){var r=function(e){var t=7*Math.floor((e-1)/7);return(e+o.weekStartsOn+6)%7+t};switch(t){case"e":case"ee":return to(t.length,e,r);case"eo":return n.ordinalNumber(e,{unit:"day",valueCallback:r});case"eee":return n.day(e,{width:"abbreviated",context:"formatting"})||n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"});case"eeeee":return n.day(e,{width:"narrow",context:"formatting"});case"eeeeee":return n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"});case"eeee":default:return n.day(e,{width:"wide",context:"formatting"})||n.day(e,{width:"abbreviated",context:"formatting"})||n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"})}},validate:function(e,t,n){return t>=0&&t<=6},set:function(e,t,n){return(e=Un(e,t,n)).setUTCHours(0,0,0,0),e}},c:{priority:90,parse:function(e,t,n,o){var r=function(e){var t=7*Math.floor((e-1)/7);return(e+o.weekStartsOn+6)%7+t};switch(t){case"c":case"cc":return to(t.length,e,r);case"co":return n.ordinalNumber(e,{unit:"day",valueCallback:r});case"ccc":return n.day(e,{width:"abbreviated",context:"standalone"})||n.day(e,{width:"short",context:"standalone"})||n.day(e,{width:"narrow",context:"standalone"});case"ccccc":return n.day(e,{width:"narrow",context:"standalone"});case"cccccc":return n.day(e,{width:"short",context:"standalone"})||n.day(e,{width:"narrow",context:"standalone"});case"cccc":default:return n.day(e,{width:"wide",context:"standalone"})||n.day(e,{width:"abbreviated",context:"standalone"})||n.day(e,{width:"short",context:"standalone"})||n.day(e,{width:"narrow",context:"standalone"})}},validate:function(e,t,n){return t>=0&&t<=6},set:function(e,t,n){return(e=Un(e,t,n)).setUTCHours(0,0,0,0),e}},i:{priority:90,parse:function(e,t,n,o){var r=function(e){return 0===e?7:e};switch(t){case"i":case"ii":return to(t.length,e);case"io":return n.ordinalNumber(e,{unit:"day"});case"iii":return n.day(e,{width:"abbreviated",context:"formatting",valueCallback:r})||n.day(e,{width:"short",context:"formatting",valueCallback:r})||n.day(e,{width:"narrow",context:"formatting",valueCallback:r});case"iiiii":return n.day(e,{width:"narrow",context:"formatting",valueCallback:r});case"iiiiii":return n.day(e,{width:"short",context:"formatting",valueCallback:r})||n.day(e,{width:"narrow",context:"formatting",valueCallback:r});case"iiii":default:return n.day(e,{width:"wide",context:"formatting",valueCallback:r})||n.day(e,{width:"abbreviated",context:"formatting",valueCallback:r})||n.day(e,{width:"short",context:"formatting",valueCallback:r})||n.day(e,{width:"narrow",context:"formatting",valueCallback:r})}},validate:function(e,t,n){return t>=1&&t<=7},set:function(e,t,n){return(e=function(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=o(t);r%7==0&&(r-=7);var i=c(e,n),a=((r%7+7)%7<1?7:0)+r-i.getUTCDay();return i.setUTCDate(i.getUTCDate()+a),i}(e,t,n)).setUTCHours(0,0,0,0),e}},a:{priority:80,parse:function(e,t,n,o){switch(t){case"a":case"aa":case"aaa":return n.dayPeriod(e,{width:"abbreviated",context:"formatting"})||n.dayPeriod(e,{width:"narrow",context:"formatting"});case"aaaaa":return n.dayPeriod(e,{width:"narrow",context:"formatting"});case"aaaa":default:return n.dayPeriod(e,{width:"wide",context:"formatting"})||n.dayPeriod(e,{width:"abbreviated",context:"formatting"})||n.dayPeriod(e,{width:"narrow",context:"formatting"})}},set:function(e,t,n){return e.setUTCHours(oo(t),0,0,0),e}},b:{priority:80,parse:function(e,t,n,o){switch(t){case"b":case"bb":case"bbb":return n.dayPeriod(e,{width:"abbreviated",context:"formatting"})||n.dayPeriod(e,{width:"narrow",context:"formatting"});case"bbbbb":return n.dayPeriod(e,{width:"narrow",context:"formatting"});case"bbbb":default:return n.dayPeriod(e,{width:"wide",context:"formatting"})||n.dayPeriod(e,{width:"abbreviated",context:"formatting"})||n.dayPeriod(e,{width:"narrow",context:"formatting"})}},set:function(e,t,n){return e.setUTCHours(oo(t),0,0,0),e}},B:{priority:80,parse:function(e,t,n,o){switch(t){case"B":case"BB":case"BBB":return n.dayPeriod(e,{width:"abbreviated",context:"formatting"})||n.dayPeriod(e,{width:"narrow",context:"formatting"});case"BBBBB":return n.dayPeriod(e,{width:"narrow",context:"formatting"});case"BBBB":default:return n.dayPeriod(e,{width:"wide",context:"formatting"})||n.dayPeriod(e,{width:"abbreviated",context:"formatting"})||n.dayPeriod(e,{width:"narrow",context:"formatting"})}},set:function(e,t,n){return e.setUTCHours(oo(t),0,0,0),e}},h:{priority:70,parse:function(e,t,n,o){switch(t){case"h":return Jn(Gn.hour12h,e);case"ho":return n.ordinalNumber(e,{unit:"hour"});default:return to(t.length,e)}},validate:function(e,t,n){return t>=1&&t<=12},set:function(e,t,n){var o=e.getUTCHours()>=12;return o&&t<12?e.setUTCHours(t+12,0,0,0):o||12!==t?e.setUTCHours(t,0,0,0):e.setUTCHours(0,0,0,0),e}},H:{priority:70,parse:function(e,t,n,o){switch(t){case"H":return Jn(Gn.hour23h,e);case"Ho":return n.ordinalNumber(e,{unit:"hour"});default:return to(t.length,e)}},validate:function(e,t,n){return t>=0&&t<=23},set:function(e,t,n){return e.setUTCHours(t,0,0,0),e}},K:{priority:70,parse:function(e,t,n,o){switch(t){case"K":return Jn(Gn.hour11h,e);case"Ko":return n.ordinalNumber(e,{unit:"hour"});default:return to(t.length,e)}},validate:function(e,t,n){return t>=0&&t<=11},set:function(e,t,n){return e.getUTCHours()>=12&&t<12?e.setUTCHours(t+12,0,0,0):e.setUTCHours(t,0,0,0),e}},k:{priority:70,parse:function(e,t,n,o){switch(t){case"k":return Jn(Gn.hour24h,e);case"ko":return n.ordinalNumber(e,{unit:"hour"});default:return to(t.length,e)}},validate:function(e,t,n){return t>=1&&t<=24},set:function(e,t,n){var o=t<=24?t%24:t;return e.setUTCHours(o,0,0,0),e}},m:{priority:60,parse:function(e,t,n,o){switch(t){case"m":return Jn(Gn.minute,e);case"mo":return n.ordinalNumber(e,{unit:"minute"});default:return to(t.length,e)}},validate:function(e,t,n){return t>=0&&t<=59},set:function(e,t,n){return e.setUTCMinutes(t,0,0),e}},s:{priority:50,parse:function(e,t,n,o){switch(t){case"s":return Jn(Gn.second,e);case"so":return n.ordinalNumber(e,{unit:"second"});default:return to(t.length,e)}},validate:function(e,t,n){return t>=0&&t<=59},set:function(e,t,n){return e.setUTCSeconds(t,0),e}},S:{priority:40,parse:function(e,t,n,o){return to(t.length,e,function(e){return Math.floor(e*Math.pow(10,3-t.length))})},set:function(e,t,n){return e.setUTCMilliseconds(t),e}},X:{priority:20,parse:function(e,t,n,o){switch(t){case"X":return Zn(Yn,e);case"XX":return Zn($n,e);case"XXXX":return Zn(Xn,e);case"XXXXX":return Zn(Qn,e);case"XXX":default:return Zn(Kn,e)}},set:function(e,t,n){return new Date(e.getTime()-t)}},x:{priority:20,parse:function(e,t,n,o){switch(t){case"x":return Zn(Yn,e);case"xx":return Zn($n,e);case"xxxx":return Zn(Xn,e);case"xxxxx":return Zn(Qn,e);case"xxx":default:return Zn(Kn,e)}},set:function(e,t,n){return new Date(e.getTime()-t)}},t:{priority:10,parse:function(e,t,n,o){return eo(e)},set:function(e,t,n){return new Date(1e3*t)}},T:{priority:10,parse:function(e,t,n,o){return eo(e)},set:function(e,t,n){return new Date(t)}}},uo=20,co=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,po=/^'(.*?)'?$/,ho=/''/g,fo=/\S/;function mo(e,t,n,r){if(arguments.length<3)throw new TypeError("3 arguments required, but only "+arguments.length+" present");var a=String(e),s=String(t),l=r||{},u=l.locale||Ue;if(!u.match)throw new RangeError("locale must contain match property");var d=u.options&&u.options.firstWeekContainsDate,p=null==d?1:o(d),h=null==l.firstWeekContainsDate?p:o(l.firstWeekContainsDate);if(!(h>=1&&h<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var f=u.options&&u.options.weekStartsOn,m=null==f?0:o(f),g=null==l.weekStartsOn?m:o(l.weekStartsOn);if(!(g>=0&&g<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");if(""===s)return""===a?c(n,l):new Date(NaN);var v,y={firstWeekContainsDate:h,weekStartsOn:g,locale:u},b=[{priority:uo,set:go,index:0}],w=s.match(co);for(v=0;v<w.length;v++){var E=w[v];!l.awareOfUnicodeTokens&&ft(E)&&mt(E);var C=E[0],x=lo[C];if(x){var T=x.parse(a,E,u.match,y);if(!T)return new Date(NaN);b.push({priority:x.priority,set:x.set,validate:x.validate,value:T.value,index:b.length}),a=T.rest}else{if("''"===E?E="'":"'"===C&&(E=E.match(po)[1].replace(ho,"'")),0!==a.indexOf(E))return new Date(NaN);a=a.slice(E.length)}}if(a.length>0&&fo.test(a))return new Date(NaN);var k=b.map(function(e){return e.priority}).sort(function(e,t){return t-e}).filter(function(e,t,n){return n.indexOf(e)===t}).map(function(e){return b.filter(function(t){return t.priority===e}).reverse()}).map(function(e){return e[0]}),S=c(n,l);if(isNaN(S))return new Date(NaN);var D=pt(S,i(S));for(v=0;v<k.length;v++){var M=k[v];if(M.validate&&!M.validate(D,M.value,y))return new Date(NaN);D=M.set(D,M.value,y)}return D}function go(e){var t=new Date(0);return t.setFullYear(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()),t.setHours(e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds()),t}function vo(e,t,n){if(arguments.length<1)throw new TypeError("1 argument required, but only none provided present");var r=1===arguments.length?1:o(t);if(2===arguments.length&&"number"!=typeof t&&"string"!=typeof t&&(n=t,r=1),!r||r>30||r<1)throw new RangeError("nearestTo must be between 1 and 30");var i=c(e,n),a=i.getSeconds(),s=i.getMinutes()+a/60,l=Math.floor(s/r)*r,u=s%r,d=Math.round(u/r)*r;return new Date(i.getFullYear(),i.getMonth(),i.getDate(),i.getHours(),l+d)}function yo(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=c(e,n),i=o(t);return r.setDate(i),r}function bo(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=n||{},i=r.locale,a=i&&i.options&&i.options.weekStartsOn,s=null==a?0:o(a),l=null==r.weekStartsOn?s:o(r.weekStartsOn);if(!(l>=0&&l<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var u=c(e,r),d=o(t),p=u.getDay();return b(u,((d%7+7)%7<l?7:0)+d-p,r)}function wo(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=c(e,n),i=o(t);return r.setMonth(0),r.setDate(i),r}function Eo(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=c(e,n),i=o(t);return r.setHours(i),r}function Co(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=c(e,n);return b(r,o(t)-zt(r,n),n)}function xo(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=c(e,n),i=o(t),a=Bt(r,n)-i;return r.setDate(r.getDate()-7*a),r}function To(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=c(e,n),i=o(t);return r.setMilliseconds(i),r}function ko(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=c(e,n),i=o(t);return r.setMinutes(i),r}function So(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=c(e,n),i=o(t),a=r.getFullYear(),s=r.getDate(),l=new Date(0);l.setFullYear(a,i,15),l.setHours(0,0,0,0);var u=F(l,n);return r.setMonth(i,Math.min(s,u)),r}function Do(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=c(e,n),i=o(t)-(Math.floor(r.getMonth()/3)+1);return So(r,r.getMonth()+3*i,n)}function Mo(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=c(e,n),i=o(t);return r.setSeconds(i),r}function Ro(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=c(e,n),i=o(t),a=tn(r,n)-i;return r.setDate(r.getDate()-7*a),r}function Po(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=n||{},i=r.locale,a=i&&i.options&&i.options.firstWeekContainsDate,s=null==a?1:o(a),l=null==r.firstWeekContainsDate?s:o(r.firstWeekContainsDate),u=c(e,n),d=o(t),p=P(u,Zt(u,n),n),h=new Date(0);return h.setFullYear(d,0,l),h.setHours(0,0,0,0),(u=Zt(h,n)).setDate(u.getDate()+p),u}function _o(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=c(e,n),i=o(t);return isNaN(r)?new Date(NaN):(r.setFullYear(i),r)}function Lo(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=c(e,t),o=n.getFullYear(),r=10*Math.floor(o/10);return n.setFullYear(r,0,1),n.setHours(0,0,0,0),n}function Oo(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");return b(e,-o(t),n)}function No(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");return C(e,-o(t),n)}function Fo(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");return N(e,-o(t),n)}function Ao(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");return A(e,-o(t),n)}function Io(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");return I(e,-o(t),n)}function Ho(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");return H(e,-o(t),n)}function zo(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");return z(e,-o(t),n)}function jo(e,t,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");return j(e,-o(t),n)}n.d(t,"addDays",function(){return b}),n.d(t,"addHours",function(){return C}),n.d(t,"addISOWeekYears",function(){return L}),n.d(t,"addMilliseconds",function(){return w}),n.d(t,"addMinutes",function(){return N}),n.d(t,"addMonths",function(){return A}),n.d(t,"addQuarters",function(){return I}),n.d(t,"addSeconds",function(){return H}),n.d(t,"addWeeks",function(){return z}),n.d(t,"addYears",function(){return j}),n.d(t,"areIntervalsOverlapping",function(){return B}),n.d(t,"closestIndexTo",function(){return U}),n.d(t,"closestTo",function(){return W}),n.d(t,"compareAsc",function(){return q}),n.d(t,"compareDesc",function(){return V}),n.d(t,"differenceInCalendarDays",function(){return P}),n.d(t,"differenceInCalendarISOWeekYears",function(){return G}),n.d(t,"differenceInCalendarISOWeeks",function(){return $}),n.d(t,"differenceInCalendarMonths",function(){return X}),n.d(t,"differenceInCalendarQuarters",function(){return Q}),n.d(t,"differenceInCalendarWeeks",function(){return Z}),n.d(t,"differenceInCalendarYears",function(){return ee}),n.d(t,"differenceInDays",function(){return te}),n.d(t,"differenceInHours",function(){return re}),n.d(t,"differenceInISOWeekYears",function(){return ae}),n.d(t,"differenceInMilliseconds",function(){return ne}),n.d(t,"differenceInMinutes",function(){return le}),n.d(t,"differenceInMonths",function(){return ue}),n.d(t,"differenceInQuarters",function(){return ce}),n.d(t,"differenceInSeconds",function(){return de}),n.d(t,"differenceInWeeks",function(){return pe}),n.d(t,"differenceInYears",function(){return he}),n.d(t,"eachDayOfInterval",function(){return fe}),n.d(t,"eachWeekOfInterval",function(){return me}),n.d(t,"eachWeekendOfInterval",function(){return ye}),n.d(t,"eachWeekendOfMonth",function(){return Ee}),n.d(t,"eachWeekendOfYear",function(){return Te}),n.d(t,"endOfDay",function(){return ke}),n.d(t,"endOfDecade",function(){return Se}),n.d(t,"endOfHour",function(){return De}),n.d(t,"endOfISOWeek",function(){return Re}),n.d(t,"endOfISOWeekYear",function(){return Pe}),n.d(t,"endOfMinute",function(){return _e}),n.d(t,"endOfMonth",function(){return we}),n.d(t,"endOfQuarter",function(){return Le}),n.d(t,"endOfSecond",function(){return Oe}),n.d(t,"endOfWeek",function(){return Me}),n.d(t,"endOfYear",function(){return xe}),n.d(t,"format",function(){return wt}),n.d(t,"formatDistance",function(){return kt}),n.d(t,"formatDistanceStrict",function(){return Rt}),n.d(t,"formatRelative",function(){return Pt}),n.d(t,"fromUnixTime",function(){return _t}),n.d(t,"getDate",function(){return Lt}),n.d(t,"getDay",function(){return Ot}),n.d(t,"getDayOfYear",function(){return Nt}),n.d(t,"getDaysInMonth",function(){return F}),n.d(t,"getDaysInYear",function(){return At}),n.d(t,"getDecade",function(){return It}),n.d(t,"getHours",function(){return Ht}),n.d(t,"getISODay",function(){return zt}),n.d(t,"getISOWeek",function(){return Bt}),n.d(t,"getISOWeekYear",function(){return S}),n.d(t,"getISOWeeksInYear",function(){return Wt}),n.d(t,"getMilliseconds",function(){return qt}),n.d(t,"getMinutes",function(){return Vt}),n.d(t,"getMonth",function(){return Gt}),n.d(t,"getOverlappingDaysInIntervals",function(){return $t}),n.d(t,"getQuarter",function(){return K}),n.d(t,"getSeconds",function(){return Xt}),n.d(t,"getTime",function(){return Kt}),n.d(t,"getUnixTime",function(){return Qt}),n.d(t,"getWeek",function(){return tn}),n.d(t,"getWeekOfMonth",function(){return nn}),n.d(t,"getWeekYear",function(){return Jt}),n.d(t,"getWeeksInMonth",function(){return rn}),n.d(t,"getYear",function(){return an}),n.d(t,"isAfter",function(){return sn}),n.d(t,"isBefore",function(){return ln}),n.d(t,"isDate",function(){return un}),n.d(t,"isEqual",function(){return cn}),n.d(t,"isFirstDayOfMonth",function(){return dn}),n.d(t,"isFriday",function(){return pn}),n.d(t,"isLastDayOfMonth",function(){return hn}),n.d(t,"isLeapYear",function(){return Ft}),n.d(t,"isMonday",function(){return fn}),n.d(t,"isSameDay",function(){return mn}),n.d(t,"isSameHour",function(){return vn}),n.d(t,"isSameISOWeek",function(){return bn}),n.d(t,"isSameISOWeekYear",function(){return wn}),n.d(t,"isSameMinute",function(){return Cn}),n.d(t,"isSameMonth",function(){return xn}),n.d(t,"isSameQuarter",function(){return kn}),n.d(t,"isSameSecond",function(){return Dn}),n.d(t,"isSameWeek",function(){return yn}),n.d(t,"isSameYear",function(){return Mn}),n.d(t,"isSaturday",function(){return Rn}),n.d(t,"isSunday",function(){return ge}),n.d(t,"isThursday",function(){return Pn}),n.d(t,"isTuesday",function(){return _n}),n.d(t,"isValid",function(){return Ne}),n.d(t,"isWednesday",function(){return Ln}),n.d(t,"isWeekend",function(){return ve}),n.d(t,"isWithinInterval",function(){return On}),n.d(t,"lastDayOfDecade",function(){return Nn}),n.d(t,"lastDayOfISOWeek",function(){return An}),n.d(t,"lastDayOfISOWeekYear",function(){return In}),n.d(t,"lastDayOfMonth",function(){return on}),n.d(t,"lastDayOfQuarter",function(){return Hn}),n.d(t,"lastDayOfWeek",function(){return Fn}),n.d(t,"lastDayOfYear",function(){return zn}),n.d(t,"max",function(){return jn}),n.d(t,"min",function(){return Bn}),n.d(t,"parse",function(){return mo}),n.d(t,"roundToNearestMinutes",function(){return vo}),n.d(t,"setDate",function(){return yo}),n.d(t,"setDay",function(){return bo}),n.d(t,"setDayOfYear",function(){return wo}),n.d(t,"setHours",function(){return Eo}),n.d(t,"setISODay",function(){return Co}),n.d(t,"setISOWeek",function(){return xo}),n.d(t,"setISOWeekYear",function(){return _}),n.d(t,"setMilliseconds",function(){return To}),n.d(t,"setMinutes",function(){return ko}),n.d(t,"setMonth",function(){return So}),n.d(t,"setQuarter",function(){return Do}),n.d(t,"setSeconds",function(){return Mo}),n.d(t,"setWeek",function(){return Ro}),n.d(t,"setWeekYear",function(){return Po}),n.d(t,"setYear",function(){return _o}),n.d(t,"startOfDay",function(){return M}),n.d(t,"startOfDecade",function(){return Lo}),n.d(t,"startOfHour",function(){return gn}),n.d(t,"startOfISOWeek",function(){return k}),n.d(t,"startOfISOWeekYear",function(){return D}),n.d(t,"startOfMinute",function(){return En}),n.d(t,"startOfMonth",function(){return be}),n.d(t,"startOfQuarter",function(){return Tn}),n.d(t,"startOfSecond",function(){return Sn}),n.d(t,"startOfWeek",function(){return x}),n.d(t,"startOfWeekYear",function(){return Zt}),n.d(t,"startOfYear",function(){return Ce}),n.d(t,"subDays",function(){return Oo}),n.d(t,"subHours",function(){return No}),n.d(t,"subISOWeekYears",function(){return ie}),n.d(t,"subMilliseconds",function(){return pt}),n.d(t,"subMinutes",function(){return Fo}),n.d(t,"subMonths",function(){return Ao}),n.d(t,"subQuarters",function(){return Io}),n.d(t,"subSeconds",function(){return Ho}),n.d(t,"subWeeks",function(){return zo}),n.d(t,"subYears",function(){return jo}),n.d(t,"toDate",function(){return c})},function(t,n,o){"use strict";o.r(n);var r=o(0),i=o.n(r),a=o(8),s=o.n(a),l=o(9),u=o.n(l),c=o(2),d=o.n(c),p=o(1);function h(e){return"/"===e.charAt(0)}function f(e,t){for(var n=t,o=n+1,r=e.length;o<r;n+=1,o+=1)e[n]=e[o];e.pop()}var m=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=e&&e.split("/")||[],o=t&&t.split("/")||[],r=e&&h(e),i=t&&h(t),a=r||i;if(e&&h(e)?o=n:n.length&&(o.pop(),o=o.concat(n)),!o.length)return"/";var s=void 0;if(o.length){var l=o[o.length-1];s="."===l||".."===l||""===l}else s=!1;for(var u=0,c=o.length;c>=0;c--){var d=o[c];"."===d?f(o,c):".."===d?(f(o,c),u++):u&&(f(o,c),u--)}if(!a)for(;u--;u)o.unshift("..");!a||""===o[0]||o[0]&&h(o[0])||o.unshift("");var p=o.join("/");return s&&"/"!==p.substr(-1)&&(p+="/"),p};"function"==typeof Symbol&&Symbol.iterator;var g=!0,v="Invariant failed";var y=function(e,t){if(!e)throw g?new Error(v):new Error(v+": "+(t||""))};function b(e){return"/"===e.charAt(0)?e:"/"+e}function w(e,t){return function(e,t){return new RegExp("^"+t+"(\\/|\\?|#|$)","i").test(e)}(e,t)?e.substr(t.length):e}function E(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function C(e){var t=e.pathname,n=e.search,o=e.hash,r=t||"/";return n&&"?"!==n&&(r+="?"===n.charAt(0)?n:"?"+n),o&&"#"!==o&&(r+="#"===o.charAt(0)?o:"#"+o),r}function x(e,t,n,o){var r;"string"==typeof e?(r=function(e){var t=e||"/",n="",o="",r=t.indexOf("#");-1!==r&&(o=t.substr(r),t=t.substr(0,r));var i=t.indexOf("?");return-1!==i&&(n=t.substr(i),t=t.substr(0,i)),{pathname:t,search:"?"===n?"":n,hash:"#"===o?"":o}}(e)).state=t:(void 0===(r=Object(p.a)({},e)).pathname&&(r.pathname=""),r.search?"?"!==r.search.charAt(0)&&(r.search="?"+r.search):r.search="",r.hash?"#"!==r.hash.charAt(0)&&(r.hash="#"+r.hash):r.hash="",void 0!==t&&void 0===r.state&&(r.state=t));try{r.pathname=decodeURI(r.pathname)}catch(e){throw e instanceof URIError?new URIError('Pathname "'+r.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):e}return n&&(r.key=n),o?r.pathname?"/"!==r.pathname.charAt(0)&&(r.pathname=m(r.pathname,o.pathname)):r.pathname=o.pathname:r.pathname||(r.pathname="/"),r}function T(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,o,r){if(null!=e){var i="function"==typeof e?e(t,n):e;"string"==typeof i?"function"==typeof o?o(i,r):r(!0):r(!1!==i)}else r(!0)},appendListener:function(e){var n=!0;function o(){n&&e.apply(void 0,arguments)}return t.push(o),function(){n=!1,t=t.filter(function(e){return e!==o})}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),o=0;o<e;o++)n[o]=arguments[o];t.forEach(function(e){return e.apply(void 0,n)})}}}var k=!("undefined"==typeof window||!window.document||!window.document.createElement);function S(e,t){t(window.confirm(e))}var D="popstate",M="hashchange";function R(){try{return window.history.state||{}}catch(e){return{}}}function P(e){void 0===e&&(e={}),k||y(!1);var t,n=window.history,o=(-1===(t=window.navigator.userAgent).indexOf("Android 2.")&&-1===t.indexOf("Android 4.0")||-1===t.indexOf("Mobile Safari")||-1!==t.indexOf("Chrome")||-1!==t.indexOf("Windows Phone"))&&window.history&&"pushState"in window.history,r=!(-1===window.navigator.userAgent.indexOf("Trident")),i=e,a=i.forceRefresh,s=void 0!==a&&a,l=i.getUserConfirmation,u=void 0===l?S:l,c=i.keyLength,d=void 0===c?6:c,h=e.basename?E(b(e.basename)):"";function f(e){var t=e||{},n=t.key,o=t.state,r=window.location,i=r.pathname+r.search+r.hash;return h&&(i=w(i,h)),x(i,o,n)}function m(){return Math.random().toString(36).substr(2,d)}var g=T();function v(e){Object(p.a)(B,e),B.length=n.length,g.notifyListeners(B.location,B.action)}function P(e){(function(e){void 0===e.state&&navigator.userAgent.indexOf("CriOS")})(e)||O(f(e.state))}function _(){O(f(R()))}var L=!1;function O(e){if(L)L=!1,v();else{g.confirmTransitionTo(e,"POP",u,function(t){t?v({action:"POP",location:e}):function(e){var t=B.location,n=F.indexOf(t.key);-1===n&&(n=0);var o=F.indexOf(e.key);-1===o&&(o=0);var r=n-o;r&&(L=!0,I(r))}(e)})}}var N=f(R()),F=[N.key];function A(e){return h+C(e)}function I(e){n.go(e)}var H=0;function z(e){1===(H+=e)&&1===e?(window.addEventListener(D,P),r&&window.addEventListener(M,_)):0===H&&(window.removeEventListener(D,P),r&&window.removeEventListener(M,_))}var j=!1;var B={length:n.length,action:"POP",location:N,createHref:A,push:function(e,t){var r=x(e,t,m(),B.location);g.confirmTransitionTo(r,"PUSH",u,function(e){if(e){var t=A(r),i=r.key,a=r.state;if(o)if(n.pushState({key:i,state:a},null,t),s)window.location.href=t;else{var l=F.indexOf(B.location.key),u=F.slice(0,-1===l?0:l+1);u.push(r.key),F=u,v({action:"PUSH",location:r})}else window.location.href=t}})},replace:function(e,t){var r=x(e,t,m(),B.location);g.confirmTransitionTo(r,"REPLACE",u,function(e){if(e){var t=A(r),i=r.key,a=r.state;if(o)if(n.replaceState({key:i,state:a},null,t),s)window.location.replace(t);else{var l=F.indexOf(B.location.key);-1!==l&&(F[l]=r.key),v({action:"REPLACE",location:r})}else window.location.replace(t)}})},go:I,goBack:function(){I(-1)},goForward:function(){I(1)},block:function(e){void 0===e&&(e=!1);var t=g.setPrompt(e);return j||(z(1),j=!0),function(){return j&&(j=!1,z(-1)),t()}},listen:function(e){var t=g.appendListener(e);return z(1),function(){z(-1),t()}}};return B}var _=o(10),L=o.n(_),O=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e};function N(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var F=function(e){function t(){var n,o;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);for(var r=arguments.length,i=Array(r),a=0;a<r;a++)i[a]=arguments[a];return n=o=N(this,e.call.apply(e,[this].concat(i))),o.state={match:o.computeMatch(o.props.history.location.pathname)},N(o,n)}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.getChildContext=function(){return{router:O({},this.context.router,{history:this.props.history,route:{location:this.props.history.location,match:this.state.match}})}},t.prototype.computeMatch=function(e){return{path:"/",url:"/",params:{},isExact:"/"===e}},t.prototype.componentWillMount=function(){var e=this,t=this.props,n=t.children,o=t.history;L()(null==n||1===i.a.Children.count(n),"A <Router> may have only one child element"),this.unlisten=o.listen(function(){e.setState({match:e.computeMatch(o.location.pathname)})})},t.prototype.componentWillReceiveProps=function(e){u()(this.props.history===e.history,"You cannot change <Router history>")},t.prototype.componentWillUnmount=function(){this.unlisten()},t.prototype.render=function(){var e=this.props.children;return e?i.a.Children.only(e):null},t}(i.a.Component);F.propTypes={history:d.a.object.isRequired,children:d.a.node},F.contextTypes={router:d.a.object},F.childContextTypes={router:d.a.object.isRequired};var A=F;function I(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var H=function(e){function t(){var n,o;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);for(var r=arguments.length,i=Array(r),a=0;a<r;a++)i[a]=arguments[a];return n=o=I(this,e.call.apply(e,[this].concat(i))),o.history=P(o.props),I(o,n)}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.componentWillMount=function(){u()(!this.props.history,"<BrowserRouter> ignores the history prop. To use a custom history, use `import { Router }` instead of `import { BrowserRouter as Router }`.")},t.prototype.render=function(){return i.a.createElement(A,{history:this.history,children:this.props.children})},t}(i.a.Component);H.propTypes={basename:d.a.string,forceRefresh:d.a.bool,getUserConfirmation:d.a.func,keyLength:d.a.number,children:d.a.node};var z=H,j=o(43),B=o.n(j),U={},W=0,q=function(e,t){var n=""+t.end+t.strict+t.sensitive,o=U[n]||(U[n]={});if(o[e])return o[e];var r=[],i={re:B()(e,r,t),keys:r};return W<1e4&&(o[e]=i,W++),i},V=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments[2];"string"==typeof t&&(t={path:t});var o=t,r=o.path,i=o.exact,a=void 0!==i&&i,s=o.strict,l=void 0!==s&&s,u=o.sensitive,c=void 0!==u&&u;if(null==r)return n;var d=q(r,{end:a,strict:l,sensitive:c}),p=d.re,h=d.keys,f=p.exec(e);if(!f)return null;var m=f[0],g=f.slice(1),v=e===m;return a&&!v?null:{path:r,url:"/"===r&&""===m?"/":m,isExact:v,params:h.reduce(function(e,t,n){return e[t.name]=g[n],e},{})}};var G=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.componentWillMount=function(){L()(this.context.router,"You should not use <Switch> outside a <Router>")},t.prototype.componentWillReceiveProps=function(e){u()(!(e.location&&!this.props.location),'<Switch> elements should not change from uncontrolled to controlled (or vice versa). You initially used no "location" prop and then provided one on a subsequent render.'),u()(!(!e.location&&this.props.location),'<Switch> elements should not change from controlled to uncontrolled (or vice versa). You provided a "location" prop initially but omitted it on a subsequent render.')},t.prototype.render=function(){var e=this.context.router.route,t=this.props.children,n=this.props.location||e.location,o=void 0,r=void 0;return i.a.Children.forEach(t,function(t){if(null==o&&i.a.isValidElement(t)){var a=t.props,s=a.path,l=a.exact,u=a.strict,c=a.sensitive,d=a.from,p=s||d;r=t,o=V(n.pathname,{path:p,exact:l,strict:u,sensitive:c},e.match)}}),o?i.a.cloneElement(r,{location:n,computedMatch:o}):null},t}(i.a.Component);G.contextTypes={router:d.a.shape({route:d.a.object.isRequired}).isRequired},G.propTypes={children:d.a.node,location:d.a.object};var Y=G,$=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e};function X(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var K=function(e){return 0===i.a.Children.count(e)},Q=function(e){function t(){var n,o;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);for(var r=arguments.length,i=Array(r),a=0;a<r;a++)i[a]=arguments[a];return n=o=X(this,e.call.apply(e,[this].concat(i))),o.state={match:o.computeMatch(o.props,o.context.router)},X(o,n)}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.getChildContext=function(){return{router:$({},this.context.router,{route:{location:this.props.location||this.context.router.route.location,match:this.state.match}})}},t.prototype.computeMatch=function(e,t){var n=e.computedMatch,o=e.location,r=e.path,i=e.strict,a=e.exact,s=e.sensitive;if(n)return n;L()(t,"You should not use <Route> or withRouter() outside a <Router>");var l=t.route,u=(o||l.location).pathname;return V(u,{path:r,strict:i,exact:a,sensitive:s},l.match)},t.prototype.componentWillMount=function(){u()(!(this.props.component&&this.props.render),"You should not use <Route component> and <Route render> in the same route; <Route render> will be ignored"),u()(!(this.props.component&&this.props.children&&!K(this.props.children)),"You should not use <Route component> and <Route children> in the same route; <Route children> will be ignored"),u()(!(this.props.render&&this.props.children&&!K(this.props.children)),"You should not use <Route render> and <Route children> in the same route; <Route children> will be ignored")},t.prototype.componentWillReceiveProps=function(e,t){u()(!(e.location&&!this.props.location),'<Route> elements should not change from uncontrolled to controlled (or vice versa). You initially used no "location" prop and then provided one on a subsequent render.'),u()(!(!e.location&&this.props.location),'<Route> elements should not change from controlled to uncontrolled (or vice versa). You provided a "location" prop initially but omitted it on a subsequent render.'),this.setState({match:this.computeMatch(e,t.router)})},t.prototype.render=function(){var e=this.state.match,t=this.props,n=t.children,o=t.component,r=t.render,a=this.context.router,s=a.history,l=a.route,u=a.staticContext,c={match:e,location:this.props.location||l.location,history:s,staticContext:u};return o?e?i.a.createElement(o,c):null:r?e?r(c):null:"function"==typeof n?n(c):n&&!K(n)?i.a.Children.only(n):null},t}(i.a.Component);Q.propTypes={computedMatch:d.a.object,path:d.a.string,exact:d.a.bool,strict:d.a.bool,sensitive:d.a.bool,component:d.a.func,render:d.a.func,children:d.a.oneOfType([d.a.func,d.a.node]),location:d.a.object},Q.contextTypes={router:d.a.shape({history:d.a.object.isRequired,route:d.a.object.isRequired,staticContext:d.a.object})},Q.childContextTypes={router:d.a.object.isRequired};var J=Q;function Z(e,t){if(null==e)throw"LogTools: sender not set";console.log(e+": "+t)}var ee=o(5),te=o.n(ee);function ne(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class oe{}ne(oe,"RooDirectoryID",-1),ne(oe,"upload_chunk_size",102400);var re=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e};function ie(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var ae=function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)},se=function(e){function t(){var n,o;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);for(var r=arguments.length,i=Array(r),a=0;a<r;a++)i[a]=arguments[a];return n=o=ie(this,e.call.apply(e,[this].concat(i))),o.handleClick=function(e){if(o.props.onClick&&o.props.onClick(e),!e.defaultPrevented&&0===e.button&&!o.props.target&&!ae(e)){e.preventDefault();var t=o.context.router.history,n=o.props,r=n.replace,i=n.to;r?t.replace(i):t.push(i)}},ie(o,n)}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.render=function(){var e=this.props,t=(e.replace,e.to),n=e.innerRef,o=function(e,t){var n={};for(var o in e)t.indexOf(o)>=0||Object.prototype.hasOwnProperty.call(e,o)&&(n[o]=e[o]);return n}(e,["replace","to","innerRef"]);L()(this.context.router,"You should not use <Link> outside a <Router>"),L()(void 0!==t,'You must specify the "to" property');var r=this.context.router.history,a="string"==typeof t?x(t,null,null,r.location):t,s=r.createHref(a);return i.a.createElement("a",re({},o,{onClick:this.handleClick,href:s,ref:n}))},t}(i.a.Component);se.propTypes={onClick:d.a.func,target:d.a.string,replace:d.a.bool,to:d.a.oneOfType([d.a.string,d.a.object]).isRequired,innerRef:d.a.oneOfType([d.a.string,d.a.func])},se.defaultProps={replace:!1},se.contextTypes={router:d.a.shape({history:d.a.shape({push:d.a.func.isRequired,replace:d.a.func.isRequired,createHref:d.a.func.isRequired}).isRequired}).isRequired};var le=se;function ue(e,t,n){return Z("ApiQuery","query to "+e),fetch(e,{method:t,headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify(n)}).then(function(e){return e.json()})}class ce{constructor(){this.URL_Auth="api/Auth/Auth",this.URL_UserInfo="api/Auth/UserInfo",this.AuthCoockieName="AuthToken"}async AuthAsync(e,t){return await ue(this.URL_Auth,"Post",{Login:e,Password:t}).then(function(e){return e.Successe?this._SetTocken(e.Token):this._SetTocken(""),e}.bind(this))}Logout(){this._SetTocken("")}async GetUserInfoAsync(){return await ue(this.URL_UserInfo,"Post").then(function(e){return e.Successe?this._SetTocken(e.Token):this._SetTocken(""),e}.bind(this))}IsAuth(){return""!=this._GetTocken()}_getCookie(e){let t=document.cookie.match(new RegExp("(?:^|; )"+e.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g,"\\$1")+"=([^;]*)"));return t?decodeURIComponent(t[1]):""}_GetTocken(){return this._getCookie(this.AuthCoockieName)}_SetTocken(e){document.cookie=this.AuthCoockieName+"="+e}}class de extends i.a.Component{constructor(e){super(e),te()(this),Z("MenuControl","start"),this.authServices=new ce}OnAuthChange(){this.forceUpdate()}render(){return i.a.createElement("div",null,i.a.createElement("table",null,i.a.createElement("thead",null,i.a.createElement("tr",null,i.a.createElement("td",null,"Menu:"),i.a.createElement("td",null,i.a.createElement(le,{to:"/"},i.a.createElement("button",null,"FS"))),this.authServices.IsAuth()?i.a.createElement("td",null,i.a.createElement(le,{to:"/Admin"},i.a.createElement("button",null,"Admin"))):i.a.createElement("td",null)))))}}var pe=o(3),he=o(4),fe=o.n(he),me=o(26),ge=o.n(me),ve=o(7),ye=o(25),be=o.n(ye),we=i.a.createContext(new Map),Ee=(we.Consumer,we.Provider);function Ce(e,t){var n=Object(r.useContext)(we);return e||n.get(t)||t}i.a.Component;var xe=function(e){return e[0].toUpperCase()+ge()(e).slice(1)};function Te(e,t){var n=void 0===t?{}:t,o=n.displayName,r=void 0===o?xe(e):o,a=n.Component,s=void 0===a?"div":a,l=n.defaultProps,u=i.a.forwardRef(function(t,n){var o=t.className,r=t.bsPrefix,a=t.as,l=void 0===a?s:a,u=Object(pe.a)(t,["className","bsPrefix","as"]),c=Ce(r,e);return i.a.createElement(l,Object(p.a)({ref:n,className:fe()(o,c)},u))});return u.defaultProps=l,u.displayName=r,u}var ke=i.a.createContext({controlId:void 0}),Se=i.a.forwardRef(function(e,t){var n=e.bsPrefix,o=e.className,a=e.children,s=e.controlId,l=e.as,u=void 0===l?"div":l,c=Object(pe.a)(e,["bsPrefix","className","children","controlId","as"]);n=Ce(n,"form-group");var d=Object(r.useMemo)(function(){return{controlId:s}},[s]);return i.a.createElement(ke.Provider,{value:d},i.a.createElement(u,Object(p.a)({},c,{ref:t,className:fe()(o,n)}),a))});Se.displayName="FormGroup";var De=Se,Me={type:d.a.string.isRequired,as:d.a.elementType},Re=i.a.forwardRef(function(e,t){var n=e.as,o=void 0===n?"div":n,r=e.className,a=e.type,s=Object(pe.a)(e,["as","className","type"]);return i.a.createElement(o,Object(p.a)({},s,{ref:t,className:fe()(r,a&&a+"-feedback")}))});Re.displayName="Feedback",Re.propTypes=Me,Re.defaultProps={type:"valid"};var Pe=Re,_e=i.a.forwardRef(function(e,t){var n,o,a=e.bsPrefix,s=e.type,l=e.size,u=e.id,c=e.className,d=e.isValid,h=e.isInvalid,f=e.plaintext,m=e.readOnly,g=e.as,v=void 0===g?"input":g,y=Object(pe.a)(e,["bsPrefix","type","size","id","className","isValid","isInvalid","plaintext","readOnly","as"]),b=Object(r.useContext)(ke).controlId;if(a=Ce(a,"form-control"),f)(o={})[a+"-plaintext"]=!0,n=o;else if("file"===s){var w;(w={})[a+"-file"]=!0,n=w}else{var E;(E={})[a]=!0,E[a+"-"+l]=l,n=E}return i.a.createElement(v,Object(p.a)({},y,{type:s,ref:t,readOnly:m,id:u||b,className:fe()(c,n,d&&"is-valid",h&&"is-invalid")}))});_e.displayName="FormControl",_e.Feedback=Pe;var Le=_e,Oe=i.a.forwardRef(function(e,t){var n=e.id,o=e.bsPrefix,a=e.className,s=e.isValid,l=e.isInvalid,u=e.isStatic,c=Object(pe.a)(e,["id","bsPrefix","className","isValid","isInvalid","isStatic"]);o=Ce(o,"form-check-input");var d=Object(r.useContext)(ke),h=d.controlId,f=d.custom;return i.a.createElement("input",Object(p.a)({},c,{ref:t,id:n||h,className:fe()(a,!f&&o,f&&"custom-control-input",s&&"is-valid",l&&"is-invalid",u&&"position-static")}))});Oe.displayName="FormCheckInput",Oe.defaultProps={type:"checkbox"};var Ne=Oe,Fe=i.a.forwardRef(function(e,t){var n=e.bsPrefix,o=e.className,a=e.htmlFor,s=Object(pe.a)(e,["bsPrefix","className","htmlFor"]);n=Ce(n,"form-check-label");var l=Object(r.useContext)(ke),u=l.controlId,c=l.custom;return i.a.createElement("label",Object(p.a)({},s,{ref:t,htmlFor:a||u,className:fe()(o,!c&&n,c&&"custom-control-label")}))});Fe.displayName="FormCheckLabel",Fe.defaultProps={type:"checkbox"};var Ae=Fe,Ie=i.a.forwardRef(function(e,t){var n=e.id,o=e.bsPrefix,a=e.inline,s=e.disabled,l=e.isValid,u=e.isInvalid,c=e.feedback,d=e.className,h=e.style,f=e.title,m=e.type,g=e.label,v=e.children,y=e.custom,b=Object(pe.a)(e,["id","bsPrefix","inline","disabled","isValid","isInvalid","feedback","className","style","title","type","label","children","custom"]);o=Ce(o,"form-check");var w=Object(r.useContext)(ke).controlId,E=Object(r.useMemo)(function(){return{controlId:n||w,custom:y}},[w,y,n]),C=null!=g&&!1!==g&&!v,x=i.a.createElement(Ne,Object(p.a)({},b,{type:m,ref:t,isValid:l,isInvalid:u,isStatic:!C,disabled:s}));return i.a.createElement(ke.Provider,{value:E},i.a.createElement("div",{style:h,className:fe()(d,!y&&o,y&&"custom-control custom-"+m,a&&(y?"custom-control":o)+"-inline")},v||i.a.createElement(i.a.Fragment,null,x,C&&i.a.createElement(Ae,{title:f},g),(l||u)&&i.a.createElement(Pe,{type:l?"valid":"invalid"},c))))});Ie.displayName="FormCheck",Ie.defaultProps={type:"checkbox",inline:!1,disabled:!1,isValid:!1,isInvalid:!1,title:""},Ie.Input=Ne,Ie.Label=Ae;var He=Ie,ze=["xl","lg","md","sm","xs"],je=i.a.forwardRef(function(e,t){var n=e.bsPrefix,o=e.className,r=e.as,a=void 0===r?"div":r,s=Object(pe.a)(e,["bsPrefix","className","as"]),l=Ce(n,"col"),u=[],c=[];return ze.forEach(function(e){var t,n,o,r=s[e];if(delete s[e],null!=r&&"object"==typeof r){var i=r.span;t=void 0===i||i,n=r.offset,o=r.order}else t=r;var a="xs"!==e?"-"+e:"";null!=t&&u.push(!0===t?""+l+a:""+l+a+"-"+t),null!=o&&c.push("order"+a+"-"+o),null!=n&&c.push("offset"+a+"-"+n)}),u.length||u.push(l),i.a.createElement(a,Object(p.a)({},s,{ref:t,className:fe.a.apply(void 0,[o].concat(u,c))}))});je.displayName="Col";var Be=je,Ue=i.a.forwardRef(function(e,t){var n=e.bsPrefix,o=e.column,a=e.srOnly,s=e.className,l=e.htmlFor,u=Object(pe.a)(e,["bsPrefix","column","srOnly","className","htmlFor"]),c=Object(r.useContext)(ke).controlId;n=Ce(n,"form-label");var d=fe()(s,n,a&&"sr-only",o&&"col-form-label");return l=l||c,o?i.a.createElement(Be,Object(p.a)({as:"label",className:d,htmlFor:l},u)):i.a.createElement("label",Object(p.a)({ref:t,className:d,htmlFor:l},u))});Ue.displayName="FormLabel",Ue.defaultProps={column:!1,srOnly:!1};var We=Ue,qe=i.a.forwardRef(function(e,t){var n=e.bsPrefix,o=e.className,r=e.as,a=void 0===r?"small":r,s=e.muted,l=Object(pe.a)(e,["bsPrefix","className","as","muted"]);return n=Ce(n,"form-text"),i.a.createElement(a,Object(p.a)({},l,{ref:t,className:fe()(o,n,s&&"text-muted")}))});qe.displayName="FormText";var Ve=qe,Ge=i.a.forwardRef(function(e,t){var n=e.bsPrefix,o=e.inline,r=e.className,a=e.validated,s=e.as,l=void 0===s?"form":s,u=Object(pe.a)(e,["bsPrefix","inline","className","validated","as"]);return n=Ce(n,"form"),i.a.createElement(l,Object(p.a)({},u,{ref:t,className:fe()(r,a&&"was-validated",o&&n+"-inline")}))});Ge.displayName="Form",Ge.defaultProps={inline:!1},Ge.Row=Te("form-row"),Ge.Group=De,Ge.Control=Le,Ge.Check=He,Ge.Label=We,Ge.Text=Ve;var Ye=Ge,$e=o(18),Xe=o.n($e);class Ke{static Sho(e,t){let n=new Date,o=n.getHours()+":"+n.getMinutes()+":"+n.getSeconds()+" | "+e;Xe.a.success(o,t,{timeOut:3e3,progressBar:!0,closeButton:!0})}static MesOk(e,t){let n=new Date,o=n.getHours()+":"+n.getMinutes()+":"+n.getSeconds()+" | "+e;Xe.a.success(o,t,{closeButton:!0,progressBar:!0})}static MesOk_NoHide(e,t){let n=new Date,o=n.getHours()+":"+n.getMinutes()+":"+n.getSeconds()+" | "+e;Xe.a.success(o,t,{timeOut:-1,closeButton:!0,progressBar:!0})}static MesEr(e,t){let n=new Date,o=n.getHours()+":"+n.getMinutes()+":"+n.getSeconds()+" | "+e;Xe.a.error(o,t,{timeOut:-1,closeButton:!0})}}class Qe extends i.a.Component{constructor(e){super(e),te()(this),Z("UserControl","start"),this.state={UserName:""},this.authServices=new ce,this.authServices.IsAuth()&&this.authServices.GetUserInfoAsync().then(function(e){e.Successe?(this.setState({UserName:e.UserName}),this.props.ParentComponent.OnAuthChange()):(this.setState({UserName:""}),Ke.MesEr(e.ResMessage,"Auth"))}.bind(this))}AuthClick(){let e=this.refs.Login.value,t=this.refs.Password.value;this.authServices.AuthAsync(e,t).then(function(e){e.Successe?(this.setState({UserName:e.UserName}),this.props.ParentComponent.OnAuthChange()):(this.setState({UserName:""}),Ke.MesEr(e.ResMessage,"Auth"))}.bind(this))}LogoutClick(){this.authServices.Logout(),this.setState({UserName:""}),this.props.ParentComponent.OnAuthChange()}render(){let e=this.state;return i.a.createElement("div",null,this.authServices.IsAuth()?i.a.createElement("div",null,i.a.createElement("p",null,"Вы авторизованы. Пользователь: ",e.UserName,"."),i.a.createElement("button",{onClick:this.LogoutClick},"Logout")):i.a.createElement("div",null,i.a.createElement("p",null,"Вы не авторизованы ",e.UserName,". Вход:"),i.a.createElement(Ye.Control,{ref:"Login",type:"text",placeholder:"Enter login"}),i.a.createElement(Ye.Text,{className:"text-muted"},"We'll never share your login with anyone else."),i.a.createElement("br",null),i.a.createElement(Ye.Control,{ref:"Password",type:"password",placeholder:"Password"}),i.a.createElement("br",null),i.a.createElement("button",{onClick:this.AuthClick},"Auth")))}}class Je{constructor(){this.URL_DirectoryItems="api/Explorer/GetDirectoryItems?ID=",this.URL_ScanDirectory="api/Explorer/ScanDirectory?ID=",this.URL_Delete="api/Explorer/DeleteFile",this.URL_Move="api/Explorer/MoveElement",this.URL_Download="api/Explorer/GetFile?ID=",this.URL_CreateDirectory="api/Explorer/CreateDirectory?"}async DirectoryGetItemsAsync(e){let t=this.URL_DirectoryItems+e;return await ue(t,"Get")}async ScanDirectoryAsync(e){let t=this.URL_ScanDirectory+e;return await ue(t,"Get")}async DeleteAsync(e){return await ue(this.URL_Delete,"POST",{ID:e})}async MoveAsync(e,t){return await ue(this.URL_Move,"POST",{ID:e,NewParent:t})}OpenDownload(e){let t=this.URL_Download+e;window.open(t,"_blank")}async CreateDirectoryAsync(e,t){return await ue(this.URL_CreateDirectory,"POST",{ParentID:t,Name:e})}}function Ze(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}var et=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.filter(function(e){return null!=e}).reduce(function(e,t){if("function"!=typeof t)throw new Error("Invalid Argument Type, must only provide functions, undefined, or null.");return null===e?t:function(){for(var n=arguments.length,o=new Array(n),r=0;r<n;r++)o[r]=arguments[r];e.apply(this,o),t.apply(this,o)}},null)};function tt(e){return!e||"#"===e.trim()}var nt=function(e){function t(t,n){var o;return(o=e.call(this,t,n)||this).handleClick=o.handleClick.bind(Ze(o)),o.handleKeyDown=o.handleKeyDown.bind(Ze(o)),o}Object(ve.a)(t,e);var n=t.prototype;return n.handleClick=function(e){var t=this.props,n=t.disabled,o=t.href,r=t.onClick;(n||tt(o))&&e.preventDefault(),n?e.stopPropagation():r&&r(e)},n.handleKeyDown=function(e){" "===e.key&&(e.preventDefault(),this.handleClick(e))},n.render=function(){var e=this.props,t=e.as,n=void 0===t?"a":t,o=e.disabled,r=e.onKeyDown,a=e.innerRef,s=Object(pe.a)(e,["as","disabled","onKeyDown","innerRef"]);return tt(s.href)&&(s.role=s.role||"button",s.href=s.href||"#"),o&&(s.tabIndex=-1,s["aria-disabled"]=!0),a&&(s.ref=a),i.a.createElement(n,Object(p.a)({},s,{onClick:this.handleClick,onKeyDown:et(this.handleKeyDown,r)}))},t}(i.a.Component),ot=i.a.forwardRef(function(e,t){var n=e.bsPrefix,o=e.variant,r=e.size,a=e.active,s=e.className,l=e.block,u=e.type,c=e.as,d=Object(pe.a)(e,["bsPrefix","variant","size","active","className","block","type","as"]),h=Ce(n,"btn"),f=fe()(s,h,a&&"active",h+"-"+o,l&&h+"-block",r&&h+"-"+r);if(d.href)return i.a.createElement(nt,Object(p.a)({},d,{as:c,innerRef:t,className:fe()(f,d.disabled&&"disabled")}));var m=c||"button";return t&&(d.ref=t),i.a.createElement(m,Object(p.a)({},d,{type:u,className:f}))});ot.displayName="Button",ot.defaultProps={variant:"primary",active:!1,disabled:!1,type:"button"};var rt=ot;class it extends i.a.Component{constructor(e){super(e),te()(this),Z("FileExplorerRow "+this.props.ID,"start"),this.state={ID:this.props.ID,Data:this.props.data,ShoSelect:this.props.ShoSelect}}componentWillReceiveProps(e){this.props=e,null!=this.refs.Select&&(this.refs.Select.checked=!1),this.setState({ID:this.props.ID,Data:this.props.data,ShoSelect:this.props.ShoSelect})}GetDate(){return this.state.Data}GetRowID(){return this.state.ID}GetDataID(){return this.state.Data.ID}IsCheked(){return null!=this.refs.Select&&this.refs.Select.checked}OnDirectoryClick(){this.props.ParentComponent.OnDirectoryClick(this.GetDataID())}render(){let e=this.state,t=e.Data;return i.a.createElement("tr",null,i.a.createElement("td",null,t.ID),e.ShoSelect?i.a.createElement("td",null,i.a.createElement("input",{ref:"Select",type:"checkbox"})):null,"RootDirectory"===t.Type||"Directory"===t.Type?i.a.createElement("td",null,i.a.createElement(le,{to:`/?ID=${t.ID}`},i.a.createElement(rt,{id:t.ID,onClick:this.OnDirectoryClick,variant:"outline-dark"},t.Name))):i.a.createElement("td",null,t.Name),i.a.createElement("td",null,t.Type),i.a.createElement("td",null,t.Size))}}class at extends i.a.Component{constructor(e){super(e),te()(this),Z("FileExplorerControl","start"),this.state={data:{},ShoSelect:this.props.ShoSelect},this.ChildRows=[],this.fileExplorerServices=new Je,this.LoadDirectory()}OnBackClick(e){this.props.ParentComponent.SetID(this.state.data.ParentID),Z("FileExplorerControl","OnBackClick "+this.state.data.ParentID),this.LoadDirectory()}OnDirectoryClick(e){this.props.ParentComponent.SetID(e),Z("FileExplorerControl","MoveToDirectory "+e),this.LoadDirectory()}OnSortClick(e){let t=e.target.attributes[0].value,n=this.state.data;n.items.sort(function(e,t){var n,o,r=arguments.length;if(0===r)return(e,t)=>(e<t?-1:e>t&&1)||0;if(1===r)switch(typeof e){case"number":return e<0?(e,t)=>(e<t?1:e>t&&-1)||0:(e,t)=>(e<t?-1:e>t&&1)||0;case"string":return(t,n)=>(t[e]<n[e]?-1:t[e]>n[e]&&1)||0}if(2===r&&"number"==typeof t)return t<0?(t,n)=>(t[e]<n[e]?1:t[e]>n[e]&&-1)||0:(t,n)=>(t[e]<n[e]?-1:t[e]>n[e]&&1)||0;if("object"==typeof e)n=Object.getOwnPropertyNames(e),o=n.map(t=>e[t]),r=n.length;else{n=new Array(r),o=new Array(r);for(let e=r;e--;)n[e]=arguments[e],o[e]=1}return(e,t)=>{for(let i=0;i<r;i++){if(e[n[i]]<t[n[i]])return o[i];if(e[n[i]]>t[n[i]])return-o[i]}return 0}}(t,1)),this.setState({data:n})}LoadDirectory(){let e=this.props.ParentComponent.GetID();Z("FileExplorerControl","LoadDirectory "+e),this.fileExplorerServices.DirectoryGetItemsAsync(e).then(function(t){this.setState({data:t,ShoSelect:!(!this.props.ShoSelect||-1==e)})}.bind(this))}OnScanDirClick(e){let t=this.props.ParentComponent.GetID();Z("FileExplorerControl","ScanDirectory "+t),this.fileExplorerServices.ScanDirectoryAsync(t).then(function(e){this.LoadDirectory()}.bind(this))}GetSelectedID(){return this.ChildRows.filter(e=>e.IsCheked()).map(e=>e.GetDataID())}render(){let e=this.state.data;return"{}"!==JSON.stringify(e)?(Z("FileExplorerControl","Data"),i.a.createElement("div",null,this.props.ParentComponent.GetID()!=oe.RooDirectoryID?i.a.createElement("p",null,i.a.createElement(le,{to:`/?ID=${e.ParentID}`},i.a.createElement("button",{onClick:this.OnBackClick},"l- На уровень вверх - ",e.ParentName))):null,i.a.createElement("p",null,e.LogicPath),i.a.createElement("p",null,i.a.createElement("button",{onClick:this.LoadDirectory},"Update"),i.a.createElement("button",{onClick:this.OnScanDirClick},"Rescan")),i.a.createElement("table",null,i.a.createElement("thead",null,i.a.createElement("tr",null,i.a.createElement("th",null,i.a.createElement("button",{property:"ID",onClick:this.OnSortClick},"ID")),this.state.ShoSelect?i.a.createElement("th",null,"Select"):null,i.a.createElement("th",null,i.a.createElement("button",{property:"Name",onClick:this.OnSortClick},"Name")),i.a.createElement("th",null,i.a.createElement("button",{property:"Type",onClick:this.OnSortClick},"Type")),i.a.createElement("th",null,i.a.createElement("button",{property:"Size",onClick:this.OnSortClick},"Size")))),i.a.createElement("tbody",null,e.items.map(function(e,t,n){return[i.a.createElement(it,{ref:e=>{null!=e?this.ChildRows[t]=e:this.ChildRows.splice(t,1)},ShoSelect:this.state.ShoSelect,key:t,ID:t,data:e,ParentComponent:this})]}.bind(this)))))):(Z("FileExplorerControl","NoData"),i.a.createElement("div",null,i.a.createElement("p",null,"NoData")))}}var st=o(20),lt=o.n(st),ut=o(13),ct=o.n(ut),dt=o(11),pt=o.n(dt),ht=o(14),ft=o.n(ht),mt=o(40),gt=o.n(mt),vt=!1,yt=i.a.createContext(null),bt="unmounted",wt="exited",Et="entering",Ct="entered",xt=function(e){function t(t,n){var o;o=e.call(this,t,n)||this;var r,i=n&&!n.isMounting?t.enter:t.appear;return o.appearStatus=null,t.in?i?(r=wt,o.appearStatus=Et):r=Ct:r=t.unmountOnExit||t.mountOnEnter?bt:wt,o.state={status:r},o.nextCallback=null,o}Object(ve.a)(t,e),t.getDerivedStateFromProps=function(e,t){return e.in&&t.status===bt?{status:wt}:null};var n=t.prototype;return n.componentDidMount=function(){this.updateStatus(!0,this.appearStatus)},n.componentDidUpdate=function(e){var t=null;if(e!==this.props){var n=this.state.status;this.props.in?n!==Et&&n!==Ct&&(t=Et):n!==Et&&n!==Ct||(t="exiting")}this.updateStatus(!1,t)},n.componentWillUnmount=function(){this.cancelNextCallback()},n.getTimeouts=function(){var e,t,n,o=this.props.timeout;return e=t=n=o,null!=o&&"number"!=typeof o&&(e=o.exit,t=o.enter,n=void 0!==o.appear?o.appear:t),{exit:e,enter:t,appear:n}},n.updateStatus=function(e,t){if(void 0===e&&(e=!1),null!==t){this.cancelNextCallback();var n=s.a.findDOMNode(this);t===Et?this.performEnter(n,e):this.performExit(n)}else this.props.unmountOnExit&&this.state.status===wt&&this.setState({status:bt})},n.performEnter=function(e,t){var n=this,o=this.props.enter,r=this.context?this.context.isMounting:t,i=this.getTimeouts(),a=r?i.appear:i.enter;!t&&!o||vt?this.safeSetState({status:Ct},function(){n.props.onEntered(e)}):(this.props.onEnter(e,r),this.safeSetState({status:Et},function(){n.props.onEntering(e,r),n.onTransitionEnd(e,a,function(){n.safeSetState({status:Ct},function(){n.props.onEntered(e,r)})})}))},n.performExit=function(e){var t=this,n=this.props.exit,o=this.getTimeouts();n&&!vt?(this.props.onExit(e),this.safeSetState({status:"exiting"},function(){t.props.onExiting(e),t.onTransitionEnd(e,o.exit,function(){t.safeSetState({status:wt},function(){t.props.onExited(e)})})})):this.safeSetState({status:wt},function(){t.props.onExited(e)})},n.cancelNextCallback=function(){null!==this.nextCallback&&(this.nextCallback.cancel(),this.nextCallback=null)},n.safeSetState=function(e,t){t=this.setNextCallback(t),this.setState(e,t)},n.setNextCallback=function(e){var t=this,n=!0;return this.nextCallback=function(o){n&&(n=!1,t.nextCallback=null,e(o))},this.nextCallback.cancel=function(){n=!1},this.nextCallback},n.onTransitionEnd=function(e,t,n){this.setNextCallback(n);var o=null==t&&!this.props.addEndListener;e&&!o?(this.props.addEndListener&&this.props.addEndListener(e,this.nextCallback),null!=t&&setTimeout(this.nextCallback,t)):setTimeout(this.nextCallback,0)},n.render=function(){var e=this.state.status;if(e===bt)return null;var t=this.props,n=t.children,o=Object(pe.a)(t,["children"]);if(delete o.in,delete o.mountOnEnter,delete o.unmountOnExit,delete o.appear,delete o.enter,delete o.exit,delete o.timeout,delete o.addEndListener,delete o.onEnter,delete o.onEntering,delete o.onEntered,delete o.onExit,delete o.onExiting,delete o.onExited,"function"==typeof n)return i.a.createElement(yt.Provider,{value:null},n(e,o));var r=i.a.Children.only(n);return i.a.createElement(yt.Provider,{value:null},i.a.cloneElement(r,o))},t}(i.a.Component);function Tt(){}xt.contextType=yt,xt.propTypes={},xt.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1,enter:!0,exit:!0,onEnter:Tt,onEntering:Tt,onEntered:Tt,onExit:Tt,onExiting:Tt,onExited:Tt},xt.UNMOUNTED=0,xt.EXITED=1,xt.ENTERING=2,xt.ENTERED=3,xt.EXITING=4;var kt,St=xt,Dt=o(41),Mt=o.n(Dt);var Rt=((kt={})[Et]="show",kt[Ct]="show",kt),Pt=function(e){function t(){for(var t,n=arguments.length,o=new Array(n),r=0;r<n;r++)o[r]=arguments[r];return(t=e.call.apply(e,[this].concat(o))||this).handleEnter=function(e){!function(e){e.offsetHeight}(e),t.props.onEnter&&t.props.onEnter(e)},t}return Object(ve.a)(t,e),t.prototype.render=function(){var e=this.props,t=e.className,n=e.children,o=Object(pe.a)(e,["className","children"]);return i.a.createElement(St,Object(p.a)({addEndListener:Mt.a},o,{onEnter:this.handleEnter}),function(e,o){return i.a.cloneElement(n,Object(p.a)({},o,{className:fe()("fade",t,n.props.className,Rt[e])}))})},t}(i.a.Component);Pt.defaultProps={in:!1,timeout:300,mountOnEnter:!1,unmountOnExit:!1,appear:!1};var _t=Pt,Lt=Te("modal-body"),Ot=i.a.forwardRef(function(e,t){var n=e.bsPrefix,o=e.className,r=e.centered,a=e.size,s=e.children,l=e.scrollable,u=Object(pe.a)(e,["bsPrefix","className","centered","size","children","scrollable"]),c=(n=Ce(n,"modal"))+"-dialog";return i.a.createElement("div",Object(p.a)({},u,{ref:t,className:fe()(c,o,a&&n+"-"+a,r&&c+"-centered",l&&c+"-scrollable")}),i.a.createElement("div",{className:fe()(n+"-content")},s))});Ot.displayName="ModalDialog";var Nt=Ot,Ft=Te("modal-footer");var At=function(e){var t=Object(r.useRef)(e);return Object(r.useEffect)(function(){t.current=e},[e]),t};function It(e){var t=At(e);return Object(r.useCallback)(function(){return t.current&&t.current.apply(t,arguments)},[t])}var Ht={label:d.a.string.isRequired,onClick:d.a.func},zt=i.a.forwardRef(function(e,t){var n=e.label,o=e.onClick,r=e.className,a=Object(pe.a)(e,["label","onClick","className"]);return i.a.createElement("button",Object(p.a)({ref:t,type:"button",className:fe()("close",r),onClick:o},a),i.a.createElement("span",{"aria-hidden":"true"},"×"),i.a.createElement("span",{className:"sr-only"},n))});zt.displayName="CloseButton",zt.propTypes=Ht,zt.defaultProps={label:"Close"};var jt=zt,Bt=i.a.createContext({onHide:function(){}}),Ut=i.a.forwardRef(function(e,t){var n=e.bsPrefix,o=e.closeLabel,a=e.closeButton,s=e.onHide,l=e.className,u=e.children,c=Object(pe.a)(e,["bsPrefix","closeLabel","closeButton","onHide","className","children"]);n=Ce(n,"modal-header");var d=Object(r.useContext)(Bt),h=It(function(){d&&d.onHide(),s&&s()});return i.a.createElement("div",Object(p.a)({ref:t},c,{className:fe()(l,n)}),u,a&&i.a.createElement(jt,{label:o,onClick:h}))});Ut.displayName="ModalHeader",Ut.defaultProps={closeLabel:"Close",closeButton:!1};var Wt,qt=Ut,Vt=Te("modal-title",{Component:(Wt="h4",i.a.forwardRef(function(e,t){return i.a.createElement("div",Object(p.a)({},e,{ref:t,className:fe()(e.className,Wt)}))}))}),Gt=o(12),Yt=o.n(Gt),$t=o(15),Xt=o.n($t),Kt=o(27),Qt=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",Jt=".sticky-top",Zt=".navbar-toggler",en={show:!1,backdrop:!0,keyboard:!0,autoFocus:!0,enforceFocus:!0,restoreFocus:!0,animation:!0,dialogAs:Nt,manager:new(function(e){function t(){for(var t,n=arguments.length,o=new Array(n),r=0;r<n;r++)o[r]=arguments[r];return(t=e.call.apply(e,[this].concat(o))||this).adjustAndStore=function(e,t,n){var o=t.style[e];t.dataset[e]=o,Xt()(t,e,parseFloat(Xt()(t,e))+n+"px")},t.restore=function(e,t){var n=t.dataset[e];void 0!==n&&(delete t.dataset[e],Xt()(t,e,n))},t}Object(ve.a)(t,e);var n=t.prototype;return n.setContainerStyle=function(t,n){var o=this;if(e.prototype.setContainerStyle.call(this,t,n),t.overflowing){var r=ft()();Yt()(n,Qt).forEach(function(e){return o.adjustAndStore("paddingRight",e,r)}),Yt()(n,Jt).forEach(function(e){return o.adjustAndStore("margingRight",e,-r)}),Yt()(n,Zt).forEach(function(e){return o.adjustAndStore("margingRight",e,r)})}},n.removeContainerStyle=function(t,n){var o=this;e.prototype.removeContainerStyle.call(this,t,n),Yt()(n,Qt).forEach(function(e){return o.restore("paddingRight",e)}),Yt()(n,Jt).forEach(function(e){return o.restore("margingRight",e)}),Yt()(n,Zt).forEach(function(e){return o.restore("margingRight",e)})},t}(o.n(Kt).a))};function tn(e){return i.a.createElement(_t,e)}function nn(e){return i.a.createElement(_t,e)}var on=function(e){function t(){for(var t,n=arguments.length,o=new Array(n),r=0;r<n;r++)o[r]=arguments[r];return(t=e.call.apply(e,[this].concat(o))||this).state={style:{}},t.modalContext={onHide:function(){return t.props.onHide()}},t.setModalRef=function(e){t._modal=e},t.handleDialogMouseDown=function(){t._waitingForMouseUp=!0},t.handleMouseUp=function(e){t._waitingForMouseUp&&e.target===t._modal.dialog&&(t._ignoreBackdropClick=!0),t._waitingForMouseUp=!1},t.handleClick=function(e){t._ignoreBackdropClick||e.target!==e.currentTarget?t._ignoreBackdropClick=!1:t.props.onHide()},t.handleEnter=function(e){var n;e&&(e.style.display="block",t.updateDialogStyle(e));for(var o=arguments.length,r=new Array(o>1?o-1:0),i=1;i<o;i++)r[i-1]=arguments[i];t.props.onEnter&&(n=t.props).onEnter.apply(n,[e].concat(r))},t.handleEntering=function(e){for(var n,o=arguments.length,r=new Array(o>1?o-1:0),i=1;i<o;i++)r[i-1]=arguments[i];t.props.onEntering&&(n=t.props).onEntering.apply(n,[e].concat(r)),lt.a.on(window,"resize",t.handleWindowResize)},t.handleExited=function(e){var n;e&&(e.style.display="");for(var o=arguments.length,r=new Array(o>1?o-1:0),i=1;i<o;i++)r[i-1]=arguments[i];t.props.onExited&&(n=t.props).onExited.apply(n,r),lt.a.off(window,"resize",t.handleWindowResize)},t.handleWindowResize=function(){t.updateDialogStyle(t._modal.dialog)},t.renderBackdrop=function(e){var n=t.props,o=n.bsPrefix,r=n.backdropClassName;return i.a.createElement("div",Object(p.a)({},e,{className:fe()(o+"-backdrop",r)}))},t}Object(ve.a)(t,e);var n=t.prototype;return n.componentWillUnmount=function(){lt.a.off(window,"resize",this.handleWindowResize)},n.updateDialogStyle=function(e){if(pt.a){var t=this.props.manager.isContainerOverflowing(this._modal),n=e.scrollHeight>ct()(e).documentElement.clientHeight;this.setState({style:{paddingRight:t&&!n?ft()():void 0,paddingLeft:!t&&n?ft()():void 0}})}},n.render=function(){var e=this.props,t=e.bsPrefix,n=e.className,o=e.style,r=e.dialogClassName,a=e.children,s=e.dialogAs,l=e.show,u=e.animation,c=e.backdrop,d=e.keyboard,h=e.manager,f=e.onEscapeKeyDown,m=e.onShow,g=e.onHide,v=e.container,y=e.autoFocus,b=e.enforceFocus,w=e.restoreFocus,E=e.onEntered,C=e.onExit,x=e.onExiting,T=(e.onExited,e.onEntering,e.onEnter,e.onEntering,e.backdropClassName,Object(pe.a)(e,["bsPrefix","className","style","dialogClassName","children","dialogAs","show","animation","backdrop","keyboard","manager","onEscapeKeyDown","onShow","onHide","container","autoFocus","enforceFocus","restoreFocus","onEntered","onExit","onExiting","onExited","onEntering","onEnter","onEntering","backdropClassName"])),k=!0===c?this.handleClick:null,S=Object(p.a)({},o,this.state.style);return u||(S.display="block"),i.a.createElement(Bt.Provider,{value:this.modalContext},i.a.createElement(gt.a,{show:l,backdrop:c,container:v,keyboard:d,autoFocus:y,enforceFocus:b,restoreFocus:w,onEscapeKeyDown:f,onShow:m,onHide:g,onEntered:E,onExit:C,onExiting:x,manager:h,ref:this.setModalRef,style:S,className:fe()(n,t),containerClassName:t+"-open",transition:u?tn:void 0,backdropTransition:u?nn:void 0,renderBackdrop:this.renderBackdrop,onClick:k,onMouseUp:this.handleMouseUp,onEnter:this.handleEnter,onEntering:this.handleEntering,onExited:this.handleExited},i.a.createElement(s,Object(p.a)({},T,{onMouseDown:this.handleDialogMouseDown,className:r}),a)))},t}(i.a.Component);on.defaultProps=en;var rn=function(e,t){"string"==typeof t&&(t={prefix:t});var n=e.prototype&&e.prototype.isReactComponent,o=t,a=o.prefix,s=o.forwardRefAs,l=void 0===s?n?"ref":"innerRef":s;return be()(function(t,n){var o=Object(p.a)({},t);o[l]=n;var s=Object(r.useContext)(we);return i.a.createElement(e,Object(p.a)({},o,{bsPrefix:o.bsPrefix||s.get(a)||a}))},{displayName:"Bootstrap("+(e.displayName||e.name)+")"})}(on,"modal");rn.Body=Lt,rn.Header=qt,rn.Title=Vt,rn.Footer=Ft,rn.Dialog=Nt,rn.TRANSITION_DURATION=300,rn.BACKDROP_TRANSITION_DURATION=150;var an=rn,sn=o(19);class ln extends i.a.Component{constructor(e){super(e),te()(this),Z("ExplorerActionsControl","start"),this.state={ResultMsg:"",MoveWindowsShow:!1},this.fileExplorerServices=new Je}GetUserList(){}SaveUserList(){}OnDownloadClick(e){this.props.ParentComponent.refs.FileExplorerControl.GetSelectedID().map(e=>{Z("ExplorerActionsControl","OnDownload "+e),this.fileExplorerServices.OpenDownload(e)})}OnDeleteClick(e){let t=this.props.ParentComponent.refs.FileExplorerControl.GetSelectedID().map(e=>(Z("ExplorerActionsControl","OnDelete "+e),this.fileExplorerServices.DeleteAsync(e))),n="";Promise.all(t).then(function(e){e.map(function(e){n+="Succese: "+e.Successe+" ResultMsg:"+e.ResMessage+" | "}),Ke.MesOk(n,"Move"),this.props.ParentComponent.OnItemsChange()}.bind(this))}OnMoveClick(e){let t=this.props.ParentComponent.refs.FileExplorerControl.GetSelectedID();0!=t.length&&(this.selected=t,this.setState({MoveWindowsShow:!0}))}OnCreateDirectoryClick(e){let t=this.refs.DirectoryName.value,n=this.props.ParentComponent.GetID();this.fileExplorerServices.CreateDirectoryAsync(t,n).then(function(e){this.props.ParentComponent.OnItemsChange(),Ke.MesOk("Complete","CreateDir")}.bind(this)),this.refs.DirectoryName.value=""}OnMoveWindowCloseClick(){this.setState({MoveWindowsShow:!1})}GetID(){return null!=this.SelectedID?this.SelectedID:this.props.ParentComponent.GetID()}SetID(e){this.SelectedID=e}OnMoveWindowClick(){let t=this.selected.map(function(e){return Z("ExplorerActionsControl","OnMove "+e),this.fileExplorerServices.MoveAsync(e,this.SelectedID)}.bind(this)),n="";Promise.all(t).then(function(t){n+="Succese: "+e.Successe+" ResultMsg:"+e.ResMessage+" | ",Ke.MesOk(n,"Move"),this.props.ParentComponent.OnItemsChange()}.bind(this)),this.setState({MoveWindowsShow:!1})}render(){return i.a.createElement("div",null,i.a.createElement("p",null,"ExplorerControlPanel"),i.a.createElement("p",null,i.a.createElement("input",{ref:"DirectoryName"}),i.a.createElement("button",{onClick:this.OnCreateDirectoryClick},"CreateDirectory")),""!=this.state.ResultMsg?i.a.createElement("p",null,this.state.ResultMsg):"",i.a.createElement("table",null,i.a.createElement("thead",null,i.a.createElement("tr",null,i.a.createElement("th",null,i.a.createElement("button",{onClick:this.OnDownloadClick},"Скачать")),i.a.createElement("th",null,i.a.createElement("button",{onClick:this.OnDeleteClick},"Удалить")),i.a.createElement("th",null,i.a.createElement("button",{onClick:this.OnMoveClick},"Переместить"))))),i.a.createElement(an,{ref:"Modal",show:this.state.MoveWindowsShow,onHide:this.OnMoveWindowCloseClick,size:"lg","aria-labelledby":"contained-modal-title-vcenter",centered:!0},i.a.createElement(an.Header,{closeButton:!0},i.a.createElement(an.Title,null,"Select destination directory")),i.a.createElement(an.Body,null,i.a.createElement(at,{ref:"FileExplorerControl",ParentComponent:this,ShoSelect:!1})),i.a.createElement(an.Footer,null,i.a.createElement(rt,{variant:"secondary",onClick:this.OnMoveWindowCloseClick},"Cansel"),i.a.createElement(rt,{variant:"primary",onClick:this.OnMoveWindowClick},"Move to directory"))))}}class un{constructor(){this.URL_Start="/api/UploadFiles/StartUpload",this.URL_Upload="/api/UploadFiles/UploadBlob",this.URL_Cansel="/api/UploadFiles/Cansel",this.upload_chunk_size=oe.upload_chunk_size,this.ID=-1,this._ContinueDownload=!1,this._file=null,this._ParentID=null,this.OnProggresseChange=null,this.OnIDReceived=null,this.OnError=null}async _ReadBlobAsync(e,t){return new Promise(function(n,o){let r=this._file.slice(e,t),i=new FileReader;i.onload=function(){n(i.result)},i.onerror=o,i.readAsDataURL(r)}.bind(this))}async _StartUploadAsync(){let e;return await ue(this.URL_Start,"Post",{ParentID:this._ParentID,Name:this._file.name,Size:this._file.size}).then(function(t){e=t}.bind(this)),e}async _UploadBlobAsync(e,t){if(Z("UploadServices","_UploadBlobAsync"),!this._ContinueDownload)return{State:!0};if(""!=e){let n;return Z("UploadServices",this.URL_Upload+t),await ue(this.URL_Upload,"Post",{ID:this.ID,chunk:e}).then(function(e){n=e}.bind(this)),n}}async UploadFileAsync(e,t){this._file=e,this._ParentID=t;let n=await this._StartUploadAsync();if(n.State){this._ContinueDownload=!0,this.ID=n.ID,null!=this.OnIDReceived&&this.OnIDReceived(this.ID);for(let t=0,n=0;t<this._file.size;t+=this.upload_chunk_size,n++){if(!this._ContinueDownload)return;let o=await this._ReadBlobAsync(t,t+this.upload_chunk_size),r=await this._UploadBlobAsync(o,n);if(!r.State)return void(null!=this.OnError&&this.OnError(r.Msg));let i=Math.round(100*t/e.size);Z("UploadServices","p = "+i),null!=this.OnProggresseChange&&this.OnProggresseChange(i)}this._ContinueDownload=!1}else null!=this.OnError&&this.OnError(n.Msg)}Cansel(){this._ContinueDownload=!1,setTimeout(function(){ue(this.URL_Cansel,"Post",{ID:this.ID})}.bind(this),500)}}class cn extends i.a.Component{constructor(e){super(e),te()(this),Z("UploaderControl","start"),this.state={progress:0,ButtonUploadEnable:!0,_state:0,FileInfo:{},ResultMsg:""},this.uploadServices=new un,this.uploadServices.OnProggresseChange=this.OnProgresseChange,this.uploadServices.OnError=this.OnError}UploadClick(){let e=this.refs.file,t=e.files;if(0==t.length)return;let n=t[0];this.setState({ButtonUploadEnable:!1,_state:1,FileInfo:{name:n.name,size:n.size}}),this.uploadServices.UploadFileAsync(n,this.props.ParentComponent.GetID()).then(function(){Ke.MesOk("Complete","Upload"),this.setState({ButtonUploadEnable:!0,_state:0,FileInfo:{},ResultMsg:""}),this.props.ParentComponent.OnItemsChange(),e.value=""}.bind(this))}CancelClick(){this.uploadServices.Cansel(),this.setState({ButtonUploadEnable:!0,_state:0,FileInfo:{}})}OnProgresseChange(e){this.setState({progress:e})}OnError(e){this.setState({progress:0,ButtonUploadEnable:!0,_state:0,FileInfo:{},ResultMsg:e})}render(){return i.a.createElement("div",null,i.a.createElement("h2",null,"Upload"),i.a.createElement("p",null,i.a.createElement("input",{ref:"file",type:"file",disabled:!this.state.ButtonUploadEnable}),i.a.createElement("button",{disabled:!this.state.ButtonUploadEnable,onClick:this.UploadClick},"Upload"),i.a.createElement("button",{disabled:this.state.ButtonUploadEnable,onClick:this.CancelClick},"Cancel")),1==this.state._state?i.a.createElement("div",null,i.a.createElement("p",null,"Прогресс ",this.state.progress," %"),i.a.createElement("p",null,"Выполняется загрука файла:"),i.a.createElement("p",null,"Имя файла: ",this.state.FileInfo.name),i.a.createElement("p",null,"Размеры файла: ",this.state.FileInfo.size)):"",""!=this.state.ResultMsg?i.a.createElement("p",null,"Результат: ",this.state.ResultMsg):null)}}var dn=i.a.forwardRef(function(e,t){var n=e.bsPrefix,o=e.className,r=Object(pe.a)(e,["bsPrefix","className"]),a=Ce(n,"btn-toolbar");return i.a.createElement("div",Object(p.a)({},r,{ref:t,className:fe()(o,a)}))});dn.displayName="ButtonToolbar",dn.defaultProps={role:"toolbar"};var pn=dn;class hn extends i.a.Component{constructor(e){super(e),te()(this),Z("BootstrapControl","start")}ToastifyTest(){this.Leght=(null==this.Leght?0:this.Leght)+500}render(){return i.a.createElement("div",null,i.a.createElement("p",null,"Bootstrap test"),i.a.createElement(pn,null,i.a.createElement(rt,{onClick:this.ToastifyTest,variant:"outline-primary"},"Primary"),i.a.createElement(rt,{variant:"outline-secondary"},"Secondary"),i.a.createElement(rt,{variant:"outline-success"},"Success"),i.a.createElement(rt,{variant:"outline-warning"},"Warning"),i.a.createElement(rt,{variant:"outline-danger"},"Danger"),i.a.createElement(rt,{variant:"outline-info"},"Info"),i.a.createElement(rt,{variant:"outline-light"},"Light"),i.a.createElement(rt,{variant:"outline-dark"},"Dark")))}}class fn extends i.a.Component{constructor(e){super(e),te()(this),Z("FileExplorerPage","start");var t=new URL(window.location.href).searchParams.get("ID");null!=t?this.SetID(t):this.SetID(-1)}OnAuthChange(){this.OnItemsChange(),this.refs.MenuControl.OnAuthChange()}OnItemsChange(){this.refs.FileExplorerControl.LoadDirectory()}SetID(e){this.CurrentID=e,Z("FileExplorerPage",this.CurrentID)}GetID(){return this.CurrentID}render(){return i.a.createElement("div",null,i.a.createElement("hr",null),i.a.createElement(de,{ref:"MenuControl",ParentComponent:this}),i.a.createElement("hr",null),i.a.createElement(Qe,{ref:"UserControl",ParentComponent:this}),i.a.createElement("hr",null),i.a.createElement(at,{ref:"FileExplorerControl",ParentComponent:this,ShoSelect:!0}),i.a.createElement("hr",null),this.GetID()!=oe.RooDirectoryID?i.a.createElement("div",null,i.a.createElement(ln,{ref:"ExplorerActionsControl",ParentComponent:this}),i.a.createElement("hr",null),i.a.createElement(cn,{ref:"UploaderControl",ParentComponent:this}),i.a.createElement("hr",null)):"",i.a.createElement(hn,null),i.a.createElement("hr",null))}}o(84);function mn(e,t){return void 0!==e[t]}function gn(e){return"default"+e.charAt(0).toUpperCase()+e.substr(1)}function vn(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}var yn=i.a.createContext(null),bn=i.a.createContext(null),wn=o(42),En=o.n(wn),Cn=i.a.createContext(),xn=function(e,t){return null!=e?String(e):t||null},Tn=Cn,kn=i.a.createContext(null),Sn=i.a.createContext(null),Dn=function(){},Mn=function(e){function t(){for(var t,n=arguments.length,o=new Array(n),r=0;r<n;r++)o[r]=arguments[r];return(t=e.call.apply(e,[this].concat(o))||this).state={navContext:null},t.handleSelect=function(e,n){var o=t.props,r=o.onSelect,i=o.parentOnSelect;null!=e&&(r&&r(e,n),i&&i(e,n))},t.handleKeyDown=function(e){var n,o=t.props.onKeyDown;switch(o&&o(e),e.key){case"ArrowLeft":case"ArrowUp":n=t.getNextActiveChild(-1);break;case"ArrowRight":case"ArrowDown":n=t.getNextActiveChild(1);break;default:return}n&&(e.preventDefault(),t.handleSelect(n.dataset.rbEventKey,e),t._needsRefocus=!0)},t.attachRef=function(e){t.listNode=e},t}Object(ve.a)(t,e),t.getDerivedStateFromProps=function(e){var t=e.activeKey,n=e.getControlledId,o=e.getControllerId;return{navContext:{role:e.role,activeKey:xn(t),getControlledId:n||Dn,getControllerId:o||Dn}}};var n=t.prototype;return n.componentDidUpdate=function(){if(this._needsRefocus&&this.listNode){var e=this.listNode.querySelector("[data-rb-event-key].active");e&&e.focus()}},n.getNextActiveChild=function(e){if(!this.listNode)return null;var t=Yt()(this.listNode,"[data-rb-event-key]:not(.disabled)"),n=this.listNode.querySelector(".active"),o=t.indexOf(n);if(-1===o)return null;var r=o+e;return r>=t.length&&(r=0),r<0&&(r=t.length-1),t[r]},n.render=function(){var e=this.props,t=e.as,n=void 0===t?"ul":t,o=(e.onSelect,e.parentOnSelect,e.getControlledId,e.getControllerId,e.activeKey,Object(pe.a)(e,["as","onSelect","parentOnSelect","getControlledId","getControllerId","activeKey"]));return"tablist"===o.role&&(o.onKeyDown=this.handleKeyDown),i.a.createElement(Tn.Provider,{value:this.handleSelect},i.a.createElement(kn.Provider,{value:this.state.navContext},i.a.createElement(n,Object(p.a)({},o,{onKeyDown:this.handleKeyDown,ref:this.attachRef}))))},t}(i.a.Component),Rn=En()([Tn,Sn],function(e,t,n){var o=n.role;return t?{activeKey:t.activeKey,parentOnSelect:e,role:o||"tablist",getControllerId:t.getControllerId,getControlledId:t.getControlledId}:{parentOnSelect:e}},Mn),Pn=i.a.forwardRef(function(e,t){var n=e.bsPrefix,o=e.className,r=e.children,a=e.as,s=void 0===a?"div":a,l=Object(pe.a)(e,["bsPrefix","className","children","as"]);return n=Ce(n,"nav-item"),i.a.createElement(s,Object(p.a)({},l,{ref:t,className:fe()(o,n)}),r)});Pn.displayName="NavItem";var _n=Pn,Ln=i.a.forwardRef(function(e,t){var n=e.active,o=e.className,a=e.tabIndex,s=e.eventKey,l=e.onSelect,u=e.onClick,c=e.as,d=Object(pe.a)(e,["active","className","tabIndex","eventKey","onSelect","onClick","as"]),h=xn(s,d.href),f=Object(r.useContext)(Tn),m=Object(r.useContext)(kn),g=n;m&&(d.role||"tablist"!==m.role||(d.role="tab"),d["data-rb-event-key"]=h,d.id=m.getControllerId(h),d["aria-controls"]=m.getControlledId(h),g=null==n&&null!=h?m.activeKey===h:n),"tab"===d.role&&(d.tabIndex=g?a:-1,d["aria-selected"]=g);var v=It(function(e){u&&u(e),null!=h&&(l&&l(h,e),f&&f(h,e))});return i.a.createElement(c,Object(p.a)({},d,{ref:t,onClick:v,className:fe()(o,g&&"active")}))});Ln.defaultProps={disabled:!1};var On=Ln,Nn={disabled:!1,as:nt},Fn=i.a.forwardRef(function(e,t){var n=e.bsPrefix,o=e.disabled,r=e.className,a=e.href,s=e.eventKey,l=e.onSelect,u=e.as,c=Object(pe.a)(e,["bsPrefix","disabled","className","href","eventKey","onSelect","as"]);return n=Ce(n,"nav-link"),i.a.createElement(On,Object(p.a)({},c,{href:a,ref:t,eventKey:s,as:u,disabled:o,onSelect:l,className:fe()(r,n,o&&"disabled")}))});Fn.displayName="NavLink",Fn.defaultProps=Nn;var An=Fn,In=i.a.forwardRef(function(e,t){var n,o,a,s=function(e,t){return Object.keys(t).reduce(function(n,o){var i,a=n[gn(o)],s=n[o],l=Object(pe.a)(n,[gn(o),o].map(vn)),u=t[o],c=Object(r.useRef)({}),d=Object(r.useState)(a),h=d[0],f=d[1],m=mn(e,o),g=mn(c.current,o);c.current=e,!m&&g&&f(a);var v=e[u],y=Object(r.useCallback)(function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),o=1;o<t;o++)n[o-1]=arguments[o];v&&v.apply(void 0,[e].concat(n)),f(e)},[f,v]);return Object(p.a)({},l,((i={})[o]=m?s:h,i[u]=y,i))},e)}(e,{activeKey:"onSelect"}),l=s.as,u=void 0===l?"div":l,c=s.bsPrefix,d=s.variant,h=s.fill,f=s.justify,m=s.navbar,g=s.className,v=s.children,y=s.activeKey,b=Object(pe.a)(s,["as","bsPrefix","variant","fill","justify","navbar","className","children","activeKey"]);c=Ce(c,"nav");var w=Object(r.useContext)(yn),E=Object(r.useContext)(bn);return w?(o=w.bsPrefix,m=null==m||m):E&&(a=E.cardHeaderBsPrefix),i.a.createElement(Rn,Object(p.a)({as:u,ref:t,activeKey:y,className:fe()(g,(n={},n[c]=!m,n[o+"-nav"]=m,n[a+"-"+d]=!!a,n[c+"-"+d]=!!d,n[c+"-fill"]=h,n[c+"-justified"]=f,n))},b),v)});In.displayName="Nav",In.defaultProps={justify:!1,fill:!1},In.Item=_n,In.Link=An;var Hn=In;class zn{constructor(){this.URL_GetUsers="api/User/GetUserList",this.URL_SetUsers="api/User/SetUserList"}async GetUsersAsync(){return await ue(this.URL_GetUsers,"Post").then(function(e){return e})}async SetUsersAsync(e){return await ue(this.URL_SetUsers,"Post",e).then(function(e){return e}.bind(this))}}class jn extends i.a.Component{constructor(e){super(e),te()(this),Z("UserListControl","start"),this.state={Users:[],ShoGroups:!1,UserGroups:{ID:-1,Name:"",Password:"",Active:!1,Changes:-1,Groups:[{ID:-11,Name:"",EnterInGroup:!1}]}},this.userServices=new zn,this.ID=-1,this.columns=[{title:"ID",field:"ID"},{title:"Name",field:"Name",editor:"input"},{title:"Password",field:"Password",editor:"input"},{title:"Active",field:"Active",editor:"tick"},{title:"Groups",formatter:this.ButtonFormatter,align:"center",cellClick:this.OnGroupsClick},{title:"Delete",formatter:this.ButtonFormatter,align:"center",cellClick:this.DeleteUserClick}],this.columns_groups=[{title:"ID",field:"ID"},{title:"Name",field:"Name"},{title:"EnterInGroup",field:"EnterInGroup",editor:"tick"}],this.DownloadUsers()}DownloadUsers(){this.userServices.GetUsersAsync().then(function(e){let t=e.Users;this.Groups=e.Groups,this.setState({Users:t})}.bind(this))}UploadUsers(){this.userServices.SetUsersAsync(this.state.Users).then(function(e){e.Successe?Ke.MesOk(e.ResMessage,"Save"):Ke.MesEr(e.ResMessage,"Save"),this.DownloadUsers()}.bind(this))}ButtonFormatter(e,t,n){return"<i class='fa fa-print'><button>Action</button></i>"}OnCellChange(e){let t=this.state.Users,n=e.getRow()._row.data.ID;var o=t.filter(e=>e.ID===n)[0];0===o.Changes&&(o.Changes=1)}OnCellChange_Groups(e){0===this.state.UserGroups.Changes&&(this.state.UserGroups.Changes=1)}UpdateClick(){this.DownloadUsers()}CreateUserCick(){let e={ID:this.ID,Name:"NewUser"+this.ID,Password:"QWERTY",Active:!0,Changes:2,Groups:this.Groups.map(e=>({ID:e.ID,Name:e.Name,EnterInGroup:"Пользователи"==e.Name}))};this.ID--;let t=this.state.Users;t.push(e),this.setState({Users:t})}DeleteUserClick(e,t){let n=t.getRow()._row.data.ID,o=this.state.Users,r=o.filter(e=>e.ID===n)[0];2===r.Changes?o.splice(o.findIndex(e=>e.ID===n),1):r.Changes=3,this.setState({Users:o})}OnGroupsClick(e,t){let n=t.getRow()._row.data.ID,o=this.state.Users.filter(e=>e.ID===n)[0];this.setState({ShoGroups:!0,UserGroups:o})}OnGroupsClose(){this.setState({ShoGroups:!1})}render(){return i.a.createElement("div",null,i.a.createElement("button",{onClick:this.CreateUserCick},"CreateUser"),i.a.createElement("button",{onClick:this.DownloadUsers},"Update(Изменения будут утеряны)"),i.a.createElement("button",{onClick:this.UploadUsers},"SaveChanges"),i.a.createElement(sn.ReactTabulator,{ref:"table",data:this.state.Users.filter(e=>3!=e.Changes),columns:this.columns,tooltips:!0,layout:"fitData",cellEdited:this.OnCellChange}),i.a.createElement(an,{ref:"Modal",show:this.state.ShoGroups,onHide:this.OnGroupsClose,size:"lg","aria-labelledby":"contained-modal-title-vcenter",centered:!0},i.a.createElement(an.Header,{closeButton:!0},i.a.createElement(an.Title,null,"User Groups: ",this.state.UserGroups.ID+" "+this.state.UserGroups.Name)),i.a.createElement(an.Body,null,i.a.createElement(sn.ReactTabulator,{ref:"table_UserGroups",data:this.state.UserGroups.Groups,columns:this.columns_groups,tooltips:!0,layout:"fitData",cellEdited:this.OnCellChange_Groups})),i.a.createElement(an.Footer,null,i.a.createElement(rt,{variant:"secondary",onClick:this.OnGroupsClose},"Close"))))}}class Bn extends i.a.Component{constructor(e){super(e),te()(this),Z("AdministratorPage","start"),this.state={ActiveWindows:0},this.authServices=new ce}OnAuthChange(){this.refs.MenuControl.OnAuthChange()}OnUsersClick(){this.setState({ActiveWindows:0})}OnGroupsClick(){this.setState({ActiveWindows:1})}render(){return i.a.createElement("div",null,i.a.createElement("hr",null),i.a.createElement(de,{ref:"MenuControl",ParentComponent:this}),i.a.createElement("hr",null),this.authServices.IsAuth()?i.a.createElement("div",null,i.a.createElement(Hn,{variant:"tabs"},i.a.createElement(Hn.Item,null,i.a.createElement(Hn.Link,{onClick:this.OnUsersClick},"Users")),i.a.createElement(Hn.Item,null,i.a.createElement(Hn.Link,{onClick:this.OnGroupsClick}," Groups"))),0==this.state.ActiveWindows?i.a.createElement("div",null,i.a.createElement(jn,{ref:"UserListControl"})):i.a.createElement("div",null,"GroupsWindow")):i.a.createElement("p",null,"Вы не авторизованы"))}}s.a.render(i.a.createElement(class extends i.a.Component{constructor(e){super(e),Z("RouteSystem","start")}render(){return i.a.createElement(z,null,i.a.createElement(Y,null,i.a.createElement(J,{ref:"CurrentPage",exact:!0,path:"/",component:fn}),i.a.createElement(J,{ref:"CurrentPage",exact:!0,path:"/App",component:fn}),i.a.createElement(J,{ref:"CurrentPage",exact:!0,path:"/index.html",component:fn}),i.a.createElement(J,{ref:"CurrentPage",path:"/?ID=:ID",component:fn}),i.a.createElement(J,{ref:"CurrentPage",path:"/Admin",component:Bn})))}},null),document.getElementById("App")),console.log("index.js")}]);
//# sourceMappingURL=app_bundle.js.map
\ No newline at end of file
diff --git a/FileServer/Web/Scripts/app_bundle.js.map b/FileServer/Web/Scripts/app_bundle.js.map
index 4e3213a..544fe63 100644
--- a/FileServer/Web/Scripts/app_bundle.js.map
+++ b/FileServer/Web/Scripts/app_bundle.js.map
@@ -1 +1 @@
-{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/react/index.js","webpack:///./node_modules/prop-types/index.js","webpack:///./node_modules/@babel/runtime/helpers/esm/extends.js","webpack:///./node_modules/classnames/index.js","webpack:///./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack:///./node_modules/react-autobind/index.js","webpack:///./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack:///./node_modules/warning/warning.js","webpack:///./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack:///./node_modules/dom-helpers/util/inDOM.js","webpack:///./node_modules/react-dom/index.js","webpack:///./node_modules/invariant/browser.js","webpack:///./node_modules/dom-helpers/query/querySelectorAll.js","webpack:///./node_modules/dom-helpers/ownerDocument.js","webpack:///./node_modules/dom-helpers/util/scrollbarSize.js","webpack:///./node_modules/dom-helpers/style/index.js","webpack:///./node_modules/toastr/toastr.js","webpack:///./node_modules/dom-helpers/events/index.js","webpack:///./node_modules/prop-types-extra/lib/componentOrElement.js","webpack:///./node_modules/dom-helpers/util/camelize.js","webpack:///./node_modules/react-overlays/ModalManager.js","webpack:///./node_modules/object-assign/index.js","webpack:///./node_modules/dom-helpers/events/on.js","webpack:///./node_modules/dom-helpers/events/off.js","webpack:///./node_modules/dom-helpers/query/contains.js","webpack:///./node_modules/dom-helpers/events/listen.js","webpack:///./node_modules/prop-types-extra/lib/utils/createChainableTypeChecker.js","webpack:///./node_modules/dom-helpers/class/hasClass.js","webpack:///./node_modules/dom-helpers/util/camelizeStyle.js","webpack:///./node_modules/dom-helpers/transition/properties.js","webpack:///./node_modules/react-overlays/utils/getContainer.js","webpack:///./node_modules/@restart/context/forwardRef.js","webpack:///./node_modules/react-overlays/Modal.js","webpack:///./node_modules/dom-helpers/transition/end.js","webpack:///./node_modules/path-to-regexp/index.js","webpack:///./node_modules/react/cjs/react.production.min.js","webpack:///./node_modules/react-dom/cjs/react-dom.production.min.js","webpack:///./node_modules/scheduler/index.js","webpack:///./node_modules/scheduler/cjs/scheduler.production.min.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/react-autobind/lib/autoBind.js","webpack:///./node_modules/prop-types/factoryWithThrowingShims.js","webpack:///./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack:///./node_modules/jquery/dist/jquery.js","webpack:///(webpack)/buildin/amd-define.js","webpack:///./node_modules/dom-helpers/events/filter.js","webpack:///./node_modules/dom-helpers/activeElement.js","webpack:///./node_modules/prop-types-extra/lib/elementType.js","webpack:///./node_modules/react-is/index.js","webpack:///./node_modules/react-is/cjs/react-is.production.min.js","webpack:///./node_modules/dom-helpers/class/index.js","webpack:///./node_modules/dom-helpers/class/addClass.js","webpack:///./node_modules/dom-helpers/class/removeClass.js","webpack:///./node_modules/dom-helpers/util/hyphenateStyle.js","webpack:///./node_modules/dom-helpers/util/hyphenate.js","webpack:///./node_modules/dom-helpers/style/getComputedStyle.js","webpack:///./node_modules/dom-helpers/style/removeStyle.js","webpack:///./node_modules/dom-helpers/transition/isTransform.js","webpack:///./node_modules/react-overlays/utils/isOverflowing.js","webpack:///./node_modules/dom-helpers/query/isWindow.js","webpack:///./node_modules/react-overlays/utils/manageAriaHidden.js","webpack:///./node_modules/react-overlays/Portal.js","webpack:///./node_modules/react-overlays/WaitForContainer.js","webpack:///./node_modules/react-overlays/utils/ownerDocument.js","webpack:///./node_modules/isarray/index.js","webpack:///./node_modules/resolve-pathname/index.js","webpack:///./node_modules/value-equal/index.js","webpack:///./node_modules/tiny-invariant/dist/tiny-invariant.esm.js","webpack:///./node_modules/history/esm/history.js","webpack:///./node_modules/react-router/es/Router.js","webpack:///./node_modules/react-router-dom/es/Router.js","webpack:///./node_modules/react-router-dom/es/BrowserRouter.js","webpack:///./node_modules/react-router/es/matchPath.js","webpack:///./node_modules/react-router/es/Switch.js","webpack:///./node_modules/react-router-dom/es/Switch.js","webpack:///./node_modules/react-router/es/Route.js","webpack:///./node_modules/react-router-dom/es/Route.js","webpack:///./src/Tools/LogTools.js","webpack:///./src/Tools/Configuration.js","webpack:///./node_modules/react-router-dom/es/Link.js","webpack:///./src/Tools/ApiQuery.js","webpack:///./src/Services/AuthServices.js","webpack:///./src/React/Controls/MenuControl.jsx","webpack:///./node_modules/react-bootstrap/es/ThemeProvider.js","webpack:///./node_modules/react-bootstrap/es/utils/createWithBsPrefix.js","webpack:///./node_modules/react-bootstrap/es/FormContext.js","webpack:///./node_modules/react-bootstrap/es/FormGroup.js","webpack:///./node_modules/react-bootstrap/es/Feedback.js","webpack:///./node_modules/react-bootstrap/es/FormControl.js","webpack:///./node_modules/react-bootstrap/es/FormCheckInput.js","webpack:///./node_modules/react-bootstrap/es/FormCheckLabel.js","webpack:///./node_modules/react-bootstrap/es/FormCheck.js","webpack:///./node_modules/react-bootstrap/es/Col.js","webpack:///./node_modules/react-bootstrap/es/FormLabel.js","webpack:///./node_modules/react-bootstrap/es/FormText.js","webpack:///./node_modules/react-bootstrap/es/Form.js","webpack:///./src/Tools/Notification.js","webpack:///./src/React/Controls/UserControl.jsx","webpack:///./src/Services/FileExplorerServices.js","webpack:///./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack:///./node_modules/react-bootstrap/es/utils/createChainedFunction.js","webpack:///./node_modules/react-bootstrap/es/SafeAnchor.js","webpack:///./node_modules/react-bootstrap/es/Button.js","webpack:///./src/React/Controls/FileExplorer/FileExplorerRow.jsx","webpack:///./src/React/Controls/FileExplorer/FileExplorerControl.jsx","webpack:///./src/Tools/Sort.js","webpack:///./node_modules/react-transition-group/esm/config.js","webpack:///./node_modules/react-transition-group/esm/TransitionGroupContext.js","webpack:///./node_modules/react-transition-group/esm/Transition.js","webpack:///./node_modules/react-bootstrap/es/Fade.js","webpack:///./node_modules/react-bootstrap/es/utils/triggerBrowserReflow.js","webpack:///./node_modules/react-bootstrap/es/ModalBody.js","webpack:///./node_modules/react-bootstrap/es/ModalDialog.js","webpack:///./node_modules/react-bootstrap/es/ModalFooter.js","webpack:///./node_modules/@restart/hooks/esm/useCommittedRef.js","webpack:///./node_modules/react-bootstrap/es/CloseButton.js","webpack:///./node_modules/react-bootstrap/es/ModalContext.js","webpack:///./node_modules/react-bootstrap/es/ModalHeader.js","webpack:///./node_modules/@restart/hooks/esm/useEventCallback.js","webpack:///./node_modules/react-bootstrap/es/utils/divWithClassName.js","webpack:///./node_modules/react-bootstrap/es/ModalTitle.js","webpack:///./node_modules/react-bootstrap/es/utils/BootstrapModalManager.js","webpack:///./node_modules/react-bootstrap/es/Modal.js","webpack:///./src/React/Controls/FileExplorer/ExplorerActionsControl.jsx","webpack:///./src/Services/UploadServices.js","webpack:///./src/React/Controls/FileExplorer/UploaderControl.jsx","webpack:///./node_modules/react-bootstrap/es/ButtonToolbar.js","webpack:///./src/React/Controls/BootstrapControl.jsx","webpack:///./src/React/Pages/FileExplorerPage.jsx","webpack:///./src/React/Pages/AdministratorPage.jsx","webpack:///./src/React/RouteSystem.jsx","webpack:///./src/index.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","require","_extends","assign","target","arguments","length","source","apply","this","__webpack_exports__","__WEBPACK_AMD_DEFINE_RESULT__","hasOwn","classNames","classes","arg","argType","push","Array","isArray","inner","join","default","undefined","_objectWithoutPropertiesLoose","excluded","sourceKeys","keys","indexOf","obj","warning","_inheritsLoose","subClass","superClass","constructor","__proto__","_default","window","document","createElement","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","err","console","error","condition","format","a","b","e","f","Error","args","argIndex","replace","framesToPop","element","selector","found","maybeID","maybeClass","nameOnly","slice","simpleSelectorRE","test","getElementById","getElementsByClassName","toArray","getElementsByTagName","querySelectorAll","Function","node","ownerDocument","_interopRequireDefault","recalc","size","_inDOM","scrollDiv","style","position","top","width","height","overflow","body","appendChild","offsetWidth","clientWidth","removeChild","css","transforms","props","_camelizeStyle","_getComputedStyle2","getPropertyValue","_hyphenateStyle","forEach","_isTransform","_removeStyle","_properties","transform","cssText","__WEBPACK_AMD_DEFINE_ARRAY__","define","$","$container","listener","previousToast","toastId","toastType","info","success","toastr","clear","$toastElement","clearOptions","options","getOptions","getContainer","clearToast","toastsToClear","children","clearContainer","remove","removeToast","message","title","optionsOverride","notify","type","iconClass","iconClasses","subscribe","callback","version","containerId","attr","addClass","positionClass","appendTo","createContainer","force","hideMethod","duration","hideDuration","easing","hideEasing","complete","publish","map","extend","preventDuplicates","shouldExit","intervalId","$titleElement","$messageElement","$progressElement","$closeElement","closeHtml","progressBar","hideEta","maxHideTime","response","state","startTime","Date","toastClass","suffix","escapeHtml","append","titleClass","setTitle","messageClass","setMessage","closeButton","closeClass","prepend","progressClass","rtl","newestOnTop","ariaValue","setAria","hide","showMethod","showDuration","showEasing","onShown","timeOut","setTimeout","hideToast","parseFloat","getTime","setInterval","updateProgress","closeOnHover","hover","stickAround","delayedHideToast","onclick","tapToDismiss","click","event","stopPropagation","cancelBubble","onCloseClick","debug","log","override","method","closeMethod","closeDuration","closeEasing","clearTimeout","onHidden","endTime","extendedTimeOut","stop","percentage","is","_on","on","_off","off","_filter","filter","_listen","listen","_typeof","iterator","_react2","_createChainableTypeChecker2","propName","componentName","location","propFullName","propValue","propType","isValidElement","render","nodeType","string","rHyphen","_","chr","toUpperCase","_class","_style","_scrollbarSize","_isOverflowing","_manageAriaHidden","ModalManager","_temp","_ref","_ref$hideSiblingNodes","hideSiblingNodes","_ref$handleContainerO","handleContainerOverflow","modals","containers","data","scrollbarSize","_proto","isContainerOverflowing","modal","containerIndexFromModal","overflowing","arr","cb","idx","some","setContainerStyle","containerState","container","paddingRight","parseInt","removeContainerStyle","add","className","modalIdx","containerIdx","hideSiblings","split","splice","removeClass","showSiblings","_data$modals","backdrop","dialog","ariaHidden","isTopModal","getOwnPropertySymbols","propIsEnumerable","propertyIsEnumerable","toObject","val","TypeError","test1","String","getOwnPropertyNames","test2","fromCharCode","test3","letter","shouldUseNative","from","symbols","to","addEventListener","eventName","handler","capture","attachEvent","srcElement","currentTarget","removeEventListener","detachEvent","context","contains","compareDocumentPosition","fallback","parentNode","validate","checkType","isRequired","componentNameSafe","propFullNameSafe","_len","_key","concat","chainedCheckType","classList","baseVal","_camelize","msPattern","animationEnd","animationDelay","animationTiming","animationDuration","animationName","transitionEnd","transitionDuration","transitionDelay","transitionTiming","transitionProperty","prefix","_getTransitionPropert","vendorMap","O","toLowerCase","Moz","Webkit","ms","vendors","vendor","getTransitionProperties","end","timing","delay","defaultContainer","_reactDom","findDOMNode","renderFn","propTypes","defaultProps","_ref$allowFallback","allowFallback","_ref$displayName","displayName","ref","_react","forwardRef","_activeElement","_contains","_propTypes","_componentOrElement","_elementType","_ModalManager","_Portal","_getContainer","_ownerDocument","_assertThisInitialized","self","ReferenceError","modalManager","Modal","_React$Component","_this","_args","exited","show","onPortalRendered","onShow","autoFocus","doc","manager","containerClassName","removeKeydownListener","handleDocumentKeyDown","removeFocusListener","enforceFocus","onHide","restoreFocus","restoreLastFocus","setDialogRef","setBackdropRef","handleHidden","_this$props","setState","onExited","handleBackdropClick","onBackdropClick","keyboard","keyCode","onEscapeKeyDown","_isMounted","currentActiveElement","focus","renderBackdrop","_this$props2","Transition","backdropTransition","onClick","appear","in","getDerivedStateFromProps","nextProps","transition","getSnapshotBeforeUpdate","prevProps","lastFocus","componentDidMount","componentDidUpdate","componentWillUnmount","_this$props3","_this$props4","renderDialog","_this$props4$role","role","onExit","onExiting","onEnter","onEntering","onEntered","dialogProps","aria-modal","newProps","prop","omitProps","tabIndex","cloneElement","unmountOnExit","onRendered","Fragment","Component","bool","oneOfType","func","oneOf","Manager","onEnd","backup","fakeEvent","done","parseDuration","_parseDuration","str","mult","isarray","pathToRegexp","parse","compile","tokensToFunction","tokensToRegExp","PATH_REGEXP","RegExp","res","tokens","index","path","defaultDelimiter","delimiter","exec","escaped","offset","next","group","modifier","asterisk","partial","repeat","optional","pattern","escapeGroup","escapeString","substr","encodeURIComponentPretty","encodeURI","charCodeAt","toString","matches","opts","encode","pretty","encodeURIComponent","token","segment","JSON","stringify","j","attachKeys","re","flags","sensitive","strict","route","endsWithDelimiter","groups","match","regexpToRegexp","parts","arrayToRegexp","stringToRegexp","k","for","q","u","v","w","x","y","z","aa","ba","A","B","g","h","ca","C","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","D","E","refs","updater","F","G","isReactComponent","forceUpdate","H","isPureReactComponent","I","current","J","K","L","__self","__source","M","$$typeof","_owner","N","P","Q","pop","result","keyPrefix","count","R","U","S","T","=",":","escape","ea","fa","V","da","W","X","Children","only","createRef","PureComponent","createContext","_calculateChangedBits","_currentValue","_currentValue2","_threadCount","Provider","Consumer","_context","lazy","_ctor","_status","_result","memo","compare","useCallback","useContext","useEffect","useImperativeHandle","useDebugValue","useLayoutEffect","useMemo","useReducer","useRef","useState","StrictMode","Suspense","createFactory","unstable_ConcurrentMode","unstable_Profiler","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ReactCurrentDispatcher","ReactCurrentOwner","Y","Z","ha","ia","onError","ja","la","ma","na","oa","extractEvents","eventTypes","pa","phasedRegistrationNames","qa","registrationName","ra","sa","dependencies","ta","ua","va","wa","ka","xa","ya","za","Aa","_dispatchListeners","_dispatchInstances","isPropagationStopped","isPersistent","release","Ba","injectEventPluginOrder","injectEventPluginsByName","Ca","stateNode","disabled","Da","Ea","Math","random","Fa","Ga","Ha","tag","Ia","Ja","Ka","La","return","Ma","dispatchConfig","Na","_targetInst","Oa","Pa","Qa","Ra","Sa","Ta","animationend","animationiteration","animationstart","transitionend","Ua","Va","Wa","animation","Xa","Ya","Za","$a","ab","bb","db","eb","textContent","fb","gb","nativeEvent","Interface","isDefaultPrevented","defaultPrevented","returnValue","ib","eventPool","jb","destructor","hb","getPooled","preventDefault","persist","eventPhase","bubbles","cancelable","timeStamp","now","isTrusted","kb","lb","mb","nb","ob","documentMode","pb","qb","rb","sb","beforeInput","bubbled","captured","compositionEnd","compositionStart","compositionUpdate","tb","ub","vb","detail","wb","zb","locale","which","xb","ctrlKey","altKey","metaKey","char","yb","Ab","Bb","Cb","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","color","date","datetime","datetime-local","email","month","number","password","range","search","tel","text","time","url","week","Mb","nodeName","Nb","correspondingUseElement","Ob","setAttribute","Pb","Rb","_valueTracker","getOwnPropertyDescriptor","set","configurable","getValue","setValue","stopTracking","Qb","Sb","checked","Tb","Ub","Vb","Wb","Xb","Yb","Zb","$b","ac","bc","cc","dc","ec","fc","gc","hc","ic","jc","_debugOwner","_debugSource","fileName","lineNumber","kc","lc","mc","nc","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","rc","sc","tc","pc","isNaN","qc","oc","removeAttribute","setAttributeNS","uc","vc","defaultChecked","defaultValue","_wrapperState","initialChecked","wc","initialValue","controlled","xc","yc","zc","Ac","activeElement","Bc","change","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","_isInputEventSupported","Qc","view","Rc","Alt","Control","Meta","Shift","Sc","getModifierState","Tc","Uc","Vc","Wc","Xc","Yc","screenX","screenY","clientX","clientY","pageX","pageY","shiftKey","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Zc","pointerId","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","$c","mouseEnter","mouseLeave","pointerEnter","pointerLeave","ad","defaultView","parentWindow","alternate","bd","cd","dd","ed","effectTag","fd","hd","child","sibling","gd","id","elapsedTime","pseudoElement","jd","clipboardData","kd","ld","charCode","md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","nd","8","9","12","13","16","17","18","19","20","27","32","33","34","35","36","37","38","39","40","45","46","112","113","114","115","116","117","118","119","120","121","122","123","144","145","224","od","pd","dataTransfer","qd","touches","targetTouches","changedTouches","rd","sd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","td","ud","vd","wd","isInteractive","xd","isInteractiveTopLevelEventType","yd","zd","Ad","targetInst","ancestors","containerInfo","topLevelType","Bd","Cd","Dd","Ed","Fd","Gd","Hd","Id","Jd","Kd","firstChild","Ld","nextSibling","Nd","HTMLIFrameElement","contentWindow","href","Od","contentEditable","Qd","focusedElem","selectionRange","Md","documentElement","start","selectionStart","selectionEnd","min","getSelection","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","left","scrollLeft","scrollTop","Rd","Sd","select","Td","Ud","Vd","Wd","Xd","Yd","onSelect","$d","Zd","ae","selected","defaultSelected","be","dangerouslySetInnerHTML","ce","de","ee","SimpleEventPlugin","EnterLeaveEventPlugin","ChangeEventPlugin","SelectEventPlugin","BeforeInputEventPlugin","fe","html","mathml","svg","ge","he","ie","je","MSApp","execUnsafeLocalFunction","namespaceURI","innerHTML","ke","lastChild","nodeValue","le","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","me","ne","trim","oe","setProperty","charAt","substring","pe","menuitem","area","base","br","col","embed","hr","img","input","keygen","link","meta","param","track","wbr","qe","se","blur","te","ue","ve","we","xe","__html","ye","ze","Ae","unstable_scheduleCallback","Be","unstable_cancelCallback","De","Ee","Set","Fe","Ge","He","Ie","Je","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","childContextTypes","Ke","Le","Me","Ne","getChildContext","Oe","__reactInternalMemoizedMergedChildContext","Pe","Qe","Re","Se","Ue","elementType","pendingProps","contextDependencies","memoizedState","updateQueue","memoizedProps","lastEffect","firstEffect","nextEffect","childExpirationTime","expirationTime","Ve","Xe","Ye","Ze","$e","af","bf","pendingChildren","implementation","cf","didError","earliestPendingTime","latestPendingTime","df","ff","latestPingedTime","earliestSuspendedTime","latestSuspendedTime","gf","nextExpirationTimeToWorkOn","jf","kf","baseState","tf","_reactInternalFiber","lf","nf","mf","payload","of","pf","qf","rf","sf","uf","shouldComponentUpdate","vf","contextType","wf","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","xf","yf","UNSAFE_componentWillMount","componentWillMount","zf","Af","_stringRef","Bf","Cf","Map","delete","Df","Ef","Ff","Gf","Hf","If","Jf","tagName","Kf","Lf","Mf","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","Vf","Wf","Xf","Yf","Zf","$f","ag","bg","cg","dg","eg","fg","gg","hg","ig","jg","kg","lg","mg","queue","baseUpdate","ng","og","pg","lastRenderedReducer","dispatch","action","qg","last","lastRenderedState","eagerReducer","eagerState","rg","destroy","deps","sg","tg","ug","vg","wg","readContext","xg","yg","zg","Ag","Bg","Cg","Dg","Eg","Fg","Gg","Hg","Ig","Jg","Kg","Lg","Mg","Ng","Og","Pg","UNSAFE_componentWillUpdate","componentWillUpdate","Qg","getDerivedStateFromError","Rg","pendingContext","Sg","timedOutAt","Tg","Ug","then","hf","We","hydrate","hidden","first","observedBits","unstable_observedBits","Vg","Wg","Xg","Yg","Zg","$g","ah","bh","firstUpdate","lastUpdate","firstCapturedUpdate","lastCapturedUpdate","firstCapturedEffect","lastCapturedEffect","ch","dh","eh","fh","gh","hh","ih","jh","stack","kh","lh","mh","nh","oh","ph","WeakSet","qh","rh","sh","th","vh","wh","xh","yh","insertBefore","_reactRootContainer","zh","wasMultiple","multiple","Ce","display","uh","hi","Xh","has","Bh","WeakMap","Ch","Dh","Eh","componentDidCatch","Fh","componentStack","Gh","Hh","Ih","Jh","Kh","Lh","Mh","Nh","Oh","Ph","Qh","Rh","Sh","Th","Uh","__reactInternalSnapshotBeforeUpdate","Vh","Zh","pendingCommitExpirationTime","ef","Pd","Yh","unstable_runWithPriority","unstable_NormalPriority","finishedWork","$h","ai","createElementNS","createTextNode","bi","ci","di","maxDuration","pingCache","ei","fi","unstable_getCurrentPriorityLevel","unstable_ImmediatePriority","unstable_UserBlockingPriority","unstable_LowPriority","unstable_IdlePriority","gi","ii","ji","ki","li","mi","ni","oi","pi","qi","ri","si","ti","unstable_now","ui","vi","wi","xi","yi","zi","timeout","timeoutHandle","Bi","Ci","nextScheduledRoot","Di","Ei","unstable_shouldYield","_onComplete","Fi","firstBatch","_expirationTime","_defer","Gi","Hi","Ii","Ji","Ki","Li","Ni","_root","_callbacks","_next","_hasChildren","_didComplete","_children","Oi","_didCommit","_onCommit","Pi","_internalRoot","Qi","Si","legacy_renderSubtreeIntoContainer","hasAttribute","Ri","Ti","Mi","form","commit","unmount","createBatch","Vi","createPortal","unstable_renderSubtreeIntoContainer","unmountComponentAtNode","unstable_createPortal","unstable_batchedUpdates","unstable_interactiveUpdates","flushSync","unstable_createRoot","unstable_flushControlled","Events","findFiberByHostInstance","bundleType","rendererPackageName","isDisabled","supportsFiber","inject","onCommitFiberRoot","onCommitFiberUnmount","Te","overrideProps","currentDispatcherRef","findHostInstanceByFiber","Wi","Xi","global","previous","priorityLevel","requestAnimationFrame","cancelAnimationFrame","performance","_schedMock","MessageChannel","port2","port1","onmessage","postMessage","unstable_next","unstable_wrapCallback","unstable_continueExecution","unstable_pauseExecution","unstable_getFirstCallbackNode","objPrototype","getPrototypeOf","toBind","descriptor","wontBind","fn","boundFn","writable","boundMethod","warn","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","secret","getShim","ReactPropTypes","array","symbol","any","arrayOf","instanceOf","objectOf","shape","exact","checkPropTypes","PropTypes","factory","noGlobal","getProto","class2type","fnToString","ObjectFunctionString","support","isFunction","isWindow","preservedScriptAttributes","src","nonce","noModule","DOMEval","code","script","getAttribute","head","toType","jQuery","init","rtrim","isArrayLike","jquery","num","pushStack","elems","ret","merge","prevObject","each","elem","eq","len","sort","copy","copyIsArray","clone","deep","isPlainObject","expando","isReady","msg","noop","proto","Ctor","isEmptyObject","globalEval","makeArray","results","inArray","second","grep","invert","callbackExpect","guid","Sizzle","Expr","getText","isXML","tokenize","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","preferredDoc","dirruns","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","push_native","list","booleans","whitespace","identifier","attributes","pseudos","rwhitespace","rcomma","rcombinators","rdescend","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","needsContext","rhtml","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","escapedWhitespace","high","rcssescape","fcssescape","asCodePoint","unloadHandler","inDisabledFieldset","addCombinator","dir","childNodes","els","seed","nid","newSelector","newContext","qsa","toSelector","testContext","qsaError","cache","cacheLength","shift","markFunction","assert","el","addHandle","attrs","attrHandle","siblingCheck","cur","diff","sourceIndex","createInputPseudo","createButtonPseudo","createDisabledPseudo","createPositionalPseudo","argument","matchIndexes","namespace","hasCompare","subWindow","createComment","getById","getElementsByName","attrId","find","getAttributeNode","tmp","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","adown","bup","sortDetached","aup","ap","bp","unshift","expr","elements","specified","sel","uniqueSort","duplicates","detectDuplicates","sortStable","selectors","createPseudo","relative",">"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","operator","check","what","simple","forward","ofType","xml","uniqueCache","outerCache","nodeIndex","parent","useCache","uniqueID","pseudo","setFilters","matched","not","matcher","unmatched","lang","elemLang","hash","root","hasFocus","enabled","selectedIndex","empty","header","even","odd","lt","gt","radio","checkbox","file","image","submit","reset","combinator","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","filters","parseOnly","soFar","preFilters","cached","setMatchers","elementMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","matcherFromGroupMatchers","compiled","unique","isXMLDoc","escapeSelector","until","truncate","siblings","rneedsContext","rsingleTag","winnow","qualifier","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","contents","prev","targets","closest","prevAll","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","content","reverse","rnothtmlwhite","Identity","Thrower","ex","adoptValue","resolve","reject","noValue","promise","fail","Callbacks","flag","createOptions","firing","memory","fired","locked","firingIndex","fire","once","stopOnFalse","disable","lock","fireWith","Deferred","tuples","always","deferred","catch","pipe","fns","newDefer","tuple","returned","progress","onFulfilled","onRejected","onProgress","maxDepth","depth","special","that","mightThrow","notifyWith","resolveWith","process","exceptionHook","stackTrace","rejectWith","getStackHook","stateString","when","singleValue","remaining","resolveContexts","resolveValues","master","updateFunc","rerrorNames","readyException","readyList","completed","readyWait","wait","readyState","doScroll","access","chainable","emptyGet","raw","bulk","rmsPrefix","rdashAlpha","fcamelCase","all","camelCase","acceptData","owner","Data","uid","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","getData","removeData","_data","_removeData","dequeue","startLength","hooks","_queueHooks","setter","clearQueue","defer","pnum","rcssNum","cssExpand","isAttached","composed","getRootNode","isHiddenWithinTree","swap","old","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","unit","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","showHide","values","toggle","rcheckableType","rtagName","rscriptType","wrapMap","option","thead","tr","getAll","setGlobalEval","refElements","optgroup","tbody","tfoot","colgroup","caption","div","buildFragment","scripts","selection","ignored","wrap","attached","fragment","createDocumentFragment","nodes","htmlPrefilter","checkClone","cloneNode","noCloneChecked","rkeyEvent","rmouseEvent","rtypenamespace","returnTrue","returnFalse","expectSync","safeActiveElement","types","one","origFn","leverageNative","notAsync","saved","isTrigger","delegateType","stopImmediatePropagation","trigger","Event","handleObjIn","eventHandle","events","handleObj","handlers","namespaces","origType","elemData","handle","triggered","bindType","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","handlerQueue","fix","delegateTarget","preDispatch","isImmediatePropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","originalEvent","load","noBubble","beforeunload","isSimulated","offsetX","offsetY","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rxhtmlTag","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","pdataOld","pdataCur","udataOld","udataCur","fixInput","domManip","collection","hasScripts","iNoClone","valueIsFunction","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","before","after","replaceWith","replaceChild","prependTo","insertAfter","replaceAll","original","insert","rnumnonpx","getStyles","opener","getComputedStyle","rboxStyle","curCSS","computed","minWidth","maxWidth","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","marginLeft","right","pixelBoxStylesVal","boxSizingReliableVal","scrollboxSizeVal","measure","round","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","cssPrefixes","emptyStyle","vendorProps","finalPropName","final","cssProps","capName","vendorPropName","rdisplayswap","rcustomProp","cssShow","visibility","cssNormalTransform","letterSpacing","setPositiveNumber","subtract","max","boxModelAdjustment","dimension","box","isBorderBox","styles","computedVal","extra","delta","ceil","getWidthOrHeight","valueIsBorderBox","offsetProp","getClientRects","Tween","cssHooks","origName","isCustomProp","isFinite","getBoundingClientRect","scrollboxSizeBuggy","margin","padding","border","expand","expanded","propHooks","run","percent","eased","pos","step","fx","linear","swing","cos","PI","fxNow","inProgress","rfxtypes","rrun","schedule","interval","tick","createFxNow","genFx","includeWidth","createTween","Animation","tweeners","properties","stopped","prefilters","currentTime","tweens","specialEasing","originalProperties","originalOptions","gotoEnd","propFilter","timer","anim","*","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflowX","overflowY","prefilter","speed","opt","speeds","fadeTo","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","attrNames","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","tabindex","class","curValue","clazz","finalValue","toggleClass","stateVal","isValidValue","hasClass","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","simulate","triggerHandler","attaches","rquery","parseXML","DOMParser","parseFromString","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","valueOrFunction","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","active","lastModified","etag","isLocal","protocol","processData","async","contentType","accepts","json","responseFields","converters","* text","text html","text json","text xml","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","overrideMimeType","mimeType","status","abort","statusText","finalText","crossDomain","host","hasContent","ifModified","headers","beforeSend","send","nativeStatusText","responses","isSuccess","modified","ct","finalDataType","firstDataType","ajaxHandleResponses","conv2","conv","dataFilter","throws","ajaxConvert","getJSON","getScript","text script","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","visible","offsetHeight","xhr","XMLHttpRequest","xhrSuccessStatus","0","1223","xhrSupported","cors","errorCallback","open","username","xhrFields","onload","onerror","onabort","ontimeout","onreadystatechange","responseType","responseText","binary","scriptAttrs","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","keepScripts","parsed","params","animated","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","rect","win","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","","defaultExtra","funcName","fnOver","fnOut","unbind","delegate","undelegate","proxy","holdReady","hold","parseJSON","isNumeric","_jQuery","_$","noConflict","_querySelectorAll","_reactIs","isValidElementType","typeOf","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","ForwardRef","Lazy","Memo","Portal","Profiler","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","_addClass","_removeClass","_hasClass","replaceClassName","origClass","classToRemove","_hyphenate","rUpper","currentStyle","rposition","runStyle","runtimeStyle","rsLeft","pixelLeft","removeProperty","supportedTransforms","_isWindow","innerWidth","bodyIsOverflowing","scrollHeight","clientHeight","_ref2","_ref3","BLACKLIST","exclude","_WaitForContainer","onContainerResolved","WaitForContainer","setContainer","_container","componentOrElement","isAbsolute","pathname","spliceOne","resolvePathname","toParts","fromParts","isToAbs","isFromAbs","mustEndAbs","hasTrailingSlash","up","part","valueEqual","isProduction","invariant","addLeadingSlash","stripBasename","hasBasename","stripTrailingSlash","createPath","createLocation","currentLocation","hashIndex","searchIndex","parsePath","decodeURI","URIError","createTransitionManager","prompt","listeners","setPrompt","nextPrompt","confirmTransitionTo","getUserConfirmation","appendListener","isActive","item","notifyListeners","canUseDOM","getConfirmation","confirm","PopStateEvent","HashChangeEvent","getHistoryState","history","createBrowserHistory","globalHistory","canUseHistory","navigator","userAgent","needsHashChangeListener","_props","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","basename","getDOMLocation","historyState","_window$location","createKey","transitionManager","nextState","handlePopState","isExtraneousPopstateEvent","handlePop","handleHashChange","forceNextPop","ok","fromLocation","toLocation","toIndex","allKeys","fromIndex","go","revertPop","initialLocation","createHref","listenerCount","checkDOMListeners","isBlocked","pushState","prevIndex","nextKeys","replaceState","goBack","goForward","block","unblock","unlisten","_possibleConstructorReturn","Router","instance","Constructor","_classCallCheck","computeMatch","setPrototypeOf","_inherits","router","isExact","_this2","React","BrowserRouter","createHistory","patternCache","cacheCount","compilePath","cacheKey","compiledPattern","matchPath","_options","_options$exact","_options$strict","_options$sensitive","_compilePath","reduce","Switch","_element$props","pathProp","computedMatch","isEmptyChildren","Route","component","nextContext","_context$router","staticContext","Log","sender","Configuration","isModifiedEvent","Link","handleClick","innerRef","_objectWithoutProperties","ApiQuery","fetch","Content-Type","credentials","AuthServices_AuthServices","URL_Auth","URL_UserInfo","AuthCoockieName","[object Object]","login","Login","Password","Successe","_SetTocken","Token","Logout","IsAuth","_GetTocken","_getCookie","decodeURIComponent","MenuControl","super","autoBind","authServices","AuthServices","OnAuthChange","react_default","es_Link","ThemeContext","useBootstrapPrefix","defaultPrefix","prefixes","ThemeProvider","pascalCase","camelize","createWithBsPrefix","_ref$Component","BsComponent","bsPrefix","_ref2$as","as","Tag","resolvedPrefix","FormContext","controlId","FormGroup","_ref$as","Feedback","FormControl","_classes","isValid","isInvalid","plaintext","readOnly","_classes2","_classes3","FormCheckInput","isStatic","_useContext","custom","FormCheckLabel","htmlFor","FormCheck","inline","feedback","label","innerFormContext","hasLabel","Input","Label","DEVICE_SIZES","Col","spans","brkPoint","span","_propValue$span","infix","FormLabel","column","srOnly","FormText","muted","Form","validated","Row","Group","Check","Text","Notification_Notification","Timestring","getHours","getMinutes","getSeconds","UserControl","UserName","GetUserInfoAsync","ParentComponent","Notification","MesEr","ResMessage","AuthClick","AuthAsync","LogoutClick","es_Form","placeholder","FileExplorerServices_FileExplorerServices","URL_DirectoryItems","URL_ScanDirectory","URL_Delete","URL_Move","URL_Download","URL_CreateDirectory","elemID","directoryID","NewParent","OpenDownload","dirname","ParentID","Name","createChainedFunction","funcs","acc","_len2","_key2","isTrivialHref","SafeAnchor","handleKeyDown","_this$props2$as","onKeyDown","Button","variant","FileExplorerRow","ShoSelect","Select","GetDate","GetRowID","GetDataID","IsCheked","OnDirectoryClick","Type","es_Button","Size","FileExplorerControl","ChildRows","fileExplorerServices","FileExplorerServices","LoadDirectory","OnBackClick","SetID","OnSortClick","SortProperty","items","field","fields","orders","ArrayCompare","GetID","DirectoryGetItemsAsync","OnScanDirClick","ScanDirectoryAsync","GetSelectedID","RooDirectoryID","ParentName","LogicPath","FileExplorerRow_FileExplorerRow","row","config","UNMOUNTED","EXITED","ENTERING","ENTERED","initialStatus","isMounting","enter","appearStatus","mountOnEnter","nextCallback","prevState","updateStatus","nextStatus","cancelNextCallback","getTimeouts","exit","mounting","ReactDOM","performEnter","performExit","appearing","timeouts","enterTimeout","safeSetState","onTransitionEnd","_this3","cancel","setNextCallback","_this4","doesNotHaveTimeoutOrListener","addEndListener","childProps","TransitionGroupContext","EXITING","_fadeStyles","fadeStyles","Fade","handleEnter","triggerBrowserReflow","innerProps","ModalDialog","centered","scrollable","dialogClass","useCommittedRef","CloseButton","aria-hidden","ModalContext","ModalHeader","closeLabel","useEventCallback","Selector","dialogAs","BootstrapModalManager","adjustAndStore","adjust","actual","dataset","restore","getScrollbarSize","DialogTransition","BackdropTransition","modalContext","setModalRef","_modal","handleDialogMouseDown","_waitingForMouseUp","handleMouseUp","_ignoreBackdropClick","updateDialogStyle","handleEntering","_len3","_key3","handleWindowResize","handleExited","_len4","_key4","backdropClassName","containerIsOverflowing","modalIsOverflowing","paddingLeft","_this$props5","dialogClassName","Dialog","clickHandler","baseModalStyle","BaseModal","onMouseUp","onMouseDown","DecoratedModal","isClassy","_opts","_opts$forwardRefAs","forwardRefAs","createBootstrapComponent","Body","Header","Title","Footer","TRANSITION_DURATION","BACKDROP_TRANSITION_DURATION","ExplorerActionsControl","ResultMsg","MoveWindowsShow","OnDownloadClick","OnDeleteClick","promises","DeleteAsync","Result","Promise","MesOk","OnItemsChange","OnMoveClick","OnCreateDirectoryClick","DirectoryName","CreateDirectoryAsync","OnMoveWindowCloseClick","SelectedID","OnMoveWindowClick","MoveAsync","es_Modal","aria-labelledby","FileExplorerControl_FileExplorerControl","UploadServices_UploadServices","URL_Start","URL_Upload","URL_Cansel","upload_chunk_size","_ContinueDownload","_file","_ParentID","OnProggresseChange","OnIDReceived","OnError","startByte","stopByte","blob","reader","FileReader","bin_data","ChunkNumb","State","chunk","parent_id","start_info","_StartUploadAsync","_ReadBlobAsync","_UploadBlobAsync","Msg","Cansel","UploaderControl","ButtonUploadEnable","_state","FileInfo","uploadServices","UploadServices","OnProgresseChange","UploadClick","files","UploadFileAsync","CancelClick","Process","ButtonToolbar","BootstrapControl","ToastifyTest","Leght","es_ButtonToolbar","FileExplorerPage","Url_ID","URL","searchParams","CurrentID","MenuControl_MenuControl","UserControl_UserControl","ExplorerActionsControl_ExplorerActionsControl","UploaderControl_UploaderControl","BootstrapControl_BootstrapControl","AdministratorPage","ActiveWindows","OnUsersClick","OnGroupsClick","Nav","Item","es_BrowserRouter","react_router_dom_es_Switch","react_router_dom_es_Route"],"mappings":"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","file":"app_bundle.js","sourcesContent":[" \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 = \"/build\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 67);\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","module.exports = require('./lib/autoBind');\n","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 1 ? len - 1 : 0);\n for (var key = 1; key < len; key++) {\n args[key - 1] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _default = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nexports.default = _default;\nmodule.exports = exports[\"default\"];","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = qsa;\n// Zepto.js\n// (c) 2010-2015 Thomas Fuchs\n// Zepto.js may be freely distributed under the MIT license.\nvar simpleSelectorRE = /^[\\w-]*$/;\nvar toArray = Function.prototype.bind.call(Function.prototype.call, [].slice);\n\nfunction qsa(element, selector) {\n var maybeID = selector[0] === '#',\n maybeClass = selector[0] === '.',\n nameOnly = maybeID || maybeClass ? selector.slice(1) : selector,\n isSimple = simpleSelectorRE.test(nameOnly),\n found;\n\n if (isSimple) {\n if (maybeID) {\n element = element.getElementById ? element : document;\n return (found = element.getElementById(nameOnly)) ? [found] : [];\n }\n\n if (element.getElementsByClassName && maybeClass) return toArray(element.getElementsByClassName(nameOnly));\n return toArray(element.getElementsByTagName(selector));\n }\n\n return toArray(element.querySelectorAll(selector));\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = ownerDocument;\n\nfunction ownerDocument(node) {\n return node && node.ownerDocument || document;\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = scrollbarSize;\n\nvar _inDOM = _interopRequireDefault(require(\"./inDOM\"));\n\nvar size;\n\nfunction scrollbarSize(recalc) {\n if (!size && size !== 0 || recalc) {\n if (_inDOM.default) {\n var scrollDiv = document.createElement('div');\n scrollDiv.style.position = 'absolute';\n scrollDiv.style.top = '-9999px';\n scrollDiv.style.width = '50px';\n scrollDiv.style.height = '50px';\n scrollDiv.style.overflow = 'scroll';\n document.body.appendChild(scrollDiv);\n size = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n }\n }\n\n return size;\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = style;\n\nvar _camelizeStyle = _interopRequireDefault(require(\"../util/camelizeStyle\"));\n\nvar _hyphenateStyle = _interopRequireDefault(require(\"../util/hyphenateStyle\"));\n\nvar _getComputedStyle2 = _interopRequireDefault(require(\"./getComputedStyle\"));\n\nvar _removeStyle = _interopRequireDefault(require(\"./removeStyle\"));\n\nvar _properties = require(\"../transition/properties\");\n\nvar _isTransform = _interopRequireDefault(require(\"../transition/isTransform\"));\n\nfunction style(node, property, value) {\n var css = '';\n var transforms = '';\n var props = property;\n\n if (typeof property === 'string') {\n if (value === undefined) {\n return node.style[(0, _camelizeStyle.default)(property)] || (0, _getComputedStyle2.default)(node).getPropertyValue((0, _hyphenateStyle.default)(property));\n } else {\n (props = {})[property] = value;\n }\n }\n\n Object.keys(props).forEach(function (key) {\n var value = props[key];\n\n if (!value && value !== 0) {\n (0, _removeStyle.default)(node, (0, _hyphenateStyle.default)(key));\n } else if ((0, _isTransform.default)(key)) {\n transforms += key + \"(\" + value + \") \";\n } else {\n css += (0, _hyphenateStyle.default)(key) + \": \" + value + \";\";\n }\n });\n\n if (transforms) {\n css += _properties.transform + \": \" + transforms + \";\";\n }\n\n node.style.cssText += ';' + css;\n}\n\nmodule.exports = exports[\"default\"];","/*\n * Toastr\n * Copyright 2012-2015\n * Authors: John Papa, Hans Fjällemark, and Tim Ferrell.\n * All Rights Reserved.\n * Use, reproduction, distribution, and modification of this code is subject to the terms and\n * conditions of the MIT license, available at http://www.opensource.org/licenses/mit-license.php\n *\n * ARIA Support: Greta Krafsig\n *\n * Project: https://github.com/CodeSeven/toastr\n */\n/* global define */\n(function (define) {\n define(['jquery'], function ($) {\n return (function () {\n var $container;\n var listener;\n var toastId = 0;\n var toastType = {\n error: 'error',\n info: 'info',\n success: 'success',\n warning: 'warning'\n };\n\n var toastr = {\n clear: clear,\n remove: remove,\n error: error,\n getContainer: getContainer,\n info: info,\n options: {},\n subscribe: subscribe,\n success: success,\n version: '2.1.4',\n warning: warning\n };\n\n var previousToast;\n\n return toastr;\n\n ////////////////\n\n function error(message, title, optionsOverride) {\n return notify({\n type: toastType.error,\n iconClass: getOptions().iconClasses.error,\n message: message,\n optionsOverride: optionsOverride,\n title: title\n });\n }\n\n function getContainer(options, create) {\n if (!options) { options = getOptions(); }\n $container = $('#' + options.containerId);\n if ($container.length) {\n return $container;\n }\n if (create) {\n $container = createContainer(options);\n }\n return $container;\n }\n\n function info(message, title, optionsOverride) {\n return notify({\n type: toastType.info,\n iconClass: getOptions().iconClasses.info,\n message: message,\n optionsOverride: optionsOverride,\n title: title\n });\n }\n\n function subscribe(callback) {\n listener = callback;\n }\n\n function success(message, title, optionsOverride) {\n return notify({\n type: toastType.success,\n iconClass: getOptions().iconClasses.success,\n message: message,\n optionsOverride: optionsOverride,\n title: title\n });\n }\n\n function warning(message, title, optionsOverride) {\n return notify({\n type: toastType.warning,\n iconClass: getOptions().iconClasses.warning,\n message: message,\n optionsOverride: optionsOverride,\n title: title\n });\n }\n\n function clear($toastElement, clearOptions) {\n var options = getOptions();\n if (!$container) { getContainer(options); }\n if (!clearToast($toastElement, options, clearOptions)) {\n clearContainer(options);\n }\n }\n\n function remove($toastElement) {\n var options = getOptions();\n if (!$container) { getContainer(options); }\n if ($toastElement && $(':focus', $toastElement).length === 0) {\n removeToast($toastElement);\n return;\n }\n if ($container.children().length) {\n $container.remove();\n }\n }\n\n // internal functions\n\n function clearContainer (options) {\n var toastsToClear = $container.children();\n for (var i = toastsToClear.length - 1; i >= 0; i--) {\n clearToast($(toastsToClear[i]), options);\n }\n }\n\n function clearToast ($toastElement, options, clearOptions) {\n var force = clearOptions && clearOptions.force ? clearOptions.force : false;\n if ($toastElement && (force || $(':focus', $toastElement).length === 0)) {\n $toastElement[options.hideMethod]({\n duration: options.hideDuration,\n easing: options.hideEasing,\n complete: function () { removeToast($toastElement); }\n });\n return true;\n }\n return false;\n }\n\n function createContainer(options) {\n $container = $('<div/>')\n .attr('id', options.containerId)\n .addClass(options.positionClass);\n\n $container.appendTo($(options.target));\n return $container;\n }\n\n function getDefaults() {\n return {\n tapToDismiss: true,\n toastClass: 'toast',\n containerId: 'toast-container',\n debug: false,\n\n showMethod: 'fadeIn', //fadeIn, slideDown, and show are built into jQuery\n showDuration: 300,\n showEasing: 'swing', //swing and linear are built into jQuery\n onShown: undefined,\n hideMethod: 'fadeOut',\n hideDuration: 1000,\n hideEasing: 'swing',\n onHidden: undefined,\n closeMethod: false,\n closeDuration: false,\n closeEasing: false,\n closeOnHover: true,\n\n extendedTimeOut: 1000,\n iconClasses: {\n error: 'toast-error',\n info: 'toast-info',\n success: 'toast-success',\n warning: 'toast-warning'\n },\n iconClass: 'toast-info',\n positionClass: 'toast-top-right',\n timeOut: 5000, // Set timeOut and extendedTimeOut to 0 to make it sticky\n titleClass: 'toast-title',\n messageClass: 'toast-message',\n escapeHtml: false,\n target: 'body',\n closeHtml: '<button type=\"button\">×</button>',\n closeClass: 'toast-close-button',\n newestOnTop: true,\n preventDuplicates: false,\n progressBar: false,\n progressClass: 'toast-progress',\n rtl: false\n };\n }\n\n function publish(args) {\n if (!listener) { return; }\n listener(args);\n }\n\n function notify(map) {\n var options = getOptions();\n var iconClass = map.iconClass || options.iconClass;\n\n if (typeof (map.optionsOverride) !== 'undefined') {\n options = $.extend(options, map.optionsOverride);\n iconClass = map.optionsOverride.iconClass || iconClass;\n }\n\n if (shouldExit(options, map)) { return; }\n\n toastId++;\n\n $container = getContainer(options, true);\n\n var intervalId = null;\n var $toastElement = $('<div/>');\n var $titleElement = $('<div/>');\n var $messageElement = $('<div/>');\n var $progressElement = $('<div/>');\n var $closeElement = $(options.closeHtml);\n var progressBar = {\n intervalId: null,\n hideEta: null,\n maxHideTime: null\n };\n var response = {\n toastId: toastId,\n state: 'visible',\n startTime: new Date(),\n options: options,\n map: map\n };\n\n personalizeToast();\n\n displayToast();\n\n handleEvents();\n\n publish(response);\n\n if (options.debug && console) {\n console.log(response);\n }\n\n return $toastElement;\n\n function escapeHtml(source) {\n if (source == null) {\n source = '';\n }\n\n return source\n .replace(/&/g, '&')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n .replace(/</g, '<')\n .replace(/>/g, '>');\n }\n\n function personalizeToast() {\n setIcon();\n setTitle();\n setMessage();\n setCloseButton();\n setProgressBar();\n setRTL();\n setSequence();\n setAria();\n }\n\n function setAria() {\n var ariaValue = '';\n switch (map.iconClass) {\n case 'toast-success':\n case 'toast-info':\n ariaValue = 'polite';\n break;\n default:\n ariaValue = 'assertive';\n }\n $toastElement.attr('aria-live', ariaValue);\n }\n\n function handleEvents() {\n if (options.closeOnHover) {\n $toastElement.hover(stickAround, delayedHideToast);\n }\n\n if (!options.onclick && options.tapToDismiss) {\n $toastElement.click(hideToast);\n }\n\n if (options.closeButton && $closeElement) {\n $closeElement.click(function (event) {\n if (event.stopPropagation) {\n event.stopPropagation();\n } else if (event.cancelBubble !== undefined && event.cancelBubble !== true) {\n event.cancelBubble = true;\n }\n\n if (options.onCloseClick) {\n options.onCloseClick(event);\n }\n\n hideToast(true);\n });\n }\n\n if (options.onclick) {\n $toastElement.click(function (event) {\n options.onclick(event);\n hideToast();\n });\n }\n }\n\n function displayToast() {\n $toastElement.hide();\n\n $toastElement[options.showMethod](\n {duration: options.showDuration, easing: options.showEasing, complete: options.onShown}\n );\n\n if (options.timeOut > 0) {\n intervalId = setTimeout(hideToast, options.timeOut);\n progressBar.maxHideTime = parseFloat(options.timeOut);\n progressBar.hideEta = new Date().getTime() + progressBar.maxHideTime;\n if (options.progressBar) {\n progressBar.intervalId = setInterval(updateProgress, 10);\n }\n }\n }\n\n function setIcon() {\n if (map.iconClass) {\n $toastElement.addClass(options.toastClass).addClass(iconClass);\n }\n }\n\n function setSequence() {\n if (options.newestOnTop) {\n $container.prepend($toastElement);\n } else {\n $container.append($toastElement);\n }\n }\n\n function setTitle() {\n if (map.title) {\n var suffix = map.title;\n if (options.escapeHtml) {\n suffix = escapeHtml(map.title);\n }\n $titleElement.append(suffix).addClass(options.titleClass);\n $toastElement.append($titleElement);\n }\n }\n\n function setMessage() {\n if (map.message) {\n var suffix = map.message;\n if (options.escapeHtml) {\n suffix = escapeHtml(map.message);\n }\n $messageElement.append(suffix).addClass(options.messageClass);\n $toastElement.append($messageElement);\n }\n }\n\n function setCloseButton() {\n if (options.closeButton) {\n $closeElement.addClass(options.closeClass).attr('role', 'button');\n $toastElement.prepend($closeElement);\n }\n }\n\n function setProgressBar() {\n if (options.progressBar) {\n $progressElement.addClass(options.progressClass);\n $toastElement.prepend($progressElement);\n }\n }\n\n function setRTL() {\n if (options.rtl) {\n $toastElement.addClass('rtl');\n }\n }\n\n function shouldExit(options, map) {\n if (options.preventDuplicates) {\n if (map.message === previousToast) {\n return true;\n } else {\n previousToast = map.message;\n }\n }\n return false;\n }\n\n function hideToast(override) {\n var method = override && options.closeMethod !== false ? options.closeMethod : options.hideMethod;\n var duration = override && options.closeDuration !== false ?\n options.closeDuration : options.hideDuration;\n var easing = override && options.closeEasing !== false ? options.closeEasing : options.hideEasing;\n if ($(':focus', $toastElement).length && !override) {\n return;\n }\n clearTimeout(progressBar.intervalId);\n return $toastElement[method]({\n duration: duration,\n easing: easing,\n complete: function () {\n removeToast($toastElement);\n clearTimeout(intervalId);\n if (options.onHidden && response.state !== 'hidden') {\n options.onHidden();\n }\n response.state = 'hidden';\n response.endTime = new Date();\n publish(response);\n }\n });\n }\n\n function delayedHideToast() {\n if (options.timeOut > 0 || options.extendedTimeOut > 0) {\n intervalId = setTimeout(hideToast, options.extendedTimeOut);\n progressBar.maxHideTime = parseFloat(options.extendedTimeOut);\n progressBar.hideEta = new Date().getTime() + progressBar.maxHideTime;\n }\n }\n\n function stickAround() {\n clearTimeout(intervalId);\n progressBar.hideEta = 0;\n $toastElement.stop(true, true)[options.showMethod](\n {duration: options.showDuration, easing: options.showEasing}\n );\n }\n\n function updateProgress() {\n var percentage = ((progressBar.hideEta - (new Date().getTime())) / progressBar.maxHideTime) * 100;\n $progressElement.width(percentage + '%');\n }\n }\n\n function getOptions() {\n return $.extend({}, getDefaults(), toastr.options);\n }\n\n function removeToast($toastElement) {\n if (!$container) { $container = getContainer(); }\n if ($toastElement.is(':visible')) {\n return;\n }\n $toastElement.remove();\n $toastElement = null;\n if ($container.children().length === 0) {\n $container.remove();\n previousToast = undefined;\n }\n }\n\n })();\n });\n}(typeof define === 'function' && define.amd ? define : function (deps, factory) {\n if (typeof module !== 'undefined' && module.exports) { //Node\n module.exports = factory(require('jquery'));\n } else {\n window.toastr = factory(window.jQuery);\n }\n}));\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _on = _interopRequireDefault(require(\"./on\"));\n\nexports.on = _on.default;\n\nvar _off = _interopRequireDefault(require(\"./off\"));\n\nexports.off = _off.default;\n\nvar _filter = _interopRequireDefault(require(\"./filter\"));\n\nexports.filter = _filter.default;\n\nvar _listen = _interopRequireDefault(require(\"./listen\"));\n\nexports.listen = _listen.default;\nvar _default = {\n on: _on.default,\n off: _off.default,\n filter: _filter.default,\n listen: _listen.default\n};\nexports.default = _default;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _createChainableTypeChecker = require('./utils/createChainableTypeChecker');\n\nvar _createChainableTypeChecker2 = _interopRequireDefault(_createChainableTypeChecker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = typeof propValue === 'undefined' ? 'undefined' : _typeof(propValue);\n\n if (_react2.default.isValidElement(propValue)) {\n return new Error('Invalid ' + location + ' `' + propFullName + '` of type ReactElement ' + ('supplied to `' + componentName + '`, expected a ReactComponent or a ') + 'DOMElement. You can usually obtain a ReactComponent or DOMElement ' + 'from a ReactElement by attaching a ref to it.');\n }\n\n if ((propType !== 'object' || typeof propValue.render !== 'function') && propValue.nodeType !== 1) {\n return new Error('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected a ReactComponent or a ') + 'DOMElement.');\n }\n\n return null;\n}\n\nexports.default = (0, _createChainableTypeChecker2.default)(validate);\nmodule.exports = exports['default'];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = camelize;\nvar rHyphen = /-(.)/g;\n\nfunction camelize(string) {\n return string.replace(rHyphen, function (_, chr) {\n return chr.toUpperCase();\n });\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _class = _interopRequireDefault(require(\"dom-helpers/class\"));\n\nvar _style = _interopRequireDefault(require(\"dom-helpers/style\"));\n\nvar _scrollbarSize = _interopRequireDefault(require(\"dom-helpers/util/scrollbarSize\"));\n\nvar _isOverflowing = _interopRequireDefault(require(\"./utils/isOverflowing\"));\n\nvar _manageAriaHidden = require(\"./utils/manageAriaHidden\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction findIndexOf(arr, cb) {\n var idx = -1;\n arr.some(function (d, i) {\n if (cb(d, i)) {\n idx = i;\n return true;\n }\n });\n return idx;\n}\n/**\n * Proper state managment for containers and the modals in those containers.\n *\n * @internal Used by the Modal to ensure proper styling of containers.\n */\n\n\nvar ModalManager =\n/*#__PURE__*/\nfunction () {\n function ModalManager(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$hideSiblingNodes = _ref.hideSiblingNodes,\n hideSiblingNodes = _ref$hideSiblingNodes === void 0 ? true : _ref$hideSiblingNodes,\n _ref$handleContainerO = _ref.handleContainerOverflow,\n handleContainerOverflow = _ref$handleContainerO === void 0 ? true : _ref$handleContainerO;\n\n this.hideSiblingNodes = hideSiblingNodes;\n this.handleContainerOverflow = handleContainerOverflow;\n this.modals = [];\n this.containers = [];\n this.data = [];\n this.scrollbarSize = (0, _scrollbarSize.default)();\n }\n\n var _proto = ModalManager.prototype;\n\n _proto.isContainerOverflowing = function isContainerOverflowing(modal) {\n var data = this.data[this.containerIndexFromModal(modal)];\n return data && data.overflowing;\n };\n\n _proto.containerIndexFromModal = function containerIndexFromModal(modal) {\n return findIndexOf(this.data, function (d) {\n return d.modals.indexOf(modal) !== -1;\n });\n };\n\n _proto.setContainerStyle = function setContainerStyle(containerState, container) {\n var style = {\n overflow: 'hidden' // we are only interested in the actual `style` here\n // becasue we will override it\n\n };\n containerState.style = {\n overflow: container.style.overflow,\n paddingRight: container.style.paddingRight\n };\n\n if (containerState.overflowing) {\n // use computed style, here to get the real padding\n // to add our scrollbar width\n style.paddingRight = parseInt((0, _style.default)(container, 'paddingRight') || 0, 10) + this.scrollbarSize + \"px\";\n }\n\n (0, _style.default)(container, style);\n };\n\n _proto.removeContainerStyle = function removeContainerStyle(containerState, container) {\n var style = containerState.style;\n Object.keys(style).forEach(function (key) {\n container.style[key] = style[key];\n });\n };\n\n _proto.add = function add(modal, container, className) {\n var modalIdx = this.modals.indexOf(modal);\n var containerIdx = this.containers.indexOf(container);\n\n if (modalIdx !== -1) {\n return modalIdx;\n }\n\n modalIdx = this.modals.length;\n this.modals.push(modal);\n\n if (this.hideSiblingNodes) {\n (0, _manageAriaHidden.hideSiblings)(container, modal);\n }\n\n if (containerIdx !== -1) {\n this.data[containerIdx].modals.push(modal);\n return modalIdx;\n }\n\n var data = {\n modals: [modal],\n //right now only the first modal of a container will have its classes applied\n classes: className ? className.split(/\\s+/) : [],\n overflowing: (0, _isOverflowing.default)(container)\n };\n\n if (this.handleContainerOverflow) {\n this.setContainerStyle(data, container);\n }\n\n data.classes.forEach(_class.default.addClass.bind(null, container));\n this.containers.push(container);\n this.data.push(data);\n return modalIdx;\n };\n\n _proto.remove = function remove(modal) {\n var modalIdx = this.modals.indexOf(modal);\n\n if (modalIdx === -1) {\n return;\n }\n\n var containerIdx = this.containerIndexFromModal(modal);\n var data = this.data[containerIdx];\n var container = this.containers[containerIdx];\n data.modals.splice(data.modals.indexOf(modal), 1);\n this.modals.splice(modalIdx, 1); // if that was the last modal in a container,\n // clean up the container\n\n if (data.modals.length === 0) {\n data.classes.forEach(_class.default.removeClass.bind(null, container));\n\n if (this.handleContainerOverflow) {\n this.removeContainerStyle(data, container);\n }\n\n if (this.hideSiblingNodes) {\n (0, _manageAriaHidden.showSiblings)(container, modal);\n }\n\n this.containers.splice(containerIdx, 1);\n this.data.splice(containerIdx, 1);\n } else if (this.hideSiblingNodes) {\n //otherwise make sure the next top modal is visible to a SR\n var _data$modals = data.modals[data.modals.length - 1],\n backdrop = _data$modals.backdrop,\n dialog = _data$modals.dialog;\n (0, _manageAriaHidden.ariaHidden)(false, dialog);\n (0, _manageAriaHidden.ariaHidden)(false, backdrop);\n }\n };\n\n _proto.isTopModal = function isTopModal(modal) {\n return !!this.modals.length && this.modals[this.modals.length - 1] === modal;\n };\n\n return ModalManager;\n}();\n\nvar _default = ModalManager;\nexports.default = _default;\nmodule.exports = exports.default;","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inDOM = _interopRequireDefault(require(\"../util/inDOM\"));\n\nvar on = function on() {};\n\nif (_inDOM.default) {\n on = function () {\n if (document.addEventListener) return function (node, eventName, handler, capture) {\n return node.addEventListener(eventName, handler, capture || false);\n };else if (document.attachEvent) return function (node, eventName, handler) {\n return node.attachEvent('on' + eventName, function (e) {\n e = e || window.event;\n e.target = e.target || e.srcElement;\n e.currentTarget = node;\n handler.call(node, e);\n });\n };\n }();\n}\n\nvar _default = on;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inDOM = _interopRequireDefault(require(\"../util/inDOM\"));\n\nvar off = function off() {};\n\nif (_inDOM.default) {\n off = function () {\n if (document.addEventListener) return function (node, eventName, handler, capture) {\n return node.removeEventListener(eventName, handler, capture || false);\n };else if (document.attachEvent) return function (node, eventName, handler) {\n return node.detachEvent('on' + eventName, handler);\n };\n }();\n}\n\nvar _default = off;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inDOM = _interopRequireDefault(require(\"../util/inDOM\"));\n\nvar _default = function () {\n // HTML DOM and SVG DOM may have different support levels,\n // so we need to check on context instead of a document root element.\n return _inDOM.default ? function (context, node) {\n if (context.contains) {\n return context.contains(node);\n } else if (context.compareDocumentPosition) {\n return context === node || !!(context.compareDocumentPosition(node) & 16);\n } else {\n return fallback(context, node);\n }\n } : fallback;\n}();\n\nexports.default = _default;\n\nfunction fallback(context, node) {\n if (node) do {\n if (node === context) return true;\n } while (node = node.parentNode);\n return false;\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inDOM = _interopRequireDefault(require(\"../util/inDOM\"));\n\nvar _on = _interopRequireDefault(require(\"./on\"));\n\nvar _off = _interopRequireDefault(require(\"./off\"));\n\nvar listen = function listen() {};\n\nif (_inDOM.default) {\n listen = function listen(node, eventName, handler, capture) {\n (0, _on.default)(node, eventName, handler, capture);\n return function () {\n (0, _off.default)(node, eventName, handler, capture);\n };\n };\n}\n\nvar _default = listen;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = createChainableTypeChecker;\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n// Mostly taken from ReactPropTypes.\n\nfunction createChainableTypeChecker(validate) {\n function checkType(isRequired, props, propName, componentName, location, propFullName) {\n var componentNameSafe = componentName || '<<anonymous>>';\n var propFullNameSafe = propFullName || propName;\n\n if (props[propName] == null) {\n if (isRequired) {\n return new Error('Required ' + location + ' `' + propFullNameSafe + '` was not specified ' + ('in `' + componentNameSafe + '`.'));\n }\n\n return null;\n }\n\n for (var _len = arguments.length, args = Array(_len > 6 ? _len - 6 : 0), _key = 6; _key < _len; _key++) {\n args[_key - 6] = arguments[_key];\n }\n\n return validate.apply(undefined, [props, propName, componentNameSafe, location, propFullNameSafe].concat(args));\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n}\nmodule.exports = exports['default'];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = hasClass;\n\nfunction hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);else return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = camelizeStyleName;\n\nvar _camelize = _interopRequireDefault(require(\"./camelize\"));\n\n/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/camelizeStyleName.js\n */\nvar msPattern = /^-ms-/;\n\nfunction camelizeStyleName(string) {\n return (0, _camelize.default)(string.replace(msPattern, 'ms-'));\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = exports.animationEnd = exports.animationDelay = exports.animationTiming = exports.animationDuration = exports.animationName = exports.transitionEnd = exports.transitionDuration = exports.transitionDelay = exports.transitionTiming = exports.transitionProperty = exports.transform = void 0;\n\nvar _inDOM = _interopRequireDefault(require(\"../util/inDOM\"));\n\nvar transform = 'transform';\nexports.transform = transform;\nvar prefix, transitionEnd, animationEnd;\nexports.animationEnd = animationEnd;\nexports.transitionEnd = transitionEnd;\nvar transitionProperty, transitionDuration, transitionTiming, transitionDelay;\nexports.transitionDelay = transitionDelay;\nexports.transitionTiming = transitionTiming;\nexports.transitionDuration = transitionDuration;\nexports.transitionProperty = transitionProperty;\nvar animationName, animationDuration, animationTiming, animationDelay;\nexports.animationDelay = animationDelay;\nexports.animationTiming = animationTiming;\nexports.animationDuration = animationDuration;\nexports.animationName = animationName;\n\nif (_inDOM.default) {\n var _getTransitionPropert = getTransitionProperties();\n\n prefix = _getTransitionPropert.prefix;\n exports.transitionEnd = transitionEnd = _getTransitionPropert.transitionEnd;\n exports.animationEnd = animationEnd = _getTransitionPropert.animationEnd;\n exports.transform = transform = prefix + \"-\" + transform;\n exports.transitionProperty = transitionProperty = prefix + \"-transition-property\";\n exports.transitionDuration = transitionDuration = prefix + \"-transition-duration\";\n exports.transitionDelay = transitionDelay = prefix + \"-transition-delay\";\n exports.transitionTiming = transitionTiming = prefix + \"-transition-timing-function\";\n exports.animationName = animationName = prefix + \"-animation-name\";\n exports.animationDuration = animationDuration = prefix + \"-animation-duration\";\n exports.animationTiming = animationTiming = prefix + \"-animation-delay\";\n exports.animationDelay = animationDelay = prefix + \"-animation-timing-function\";\n}\n\nvar _default = {\n transform: transform,\n end: transitionEnd,\n property: transitionProperty,\n timing: transitionTiming,\n delay: transitionDelay,\n duration: transitionDuration\n};\nexports.default = _default;\n\nfunction getTransitionProperties() {\n var style = document.createElement('div').style;\n var vendorMap = {\n O: function O(e) {\n return \"o\" + e.toLowerCase();\n },\n Moz: function Moz(e) {\n return e.toLowerCase();\n },\n Webkit: function Webkit(e) {\n return \"webkit\" + e;\n },\n ms: function ms(e) {\n return \"MS\" + e;\n }\n };\n var vendors = Object.keys(vendorMap);\n var transitionEnd, animationEnd;\n var prefix = '';\n\n for (var i = 0; i < vendors.length; i++) {\n var vendor = vendors[i];\n\n if (vendor + \"TransitionProperty\" in style) {\n prefix = \"-\" + vendor.toLowerCase();\n transitionEnd = vendorMap[vendor]('TransitionEnd');\n animationEnd = vendorMap[vendor]('AnimationEnd');\n break;\n }\n }\n\n if (!transitionEnd && 'transitionProperty' in style) transitionEnd = 'transitionend';\n if (!animationEnd && 'animationName' in style) animationEnd = 'animationend';\n style = null;\n return {\n animationEnd: animationEnd,\n transitionEnd: transitionEnd,\n prefix: prefix\n };\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.default = getContainer;\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction getContainer(container, defaultContainer) {\n if (container == null) return defaultContainer;\n container = typeof container === 'function' ? container() : container;\n return _reactDom.default.findDOMNode(container) || null;\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = forwardRef;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction forwardRef(renderFn, _temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n propTypes = _ref.propTypes,\n defaultProps = _ref.defaultProps,\n _ref$allowFallback = _ref.allowFallback,\n allowFallback = _ref$allowFallback === void 0 ? false : _ref$allowFallback,\n _ref$displayName = _ref.displayName,\n displayName = _ref$displayName === void 0 ? renderFn.name || renderFn.displayName : _ref$displayName;\n\n var render = function render(props, ref) {\n return renderFn(props, ref);\n };\n\n return Object.assign(_react.default.forwardRef || !allowFallback ? _react.default.forwardRef(render) : function (props) {\n return render(props, null);\n }, {\n displayName: displayName,\n propTypes: propTypes,\n defaultProps: defaultProps\n });\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _activeElement = _interopRequireDefault(require(\"dom-helpers/activeElement\"));\n\nvar _contains = _interopRequireDefault(require(\"dom-helpers/query/contains\"));\n\nvar _inDOM = _interopRequireDefault(require(\"dom-helpers/util/inDOM\"));\n\nvar _listen = _interopRequireDefault(require(\"dom-helpers/events/listen\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _componentOrElement = _interopRequireDefault(require(\"prop-types-extra/lib/componentOrElement\"));\n\nvar _elementType = _interopRequireDefault(require(\"prop-types-extra/lib/elementType\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _ModalManager = _interopRequireDefault(require(\"./ModalManager\"));\n\nvar _Portal = _interopRequireDefault(require(\"./Portal\"));\n\nvar _getContainer = _interopRequireDefault(require(\"./utils/getContainer\"));\n\nvar _ownerDocument = _interopRequireDefault(require(\"./utils/ownerDocument\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nvar modalManager = new _ModalManager.default();\n\nfunction omitProps(props, propTypes) {\n var keys = Object.keys(props);\n var newProps = {};\n keys.map(function (prop) {\n if (!Object.prototype.hasOwnProperty.call(propTypes, prop)) {\n newProps[prop] = props[prop];\n }\n });\n return newProps;\n}\n/**\n * Love them or hate them, `<Modal />` provides a solid foundation for creating dialogs, lightboxes, or whatever else.\n * The Modal component renders its `children` node in front of a backdrop component.\n *\n * The Modal offers a few helpful features over using just a `<Portal/>` component and some styles:\n *\n * - Manages dialog stacking when one-at-a-time just isn't enough.\n * - Creates a backdrop, for disabling interaction below the modal.\n * - It properly manages focus; moving to the modal content, and keeping it there until the modal is closed.\n * - It disables scrolling of the page content while open.\n * - Adds the appropriate ARIA roles are automatically.\n * - Easily pluggable animations via a `<Transition/>` component.\n *\n * Note that, in the same way the backdrop element prevents users from clicking or interacting\n * with the page content underneath the Modal, Screen readers also need to be signaled to not to\n * interact with page content while the Modal is open. To do this, we use a common technique of applying\n * the `aria-hidden='true'` attribute to the non-Modal elements in the Modal `container`. This means that for\n * a Modal to be truly modal, it should have a `container` that is _outside_ your app's\n * React hierarchy (such as the default: document.body).\n */\n\n\nvar Modal =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Modal, _React$Component);\n\n function Modal() {\n var _this;\n\n for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n _args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(_args)) || this;\n _this.state = {\n exited: !_this.props.show\n };\n\n _this.onPortalRendered = function () {\n if (_this.props.onShow) {\n _this.props.onShow();\n } // autofocus after onShow, to not trigger a focus event for previous\n // modals before this one is shown.\n\n\n _this.autoFocus();\n };\n\n _this.onShow = function () {\n var doc = (0, _ownerDocument.default)(_assertThisInitialized(_assertThisInitialized(_this)));\n var container = (0, _getContainer.default)(_this.props.container, doc.body);\n\n _this.props.manager.add(_assertThisInitialized(_assertThisInitialized(_this)), container, _this.props.containerClassName);\n\n _this.removeKeydownListener = (0, _listen.default)(doc, 'keydown', _this.handleDocumentKeyDown);\n _this.removeFocusListener = (0, _listen.default)(doc, 'focus', // the timeout is necessary b/c this will run before the new modal is mounted\n // and so steals focus from it\n function () {\n return setTimeout(_this.enforceFocus);\n }, true);\n };\n\n _this.onHide = function () {\n _this.props.manager.remove(_assertThisInitialized(_assertThisInitialized(_this)));\n\n _this.removeKeydownListener();\n\n _this.removeFocusListener();\n\n if (_this.props.restoreFocus) {\n _this.restoreLastFocus();\n }\n };\n\n _this.setDialogRef = function (ref) {\n _this.dialog = ref;\n };\n\n _this.setBackdropRef = function (ref) {\n _this.backdrop = ref && _reactDom.default.findDOMNode(ref);\n };\n\n _this.handleHidden = function () {\n _this.setState({\n exited: true\n });\n\n _this.onHide();\n\n if (_this.props.onExited) {\n var _this$props;\n\n (_this$props = _this.props).onExited.apply(_this$props, arguments);\n }\n };\n\n _this.handleBackdropClick = function (e) {\n if (e.target !== e.currentTarget) {\n return;\n }\n\n if (_this.props.onBackdropClick) {\n _this.props.onBackdropClick(e);\n }\n\n if (_this.props.backdrop === true) {\n _this.props.onHide();\n }\n };\n\n _this.handleDocumentKeyDown = function (e) {\n if (_this.props.keyboard && e.keyCode === 27 && _this.isTopModal()) {\n if (_this.props.onEscapeKeyDown) {\n _this.props.onEscapeKeyDown(e);\n }\n\n _this.props.onHide();\n }\n };\n\n _this.enforceFocus = function () {\n if (!_this.props.enforceFocus || !_this._isMounted || !_this.isTopModal()) {\n return;\n }\n\n var currentActiveElement = (0, _activeElement.default)((0, _ownerDocument.default)(_assertThisInitialized(_assertThisInitialized(_this))));\n\n if (_this.dialog && !(0, _contains.default)(_this.dialog, currentActiveElement)) {\n _this.dialog.focus();\n }\n };\n\n _this.renderBackdrop = function () {\n var _this$props2 = _this.props,\n renderBackdrop = _this$props2.renderBackdrop,\n Transition = _this$props2.backdropTransition;\n var backdrop = renderBackdrop({\n ref: _this.setBackdropRef,\n onClick: _this.handleBackdropClick\n });\n\n if (Transition) {\n backdrop = _react.default.createElement(Transition, {\n appear: true,\n in: _this.props.show\n }, backdrop);\n }\n\n return backdrop;\n };\n\n return _this;\n }\n\n Modal.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps) {\n if (nextProps.show) {\n return {\n exited: false\n };\n } else if (!nextProps.transition) {\n // Otherwise let handleHidden take care of marking exited.\n return {\n exited: true\n };\n }\n\n return null;\n };\n\n var _proto = Modal.prototype;\n\n _proto.getSnapshotBeforeUpdate = function getSnapshotBeforeUpdate(prevProps) {\n if (_inDOM.default && !prevProps.show && this.props.show) {\n this.lastFocus = (0, _activeElement.default)();\n }\n\n return null;\n };\n\n _proto.componentDidMount = function componentDidMount() {\n this._isMounted = true;\n\n if (this.props.show) {\n this.onShow();\n }\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var transition = this.props.transition;\n\n if (prevProps.show && !this.props.show && !transition) {\n // Otherwise handleHidden will call this.\n this.onHide();\n } else if (!prevProps.show && this.props.show) {\n this.onShow();\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n var _this$props3 = this.props,\n show = _this$props3.show,\n transition = _this$props3.transition;\n this._isMounted = false;\n\n if (show || transition && !this.state.exited) {\n this.onHide();\n }\n };\n\n _proto.autoFocus = function autoFocus() {\n if (!this.props.autoFocus) return;\n var currentActiveElement = (0, _activeElement.default)((0, _ownerDocument.default)(this));\n\n if (this.dialog && !(0, _contains.default)(this.dialog, currentActiveElement)) {\n this.lastFocus = currentActiveElement;\n this.dialog.focus();\n }\n };\n\n _proto.restoreLastFocus = function restoreLastFocus() {\n // Support: <=IE11 doesn't support `focus()` on svg elements (RB: #917)\n if (this.lastFocus && this.lastFocus.focus) {\n this.lastFocus.focus();\n this.lastFocus = null;\n }\n };\n\n _proto.isTopModal = function isTopModal() {\n return this.props.manager.isTopModal(this);\n };\n\n _proto.render = function render() {\n var _this$props4 = this.props,\n show = _this$props4.show,\n container = _this$props4.container,\n children = _this$props4.children,\n renderDialog = _this$props4.renderDialog,\n _this$props4$role = _this$props4.role,\n role = _this$props4$role === void 0 ? 'dialog' : _this$props4$role,\n Transition = _this$props4.transition,\n backdrop = _this$props4.backdrop,\n className = _this$props4.className,\n style = _this$props4.style,\n onExit = _this$props4.onExit,\n onExiting = _this$props4.onExiting,\n onEnter = _this$props4.onEnter,\n onEntering = _this$props4.onEntering,\n onEntered = _this$props4.onEntered,\n props = _objectWithoutPropertiesLoose(_this$props4, [\"show\", \"container\", \"children\", \"renderDialog\", \"role\", \"transition\", \"backdrop\", \"className\", \"style\", \"onExit\", \"onExiting\", \"onEnter\", \"onEntering\", \"onEntered\"]);\n\n if (!(show || Transition && !this.state.exited)) {\n return null;\n }\n\n var dialogProps = _extends({\n role: role,\n ref: this.setDialogRef,\n // apparently only works on the dialog role element\n 'aria-modal': role === 'dialog' ? true : undefined\n }, omitProps(props, Modal.propTypes), {\n style: style,\n className: className,\n tabIndex: '-1'\n });\n\n var dialog = renderDialog ? renderDialog(dialogProps) : _react.default.createElement(\"div\", dialogProps, _react.default.cloneElement(children, {\n role: 'document'\n }));\n\n if (Transition) {\n dialog = _react.default.createElement(Transition, {\n appear: true,\n unmountOnExit: true,\n in: show,\n onExit: onExit,\n onExiting: onExiting,\n onExited: this.handleHidden,\n onEnter: onEnter,\n onEntering: onEntering,\n onEntered: onEntered\n }, dialog);\n }\n\n return _react.default.createElement(_Portal.default, {\n container: container,\n onRendered: this.onPortalRendered\n }, _react.default.createElement(_react.default.Fragment, null, backdrop && this.renderBackdrop(), dialog));\n };\n\n return Modal;\n}(_react.default.Component);\n\nModal.propTypes = {\n /**\n * Set the visibility of the Modal\n */\n show: _propTypes.default.bool,\n\n /**\n * A Node, Component instance, or function that returns either. The Modal is appended to it's container element.\n *\n * For the sake of assistive technologies, the container should usually be the document body, so that the rest of the\n * page content can be placed behind a virtual backdrop as well as a visual one.\n */\n container: _propTypes.default.oneOfType([_componentOrElement.default, _propTypes.default.func]),\n\n /**\n * A callback fired when the Modal is opening.\n */\n onShow: _propTypes.default.func,\n\n /**\n * A callback fired when either the backdrop is clicked, or the escape key is pressed.\n *\n * The `onHide` callback only signals intent from the Modal,\n * you must actually set the `show` prop to `false` for the Modal to close.\n */\n onHide: _propTypes.default.func,\n\n /**\n * Include a backdrop component.\n */\n backdrop: _propTypes.default.oneOfType([_propTypes.default.bool, _propTypes.default.oneOf(['static'])]),\n\n /**\n * A function that returns the dialog component. Useful for custom\n * rendering. **Note:** the component should make sure to apply the provided ref.\n *\n * ```js\n * renderDialog={props => <MyDialog {...props} />}\n * ```\n */\n renderDialog: _propTypes.default.func,\n\n /**\n * A function that returns a backdrop component. Useful for custom\n * backdrop rendering.\n *\n * ```js\n * renderBackdrop={props => <MyBackdrop {...props} />}\n * ```\n */\n renderBackdrop: _propTypes.default.func,\n\n /**\n * A callback fired when the escape key, if specified in `keyboard`, is pressed.\n */\n onEscapeKeyDown: _propTypes.default.func,\n\n /**\n * A callback fired when the backdrop, if specified, is clicked.\n */\n onBackdropClick: _propTypes.default.func,\n\n /**\n * A css class or set of classes applied to the modal container when the modal is open,\n * and removed when it is closed.\n */\n containerClassName: _propTypes.default.string,\n\n /**\n * Close the modal when escape key is pressed\n */\n keyboard: _propTypes.default.bool,\n\n /**\n * A `react-transition-group@2.0.0` `<Transition/>` component used\n * to control animations for the dialog component.\n */\n transition: _elementType.default,\n\n /**\n * A `react-transition-group@2.0.0` `<Transition/>` component used\n * to control animations for the backdrop components.\n */\n backdropTransition: _elementType.default,\n\n /**\n * When `true` The modal will automatically shift focus to itself when it opens, and\n * replace it to the last focused element when it closes. This also\n * works correctly with any Modal children that have the `autoFocus` prop.\n *\n * Generally this should never be set to `false` as it makes the Modal less\n * accessible to assistive technologies, like screen readers.\n */\n autoFocus: _propTypes.default.bool,\n\n /**\n * When `true` The modal will prevent focus from leaving the Modal while open.\n *\n * Generally this should never be set to `false` as it makes the Modal less\n * accessible to assistive technologies, like screen readers.\n */\n enforceFocus: _propTypes.default.bool,\n\n /**\n * When `true` The modal will restore focus to previously focused element once\n * modal is hidden\n */\n restoreFocus: _propTypes.default.bool,\n\n /**\n * Callback fired before the Modal transitions in\n */\n onEnter: _propTypes.default.func,\n\n /**\n * Callback fired as the Modal begins to transition in\n */\n onEntering: _propTypes.default.func,\n\n /**\n * Callback fired after the Modal finishes transitioning in\n */\n onEntered: _propTypes.default.func,\n\n /**\n * Callback fired right before the Modal transitions out\n */\n onExit: _propTypes.default.func,\n\n /**\n * Callback fired as the Modal begins to transition out\n */\n onExiting: _propTypes.default.func,\n\n /**\n * Callback fired after the Modal finishes transitioning out\n */\n onExited: _propTypes.default.func,\n\n /**\n * A ModalManager instance used to track and manage the state of open\n * Modals. Useful when customizing how modals interact within a container\n */\n manager: _propTypes.default.object.isRequired\n};\nModal.defaultProps = {\n show: false,\n role: 'dialog',\n backdrop: true,\n keyboard: true,\n autoFocus: true,\n enforceFocus: true,\n restoreFocus: true,\n onHide: function onHide() {},\n manager: modalManager,\n renderBackdrop: function renderBackdrop(props) {\n return _react.default.createElement(\"div\", props);\n }\n};\nModal.Manager = _ModalManager.default;\nvar _default = Modal;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _properties = _interopRequireDefault(require(\"./properties\"));\n\nvar _style = _interopRequireDefault(require(\"../style\"));\n\nfunction onEnd(node, handler, duration) {\n var fakeEvent = {\n target: node,\n currentTarget: node\n },\n backup;\n if (!_properties.default.end) duration = 0;else if (duration == null) duration = parseDuration(node) || 0;\n\n if (_properties.default.end) {\n node.addEventListener(_properties.default.end, done, false);\n backup = setTimeout(function () {\n return done(fakeEvent);\n }, (duration || 100) * 1.5);\n } else setTimeout(done.bind(null, fakeEvent), 0);\n\n function done(event) {\n if (event.target !== event.currentTarget) return;\n clearTimeout(backup);\n event.target.removeEventListener(_properties.default.end, done);\n handler.call(this);\n }\n}\n\nonEnd._parseDuration = parseDuration;\nvar _default = onEnd;\nexports.default = _default;\n\nfunction parseDuration(node) {\n var str = (0, _style.default)(node, _properties.default.duration),\n mult = str.indexOf('ms') === -1 ? 1000 : 1;\n return parseFloat(str) * mult;\n}\n\nmodule.exports = exports[\"default\"];","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = options && options.delimiter || '/'\n var res\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n continue\n }\n\n var next = str[index]\n var prefix = res[2]\n var name = res[3]\n var capture = res[4]\n var group = res[5]\n var modifier = res[6]\n var asterisk = res[7]\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n }\n\n var partial = prefix != null && next != null && next !== prefix\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var delimiter = res[2] || defaultDelimiter\n var pattern = capture || group\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n })\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index)\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path)\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options))\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$')\n }\n }\n\n return function (obj, opts) {\n var path = ''\n var data = obj || {}\n var options = opts || {}\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n\n continue\n }\n\n var value = data[token.name]\n var segment\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j])\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n })\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n var strict = options.strict\n var end = options.end !== false\n var route = ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var prefix = escapeString(token.prefix)\n var capture = '(?:' + token.pattern + ')'\n\n keys.push(token)\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*'\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?'\n } else {\n capture = prefix + '(' + capture + ')?'\n }\n } else {\n capture = prefix + '(' + capture + ')'\n }\n\n route += capture\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/')\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n }\n\n if (end) {\n route += '$'\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n","/** @license React v16.8.6\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var k=require(\"object-assign\"),n=\"function\"===typeof Symbol&&Symbol.for,p=n?Symbol.for(\"react.element\"):60103,q=n?Symbol.for(\"react.portal\"):60106,r=n?Symbol.for(\"react.fragment\"):60107,t=n?Symbol.for(\"react.strict_mode\"):60108,u=n?Symbol.for(\"react.profiler\"):60114,v=n?Symbol.for(\"react.provider\"):60109,w=n?Symbol.for(\"react.context\"):60110,x=n?Symbol.for(\"react.concurrent_mode\"):60111,y=n?Symbol.for(\"react.forward_ref\"):60112,z=n?Symbol.for(\"react.suspense\"):60113,aa=n?Symbol.for(\"react.memo\"):\n60115,ba=n?Symbol.for(\"react.lazy\"):60116,A=\"function\"===typeof Symbol&&Symbol.iterator;function ca(a,b,d,c,e,g,h,f){if(!a){a=void 0;if(void 0===b)a=Error(\"Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.\");else{var l=[d,c,e,g,h,f],m=0;a=Error(b.replace(/%s/g,function(){return l[m++]}));a.name=\"Invariant Violation\"}a.framesToPop=1;throw a;}}\nfunction B(a){for(var b=arguments.length-1,d=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=0;c<b;c++)d+=\"&args[]=\"+encodeURIComponent(arguments[c+1]);ca(!1,\"Minified React error #\"+a+\"; visit %s for the full message or use the non-minified dev environment for full errors and additional helpful warnings. \",d)}var C={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},D={};\nfunction E(a,b,d){this.props=a;this.context=b;this.refs=D;this.updater=d||C}E.prototype.isReactComponent={};E.prototype.setState=function(a,b){\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a?B(\"85\"):void 0;this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,d){this.props=a;this.context=b;this.refs=D;this.updater=d||C}var H=G.prototype=new F;\nH.constructor=G;k(H,E.prototype);H.isPureReactComponent=!0;var I={current:null},J={current:null},K=Object.prototype.hasOwnProperty,L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,d){var c=void 0,e={},g=null,h=null;if(null!=b)for(c in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(g=\"\"+b.key),b)K.call(b,c)&&!L.hasOwnProperty(c)&&(e[c]=b[c]);var f=arguments.length-2;if(1===f)e.children=d;else if(1<f){for(var l=Array(f),m=0;m<f;m++)l[m]=arguments[m+2];e.children=l}if(a&&a.defaultProps)for(c in f=a.defaultProps,f)void 0===e[c]&&(e[c]=f[c]);return{$$typeof:p,type:a,key:g,ref:h,props:e,_owner:J.current}}\nfunction da(a,b){return{$$typeof:p,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function N(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===p}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+(\"\"+a).replace(/[=:]/g,function(a){return b[a]})}var O=/\\/+/g,P=[];function Q(a,b,d,c){if(P.length){var e=P.pop();e.result=a;e.keyPrefix=b;e.func=d;e.context=c;e.count=0;return e}return{result:a,keyPrefix:b,func:d,context:c,count:0}}\nfunction R(a){a.result=null;a.keyPrefix=null;a.func=null;a.context=null;a.count=0;10>P.length&&P.push(a)}\nfunction S(a,b,d,c){var e=typeof a;if(\"undefined\"===e||\"boolean\"===e)a=null;var g=!1;if(null===a)g=!0;else switch(e){case \"string\":case \"number\":g=!0;break;case \"object\":switch(a.$$typeof){case p:case q:g=!0}}if(g)return d(c,a,\"\"===b?\".\"+T(a,0):b),1;g=0;b=\"\"===b?\".\":b+\":\";if(Array.isArray(a))for(var h=0;h<a.length;h++){e=a[h];var f=b+T(e,h);g+=S(e,f,d,c)}else if(null===a||\"object\"!==typeof a?f=null:(f=A&&a[A]||a[\"@@iterator\"],f=\"function\"===typeof f?f:null),\"function\"===typeof f)for(a=f.call(a),h=\n0;!(e=a.next()).done;)e=e.value,f=b+T(e,h++),g+=S(e,f,d,c);else\"object\"===e&&(d=\"\"+a,B(\"31\",\"[object Object]\"===d?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":d,\"\"));return g}function U(a,b,d){return null==a?0:S(a,\"\",b,d)}function T(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(a.key):b.toString(36)}function ea(a,b){a.func.call(a.context,b,a.count++)}\nfunction fa(a,b,d){var c=a.result,e=a.keyPrefix;a=a.func.call(a.context,b,a.count++);Array.isArray(a)?V(a,c,d,function(a){return a}):null!=a&&(N(a)&&(a=da(a,e+(!a.key||b&&b.key===a.key?\"\":(\"\"+a.key).replace(O,\"$&/\")+\"/\")+d)),c.push(a))}function V(a,b,d,c,e){var g=\"\";null!=d&&(g=(\"\"+d).replace(O,\"$&/\")+\"/\");b=Q(b,g,c,e);U(a,fa,b);R(b)}function W(){var a=I.current;null===a?B(\"321\"):void 0;return a}\nvar X={Children:{map:function(a,b,d){if(null==a)return a;var c=[];V(a,c,null,b,d);return c},forEach:function(a,b,d){if(null==a)return a;b=Q(null,null,b,d);U(a,ea,b);R(b)},count:function(a){return U(a,function(){return null},null)},toArray:function(a){var b=[];V(a,b,null,function(a){return a});return b},only:function(a){N(a)?void 0:B(\"143\");return a}},createRef:function(){return{current:null}},Component:E,PureComponent:G,createContext:function(a,b){void 0===b&&(b=null);a={$$typeof:w,_calculateChangedBits:b,\n_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null};a.Provider={$$typeof:v,_context:a};return a.Consumer=a},forwardRef:function(a){return{$$typeof:y,render:a}},lazy:function(a){return{$$typeof:ba,_ctor:a,_status:-1,_result:null}},memo:function(a,b){return{$$typeof:aa,type:a,compare:void 0===b?null:b}},useCallback:function(a,b){return W().useCallback(a,b)},useContext:function(a,b){return W().useContext(a,b)},useEffect:function(a,b){return W().useEffect(a,b)},useImperativeHandle:function(a,\nb,d){return W().useImperativeHandle(a,b,d)},useDebugValue:function(){},useLayoutEffect:function(a,b){return W().useLayoutEffect(a,b)},useMemo:function(a,b){return W().useMemo(a,b)},useReducer:function(a,b,d){return W().useReducer(a,b,d)},useRef:function(a){return W().useRef(a)},useState:function(a){return W().useState(a)},Fragment:r,StrictMode:t,Suspense:z,createElement:M,cloneElement:function(a,b,d){null===a||void 0===a?B(\"267\",a):void 0;var c=void 0,e=k({},a.props),g=a.key,h=a.ref,f=a._owner;if(null!=\nb){void 0!==b.ref&&(h=b.ref,f=J.current);void 0!==b.key&&(g=\"\"+b.key);var l=void 0;a.type&&a.type.defaultProps&&(l=a.type.defaultProps);for(c in b)K.call(b,c)&&!L.hasOwnProperty(c)&&(e[c]=void 0===b[c]&&void 0!==l?l[c]:b[c])}c=arguments.length-2;if(1===c)e.children=d;else if(1<c){l=Array(c);for(var m=0;m<c;m++)l[m]=arguments[m+2];e.children=l}return{$$typeof:p,type:a.type,key:g,ref:h,props:e,_owner:f}},createFactory:function(a){var b=M.bind(null,a);b.type=a;return b},isValidElement:N,version:\"16.8.6\",\nunstable_ConcurrentMode:x,unstable_Profiler:u,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:{ReactCurrentDispatcher:I,ReactCurrentOwner:J,assign:k}},Y={default:X},Z=Y&&X||Y;module.exports=Z.default||Z;\n","/** @license React v16.8.6\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),n=require(\"object-assign\"),r=require(\"scheduler\");function ba(a,b,c,d,e,f,g,h){if(!a){a=void 0;if(void 0===b)a=Error(\"Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.\");else{var l=[c,d,e,f,g,h],k=0;a=Error(b.replace(/%s/g,function(){return l[k++]}));a.name=\"Invariant Violation\"}a.framesToPop=1;throw a;}}\nfunction x(a){for(var b=arguments.length-1,c=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,d=0;d<b;d++)c+=\"&args[]=\"+encodeURIComponent(arguments[d+1]);ba(!1,\"Minified React error #\"+a+\"; visit %s for the full message or use the non-minified dev environment for full errors and additional helpful warnings. \",c)}aa?void 0:x(\"227\");function ca(a,b,c,d,e,f,g,h,l){var k=Array.prototype.slice.call(arguments,3);try{b.apply(c,k)}catch(m){this.onError(m)}}\nvar da=!1,ea=null,fa=!1,ha=null,ia={onError:function(a){da=!0;ea=a}};function ja(a,b,c,d,e,f,g,h,l){da=!1;ea=null;ca.apply(ia,arguments)}function ka(a,b,c,d,e,f,g,h,l){ja.apply(this,arguments);if(da){if(da){var k=ea;da=!1;ea=null}else x(\"198\"),k=void 0;fa||(fa=!0,ha=k)}}var la=null,ma={};\nfunction na(){if(la)for(var a in ma){var b=ma[a],c=la.indexOf(a);-1<c?void 0:x(\"96\",a);if(!oa[c]){b.extractEvents?void 0:x(\"97\",a);oa[c]=b;c=b.eventTypes;for(var d in c){var e=void 0;var f=c[d],g=b,h=d;pa.hasOwnProperty(h)?x(\"99\",h):void 0;pa[h]=f;var l=f.phasedRegistrationNames;if(l){for(e in l)l.hasOwnProperty(e)&&qa(l[e],g,h);e=!0}else f.registrationName?(qa(f.registrationName,g,h),e=!0):e=!1;e?void 0:x(\"98\",d,a)}}}}\nfunction qa(a,b,c){ra[a]?x(\"100\",a):void 0;ra[a]=b;sa[a]=b.eventTypes[c].dependencies}var oa=[],pa={},ra={},sa={},ta=null,ua=null,va=null;function wa(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=va(c);ka(d,b,void 0,a);a.currentTarget=null}function xa(a,b){null==b?x(\"30\"):void 0;if(null==a)return b;if(Array.isArray(a)){if(Array.isArray(b))return a.push.apply(a,b),a;a.push(b);return a}return Array.isArray(b)?[a].concat(b):[a,b]}\nfunction ya(a,b,c){Array.isArray(a)?a.forEach(b,c):a&&b.call(c,a)}var za=null;function Aa(a){if(a){var b=a._dispatchListeners,c=a._dispatchInstances;if(Array.isArray(b))for(var d=0;d<b.length&&!a.isPropagationStopped();d++)wa(a,b[d],c[d]);else b&&wa(a,b,c);a._dispatchListeners=null;a._dispatchInstances=null;a.isPersistent()||a.constructor.release(a)}}\nvar Ba={injectEventPluginOrder:function(a){la?x(\"101\"):void 0;la=Array.prototype.slice.call(a);na()},injectEventPluginsByName:function(a){var b=!1,c;for(c in a)if(a.hasOwnProperty(c)){var d=a[c];ma.hasOwnProperty(c)&&ma[c]===d||(ma[c]?x(\"102\",c):void 0,ma[c]=d,b=!0)}b&&na()}};\nfunction Ca(a,b){var c=a.stateNode;if(!c)return null;var d=ta(c);if(!d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;c&&\"function\"!==typeof c?x(\"231\",b,typeof c):void 0;\nreturn c}function Da(a){null!==a&&(za=xa(za,a));a=za;za=null;if(a&&(ya(a,Aa),za?x(\"95\"):void 0,fa))throw a=ha,fa=!1,ha=null,a;}var Ea=Math.random().toString(36).slice(2),Fa=\"__reactInternalInstance$\"+Ea,Ga=\"__reactEventHandlers$\"+Ea;function Ha(a){if(a[Fa])return a[Fa];for(;!a[Fa];)if(a.parentNode)a=a.parentNode;else return null;a=a[Fa];return 5===a.tag||6===a.tag?a:null}function Ia(a){a=a[Fa];return!a||5!==a.tag&&6!==a.tag?null:a}\nfunction Ja(a){if(5===a.tag||6===a.tag)return a.stateNode;x(\"33\")}function Ka(a){return a[Ga]||null}function La(a){do a=a.return;while(a&&5!==a.tag);return a?a:null}function Ma(a,b,c){if(b=Ca(a,c.dispatchConfig.phasedRegistrationNames[b]))c._dispatchListeners=xa(c._dispatchListeners,b),c._dispatchInstances=xa(c._dispatchInstances,a)}\nfunction Na(a){if(a&&a.dispatchConfig.phasedRegistrationNames){for(var b=a._targetInst,c=[];b;)c.push(b),b=La(b);for(b=c.length;0<b--;)Ma(c[b],\"captured\",a);for(b=0;b<c.length;b++)Ma(c[b],\"bubbled\",a)}}function Oa(a,b,c){a&&c&&c.dispatchConfig.registrationName&&(b=Ca(a,c.dispatchConfig.registrationName))&&(c._dispatchListeners=xa(c._dispatchListeners,b),c._dispatchInstances=xa(c._dispatchInstances,a))}function Pa(a){a&&a.dispatchConfig.registrationName&&Oa(a._targetInst,null,a)}\nfunction Qa(a){ya(a,Na)}var Ra=!(\"undefined\"===typeof window||!window.document||!window.document.createElement);function Sa(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var Ta={animationend:Sa(\"Animation\",\"AnimationEnd\"),animationiteration:Sa(\"Animation\",\"AnimationIteration\"),animationstart:Sa(\"Animation\",\"AnimationStart\"),transitionend:Sa(\"Transition\",\"TransitionEnd\")},Ua={},Va={};\nRa&&(Va=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete Ta.animationend.animation,delete Ta.animationiteration.animation,delete Ta.animationstart.animation),\"TransitionEvent\"in window||delete Ta.transitionend.transition);function Wa(a){if(Ua[a])return Ua[a];if(!Ta[a])return a;var b=Ta[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Va)return Ua[a]=b[c];return a}\nvar Xa=Wa(\"animationend\"),Ya=Wa(\"animationiteration\"),Za=Wa(\"animationstart\"),$a=Wa(\"transitionend\"),ab=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),bb=null,cb=null,db=null;\nfunction eb(){if(db)return db;var a,b=cb,c=b.length,d,e=\"value\"in bb?bb.value:bb.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return db=e.slice(a,1<d?1-d:void 0)}function fb(){return!0}function gb(){return!1}\nfunction y(a,b,c,d){this.dispatchConfig=a;this._targetInst=b;this.nativeEvent=c;a=this.constructor.Interface;for(var e in a)a.hasOwnProperty(e)&&((b=a[e])?this[e]=b(c):\"target\"===e?this.target=d:this[e]=c[e]);this.isDefaultPrevented=(null!=c.defaultPrevented?c.defaultPrevented:!1===c.returnValue)?fb:gb;this.isPropagationStopped=gb;return this}\nn(y.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&(a.returnValue=!1),this.isDefaultPrevented=fb)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=fb)},persist:function(){this.isPersistent=fb},isPersistent:gb,destructor:function(){var a=this.constructor.Interface,\nb;for(b in a)this[b]=null;this.nativeEvent=this._targetInst=this.dispatchConfig=null;this.isPropagationStopped=this.isDefaultPrevented=gb;this._dispatchInstances=this._dispatchListeners=null}});y.Interface={type:null,target:null,currentTarget:function(){return null},eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null};\ny.extend=function(a){function b(){}function c(){return d.apply(this,arguments)}var d=this;b.prototype=d.prototype;var e=new b;n(e,c.prototype);c.prototype=e;c.prototype.constructor=c;c.Interface=n({},d.Interface,a);c.extend=d.extend;hb(c);return c};hb(y);function ib(a,b,c,d){if(this.eventPool.length){var e=this.eventPool.pop();this.call(e,a,b,c,d);return e}return new this(a,b,c,d)}function jb(a){a instanceof this?void 0:x(\"279\");a.destructor();10>this.eventPool.length&&this.eventPool.push(a)}\nfunction hb(a){a.eventPool=[];a.getPooled=ib;a.release=jb}var kb=y.extend({data:null}),lb=y.extend({data:null}),mb=[9,13,27,32],nb=Ra&&\"CompositionEvent\"in window,ob=null;Ra&&\"documentMode\"in document&&(ob=document.documentMode);\nvar pb=Ra&&\"TextEvent\"in window&&!ob,qb=Ra&&(!nb||ob&&8<ob&&11>=ob),rb=String.fromCharCode(32),sb={beforeInput:{phasedRegistrationNames:{bubbled:\"onBeforeInput\",captured:\"onBeforeInputCapture\"},dependencies:[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]},compositionEnd:{phasedRegistrationNames:{bubbled:\"onCompositionEnd\",captured:\"onCompositionEndCapture\"},dependencies:\"blur compositionend keydown keypress keyup mousedown\".split(\" \")},compositionStart:{phasedRegistrationNames:{bubbled:\"onCompositionStart\",\ncaptured:\"onCompositionStartCapture\"},dependencies:\"blur compositionstart keydown keypress keyup mousedown\".split(\" \")},compositionUpdate:{phasedRegistrationNames:{bubbled:\"onCompositionUpdate\",captured:\"onCompositionUpdateCapture\"},dependencies:\"blur compositionupdate keydown keypress keyup mousedown\".split(\" \")}},tb=!1;\nfunction ub(a,b){switch(a){case \"keyup\":return-1!==mb.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"blur\":return!0;default:return!1}}function vb(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var wb=!1;function xb(a,b){switch(a){case \"compositionend\":return vb(b);case \"keypress\":if(32!==b.which)return null;tb=!0;return rb;case \"textInput\":return a=b.data,a===rb&&tb?null:a;default:return null}}\nfunction yb(a,b){if(wb)return\"compositionend\"===a||!nb&&ub(a,b)?(a=eb(),db=cb=bb=null,wb=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1<b.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case \"compositionend\":return qb&&\"ko\"!==b.locale?null:b.data;default:return null}}\nvar zb={eventTypes:sb,extractEvents:function(a,b,c,d){var e=void 0;var f=void 0;if(nb)b:{switch(a){case \"compositionstart\":e=sb.compositionStart;break b;case \"compositionend\":e=sb.compositionEnd;break b;case \"compositionupdate\":e=sb.compositionUpdate;break b}e=void 0}else wb?ub(a,c)&&(e=sb.compositionEnd):\"keydown\"===a&&229===c.keyCode&&(e=sb.compositionStart);e?(qb&&\"ko\"!==c.locale&&(wb||e!==sb.compositionStart?e===sb.compositionEnd&&wb&&(f=eb()):(bb=d,cb=\"value\"in bb?bb.value:bb.textContent,wb=\n!0)),e=kb.getPooled(e,b,c,d),f?e.data=f:(f=vb(c),null!==f&&(e.data=f)),Qa(e),f=e):f=null;(a=pb?xb(a,c):yb(a,c))?(b=lb.getPooled(sb.beforeInput,b,c,d),b.data=a,Qa(b)):b=null;return null===f?b:null===b?f:[f,b]}},Ab=null,Bb=null,Cb=null;function Db(a){if(a=ua(a)){\"function\"!==typeof Ab?x(\"280\"):void 0;var b=ta(a.stateNode);Ab(a.stateNode,a.type,b)}}function Eb(a){Bb?Cb?Cb.push(a):Cb=[a]:Bb=a}function Fb(){if(Bb){var a=Bb,b=Cb;Cb=Bb=null;Db(a);if(b)for(a=0;a<b.length;a++)Db(b[a])}}\nfunction Gb(a,b){return a(b)}function Hb(a,b,c){return a(b,c)}function Ib(){}var Jb=!1;function Kb(a,b){if(Jb)return a(b);Jb=!0;try{return Gb(a,b)}finally{if(Jb=!1,null!==Bb||null!==Cb)Ib(),Fb()}}var Lb={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Mb(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===b?!!Lb[a.type]:\"textarea\"===b?!0:!1}\nfunction Nb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}function Ob(a){if(!Ra)return!1;a=\"on\"+a;var b=a in document;b||(b=document.createElement(\"div\"),b.setAttribute(a,\"return;\"),b=\"function\"===typeof b[a]);return b}function Pb(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Qb(a){var b=Pb(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Rb(a){a._valueTracker||(a._valueTracker=Qb(a))}function Sb(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Pb(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}var Tb=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;Tb.hasOwnProperty(\"ReactCurrentDispatcher\")||(Tb.ReactCurrentDispatcher={current:null});\nvar Ub=/^(.*)[\\\\\\/]/,z=\"function\"===typeof Symbol&&Symbol.for,Vb=z?Symbol.for(\"react.element\"):60103,Wb=z?Symbol.for(\"react.portal\"):60106,Xb=z?Symbol.for(\"react.fragment\"):60107,Yb=z?Symbol.for(\"react.strict_mode\"):60108,Zb=z?Symbol.for(\"react.profiler\"):60114,$b=z?Symbol.for(\"react.provider\"):60109,ac=z?Symbol.for(\"react.context\"):60110,bc=z?Symbol.for(\"react.concurrent_mode\"):60111,cc=z?Symbol.for(\"react.forward_ref\"):60112,dc=z?Symbol.for(\"react.suspense\"):60113,ec=z?Symbol.for(\"react.memo\"):\n60115,fc=z?Symbol.for(\"react.lazy\"):60116,gc=\"function\"===typeof Symbol&&Symbol.iterator;function hc(a){if(null===a||\"object\"!==typeof a)return null;a=gc&&a[gc]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nfunction ic(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case bc:return\"ConcurrentMode\";case Xb:return\"Fragment\";case Wb:return\"Portal\";case Zb:return\"Profiler\";case Yb:return\"StrictMode\";case dc:return\"Suspense\"}if(\"object\"===typeof a)switch(a.$$typeof){case ac:return\"Context.Consumer\";case $b:return\"Context.Provider\";case cc:var b=a.render;b=b.displayName||b.name||\"\";return a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\n\")\":\"ForwardRef\");case ec:return ic(a.type);case fc:if(a=1===a._status?a._result:null)return ic(a)}return null}function jc(a){var b=\"\";do{a:switch(a.tag){case 3:case 4:case 6:case 7:case 10:case 9:var c=\"\";break a;default:var d=a._debugOwner,e=a._debugSource,f=ic(a.type);c=null;d&&(c=ic(d.type));d=f;f=\"\";e?f=\" (at \"+e.fileName.replace(Ub,\"\")+\":\"+e.lineNumber+\")\":c&&(f=\" (created by \"+c+\")\");c=\"\\n in \"+(d||\"Unknown\")+f}b+=c;a=a.return}while(a);return b}\nvar kc=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,lc=Object.prototype.hasOwnProperty,mc={},nc={};\nfunction oc(a){if(lc.call(nc,a))return!0;if(lc.call(mc,a))return!1;if(kc.test(a))return nc[a]=!0;mc[a]=!0;return!1}function pc(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction qc(a,b,c,d){if(null===b||\"undefined\"===typeof b||pc(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function C(a,b,c,d,e){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b}var D={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){D[a]=new C(a,0,!1,a,null)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];D[b]=new C(b,1,!1,a[1],null)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){D[a]=new C(a,2,!1,a.toLowerCase(),null)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){D[a]=new C(a,2,!1,a,null)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){D[a]=new C(a,3,!1,a.toLowerCase(),null)});[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){D[a]=new C(a,3,!0,a,null)});\n[\"capture\",\"download\"].forEach(function(a){D[a]=new C(a,4,!1,a,null)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){D[a]=new C(a,6,!1,a,null)});[\"rowSpan\",\"start\"].forEach(function(a){D[a]=new C(a,5,!1,a.toLowerCase(),null)});var rc=/[\\-:]([a-z])/g;function sc(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(rc,\nsc);D[b]=new C(b,1,!1,a,null)});\"xlink:actuate xlink:arcrole xlink:href xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(rc,sc);D[b]=new C(b,1,!1,a,\"http://www.w3.org/1999/xlink\")});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(rc,sc);D[b]=new C(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\")});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){D[a]=new C(a,1,!1,a.toLowerCase(),null)});\nfunction tc(a,b,c,d){var e=D.hasOwnProperty(b)?D[b]:null;var f=null!==e?0===e.type:d?!1:!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1]?!1:!0;f||(qc(b,c,e,d)&&(c=null),d||null===e?oc(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,\"\"+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:\"\":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?\"\":\"\"+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c))))}\nfunction uc(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}function vc(a,b){var c=b.checked;return n({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}\nfunction wc(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=uc(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function xc(a,b){b=b.checked;null!=b&&tc(a,\"checked\",b,!1)}\nfunction yc(a,b){xc(a,b);var c=uc(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?zc(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&zc(a,b.type,uc(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction Ac(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!a.defaultChecked;a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction zc(a,b,c){if(\"number\"!==b||a.ownerDocument.activeElement!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var Bc={change:{phasedRegistrationNames:{bubbled:\"onChange\",captured:\"onChangeCapture\"},dependencies:\"blur change click focus input keydown keyup selectionchange\".split(\" \")}};function Cc(a,b,c){a=y.getPooled(Bc.change,a,b,c);a.type=\"change\";Eb(c);Qa(a);return a}var Dc=null,Ec=null;function Fc(a){Da(a)}\nfunction Gc(a){var b=Ja(a);if(Sb(b))return a}function Hc(a,b){if(\"change\"===a)return b}var Ic=!1;Ra&&(Ic=Ob(\"input\")&&(!document.documentMode||9<document.documentMode));function Jc(){Dc&&(Dc.detachEvent(\"onpropertychange\",Kc),Ec=Dc=null)}function Kc(a){\"value\"===a.propertyName&&Gc(Ec)&&(a=Cc(Ec,a,Nb(a)),Kb(Fc,a))}function Lc(a,b,c){\"focus\"===a?(Jc(),Dc=b,Ec=c,Dc.attachEvent(\"onpropertychange\",Kc)):\"blur\"===a&&Jc()}function Mc(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return Gc(Ec)}\nfunction Nc(a,b){if(\"click\"===a)return Gc(b)}function Oc(a,b){if(\"input\"===a||\"change\"===a)return Gc(b)}\nvar Pc={eventTypes:Bc,_isInputEventSupported:Ic,extractEvents:function(a,b,c,d){var e=b?Ja(b):window,f=void 0,g=void 0,h=e.nodeName&&e.nodeName.toLowerCase();\"select\"===h||\"input\"===h&&\"file\"===e.type?f=Hc:Mb(e)?Ic?f=Oc:(f=Mc,g=Lc):(h=e.nodeName)&&\"input\"===h.toLowerCase()&&(\"checkbox\"===e.type||\"radio\"===e.type)&&(f=Nc);if(f&&(f=f(a,b)))return Cc(f,c,d);g&&g(a,e,b);\"blur\"===a&&(a=e._wrapperState)&&a.controlled&&\"number\"===e.type&&zc(e,\"number\",e.value)}},Qc=y.extend({view:null,detail:null}),Rc={Alt:\"altKey\",\nControl:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Sc(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Rc[a])?!!b[a]:!1}function Tc(){return Sc}\nvar Uc=0,Vc=0,Wc=!1,Xc=!1,Yc=Qc.extend({screenX:null,screenY:null,clientX:null,clientY:null,pageX:null,pageY:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,getModifierState:Tc,button:null,buttons:null,relatedTarget:function(a){return a.relatedTarget||(a.fromElement===a.srcElement?a.toElement:a.fromElement)},movementX:function(a){if(\"movementX\"in a)return a.movementX;var b=Uc;Uc=a.screenX;return Wc?\"mousemove\"===a.type?a.screenX-b:0:(Wc=!0,0)},movementY:function(a){if(\"movementY\"in a)return a.movementY;\nvar b=Vc;Vc=a.screenY;return Xc?\"mousemove\"===a.type?a.screenY-b:0:(Xc=!0,0)}}),Zc=Yc.extend({pointerId:null,width:null,height:null,pressure:null,tangentialPressure:null,tiltX:null,tiltY:null,twist:null,pointerType:null,isPrimary:null}),$c={mouseEnter:{registrationName:\"onMouseEnter\",dependencies:[\"mouseout\",\"mouseover\"]},mouseLeave:{registrationName:\"onMouseLeave\",dependencies:[\"mouseout\",\"mouseover\"]},pointerEnter:{registrationName:\"onPointerEnter\",dependencies:[\"pointerout\",\"pointerover\"]},pointerLeave:{registrationName:\"onPointerLeave\",\ndependencies:[\"pointerout\",\"pointerover\"]}},ad={eventTypes:$c,extractEvents:function(a,b,c,d){var e=\"mouseover\"===a||\"pointerover\"===a,f=\"mouseout\"===a||\"pointerout\"===a;if(e&&(c.relatedTarget||c.fromElement)||!f&&!e)return null;e=d.window===d?d:(e=d.ownerDocument)?e.defaultView||e.parentWindow:window;f?(f=b,b=(b=c.relatedTarget||c.toElement)?Ha(b):null):f=null;if(f===b)return null;var g=void 0,h=void 0,l=void 0,k=void 0;if(\"mouseout\"===a||\"mouseover\"===a)g=Yc,h=$c.mouseLeave,l=$c.mouseEnter,k=\"mouse\";\nelse if(\"pointerout\"===a||\"pointerover\"===a)g=Zc,h=$c.pointerLeave,l=$c.pointerEnter,k=\"pointer\";var m=null==f?e:Ja(f);e=null==b?e:Ja(b);a=g.getPooled(h,f,c,d);a.type=k+\"leave\";a.target=m;a.relatedTarget=e;c=g.getPooled(l,b,c,d);c.type=k+\"enter\";c.target=e;c.relatedTarget=m;d=b;if(f&&d)a:{b=f;e=d;k=0;for(g=b;g;g=La(g))k++;g=0;for(l=e;l;l=La(l))g++;for(;0<k-g;)b=La(b),k--;for(;0<g-k;)e=La(e),g--;for(;k--;){if(b===e||b===e.alternate)break a;b=La(b);e=La(e)}b=null}else b=null;e=b;for(b=[];f&&f!==e;){k=\nf.alternate;if(null!==k&&k===e)break;b.push(f);f=La(f)}for(f=[];d&&d!==e;){k=d.alternate;if(null!==k&&k===e)break;f.push(d);d=La(d)}for(d=0;d<b.length;d++)Oa(b[d],\"bubbled\",a);for(d=f.length;0<d--;)Oa(f[d],\"captured\",c);return[a,c]}};function bd(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var cd=Object.prototype.hasOwnProperty;\nfunction dd(a,b){if(bd(a,b))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++)if(!cd.call(b,c[d])||!bd(a[c[d]],b[c[d]]))return!1;return!0}function ed(a){var b=a;if(a.alternate)for(;b.return;)b=b.return;else{if(0!==(b.effectTag&2))return 1;for(;b.return;)if(b=b.return,0!==(b.effectTag&2))return 1}return 3===b.tag?2:3}function fd(a){2!==ed(a)?x(\"188\"):void 0}\nfunction gd(a){var b=a.alternate;if(!b)return b=ed(a),3===b?x(\"188\"):void 0,1===b?null:a;for(var c=a,d=b;;){var e=c.return,f=e?e.alternate:null;if(!e||!f)break;if(e.child===f.child){for(var g=e.child;g;){if(g===c)return fd(e),a;if(g===d)return fd(e),b;g=g.sibling}x(\"188\")}if(c.return!==d.return)c=e,d=f;else{g=!1;for(var h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===c){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}g?\nvoid 0:x(\"189\")}}c.alternate!==d?x(\"190\"):void 0}3!==c.tag?x(\"188\"):void 0;return c.stateNode.current===c?a:b}function hd(a){a=gd(a);if(!a)return null;for(var b=a;;){if(5===b.tag||6===b.tag)return b;if(b.child)b.child.return=b,b=b.child;else{if(b===a)break;for(;!b.sibling;){if(!b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}}return null}\nvar id=y.extend({animationName:null,elapsedTime:null,pseudoElement:null}),jd=y.extend({clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),kd=Qc.extend({relatedTarget:null});function ld(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}\nvar md={Esc:\"Escape\",Spacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},nd={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",\n116:\"F5\",117:\"F6\",118:\"F7\",119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},od=Qc.extend({key:function(a){if(a.key){var b=md[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=ld(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?nd[a.keyCode]||\"Unidentified\":\"\"},location:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,repeat:null,locale:null,getModifierState:Tc,charCode:function(a){return\"keypress\"===\na.type?ld(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===a.type?ld(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),pd=Yc.extend({dataTransfer:null}),qd=Qc.extend({touches:null,targetTouches:null,changedTouches:null,altKey:null,metaKey:null,ctrlKey:null,shiftKey:null,getModifierState:Tc}),rd=y.extend({propertyName:null,elapsedTime:null,pseudoElement:null}),sd=Yc.extend({deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in\na?-a.wheelDeltaX:0},deltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:null,deltaMode:null}),td=[[\"abort\",\"abort\"],[Xa,\"animationEnd\"],[Ya,\"animationIteration\"],[Za,\"animationStart\"],[\"canplay\",\"canPlay\"],[\"canplaythrough\",\"canPlayThrough\"],[\"drag\",\"drag\"],[\"dragenter\",\"dragEnter\"],[\"dragexit\",\"dragExit\"],[\"dragleave\",\"dragLeave\"],[\"dragover\",\"dragOver\"],[\"durationchange\",\"durationChange\"],[\"emptied\",\"emptied\"],[\"encrypted\",\"encrypted\"],\n[\"ended\",\"ended\"],[\"error\",\"error\"],[\"gotpointercapture\",\"gotPointerCapture\"],[\"load\",\"load\"],[\"loadeddata\",\"loadedData\"],[\"loadedmetadata\",\"loadedMetadata\"],[\"loadstart\",\"loadStart\"],[\"lostpointercapture\",\"lostPointerCapture\"],[\"mousemove\",\"mouseMove\"],[\"mouseout\",\"mouseOut\"],[\"mouseover\",\"mouseOver\"],[\"playing\",\"playing\"],[\"pointermove\",\"pointerMove\"],[\"pointerout\",\"pointerOut\"],[\"pointerover\",\"pointerOver\"],[\"progress\",\"progress\"],[\"scroll\",\"scroll\"],[\"seeking\",\"seeking\"],[\"stalled\",\"stalled\"],\n[\"suspend\",\"suspend\"],[\"timeupdate\",\"timeUpdate\"],[\"toggle\",\"toggle\"],[\"touchmove\",\"touchMove\"],[$a,\"transitionEnd\"],[\"waiting\",\"waiting\"],[\"wheel\",\"wheel\"]],ud={},vd={};function wd(a,b){var c=a[0];a=a[1];var d=\"on\"+(a[0].toUpperCase()+a.slice(1));b={phasedRegistrationNames:{bubbled:d,captured:d+\"Capture\"},dependencies:[c],isInteractive:b};ud[a]=b;vd[c]=b}\n[[\"blur\",\"blur\"],[\"cancel\",\"cancel\"],[\"click\",\"click\"],[\"close\",\"close\"],[\"contextmenu\",\"contextMenu\"],[\"copy\",\"copy\"],[\"cut\",\"cut\"],[\"auxclick\",\"auxClick\"],[\"dblclick\",\"doubleClick\"],[\"dragend\",\"dragEnd\"],[\"dragstart\",\"dragStart\"],[\"drop\",\"drop\"],[\"focus\",\"focus\"],[\"input\",\"input\"],[\"invalid\",\"invalid\"],[\"keydown\",\"keyDown\"],[\"keypress\",\"keyPress\"],[\"keyup\",\"keyUp\"],[\"mousedown\",\"mouseDown\"],[\"mouseup\",\"mouseUp\"],[\"paste\",\"paste\"],[\"pause\",\"pause\"],[\"play\",\"play\"],[\"pointercancel\",\"pointerCancel\"],\n[\"pointerdown\",\"pointerDown\"],[\"pointerup\",\"pointerUp\"],[\"ratechange\",\"rateChange\"],[\"reset\",\"reset\"],[\"seeked\",\"seeked\"],[\"submit\",\"submit\"],[\"touchcancel\",\"touchCancel\"],[\"touchend\",\"touchEnd\"],[\"touchstart\",\"touchStart\"],[\"volumechange\",\"volumeChange\"]].forEach(function(a){wd(a,!0)});td.forEach(function(a){wd(a,!1)});\nvar xd={eventTypes:ud,isInteractiveTopLevelEventType:function(a){a=vd[a];return void 0!==a&&!0===a.isInteractive},extractEvents:function(a,b,c,d){var e=vd[a];if(!e)return null;switch(a){case \"keypress\":if(0===ld(c))return null;case \"keydown\":case \"keyup\":a=od;break;case \"blur\":case \"focus\":a=kd;break;case \"click\":if(2===c.button)return null;case \"auxclick\":case \"dblclick\":case \"mousedown\":case \"mousemove\":case \"mouseup\":case \"mouseout\":case \"mouseover\":case \"contextmenu\":a=Yc;break;case \"drag\":case \"dragend\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"dragstart\":case \"drop\":a=\npd;break;case \"touchcancel\":case \"touchend\":case \"touchmove\":case \"touchstart\":a=qd;break;case Xa:case Ya:case Za:a=id;break;case $a:a=rd;break;case \"scroll\":a=Qc;break;case \"wheel\":a=sd;break;case \"copy\":case \"cut\":case \"paste\":a=jd;break;case \"gotpointercapture\":case \"lostpointercapture\":case \"pointercancel\":case \"pointerdown\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"pointerup\":a=Zc;break;default:a=y}b=a.getPooled(e,b,c,d);Qa(b);return b}},yd=xd.isInteractiveTopLevelEventType,\nzd=[];function Ad(a){var b=a.targetInst,c=b;do{if(!c){a.ancestors.push(c);break}var d;for(d=c;d.return;)d=d.return;d=3!==d.tag?null:d.stateNode.containerInfo;if(!d)break;a.ancestors.push(c);c=Ha(d)}while(c);for(c=0;c<a.ancestors.length;c++){b=a.ancestors[c];var e=Nb(a.nativeEvent);d=a.topLevelType;for(var f=a.nativeEvent,g=null,h=0;h<oa.length;h++){var l=oa[h];l&&(l=l.extractEvents(d,b,f,e))&&(g=xa(g,l))}Da(g)}}var Bd=!0;\nfunction E(a,b){if(!b)return null;var c=(yd(a)?Cd:Dd).bind(null,a);b.addEventListener(a,c,!1)}function Ed(a,b){if(!b)return null;var c=(yd(a)?Cd:Dd).bind(null,a);b.addEventListener(a,c,!0)}function Cd(a,b){Hb(Dd,a,b)}\nfunction Dd(a,b){if(Bd){var c=Nb(b);c=Ha(c);null===c||\"number\"!==typeof c.tag||2===ed(c)||(c=null);if(zd.length){var d=zd.pop();d.topLevelType=a;d.nativeEvent=b;d.targetInst=c;a=d}else a={topLevelType:a,nativeEvent:b,targetInst:c,ancestors:[]};try{Kb(Ad,a)}finally{a.topLevelType=null,a.nativeEvent=null,a.targetInst=null,a.ancestors.length=0,10>zd.length&&zd.push(a)}}}var Fd={},Gd=0,Hd=\"_reactListenersID\"+(\"\"+Math.random()).slice(2);\nfunction Id(a){Object.prototype.hasOwnProperty.call(a,Hd)||(a[Hd]=Gd++,Fd[a[Hd]]={});return Fd[a[Hd]]}function Jd(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}function Kd(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction Ld(a,b){var c=Kd(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Kd(c)}}function Md(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Md(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Nd(){for(var a=window,b=Jd();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Jd(a.document)}return b}function Od(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Pd(){var a=Nd();if(Od(a)){if(\"selectionStart\"in a)var b={start:a.selectionStart,end:a.selectionEnd};else a:{b=(b=a.ownerDocument)&&b.defaultView||window;var c=b.getSelection&&b.getSelection();if(c&&0!==c.rangeCount){b=c.anchorNode;var d=c.anchorOffset,e=c.focusNode;c=c.focusOffset;try{b.nodeType,e.nodeType}catch(A){b=null;break a}var f=0,g=-1,h=-1,l=0,k=0,m=a,p=null;b:for(;;){for(var t;;){m!==b||0!==d&&3!==m.nodeType||(g=f+d);m!==e||0!==c&&3!==m.nodeType||(h=f+c);3===m.nodeType&&(f+=m.nodeValue.length);\nif(null===(t=m.firstChild))break;p=m;m=t}for(;;){if(m===a)break b;p===b&&++l===d&&(g=f);p===e&&++k===c&&(h=f);if(null!==(t=m.nextSibling))break;m=p;p=m.parentNode}m=t}b=-1===g||-1===h?null:{start:g,end:h}}else b=null}b=b||{start:0,end:0}}else b=null;return{focusedElem:a,selectionRange:b}}\nfunction Qd(a){var b=Nd(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Md(c.ownerDocument.documentElement,c)){if(null!==d&&Od(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ld(c,f);var g=Ld(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c<b.length;c++)a=b[c],a.element.scrollLeft=a.left,a.element.scrollTop=a.top}}\nvar Rd=Ra&&\"documentMode\"in document&&11>=document.documentMode,Sd={select:{phasedRegistrationNames:{bubbled:\"onSelect\",captured:\"onSelectCapture\"},dependencies:\"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange\".split(\" \")}},Td=null,Ud=null,Vd=null,Wd=!1;\nfunction Xd(a,b){var c=b.window===b?b.document:9===b.nodeType?b:b.ownerDocument;if(Wd||null==Td||Td!==Jd(c))return null;c=Td;\"selectionStart\"in c&&Od(c)?c={start:c.selectionStart,end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset});return Vd&&dd(Vd,c)?null:(Vd=c,a=y.getPooled(Sd.select,Ud,a,b),a.type=\"select\",a.target=Td,Qa(a),a)}\nvar Yd={eventTypes:Sd,extractEvents:function(a,b,c,d){var e=d.window===d?d.document:9===d.nodeType?d:d.ownerDocument,f;if(!(f=!e)){a:{e=Id(e);f=sa.onSelect;for(var g=0;g<f.length;g++){var h=f[g];if(!e.hasOwnProperty(h)||!e[h]){e=!1;break a}}e=!0}f=!e}if(f)return null;e=b?Ja(b):window;switch(a){case \"focus\":if(Mb(e)||\"true\"===e.contentEditable)Td=e,Ud=b,Vd=null;break;case \"blur\":Vd=Ud=Td=null;break;case \"mousedown\":Wd=!0;break;case \"contextmenu\":case \"mouseup\":case \"dragend\":return Wd=!1,Xd(c,d);case \"selectionchange\":if(Rd)break;\ncase \"keydown\":case \"keyup\":return Xd(c,d)}return null}};Ba.injectEventPluginOrder(\"ResponderEventPlugin SimpleEventPlugin EnterLeaveEventPlugin ChangeEventPlugin SelectEventPlugin BeforeInputEventPlugin\".split(\" \"));ta=Ka;ua=Ia;va=Ja;Ba.injectEventPluginsByName({SimpleEventPlugin:xd,EnterLeaveEventPlugin:ad,ChangeEventPlugin:Pc,SelectEventPlugin:Yd,BeforeInputEventPlugin:zb});function Zd(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}\nfunction $d(a,b){a=n({children:void 0},b);if(b=Zd(b.children))a.children=b;return a}function ae(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b[\"$\"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty(\"$\"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=\"\"+uc(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}\nfunction be(a,b){null!=b.dangerouslySetInnerHTML?x(\"91\"):void 0;return n({},b,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function ce(a,b){var c=b.value;null==c&&(c=b.defaultValue,b=b.children,null!=b&&(null!=c?x(\"92\"):void 0,Array.isArray(b)&&(1>=b.length?void 0:x(\"93\"),b=b[0]),c=b),null==c&&(c=\"\"));a._wrapperState={initialValue:uc(c)}}\nfunction de(a,b){var c=uc(b.value),d=uc(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function ee(a){var b=a.textContent;b===a._wrapperState.initialValue&&(a.value=b)}var fe={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction ge(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function he(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?ge(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar ie=void 0,je=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==fe.svg||\"innerHTML\"in a)a.innerHTML=b;else{ie=ie||document.createElement(\"div\");ie.innerHTML=\"<svg>\"+b+\"</svg>\";for(b=ie.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ke(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar le={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},me=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(le).forEach(function(a){me.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);le[b]=le[a]})});function ne(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||le.hasOwnProperty(a)&&le[a]?(\"\"+b).trim():b+\"px\"}\nfunction oe(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=ne(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var pe=n({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction qe(a,b){b&&(pe[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML?x(\"137\",a,\"\"):void 0),null!=b.dangerouslySetInnerHTML&&(null!=b.children?x(\"60\"):void 0,\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML?void 0:x(\"61\")),null!=b.style&&\"object\"!==typeof b.style?x(\"62\",\"\"):void 0)}\nfunction re(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}\nfunction se(a,b){a=9===a.nodeType||11===a.nodeType?a:a.ownerDocument;var c=Id(a);b=sa[b];for(var d=0;d<b.length;d++){var e=b[d];if(!c.hasOwnProperty(e)||!c[e]){switch(e){case \"scroll\":Ed(\"scroll\",a);break;case \"focus\":case \"blur\":Ed(\"focus\",a);Ed(\"blur\",a);c.blur=!0;c.focus=!0;break;case \"cancel\":case \"close\":Ob(e)&&Ed(e,a);break;case \"invalid\":case \"submit\":case \"reset\":break;default:-1===ab.indexOf(e)&&E(e,a)}c[e]=!0}}}function te(){}var ue=null,ve=null;\nfunction we(a,b){switch(a){case \"button\":case \"input\":case \"select\":case \"textarea\":return!!b.autoFocus}return!1}function xe(a,b){return\"textarea\"===a||\"option\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}\nvar ye=\"function\"===typeof setTimeout?setTimeout:void 0,ze=\"function\"===typeof clearTimeout?clearTimeout:void 0,Ae=r.unstable_scheduleCallback,Be=r.unstable_cancelCallback;\nfunction Ce(a,b,c,d,e){a[Ga]=e;\"input\"===c&&\"radio\"===e.type&&null!=e.name&&xc(a,e);re(c,d);d=re(c,e);for(var f=0;f<b.length;f+=2){var g=b[f],h=b[f+1];\"style\"===g?oe(a,h):\"dangerouslySetInnerHTML\"===g?je(a,h):\"children\"===g?ke(a,h):tc(a,g,h,d)}switch(c){case \"input\":yc(a,e);break;case \"textarea\":de(a,e);break;case \"select\":b=a._wrapperState.wasMultiple,a._wrapperState.wasMultiple=!!e.multiple,c=e.value,null!=c?ae(a,!!e.multiple,c,!1):b!==!!e.multiple&&(null!=e.defaultValue?ae(a,!!e.multiple,e.defaultValue,\n!0):ae(a,!!e.multiple,e.multiple?[]:\"\",!1))}}function De(a){for(a=a.nextSibling;a&&1!==a.nodeType&&3!==a.nodeType;)a=a.nextSibling;return a}function Ee(a){for(a=a.firstChild;a&&1!==a.nodeType&&3!==a.nodeType;)a=a.nextSibling;return a}new Set;var Fe=[],Ge=-1;function F(a){0>Ge||(a.current=Fe[Ge],Fe[Ge]=null,Ge--)}function G(a,b){Ge++;Fe[Ge]=a.current;a.current=b}var He={},H={current:He},I={current:!1},Ie=He;\nfunction Je(a,b){var c=a.type.contextTypes;if(!c)return He;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function J(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Ke(a){F(I,a);F(H,a)}function Le(a){F(I,a);F(H,a)}\nfunction Me(a,b,c){H.current!==He?x(\"168\"):void 0;G(H,b,a);G(I,c,a)}function Ne(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)e in a?void 0:x(\"108\",ic(b)||\"Unknown\",e);return n({},c,d)}function Oe(a){var b=a.stateNode;b=b&&b.__reactInternalMemoizedMergedChildContext||He;Ie=H.current;G(H,b,a);G(I,I.current,a);return!0}\nfunction Pe(a,b,c){var d=a.stateNode;d?void 0:x(\"169\");c?(b=Ne(a,b,Ie),d.__reactInternalMemoizedMergedChildContext=b,F(I,a),F(H,a),G(H,b,a)):F(I,a);G(I,c,a)}var Qe=null,Re=null;function Se(a){return function(b){try{return a(b)}catch(c){}}}\nfunction Te(a){if(\"undefined\"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)return!1;var b=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(b.isDisabled||!b.supportsFiber)return!0;try{var c=b.inject(a);Qe=Se(function(a){return b.onCommitFiberRoot(c,a)});Re=Se(function(a){return b.onCommitFiberUnmount(c,a)})}catch(d){}return!0}\nfunction Ue(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.contextDependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.effectTag=0;this.lastEffect=this.firstEffect=this.nextEffect=null;this.childExpirationTime=this.expirationTime=0;this.alternate=null}function K(a,b,c,d){return new Ue(a,b,c,d)}\nfunction Ve(a){a=a.prototype;return!(!a||!a.isReactComponent)}function We(a){if(\"function\"===typeof a)return Ve(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===cc)return 11;if(a===ec)return 14}return 2}\nfunction Xe(a,b){var c=a.alternate;null===c?(c=K(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.effectTag=0,c.nextEffect=null,c.firstEffect=null,c.lastEffect=null);c.childExpirationTime=a.childExpirationTime;c.expirationTime=a.expirationTime;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;c.contextDependencies=a.contextDependencies;c.sibling=a.sibling;\nc.index=a.index;c.ref=a.ref;return c}\nfunction Ye(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)Ve(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case Xb:return Ze(c.children,e,f,b);case bc:return $e(c,e|3,f,b);case Yb:return $e(c,e|2,f,b);case Zb:return a=K(12,c,b,e|4),a.elementType=Zb,a.type=Zb,a.expirationTime=f,a;case dc:return a=K(13,c,b,e),a.elementType=dc,a.type=dc,a.expirationTime=f,a;default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case $b:g=10;break a;case ac:g=9;break a;case cc:g=11;break a;case ec:g=\n14;break a;case fc:g=16;d=null;break a}x(\"130\",null==a?a:typeof a,\"\")}b=K(g,c,b,e);b.elementType=a;b.type=d;b.expirationTime=f;return b}function Ze(a,b,c,d){a=K(7,a,d,b);a.expirationTime=c;return a}function $e(a,b,c,d){a=K(8,a,d,b);b=0===(b&1)?Yb:bc;a.elementType=b;a.type=b;a.expirationTime=c;return a}function af(a,b,c){a=K(6,a,null,b);a.expirationTime=c;return a}\nfunction bf(a,b,c){b=K(4,null!==a.children?a.children:[],a.key,b);b.expirationTime=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}function cf(a,b){a.didError=!1;var c=a.earliestPendingTime;0===c?a.earliestPendingTime=a.latestPendingTime=b:c<b?a.earliestPendingTime=b:a.latestPendingTime>b&&(a.latestPendingTime=b);df(b,a)}\nfunction ef(a,b){a.didError=!1;if(0===b)a.earliestPendingTime=0,a.latestPendingTime=0,a.earliestSuspendedTime=0,a.latestSuspendedTime=0,a.latestPingedTime=0;else{b<a.latestPingedTime&&(a.latestPingedTime=0);var c=a.latestPendingTime;0!==c&&(c>b?a.earliestPendingTime=a.latestPendingTime=0:a.earliestPendingTime>b&&(a.earliestPendingTime=a.latestPendingTime));c=a.earliestSuspendedTime;0===c?cf(a,b):b<a.latestSuspendedTime?(a.earliestSuspendedTime=0,a.latestSuspendedTime=0,a.latestPingedTime=0,cf(a,b)):\nb>c&&cf(a,b)}df(0,a)}function ff(a,b){a.didError=!1;a.latestPingedTime>=b&&(a.latestPingedTime=0);var c=a.earliestPendingTime,d=a.latestPendingTime;c===b?a.earliestPendingTime=d===b?a.latestPendingTime=0:d:d===b&&(a.latestPendingTime=c);c=a.earliestSuspendedTime;d=a.latestSuspendedTime;0===c?a.earliestSuspendedTime=a.latestSuspendedTime=b:c<b?a.earliestSuspendedTime=b:d>b&&(a.latestSuspendedTime=b);df(b,a)}\nfunction gf(a,b){var c=a.earliestPendingTime;a=a.earliestSuspendedTime;c>b&&(b=c);a>b&&(b=a);return b}function df(a,b){var c=b.earliestSuspendedTime,d=b.latestSuspendedTime,e=b.earliestPendingTime,f=b.latestPingedTime;e=0!==e?e:f;0===e&&(0===a||d<a)&&(e=d);a=e;0!==a&&c>a&&(a=c);b.nextExpirationTimeToWorkOn=e;b.expirationTime=a}function L(a,b){if(a&&a.defaultProps){b=n({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c])}return b}\nfunction hf(a){var b=a._result;switch(a._status){case 1:return b;case 2:throw b;case 0:throw b;default:a._status=0;b=a._ctor;b=b();b.then(function(b){0===a._status&&(b=b.default,a._status=1,a._result=b)},function(b){0===a._status&&(a._status=2,a._result=b)});switch(a._status){case 1:return a._result;case 2:throw a._result;}a._result=b;throw b;}}var jf=(new aa.Component).refs;\nfunction kf(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:n({},b,c);a.memoizedState=c;d=a.updateQueue;null!==d&&0===a.expirationTime&&(d.baseState=c)}\nvar tf={isMounted:function(a){return(a=a._reactInternalFiber)?2===ed(a):!1},enqueueSetState:function(a,b,c){a=a._reactInternalFiber;var d=lf();d=mf(d,a);var e=nf(d);e.payload=b;void 0!==c&&null!==c&&(e.callback=c);of();pf(a,e);qf(a,d)},enqueueReplaceState:function(a,b,c){a=a._reactInternalFiber;var d=lf();d=mf(d,a);var e=nf(d);e.tag=rf;e.payload=b;void 0!==c&&null!==c&&(e.callback=c);of();pf(a,e);qf(a,d)},enqueueForceUpdate:function(a,b){a=a._reactInternalFiber;var c=lf();c=mf(c,a);var d=nf(c);d.tag=\nsf;void 0!==b&&null!==b&&(d.callback=b);of();pf(a,d);qf(a,c)}};function uf(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!dd(c,d)||!dd(e,f):!0}\nfunction vf(a,b,c){var d=!1,e=He;var f=b.contextType;\"object\"===typeof f&&null!==f?f=M(f):(e=J(b)?Ie:H.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Je(a,e):He);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=tf;a.stateNode=b;b._reactInternalFiber=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction wf(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&tf.enqueueReplaceState(b,b.state,null)}\nfunction xf(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs=jf;var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=M(f):(f=J(b)?Ie:H.current,e.context=Je(a,f));f=a.updateQueue;null!==f&&(yf(a,f,c,e,d),e.state=a.memoizedState);f=b.getDerivedStateFromProps;\"function\"===typeof f&&(kf(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==\ntypeof e.componentWillMount||(b=e.state,\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&tf.enqueueReplaceState(e,e.state,null),f=a.updateQueue,null!==f&&(yf(a,f,c,e,d),e.state=a.memoizedState));\"function\"===typeof e.componentDidMount&&(a.effectTag|=4)}var zf=Array.isArray;\nfunction Af(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;var d=void 0;c&&(1!==c.tag?x(\"309\"):void 0,d=c.stateNode);d?void 0:x(\"147\",a);var e=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===e)return b.ref;b=function(a){var b=d.refs;b===jf&&(b=d.refs={});null===a?delete b[e]:b[e]=a};b._stringRef=e;return b}\"string\"!==typeof a?x(\"284\"):void 0;c._owner?void 0:x(\"290\",a)}return a}\nfunction Bf(a,b){\"textarea\"!==a.type&&x(\"31\",\"[object Object]\"===Object.prototype.toString.call(b)?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":b,\"\")}\nfunction Cf(a){function b(b,c){if(a){var d=b.lastEffect;null!==d?(d.nextEffect=c,b.lastEffect=c):b.firstEffect=b.lastEffect=c;c.nextEffect=null;c.effectTag=8}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b,c){a=Xe(a,b,c);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.effectTag=\n2,c):d;b.effectTag=2;return c}function g(b){a&&null===b.alternate&&(b.effectTag=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=af(c,a.mode,d),b.return=a,b;b=e(b,c,d);b.return=a;return b}function l(a,b,c,d){if(null!==b&&b.elementType===c.type)return d=e(b,c.props,d),d.ref=Af(a,b,c),d.return=a,d;d=Ye(c.type,c.key,c.props,null,a.mode,d);d.ref=Af(a,b,c);d.return=a;return d}function k(a,b,c,d){if(null===b||4!==b.tag||b.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==\nc.implementation)return b=bf(c,a.mode,d),b.return=a,b;b=e(b,c.children||[],d);b.return=a;return b}function m(a,b,c,d,f){if(null===b||7!==b.tag)return b=Ze(c,a.mode,d,f),b.return=a,b;b=e(b,c,d);b.return=a;return b}function p(a,b,c){if(\"string\"===typeof b||\"number\"===typeof b)return b=af(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case Vb:return c=Ye(b.type,b.key,b.props,null,a.mode,c),c.ref=Af(a,null,b),c.return=a,c;case Wb:return b=bf(b,a.mode,c),b.return=a,b}if(zf(b)||\nhc(b))return b=Ze(b,a.mode,c,null),b.return=a,b;Bf(a,b)}return null}function t(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case Vb:return c.key===e?c.type===Xb?m(a,b,c.props.children,d,e):l(a,b,c,d):null;case Wb:return c.key===e?k(a,b,c,d):null}if(zf(c)||hc(c))return null!==e?null:m(a,b,c,d,null);Bf(a,c)}return null}function A(a,b,c,d,e){if(\"string\"===typeof d||\"number\"===typeof d)return a=\na.get(c)||null,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case Vb:return a=a.get(null===d.key?c:d.key)||null,d.type===Xb?m(b,a,d.props.children,e,d.key):l(b,a,d,e);case Wb:return a=a.get(null===d.key?c:d.key)||null,k(b,a,d,e)}if(zf(d)||hc(d))return a=a.get(c)||null,m(b,a,d,e,null);Bf(b,d)}return null}function v(e,g,h,k){for(var l=null,m=null,q=g,u=g=0,B=null;null!==q&&u<h.length;u++){q.index>u?(B=q,q=null):B=q.sibling;var w=t(e,q,h[u],k);if(null===w){null===q&&(q=B);break}a&&\nq&&null===w.alternate&&b(e,q);g=f(w,g,u);null===m?l=w:m.sibling=w;m=w;q=B}if(u===h.length)return c(e,q),l;if(null===q){for(;u<h.length;u++)if(q=p(e,h[u],k))g=f(q,g,u),null===m?l=q:m.sibling=q,m=q;return l}for(q=d(e,q);u<h.length;u++)if(B=A(q,e,u,h[u],k))a&&null!==B.alternate&&q.delete(null===B.key?u:B.key),g=f(B,g,u),null===m?l=B:m.sibling=B,m=B;a&&q.forEach(function(a){return b(e,a)});return l}function R(e,g,h,k){var l=hc(h);\"function\"!==typeof l?x(\"150\"):void 0;h=l.call(h);null==h?x(\"151\"):void 0;\nfor(var m=l=null,q=g,u=g=0,B=null,w=h.next();null!==q&&!w.done;u++,w=h.next()){q.index>u?(B=q,q=null):B=q.sibling;var v=t(e,q,w.value,k);if(null===v){q||(q=B);break}a&&q&&null===v.alternate&&b(e,q);g=f(v,g,u);null===m?l=v:m.sibling=v;m=v;q=B}if(w.done)return c(e,q),l;if(null===q){for(;!w.done;u++,w=h.next())w=p(e,w.value,k),null!==w&&(g=f(w,g,u),null===m?l=w:m.sibling=w,m=w);return l}for(q=d(e,q);!w.done;u++,w=h.next())w=A(q,e,u,w.value,k),null!==w&&(a&&null!==w.alternate&&q.delete(null===w.key?u:\nw.key),g=f(w,g,u),null===m?l=w:m.sibling=w,m=w);a&&q.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===Xb&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case Vb:a:{l=f.key;for(k=d;null!==k;){if(k.key===l)if(7===k.tag?f.type===Xb:k.elementType===f.type){c(a,k.sibling);d=e(k,f.type===Xb?f.props.children:f.props,h);d.ref=Af(a,k,f);d.return=a;a=d;break a}else{c(a,k);break}else b(a,k);k=\nk.sibling}f.type===Xb?(d=Ze(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Ye(f.type,f.key,f.props,null,a.mode,h),h.ref=Af(a,d,f),h.return=a,a=h)}return g(a);case Wb:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[],h);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=bf(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\n\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f,h),d.return=a,a=d):(c(a,d),d=af(f,a.mode,h),d.return=a,a=d),g(a);if(zf(f))return v(a,d,f,h);if(hc(f))return R(a,d,f,h);l&&Bf(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 0:h=a.type,x(\"152\",h.displayName||h.name||\"Component\")}return c(a,d)}}var Df=Cf(!0),Ef=Cf(!1),Ff={},N={current:Ff},Gf={current:Ff},Hf={current:Ff};function If(a){a===Ff?x(\"174\"):void 0;return a}\nfunction Jf(a,b){G(Hf,b,a);G(Gf,a,a);G(N,Ff,a);var c=b.nodeType;switch(c){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:he(null,\"\");break;default:c=8===c?b.parentNode:b,b=c.namespaceURI||null,c=c.tagName,b=he(b,c)}F(N,a);G(N,b,a)}function Kf(a){F(N,a);F(Gf,a);F(Hf,a)}function Lf(a){If(Hf.current);var b=If(N.current);var c=he(b,a.type);b!==c&&(G(Gf,a,a),G(N,c,a))}function Mf(a){Gf.current===a&&(F(N,a),F(Gf,a))}\nvar Nf=0,Of=2,Pf=4,Qf=8,Rf=16,Sf=32,Tf=64,Uf=128,Vf=Tb.ReactCurrentDispatcher,Wf=0,Xf=null,O=null,P=null,Yf=null,Q=null,Zf=null,$f=0,ag=null,bg=0,cg=!1,dg=null,eg=0;function fg(){x(\"321\")}function gg(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!bd(a[c],b[c]))return!1;return!0}\nfunction hg(a,b,c,d,e,f){Wf=f;Xf=b;P=null!==a?a.memoizedState:null;Vf.current=null===P?ig:jg;b=c(d,e);if(cg){do cg=!1,eg+=1,P=null!==a?a.memoizedState:null,Zf=Yf,ag=Q=O=null,Vf.current=jg,b=c(d,e);while(cg);dg=null;eg=0}Vf.current=kg;a=Xf;a.memoizedState=Yf;a.expirationTime=$f;a.updateQueue=ag;a.effectTag|=bg;a=null!==O&&null!==O.next;Wf=0;Zf=Q=Yf=P=O=Xf=null;$f=0;ag=null;bg=0;a?x(\"300\"):void 0;return b}function lg(){Vf.current=kg;Wf=0;Zf=Q=Yf=P=O=Xf=null;$f=0;ag=null;bg=0;cg=!1;dg=null;eg=0}\nfunction mg(){var a={memoizedState:null,baseState:null,queue:null,baseUpdate:null,next:null};null===Q?Yf=Q=a:Q=Q.next=a;return Q}function ng(){if(null!==Zf)Q=Zf,Zf=Q.next,O=P,P=null!==O?O.next:null;else{null===P?x(\"310\"):void 0;O=P;var a={memoizedState:O.memoizedState,baseState:O.baseState,queue:O.queue,baseUpdate:O.baseUpdate,next:null};Q=null===Q?Yf=a:Q.next=a;P=O.next}return Q}function og(a,b){return\"function\"===typeof b?b(a):b}\nfunction pg(a){var b=ng(),c=b.queue;null===c?x(\"311\"):void 0;c.lastRenderedReducer=a;if(0<eg){var d=c.dispatch;if(null!==dg){var e=dg.get(c);if(void 0!==e){dg.delete(c);var f=b.memoizedState;do f=a(f,e.action),e=e.next;while(null!==e);bd(f,b.memoizedState)||(qg=!0);b.memoizedState=f;b.baseUpdate===c.last&&(b.baseState=f);c.lastRenderedState=f;return[f,d]}}return[b.memoizedState,d]}d=c.last;var g=b.baseUpdate;f=b.baseState;null!==g?(null!==d&&(d.next=null),d=g.next):d=null!==d?d.next:null;if(null!==\nd){var h=e=null,l=d,k=!1;do{var m=l.expirationTime;m<Wf?(k||(k=!0,h=g,e=f),m>$f&&($f=m)):f=l.eagerReducer===a?l.eagerState:a(f,l.action);g=l;l=l.next}while(null!==l&&l!==d);k||(h=g,e=f);bd(f,b.memoizedState)||(qg=!0);b.memoizedState=f;b.baseUpdate=h;b.baseState=e;c.lastRenderedState=f}return[b.memoizedState,c.dispatch]}\nfunction rg(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};null===ag?(ag={lastEffect:null},ag.lastEffect=a.next=a):(b=ag.lastEffect,null===b?ag.lastEffect=a.next=a:(c=b.next,b.next=a,a.next=c,ag.lastEffect=a));return a}function sg(a,b,c,d){var e=mg();bg|=a;e.memoizedState=rg(b,c,void 0,void 0===d?null:d)}\nfunction tg(a,b,c,d){var e=ng();d=void 0===d?null:d;var f=void 0;if(null!==O){var g=O.memoizedState;f=g.destroy;if(null!==d&&gg(d,g.deps)){rg(Nf,c,f,d);return}}bg|=a;e.memoizedState=rg(b,c,f,d)}function ug(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function vg(){}\nfunction wg(a,b,c){25>eg?void 0:x(\"301\");var d=a.alternate;if(a===Xf||null!==d&&d===Xf)if(cg=!0,a={expirationTime:Wf,action:c,eagerReducer:null,eagerState:null,next:null},null===dg&&(dg=new Map),c=dg.get(b),void 0===c)dg.set(b,a);else{for(b=c;null!==b.next;)b=b.next;b.next=a}else{of();var e=lf();e=mf(e,a);var f={expirationTime:e,action:c,eagerReducer:null,eagerState:null,next:null},g=b.last;if(null===g)f.next=f;else{var h=g.next;null!==h&&(f.next=h);g.next=f}b.last=f;if(0===a.expirationTime&&(null===\nd||0===d.expirationTime)&&(d=b.lastRenderedReducer,null!==d))try{var l=b.lastRenderedState,k=d(l,c);f.eagerReducer=d;f.eagerState=k;if(bd(k,l))return}catch(m){}finally{}qf(a,e)}}\nvar kg={readContext:M,useCallback:fg,useContext:fg,useEffect:fg,useImperativeHandle:fg,useLayoutEffect:fg,useMemo:fg,useReducer:fg,useRef:fg,useState:fg,useDebugValue:fg},ig={readContext:M,useCallback:function(a,b){mg().memoizedState=[a,void 0===b?null:b];return a},useContext:M,useEffect:function(a,b){return sg(516,Uf|Tf,a,b)},useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return sg(4,Pf|Sf,ug.bind(null,b,a),c)},useLayoutEffect:function(a,b){return sg(4,Pf|Sf,a,b)},\nuseMemo:function(a,b){var c=mg();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=mg();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={last:null,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};a=a.dispatch=wg.bind(null,Xf,a);return[d.memoizedState,a]},useRef:function(a){var b=mg();a={current:a};return b.memoizedState=a},useState:function(a){var b=mg();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={last:null,dispatch:null,\nlastRenderedReducer:og,lastRenderedState:a};a=a.dispatch=wg.bind(null,Xf,a);return[b.memoizedState,a]},useDebugValue:vg},jg={readContext:M,useCallback:function(a,b){var c=ng();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&gg(b,d[1]))return d[0];c.memoizedState=[a,b];return a},useContext:M,useEffect:function(a,b){return tg(516,Uf|Tf,a,b)},useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return tg(4,Pf|Sf,ug.bind(null,b,a),c)},useLayoutEffect:function(a,\nb){return tg(4,Pf|Sf,a,b)},useMemo:function(a,b){var c=ng();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&gg(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a},useReducer:pg,useRef:function(){return ng().memoizedState},useState:function(a){return pg(og,a)},useDebugValue:vg},xg=null,yg=null,zg=!1;\nfunction Ag(a,b){var c=K(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.effectTag=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function Bg(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction Cg(a){if(zg){var b=yg;if(b){var c=b;if(!Bg(a,b)){b=De(c);if(!b||!Bg(a,b)){a.effectTag|=2;zg=!1;xg=a;return}Ag(xg,c)}xg=a;yg=Ee(b)}else a.effectTag|=2,zg=!1,xg=a}}function Dg(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&18!==a.tag;)a=a.return;xg=a}function Eg(a){if(a!==xg)return!1;if(!zg)return Dg(a),zg=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!xe(b,a.memoizedProps))for(b=yg;b;)Ag(a,b),b=De(b);Dg(a);yg=xg?De(a.stateNode):null;return!0}function Fg(){yg=xg=null;zg=!1}\nvar Gg=Tb.ReactCurrentOwner,qg=!1;function S(a,b,c,d){b.child=null===a?Ef(b,null,c,d):Df(b,a.child,c,d)}function Hg(a,b,c,d,e){c=c.render;var f=b.ref;Ig(b,e);d=hg(a,b,c,d,f,e);if(null!==a&&!qg)return b.updateQueue=a.updateQueue,b.effectTag&=-517,a.expirationTime<=e&&(a.expirationTime=0),Jg(a,b,e);b.effectTag|=1;S(a,b,d,e);return b.child}\nfunction Kg(a,b,c,d,e,f){if(null===a){var g=c.type;if(\"function\"===typeof g&&!Ve(g)&&void 0===g.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=g,Lg(a,b,g,d,e,f);a=Ye(c.type,null,d,null,b.mode,f);a.ref=b.ref;a.return=b;return b.child=a}g=a.child;if(e<f&&(e=g.memoizedProps,c=c.compare,c=null!==c?c:dd,c(e,d)&&a.ref===b.ref))return Jg(a,b,f);b.effectTag|=1;a=Xe(g,d,f);a.ref=b.ref;a.return=b;return b.child=a}\nfunction Lg(a,b,c,d,e,f){return null!==a&&dd(a.memoizedProps,d)&&a.ref===b.ref&&(qg=!1,e<f)?Jg(a,b,f):Mg(a,b,c,d,f)}function Ng(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.effectTag|=128}function Mg(a,b,c,d,e){var f=J(c)?Ie:H.current;f=Je(b,f);Ig(b,e);c=hg(a,b,c,d,f,e);if(null!==a&&!qg)return b.updateQueue=a.updateQueue,b.effectTag&=-517,a.expirationTime<=e&&(a.expirationTime=0),Jg(a,b,e);b.effectTag|=1;S(a,b,c,e);return b.child}\nfunction Og(a,b,c,d,e){if(J(c)){var f=!0;Oe(b)}else f=!1;Ig(b,e);if(null===b.stateNode)null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2),vf(b,c,d,e),xf(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var l=g.context,k=c.contextType;\"object\"===typeof k&&null!==k?k=M(k):(k=J(c)?Ie:H.current,k=Je(b,k));var m=c.getDerivedStateFromProps,p=\"function\"===typeof m||\"function\"===typeof g.getSnapshotBeforeUpdate;p||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\n\"function\"!==typeof g.componentWillReceiveProps||(h!==d||l!==k)&&wf(b,g,d,k);Pg=!1;var t=b.memoizedState;l=g.state=t;var A=b.updateQueue;null!==A&&(yf(b,A,d,g,e),l=b.memoizedState);h!==d||t!==l||I.current||Pg?(\"function\"===typeof m&&(kf(b,c,m,d),l=b.memoizedState),(h=Pg||uf(b,c,h,d,t,l,k))?(p||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&\ng.UNSAFE_componentWillMount()),\"function\"===typeof g.componentDidMount&&(b.effectTag|=4)):(\"function\"===typeof g.componentDidMount&&(b.effectTag|=4),b.memoizedProps=d,b.memoizedState=l),g.props=d,g.state=l,g.context=k,d=h):(\"function\"===typeof g.componentDidMount&&(b.effectTag|=4),d=!1)}else g=b.stateNode,h=b.memoizedProps,g.props=b.type===b.elementType?h:L(b.type,h),l=g.context,k=c.contextType,\"object\"===typeof k&&null!==k?k=M(k):(k=J(c)?Ie:H.current,k=Je(b,k)),m=c.getDerivedStateFromProps,(p=\"function\"===\ntypeof m||\"function\"===typeof g.getSnapshotBeforeUpdate)||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==d||l!==k)&&wf(b,g,d,k),Pg=!1,l=b.memoizedState,t=g.state=l,A=b.updateQueue,null!==A&&(yf(b,A,d,g,e),t=b.memoizedState),h!==d||l!==t||I.current||Pg?(\"function\"===typeof m&&(kf(b,c,m,d),t=b.memoizedState),(m=Pg||uf(b,c,h,d,l,t,k))?(p||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===\ntypeof g.componentWillUpdate&&g.componentWillUpdate(d,t,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&g.UNSAFE_componentWillUpdate(d,t,k)),\"function\"===typeof g.componentDidUpdate&&(b.effectTag|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.effectTag|=256)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&l===a.memoizedState||(b.effectTag|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&l===a.memoizedState||(b.effectTag|=256),b.memoizedProps=d,b.memoizedState=\nt),g.props=d,g.state=t,g.context=k,d=m):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&l===a.memoizedState||(b.effectTag|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&l===a.memoizedState||(b.effectTag|=256),d=!1);return Qg(a,b,c,d,f,e)}\nfunction Qg(a,b,c,d,e,f){Ng(a,b);var g=0!==(b.effectTag&64);if(!d&&!g)return e&&Pe(b,c,!1),Jg(a,b,f);d=b.stateNode;Gg.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.effectTag|=1;null!==a&&g?(b.child=Df(b,a.child,null,f),b.child=Df(b,null,h,f)):S(a,b,h,f);b.memoizedState=d.state;e&&Pe(b,c,!0);return b.child}function Rg(a){var b=a.stateNode;b.pendingContext?Me(a,b.pendingContext,b.pendingContext!==b.context):b.context&&Me(a,b.context,!1);Jf(a,b.containerInfo)}\nfunction Sg(a,b,c){var d=b.mode,e=b.pendingProps,f=b.memoizedState;if(0===(b.effectTag&64)){f=null;var g=!1}else f={timedOutAt:null!==f?f.timedOutAt:0},g=!0,b.effectTag&=-65;if(null===a)if(g){var h=e.fallback;a=Ze(null,d,0,null);0===(b.mode&1)&&(a.child=null!==b.memoizedState?b.child.child:b.child);d=Ze(h,d,c,null);a.sibling=d;c=a;c.return=d.return=b}else c=d=Ef(b,null,e.children,c);else null!==a.memoizedState?(d=a.child,h=d.sibling,g?(c=e.fallback,e=Xe(d,d.pendingProps,0),0===(b.mode&1)&&(g=null!==\nb.memoizedState?b.child.child:b.child,g!==d.child&&(e.child=g)),d=e.sibling=Xe(h,c,h.expirationTime),c=e,e.childExpirationTime=0,c.return=d.return=b):c=d=Df(b,d.child,e.children,c)):(h=a.child,g?(g=e.fallback,e=Ze(null,d,0,null),e.child=h,0===(b.mode&1)&&(e.child=null!==b.memoizedState?b.child.child:b.child),d=e.sibling=Ze(g,d,c,null),d.effectTag|=2,c=e,e.childExpirationTime=0,c.return=d.return=b):d=c=Df(b,h,e.children,c)),b.stateNode=a.stateNode;b.memoizedState=f;b.child=c;return d}\nfunction Jg(a,b,c){null!==a&&(b.contextDependencies=a.contextDependencies);if(b.childExpirationTime<c)return null;null!==a&&b.child!==a.child?x(\"153\"):void 0;if(null!==b.child){a=b.child;c=Xe(a,a.pendingProps,a.expirationTime);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=Xe(a,a.pendingProps,a.expirationTime),c.return=b;c.sibling=null}return b.child}\nfunction Tg(a,b,c){var d=b.expirationTime;if(null!==a)if(a.memoizedProps!==b.pendingProps||I.current)qg=!0;else{if(d<c){qg=!1;switch(b.tag){case 3:Rg(b);Fg();break;case 5:Lf(b);break;case 1:J(b.type)&&Oe(b);break;case 4:Jf(b,b.stateNode.containerInfo);break;case 10:Ug(b,b.memoizedProps.value);break;case 13:if(null!==b.memoizedState){d=b.child.childExpirationTime;if(0!==d&&d>=c)return Sg(a,b,c);b=Jg(a,b,c);return null!==b?b.sibling:null}}return Jg(a,b,c)}}else qg=!1;b.expirationTime=0;switch(b.tag){case 2:d=\nb.elementType;null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2);a=b.pendingProps;var e=Je(b,H.current);Ig(b,c);e=hg(null,b,d,a,e,c);b.effectTag|=1;if(\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;lg();if(J(d)){var f=!0;Oe(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;var g=d.getDerivedStateFromProps;\"function\"===typeof g&&kf(b,d,g,a);e.updater=tf;b.stateNode=e;e._reactInternalFiber=b;xf(b,d,a,c);b=Qg(null,b,d,!0,f,\nc)}else b.tag=0,S(null,b,e,c),b=b.child;return b;case 16:e=b.elementType;null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2);f=b.pendingProps;a=hf(e);b.type=a;e=b.tag=We(a);f=L(a,f);g=void 0;switch(e){case 0:g=Mg(null,b,a,f,c);break;case 1:g=Og(null,b,a,f,c);break;case 11:g=Hg(null,b,a,f,c);break;case 14:g=Kg(null,b,a,L(a.type,f),d,c);break;default:x(\"306\",a,\"\")}return g;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:L(d,e),Mg(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,\ne=b.elementType===d?e:L(d,e),Og(a,b,d,e,c);case 3:Rg(b);d=b.updateQueue;null===d?x(\"282\"):void 0;e=b.memoizedState;e=null!==e?e.element:null;yf(b,d,b.pendingProps,null,c);d=b.memoizedState.element;if(d===e)Fg(),b=Jg(a,b,c);else{e=b.stateNode;if(e=(null===a||null===a.child)&&e.hydrate)yg=Ee(b.stateNode.containerInfo),xg=b,e=zg=!0;e?(b.effectTag|=2,b.child=Ef(b,null,d,c)):(S(a,b,d,c),Fg());b=b.child}return b;case 5:return Lf(b),null===a&&Cg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,\ng=e.children,xe(d,e)?g=null:null!==f&&xe(d,f)&&(b.effectTag|=16),Ng(a,b),1!==c&&b.mode&1&&e.hidden?(b.expirationTime=b.childExpirationTime=1,b=null):(S(a,b,g,c),b=b.child),b;case 6:return null===a&&Cg(b),null;case 13:return Sg(a,b,c);case 4:return Jf(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Df(b,null,d,c):S(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:L(d,e),Hg(a,b,d,e,c);case 7:return S(a,b,b.pendingProps,c),b.child;case 8:return S(a,b,b.pendingProps.children,\nc),b.child;case 12:return S(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;g=b.memoizedProps;f=e.value;Ug(b,f);if(null!==g){var h=g.value;f=bd(h,f)?0:(\"function\"===typeof d._calculateChangedBits?d._calculateChangedBits(h,f):1073741823)|0;if(0===f){if(g.children===e.children&&!I.current){b=Jg(a,b,c);break a}}else for(h=b.child,null!==h&&(h.return=b);null!==h;){var l=h.contextDependencies;if(null!==l){g=h.child;for(var k=l.first;null!==k;){if(k.context===d&&0!==\n(k.observedBits&f)){1===h.tag&&(k=nf(c),k.tag=sf,pf(h,k));h.expirationTime<c&&(h.expirationTime=c);k=h.alternate;null!==k&&k.expirationTime<c&&(k.expirationTime=c);k=c;for(var m=h.return;null!==m;){var p=m.alternate;if(m.childExpirationTime<k)m.childExpirationTime=k,null!==p&&p.childExpirationTime<k&&(p.childExpirationTime=k);else if(null!==p&&p.childExpirationTime<k)p.childExpirationTime=k;else break;m=m.return}l.expirationTime<c&&(l.expirationTime=c);break}k=k.next}}else g=10===h.tag?h.type===b.type?\nnull:h.child:h.child;if(null!==g)g.return=h;else for(g=h;null!==g;){if(g===b){g=null;break}h=g.sibling;if(null!==h){h.return=g.return;g=h;break}g=g.return}h=g}}S(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,f=b.pendingProps,d=f.children,Ig(b,c),e=M(e,f.unstable_observedBits),d=d(e),b.effectTag|=1,S(a,b,d,c),b.child;case 14:return e=b.type,f=L(e,b.pendingProps),f=L(e.type,f),Kg(a,b,e,f,d,c);case 15:return Lg(a,b,b.type,b.pendingProps,d,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===\nd?e:L(d,e),null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2),b.tag=1,J(d)?(a=!0,Oe(b)):a=!1,Ig(b,c),vf(b,d,e,c),xf(b,d,e,c),Qg(null,b,d,!0,a,c)}x(\"156\")}var Vg={current:null},Wg=null,Xg=null,Yg=null;function Ug(a,b){var c=a.type._context;G(Vg,c._currentValue,a);c._currentValue=b}function Zg(a){var b=Vg.current;F(Vg,a);a.type._context._currentValue=b}function Ig(a,b){Wg=a;Yg=Xg=null;var c=a.contextDependencies;null!==c&&c.expirationTime>=b&&(qg=!0);a.contextDependencies=null}\nfunction M(a,b){if(Yg!==a&&!1!==b&&0!==b){if(\"number\"!==typeof b||1073741823===b)Yg=a,b=1073741823;b={context:a,observedBits:b,next:null};null===Xg?(null===Wg?x(\"308\"):void 0,Xg=b,Wg.contextDependencies={first:b,expirationTime:0}):Xg=Xg.next=b}return a._currentValue}var $g=0,rf=1,sf=2,ah=3,Pg=!1;function bh(a){return{baseState:a,firstUpdate:null,lastUpdate:null,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}\nfunction ch(a){return{baseState:a.baseState,firstUpdate:a.firstUpdate,lastUpdate:a.lastUpdate,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function nf(a){return{expirationTime:a,tag:$g,payload:null,callback:null,next:null,nextEffect:null}}function dh(a,b){null===a.lastUpdate?a.firstUpdate=a.lastUpdate=b:(a.lastUpdate.next=b,a.lastUpdate=b)}\nfunction pf(a,b){var c=a.alternate;if(null===c){var d=a.updateQueue;var e=null;null===d&&(d=a.updateQueue=bh(a.memoizedState))}else d=a.updateQueue,e=c.updateQueue,null===d?null===e?(d=a.updateQueue=bh(a.memoizedState),e=c.updateQueue=bh(c.memoizedState)):d=a.updateQueue=ch(e):null===e&&(e=c.updateQueue=ch(d));null===e||d===e?dh(d,b):null===d.lastUpdate||null===e.lastUpdate?(dh(d,b),dh(e,b)):(dh(d,b),e.lastUpdate=b)}\nfunction eh(a,b){var c=a.updateQueue;c=null===c?a.updateQueue=bh(a.memoizedState):fh(a,c);null===c.lastCapturedUpdate?c.firstCapturedUpdate=c.lastCapturedUpdate=b:(c.lastCapturedUpdate.next=b,c.lastCapturedUpdate=b)}function fh(a,b){var c=a.alternate;null!==c&&b===c.updateQueue&&(b=a.updateQueue=ch(b));return b}\nfunction gh(a,b,c,d,e,f){switch(c.tag){case rf:return a=c.payload,\"function\"===typeof a?a.call(f,d,e):a;case ah:a.effectTag=a.effectTag&-2049|64;case $g:a=c.payload;e=\"function\"===typeof a?a.call(f,d,e):a;if(null===e||void 0===e)break;return n({},d,e);case sf:Pg=!0}return d}\nfunction yf(a,b,c,d,e){Pg=!1;b=fh(a,b);for(var f=b.baseState,g=null,h=0,l=b.firstUpdate,k=f;null!==l;){var m=l.expirationTime;m<e?(null===g&&(g=l,f=k),h<m&&(h=m)):(k=gh(a,b,l,k,c,d),null!==l.callback&&(a.effectTag|=32,l.nextEffect=null,null===b.lastEffect?b.firstEffect=b.lastEffect=l:(b.lastEffect.nextEffect=l,b.lastEffect=l)));l=l.next}m=null;for(l=b.firstCapturedUpdate;null!==l;){var p=l.expirationTime;p<e?(null===m&&(m=l,null===g&&(f=k)),h<p&&(h=p)):(k=gh(a,b,l,k,c,d),null!==l.callback&&(a.effectTag|=\n32,l.nextEffect=null,null===b.lastCapturedEffect?b.firstCapturedEffect=b.lastCapturedEffect=l:(b.lastCapturedEffect.nextEffect=l,b.lastCapturedEffect=l)));l=l.next}null===g&&(b.lastUpdate=null);null===m?b.lastCapturedUpdate=null:a.effectTag|=32;null===g&&null===m&&(f=k);b.baseState=f;b.firstUpdate=g;b.firstCapturedUpdate=m;a.expirationTime=h;a.memoizedState=k}\nfunction hh(a,b,c){null!==b.firstCapturedUpdate&&(null!==b.lastUpdate&&(b.lastUpdate.next=b.firstCapturedUpdate,b.lastUpdate=b.lastCapturedUpdate),b.firstCapturedUpdate=b.lastCapturedUpdate=null);ih(b.firstEffect,c);b.firstEffect=b.lastEffect=null;ih(b.firstCapturedEffect,c);b.firstCapturedEffect=b.lastCapturedEffect=null}function ih(a,b){for(;null!==a;){var c=a.callback;if(null!==c){a.callback=null;var d=b;\"function\"!==typeof c?x(\"191\",c):void 0;c.call(d)}a=a.nextEffect}}\nfunction jh(a,b){return{value:a,source:b,stack:jc(b)}}function kh(a){a.effectTag|=4}var lh=void 0,mh=void 0,nh=void 0,oh=void 0;lh=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};mh=function(){};\nnh=function(a,b,c,d,e){var f=a.memoizedProps;if(f!==d){var g=b.stateNode;If(N.current);a=null;switch(c){case \"input\":f=vc(g,f);d=vc(g,d);a=[];break;case \"option\":f=$d(g,f);d=$d(g,d);a=[];break;case \"select\":f=n({},f,{value:void 0});d=n({},d,{value:void 0});a=[];break;case \"textarea\":f=be(g,f);d=be(g,d);a=[];break;default:\"function\"!==typeof f.onClick&&\"function\"===typeof d.onClick&&(g.onclick=te)}qe(c,d);g=c=void 0;var h=null;for(c in f)if(!d.hasOwnProperty(c)&&f.hasOwnProperty(c)&&null!=f[c])if(\"style\"===\nc){var l=f[c];for(g in l)l.hasOwnProperty(g)&&(h||(h={}),h[g]=\"\")}else\"dangerouslySetInnerHTML\"!==c&&\"children\"!==c&&\"suppressContentEditableWarning\"!==c&&\"suppressHydrationWarning\"!==c&&\"autoFocus\"!==c&&(ra.hasOwnProperty(c)?a||(a=[]):(a=a||[]).push(c,null));for(c in d){var k=d[c];l=null!=f?f[c]:void 0;if(d.hasOwnProperty(c)&&k!==l&&(null!=k||null!=l))if(\"style\"===c)if(l){for(g in l)!l.hasOwnProperty(g)||k&&k.hasOwnProperty(g)||(h||(h={}),h[g]=\"\");for(g in k)k.hasOwnProperty(g)&&l[g]!==k[g]&&(h||\n(h={}),h[g]=k[g])}else h||(a||(a=[]),a.push(c,h)),h=k;else\"dangerouslySetInnerHTML\"===c?(k=k?k.__html:void 0,l=l?l.__html:void 0,null!=k&&l!==k&&(a=a||[]).push(c,\"\"+k)):\"children\"===c?l===k||\"string\"!==typeof k&&\"number\"!==typeof k||(a=a||[]).push(c,\"\"+k):\"suppressContentEditableWarning\"!==c&&\"suppressHydrationWarning\"!==c&&(ra.hasOwnProperty(c)?(null!=k&&se(e,c),a||l===k||(a=[])):(a=a||[]).push(c,k))}h&&(a=a||[]).push(\"style\",h);e=a;(b.updateQueue=e)&&kh(b)}};oh=function(a,b,c,d){c!==d&&kh(b)};\nvar ph=\"function\"===typeof WeakSet?WeakSet:Set;function qh(a,b){var c=b.source,d=b.stack;null===d&&null!==c&&(d=jc(c));null!==c&&ic(c.type);b=b.value;null!==a&&1===a.tag&&ic(a.type);try{console.error(b)}catch(e){setTimeout(function(){throw e;})}}function rh(a){var b=a.ref;if(null!==b)if(\"function\"===typeof b)try{b(null)}catch(c){sh(a,c)}else b.current=null}\nfunction th(a,b,c){c=c.updateQueue;c=null!==c?c.lastEffect:null;if(null!==c){var d=c=c.next;do{if((d.tag&a)!==Nf){var e=d.destroy;d.destroy=void 0;void 0!==e&&e()}(d.tag&b)!==Nf&&(e=d.create,d.destroy=e());d=d.next}while(d!==c)}}\nfunction uh(a,b){for(var c=a;;){if(5===c.tag){var d=c.stateNode;if(b)d.style.display=\"none\";else{d=c.stateNode;var e=c.memoizedProps.style;e=void 0!==e&&null!==e&&e.hasOwnProperty(\"display\")?e.display:null;d.style.display=ne(\"display\",e)}}else if(6===c.tag)c.stateNode.nodeValue=b?\"\":c.memoizedProps;else if(13===c.tag&&null!==c.memoizedState){d=c.child.sibling;d.return=c;c=d;continue}else if(null!==c.child){c.child.return=c;c=c.child;continue}if(c===a)break;for(;null===c.sibling;){if(null===c.return||\nc.return===a)return;c=c.return}c.sibling.return=c.return;c=c.sibling}}\nfunction vh(a){\"function\"===typeof Re&&Re(a);switch(a.tag){case 0:case 11:case 14:case 15:var b=a.updateQueue;if(null!==b&&(b=b.lastEffect,null!==b)){var c=b=b.next;do{var d=c.destroy;if(void 0!==d){var e=a;try{d()}catch(f){sh(e,f)}}c=c.next}while(c!==b)}break;case 1:rh(a);b=a.stateNode;if(\"function\"===typeof b.componentWillUnmount)try{b.props=a.memoizedProps,b.state=a.memoizedState,b.componentWillUnmount()}catch(f){sh(a,f)}break;case 5:rh(a);break;case 4:wh(a)}}\nfunction xh(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction yh(a){a:{for(var b=a.return;null!==b;){if(xh(b)){var c=b;break a}b=b.return}x(\"160\");c=void 0}var d=b=void 0;switch(c.tag){case 5:b=c.stateNode;d=!1;break;case 3:b=c.stateNode.containerInfo;d=!0;break;case 4:b=c.stateNode.containerInfo;d=!0;break;default:x(\"161\")}c.effectTag&16&&(ke(b,\"\"),c.effectTag&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||xh(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.effectTag&\n2)continue b;if(null===c.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.effectTag&2)){c=c.stateNode;break a}}for(var e=a;;){if(5===e.tag||6===e.tag)if(c)if(d){var f=b,g=e.stateNode,h=c;8===f.nodeType?f.parentNode.insertBefore(g,h):f.insertBefore(g,h)}else b.insertBefore(e.stateNode,c);else d?(g=b,h=e.stateNode,8===g.nodeType?(f=g.parentNode,f.insertBefore(h,g)):(f=g,f.appendChild(h)),g=g._reactRootContainer,null!==g&&void 0!==g||null!==f.onclick||(f.onclick=te)):b.appendChild(e.stateNode);\nelse if(4!==e.tag&&null!==e.child){e.child.return=e;e=e.child;continue}if(e===a)break;for(;null===e.sibling;){if(null===e.return||e.return===a)return;e=e.return}e.sibling.return=e.return;e=e.sibling}}\nfunction wh(a){for(var b=a,c=!1,d=void 0,e=void 0;;){if(!c){c=b.return;a:for(;;){null===c?x(\"160\"):void 0;switch(c.tag){case 5:d=c.stateNode;e=!1;break a;case 3:d=c.stateNode.containerInfo;e=!0;break a;case 4:d=c.stateNode.containerInfo;e=!0;break a}c=c.return}c=!0}if(5===b.tag||6===b.tag){a:for(var f=b,g=f;;)if(vh(g),null!==g.child&&4!==g.tag)g.child.return=g,g=g.child;else{if(g===f)break;for(;null===g.sibling;){if(null===g.return||g.return===f)break a;g=g.return}g.sibling.return=g.return;g=g.sibling}e?\n(f=d,g=b.stateNode,8===f.nodeType?f.parentNode.removeChild(g):f.removeChild(g)):d.removeChild(b.stateNode)}else if(4===b.tag){if(null!==b.child){d=b.stateNode.containerInfo;e=!0;b.child.return=b;b=b.child;continue}}else if(vh(b),null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return;b=b.return;4===b.tag&&(c=!1)}b.sibling.return=b.return;b=b.sibling}}\nfunction zh(a,b){switch(b.tag){case 0:case 11:case 14:case 15:th(Pf,Qf,b);break;case 1:break;case 5:var c=b.stateNode;if(null!=c){var d=b.memoizedProps;a=null!==a?a.memoizedProps:d;var e=b.type,f=b.updateQueue;b.updateQueue=null;null!==f&&Ce(c,f,e,a,d,b)}break;case 6:null===b.stateNode?x(\"162\"):void 0;b.stateNode.nodeValue=b.memoizedProps;break;case 3:break;case 12:break;case 13:c=b.memoizedState;d=void 0;a=b;null===c?d=!1:(d=!0,a=b.child,0===c.timedOutAt&&(c.timedOutAt=lf()));null!==a&&uh(a,d);c=\nb.updateQueue;if(null!==c){b.updateQueue=null;var g=b.stateNode;null===g&&(g=b.stateNode=new ph);c.forEach(function(a){var c=Ah.bind(null,b,a);g.has(a)||(g.add(a),a.then(c,c))})}break;case 17:break;default:x(\"163\")}}var Bh=\"function\"===typeof WeakMap?WeakMap:Map;function Ch(a,b,c){c=nf(c);c.tag=ah;c.payload={element:null};var d=b.value;c.callback=function(){Dh(d);qh(a,b)};return c}\nfunction Eh(a,b,c){c=nf(c);c.tag=ah;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){return d(e)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){\"function\"!==typeof d&&(null===Fh?Fh=new Set([this]):Fh.add(this));var c=b.value,e=b.stack;qh(a,b);this.componentDidCatch(c,{componentStack:null!==e?e:\"\"})});return c}\nfunction Gh(a){switch(a.tag){case 1:J(a.type)&&Ke(a);var b=a.effectTag;return b&2048?(a.effectTag=b&-2049|64,a):null;case 3:return Kf(a),Le(a),b=a.effectTag,0!==(b&64)?x(\"285\"):void 0,a.effectTag=b&-2049|64,a;case 5:return Mf(a),null;case 13:return b=a.effectTag,b&2048?(a.effectTag=b&-2049|64,a):null;case 18:return null;case 4:return Kf(a),null;case 10:return Zg(a),null;default:return null}}\nvar Hh=Tb.ReactCurrentDispatcher,Ih=Tb.ReactCurrentOwner,Jh=1073741822,Kh=!1,T=null,Lh=null,U=0,Mh=-1,Nh=!1,V=null,Oh=!1,Ph=null,Qh=null,Rh=null,Fh=null;function Sh(){if(null!==T)for(var a=T.return;null!==a;){var b=a;switch(b.tag){case 1:var c=b.type.childContextTypes;null!==c&&void 0!==c&&Ke(b);break;case 3:Kf(b);Le(b);break;case 5:Mf(b);break;case 4:Kf(b);break;case 10:Zg(b)}a=a.return}Lh=null;U=0;Mh=-1;Nh=!1;T=null}\nfunction Th(){for(;null!==V;){var a=V.effectTag;a&16&&ke(V.stateNode,\"\");if(a&128){var b=V.alternate;null!==b&&(b=b.ref,null!==b&&(\"function\"===typeof b?b(null):b.current=null))}switch(a&14){case 2:yh(V);V.effectTag&=-3;break;case 6:yh(V);V.effectTag&=-3;zh(V.alternate,V);break;case 4:zh(V.alternate,V);break;case 8:a=V,wh(a),a.return=null,a.child=null,a.memoizedState=null,a.updateQueue=null,a=a.alternate,null!==a&&(a.return=null,a.child=null,a.memoizedState=null,a.updateQueue=null)}V=V.nextEffect}}\nfunction Uh(){for(;null!==V;){if(V.effectTag&256)a:{var a=V.alternate,b=V;switch(b.tag){case 0:case 11:case 15:th(Of,Nf,b);break a;case 1:if(b.effectTag&256&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===b.type?c:L(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}break a;case 3:case 5:case 6:case 4:case 17:break a;default:x(\"163\")}}V=V.nextEffect}}\nfunction Vh(a,b){for(;null!==V;){var c=V.effectTag;if(c&36){var d=V.alternate,e=V,f=b;switch(e.tag){case 0:case 11:case 15:th(Rf,Sf,e);break;case 1:var g=e.stateNode;if(e.effectTag&4)if(null===d)g.componentDidMount();else{var h=e.elementType===e.type?d.memoizedProps:L(e.type,d.memoizedProps);g.componentDidUpdate(h,d.memoizedState,g.__reactInternalSnapshotBeforeUpdate)}d=e.updateQueue;null!==d&&hh(e,d,g,f);break;case 3:d=e.updateQueue;if(null!==d){g=null;if(null!==e.child)switch(e.child.tag){case 5:g=\ne.child.stateNode;break;case 1:g=e.child.stateNode}hh(e,d,g,f)}break;case 5:f=e.stateNode;null===d&&e.effectTag&4&&we(e.type,e.memoizedProps)&&f.focus();break;case 6:break;case 4:break;case 12:break;case 13:break;case 17:break;default:x(\"163\")}}c&128&&(e=V.ref,null!==e&&(f=V.stateNode,\"function\"===typeof e?e(f):e.current=f));c&512&&(Ph=a);V=V.nextEffect}}\nfunction Wh(a,b){Rh=Qh=Ph=null;var c=W;W=!0;do{if(b.effectTag&512){var d=!1,e=void 0;try{var f=b;th(Uf,Nf,f);th(Nf,Tf,f)}catch(g){d=!0,e=g}d&&sh(b,e)}b=b.nextEffect}while(null!==b);W=c;c=a.expirationTime;0!==c&&Xh(a,c);X||W||Yh(1073741823,!1)}function of(){null!==Qh&&Be(Qh);null!==Rh&&Rh()}\nfunction Zh(a,b){Oh=Kh=!0;a.current===b?x(\"177\"):void 0;var c=a.pendingCommitExpirationTime;0===c?x(\"261\"):void 0;a.pendingCommitExpirationTime=0;var d=b.expirationTime,e=b.childExpirationTime;ef(a,e>d?e:d);Ih.current=null;d=void 0;1<b.effectTag?null!==b.lastEffect?(b.lastEffect.nextEffect=b,d=b.firstEffect):d=b:d=b.firstEffect;ue=Bd;ve=Pd();Bd=!1;for(V=d;null!==V;){e=!1;var f=void 0;try{Uh()}catch(h){e=!0,f=h}e&&(null===V?x(\"178\"):void 0,sh(V,f),null!==V&&(V=V.nextEffect))}for(V=d;null!==V;){e=!1;\nf=void 0;try{Th()}catch(h){e=!0,f=h}e&&(null===V?x(\"178\"):void 0,sh(V,f),null!==V&&(V=V.nextEffect))}Qd(ve);ve=null;Bd=!!ue;ue=null;a.current=b;for(V=d;null!==V;){e=!1;f=void 0;try{Vh(a,c)}catch(h){e=!0,f=h}e&&(null===V?x(\"178\"):void 0,sh(V,f),null!==V&&(V=V.nextEffect))}if(null!==d&&null!==Ph){var g=Wh.bind(null,a,d);Qh=r.unstable_runWithPriority(r.unstable_NormalPriority,function(){return Ae(g)});Rh=g}Kh=Oh=!1;\"function\"===typeof Qe&&Qe(b.stateNode);c=b.expirationTime;b=b.childExpirationTime;b=\nb>c?b:c;0===b&&(Fh=null);$h(a,b)}\nfunction ai(a){for(;;){var b=a.alternate,c=a.return,d=a.sibling;if(0===(a.effectTag&1024)){T=a;a:{var e=b;b=a;var f=U;var g=b.pendingProps;switch(b.tag){case 2:break;case 16:break;case 15:case 0:break;case 1:J(b.type)&&Ke(b);break;case 3:Kf(b);Le(b);g=b.stateNode;g.pendingContext&&(g.context=g.pendingContext,g.pendingContext=null);if(null===e||null===e.child)Eg(b),b.effectTag&=-3;mh(b);break;case 5:Mf(b);var h=If(Hf.current);f=b.type;if(null!==e&&null!=b.stateNode)nh(e,b,f,g,h),e.ref!==b.ref&&(b.effectTag|=\n128);else if(g){var l=If(N.current);if(Eg(b)){g=b;e=g.stateNode;var k=g.type,m=g.memoizedProps,p=h;e[Fa]=g;e[Ga]=m;f=void 0;h=k;switch(h){case \"iframe\":case \"object\":E(\"load\",e);break;case \"video\":case \"audio\":for(k=0;k<ab.length;k++)E(ab[k],e);break;case \"source\":E(\"error\",e);break;case \"img\":case \"image\":case \"link\":E(\"error\",e);E(\"load\",e);break;case \"form\":E(\"reset\",e);E(\"submit\",e);break;case \"details\":E(\"toggle\",e);break;case \"input\":wc(e,m);E(\"invalid\",e);se(p,\"onChange\");break;case \"select\":e._wrapperState=\n{wasMultiple:!!m.multiple};E(\"invalid\",e);se(p,\"onChange\");break;case \"textarea\":ce(e,m),E(\"invalid\",e),se(p,\"onChange\")}qe(h,m);k=null;for(f in m)m.hasOwnProperty(f)&&(l=m[f],\"children\"===f?\"string\"===typeof l?e.textContent!==l&&(k=[\"children\",l]):\"number\"===typeof l&&e.textContent!==\"\"+l&&(k=[\"children\",\"\"+l]):ra.hasOwnProperty(f)&&null!=l&&se(p,f));switch(h){case \"input\":Rb(e);Ac(e,m,!0);break;case \"textarea\":Rb(e);ee(e,m);break;case \"select\":case \"option\":break;default:\"function\"===typeof m.onClick&&\n(e.onclick=te)}f=k;g.updateQueue=f;g=null!==f?!0:!1;g&&kh(b)}else{m=b;p=f;e=g;k=9===h.nodeType?h:h.ownerDocument;l===fe.html&&(l=ge(p));l===fe.html?\"script\"===p?(e=k.createElement(\"div\"),e.innerHTML=\"<script>\\x3c/script>\",k=e.removeChild(e.firstChild)):\"string\"===typeof e.is?k=k.createElement(p,{is:e.is}):(k=k.createElement(p),\"select\"===p&&(p=k,e.multiple?p.multiple=!0:e.size&&(p.size=e.size))):k=k.createElementNS(l,p);e=k;e[Fa]=m;e[Ga]=g;lh(e,b,!1,!1);p=e;k=f;m=g;var t=h,A=re(k,m);switch(k){case \"iframe\":case \"object\":E(\"load\",\np);h=m;break;case \"video\":case \"audio\":for(h=0;h<ab.length;h++)E(ab[h],p);h=m;break;case \"source\":E(\"error\",p);h=m;break;case \"img\":case \"image\":case \"link\":E(\"error\",p);E(\"load\",p);h=m;break;case \"form\":E(\"reset\",p);E(\"submit\",p);h=m;break;case \"details\":E(\"toggle\",p);h=m;break;case \"input\":wc(p,m);h=vc(p,m);E(\"invalid\",p);se(t,\"onChange\");break;case \"option\":h=$d(p,m);break;case \"select\":p._wrapperState={wasMultiple:!!m.multiple};h=n({},m,{value:void 0});E(\"invalid\",p);se(t,\"onChange\");break;case \"textarea\":ce(p,\nm);h=be(p,m);E(\"invalid\",p);se(t,\"onChange\");break;default:h=m}qe(k,h);l=void 0;var v=k,R=p,u=h;for(l in u)if(u.hasOwnProperty(l)){var q=u[l];\"style\"===l?oe(R,q):\"dangerouslySetInnerHTML\"===l?(q=q?q.__html:void 0,null!=q&&je(R,q)):\"children\"===l?\"string\"===typeof q?(\"textarea\"!==v||\"\"!==q)&&ke(R,q):\"number\"===typeof q&&ke(R,\"\"+q):\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&\"autoFocus\"!==l&&(ra.hasOwnProperty(l)?null!=q&&se(t,l):null!=q&&tc(R,l,q,A))}switch(k){case \"input\":Rb(p);\nAc(p,m,!1);break;case \"textarea\":Rb(p);ee(p,m);break;case \"option\":null!=m.value&&p.setAttribute(\"value\",\"\"+uc(m.value));break;case \"select\":h=p;h.multiple=!!m.multiple;p=m.value;null!=p?ae(h,!!m.multiple,p,!1):null!=m.defaultValue&&ae(h,!!m.multiple,m.defaultValue,!0);break;default:\"function\"===typeof h.onClick&&(p.onclick=te)}(g=we(f,g))&&kh(b);b.stateNode=e}null!==b.ref&&(b.effectTag|=128)}else null===b.stateNode?x(\"166\"):void 0;break;case 6:e&&null!=b.stateNode?oh(e,b,e.memoizedProps,g):(\"string\"!==\ntypeof g&&(null===b.stateNode?x(\"166\"):void 0),e=If(Hf.current),If(N.current),Eg(b)?(g=b,f=g.stateNode,e=g.memoizedProps,f[Fa]=g,(g=f.nodeValue!==e)&&kh(b)):(f=b,g=(9===e.nodeType?e:e.ownerDocument).createTextNode(g),g[Fa]=b,f.stateNode=g));break;case 11:break;case 13:g=b.memoizedState;if(0!==(b.effectTag&64)){b.expirationTime=f;T=b;break a}g=null!==g;f=null!==e&&null!==e.memoizedState;null!==e&&!g&&f&&(e=e.child.sibling,null!==e&&(h=b.firstEffect,null!==h?(b.firstEffect=e,e.nextEffect=h):(b.firstEffect=\nb.lastEffect=e,e.nextEffect=null),e.effectTag=8));if(g||f)b.effectTag|=4;break;case 7:break;case 8:break;case 12:break;case 4:Kf(b);mh(b);break;case 10:Zg(b);break;case 9:break;case 14:break;case 17:J(b.type)&&Ke(b);break;case 18:break;default:x(\"156\")}T=null}b=a;if(1===U||1!==b.childExpirationTime){g=0;for(f=b.child;null!==f;)e=f.expirationTime,h=f.childExpirationTime,e>g&&(g=e),h>g&&(g=h),f=f.sibling;b.childExpirationTime=g}if(null!==T)return T;null!==c&&0===(c.effectTag&1024)&&(null===c.firstEffect&&\n(c.firstEffect=a.firstEffect),null!==a.lastEffect&&(null!==c.lastEffect&&(c.lastEffect.nextEffect=a.firstEffect),c.lastEffect=a.lastEffect),1<a.effectTag&&(null!==c.lastEffect?c.lastEffect.nextEffect=a:c.firstEffect=a,c.lastEffect=a))}else{a=Gh(a,U);if(null!==a)return a.effectTag&=1023,a;null!==c&&(c.firstEffect=c.lastEffect=null,c.effectTag|=1024)}if(null!==d)return d;if(null!==c)a=c;else break}return null}\nfunction bi(a){var b=Tg(a.alternate,a,U);a.memoizedProps=a.pendingProps;null===b&&(b=ai(a));Ih.current=null;return b}\nfunction ci(a,b){Kh?x(\"243\"):void 0;of();Kh=!0;var c=Hh.current;Hh.current=kg;var d=a.nextExpirationTimeToWorkOn;if(d!==U||a!==Lh||null===T)Sh(),Lh=a,U=d,T=Xe(Lh.current,null,U),a.pendingCommitExpirationTime=0;var e=!1;do{try{if(b)for(;null!==T&&!di();)T=bi(T);else for(;null!==T;)T=bi(T)}catch(u){if(Yg=Xg=Wg=null,lg(),null===T)e=!0,Dh(u);else{null===T?x(\"271\"):void 0;var f=T,g=f.return;if(null===g)e=!0,Dh(u);else{a:{var h=a,l=g,k=f,m=u;g=U;k.effectTag|=1024;k.firstEffect=k.lastEffect=null;if(null!==\nm&&\"object\"===typeof m&&\"function\"===typeof m.then){var p=m;m=l;var t=-1,A=-1;do{if(13===m.tag){var v=m.alternate;if(null!==v&&(v=v.memoizedState,null!==v)){A=10*(1073741822-v.timedOutAt);break}v=m.pendingProps.maxDuration;if(\"number\"===typeof v)if(0>=v)t=0;else if(-1===t||v<t)t=v}m=m.return}while(null!==m);m=l;do{if(v=13===m.tag)v=void 0===m.memoizedProps.fallback?!1:null===m.memoizedState;if(v){l=m.updateQueue;null===l?(l=new Set,l.add(p),m.updateQueue=l):l.add(p);if(0===(m.mode&1)){m.effectTag|=\n64;k.effectTag&=-1957;1===k.tag&&(null===k.alternate?k.tag=17:(g=nf(1073741823),g.tag=sf,pf(k,g)));k.expirationTime=1073741823;break a}k=h;l=g;var R=k.pingCache;null===R?(R=k.pingCache=new Bh,v=new Set,R.set(p,v)):(v=R.get(p),void 0===v&&(v=new Set,R.set(p,v)));v.has(l)||(v.add(l),k=ei.bind(null,k,p,l),p.then(k,k));-1===t?h=1073741823:(-1===A&&(A=10*(1073741822-gf(h,g))-5E3),h=A+t);0<=h&&Mh<h&&(Mh=h);m.effectTag|=2048;m.expirationTime=g;break a}m=m.return}while(null!==m);m=Error((ic(k.type)||\"A React component\")+\n\" suspended while rendering, but no fallback UI was specified.\\n\\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.\"+jc(k))}Nh=!0;m=jh(m,k);h=l;do{switch(h.tag){case 3:h.effectTag|=2048;h.expirationTime=g;g=Ch(h,m,g);eh(h,g);break a;case 1:if(t=m,A=h.type,k=h.stateNode,0===(h.effectTag&64)&&(\"function\"===typeof A.getDerivedStateFromError||null!==k&&\"function\"===typeof k.componentDidCatch&&(null===Fh||!Fh.has(k)))){h.effectTag|=2048;\nh.expirationTime=g;g=Eh(h,t,g);eh(h,g);break a}}h=h.return}while(null!==h)}T=ai(f);continue}}}break}while(1);Kh=!1;Hh.current=c;Yg=Xg=Wg=null;lg();if(e)Lh=null,a.finishedWork=null;else if(null!==T)a.finishedWork=null;else{c=a.current.alternate;null===c?x(\"281\"):void 0;Lh=null;if(Nh){e=a.latestPendingTime;f=a.latestSuspendedTime;g=a.latestPingedTime;if(0!==e&&e<d||0!==f&&f<d||0!==g&&g<d){ff(a,d);fi(a,c,d,a.expirationTime,-1);return}if(!a.didError&&b){a.didError=!0;d=a.nextExpirationTimeToWorkOn=d;\nb=a.expirationTime=1073741823;fi(a,c,d,b,-1);return}}b&&-1!==Mh?(ff(a,d),b=10*(1073741822-gf(a,d)),b<Mh&&(Mh=b),b=10*(1073741822-lf()),b=Mh-b,fi(a,c,d,a.expirationTime,0>b?0:b)):(a.pendingCommitExpirationTime=d,a.finishedWork=c)}}\nfunction sh(a,b){for(var c=a.return;null!==c;){switch(c.tag){case 1:var d=c.stateNode;if(\"function\"===typeof c.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===Fh||!Fh.has(d))){a=jh(b,a);a=Eh(c,a,1073741823);pf(c,a);qf(c,1073741823);return}break;case 3:a=jh(b,a);a=Ch(c,a,1073741823);pf(c,a);qf(c,1073741823);return}c=c.return}3===a.tag&&(c=jh(b,a),c=Ch(a,c,1073741823),pf(a,c),qf(a,1073741823))}\nfunction mf(a,b){var c=r.unstable_getCurrentPriorityLevel(),d=void 0;if(0===(b.mode&1))d=1073741823;else if(Kh&&!Oh)d=U;else{switch(c){case r.unstable_ImmediatePriority:d=1073741823;break;case r.unstable_UserBlockingPriority:d=1073741822-10*(((1073741822-a+15)/10|0)+1);break;case r.unstable_NormalPriority:d=1073741822-25*(((1073741822-a+500)/25|0)+1);break;case r.unstable_LowPriority:case r.unstable_IdlePriority:d=1;break;default:x(\"313\")}null!==Lh&&d===U&&--d}c===r.unstable_UserBlockingPriority&&\n(0===gi||d<gi)&&(gi=d);return d}function ei(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);if(null!==Lh&&U===c)Lh=null;else if(b=a.earliestSuspendedTime,d=a.latestSuspendedTime,0!==b&&c<=b&&c>=d){a.didError=!1;b=a.latestPingedTime;if(0===b||b>c)a.latestPingedTime=c;df(c,a);c=a.expirationTime;0!==c&&Xh(a,c)}}function Ah(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=lf();b=mf(b,a);a=hi(a,b);null!==a&&(cf(a,b),b=a.expirationTime,0!==b&&Xh(a,b))}\nfunction hi(a,b){a.expirationTime<b&&(a.expirationTime=b);var c=a.alternate;null!==c&&c.expirationTime<b&&(c.expirationTime=b);var d=a.return,e=null;if(null===d&&3===a.tag)e=a.stateNode;else for(;null!==d;){c=d.alternate;d.childExpirationTime<b&&(d.childExpirationTime=b);null!==c&&c.childExpirationTime<b&&(c.childExpirationTime=b);if(null===d.return&&3===d.tag){e=d.stateNode;break}d=d.return}return e}\nfunction qf(a,b){a=hi(a,b);null!==a&&(!Kh&&0!==U&&b>U&&Sh(),cf(a,b),Kh&&!Oh&&Lh===a||Xh(a,a.expirationTime),ii>ji&&(ii=0,x(\"185\")))}function ki(a,b,c,d,e){return r.unstable_runWithPriority(r.unstable_ImmediatePriority,function(){return a(b,c,d,e)})}var li=null,Y=null,mi=0,ni=void 0,W=!1,oi=null,Z=0,gi=0,pi=!1,qi=null,X=!1,ri=!1,si=null,ti=r.unstable_now(),ui=1073741822-(ti/10|0),vi=ui,ji=50,ii=0,wi=null;function xi(){ui=1073741822-((r.unstable_now()-ti)/10|0)}\nfunction yi(a,b){if(0!==mi){if(b<mi)return;null!==ni&&r.unstable_cancelCallback(ni)}mi=b;a=r.unstable_now()-ti;ni=r.unstable_scheduleCallback(zi,{timeout:10*(1073741822-b)-a})}function fi(a,b,c,d,e){a.expirationTime=d;0!==e||di()?0<e&&(a.timeoutHandle=ye(Ai.bind(null,a,b,c),e)):(a.pendingCommitExpirationTime=c,a.finishedWork=b)}function Ai(a,b,c){a.pendingCommitExpirationTime=c;a.finishedWork=b;xi();vi=ui;Bi(a,c)}function $h(a,b){a.expirationTime=b;a.finishedWork=null}\nfunction lf(){if(W)return vi;Ci();if(0===Z||1===Z)xi(),vi=ui;return vi}function Xh(a,b){null===a.nextScheduledRoot?(a.expirationTime=b,null===Y?(li=Y=a,a.nextScheduledRoot=a):(Y=Y.nextScheduledRoot=a,Y.nextScheduledRoot=li)):b>a.expirationTime&&(a.expirationTime=b);W||(X?ri&&(oi=a,Z=1073741823,Di(a,1073741823,!1)):1073741823===b?Yh(1073741823,!1):yi(a,b))}\nfunction Ci(){var a=0,b=null;if(null!==Y)for(var c=Y,d=li;null!==d;){var e=d.expirationTime;if(0===e){null===c||null===Y?x(\"244\"):void 0;if(d===d.nextScheduledRoot){li=Y=d.nextScheduledRoot=null;break}else if(d===li)li=e=d.nextScheduledRoot,Y.nextScheduledRoot=e,d.nextScheduledRoot=null;else if(d===Y){Y=c;Y.nextScheduledRoot=li;d.nextScheduledRoot=null;break}else c.nextScheduledRoot=d.nextScheduledRoot,d.nextScheduledRoot=null;d=c.nextScheduledRoot}else{e>a&&(a=e,b=d);if(d===Y)break;if(1073741823===\na)break;c=d;d=d.nextScheduledRoot}}oi=b;Z=a}var Ei=!1;function di(){return Ei?!0:r.unstable_shouldYield()?Ei=!0:!1}function zi(){try{if(!di()&&null!==li){xi();var a=li;do{var b=a.expirationTime;0!==b&&ui<=b&&(a.nextExpirationTimeToWorkOn=ui);a=a.nextScheduledRoot}while(a!==li)}Yh(0,!0)}finally{Ei=!1}}\nfunction Yh(a,b){Ci();if(b)for(xi(),vi=ui;null!==oi&&0!==Z&&a<=Z&&!(Ei&&ui>Z);)Di(oi,Z,ui>Z),Ci(),xi(),vi=ui;else for(;null!==oi&&0!==Z&&a<=Z;)Di(oi,Z,!1),Ci();b&&(mi=0,ni=null);0!==Z&&yi(oi,Z);ii=0;wi=null;if(null!==si)for(a=si,si=null,b=0;b<a.length;b++){var c=a[b];try{c._onComplete()}catch(d){pi||(pi=!0,qi=d)}}if(pi)throw a=qi,qi=null,pi=!1,a;}function Bi(a,b){W?x(\"253\"):void 0;oi=a;Z=b;Di(a,b,!1);Yh(1073741823,!1)}\nfunction Di(a,b,c){W?x(\"245\"):void 0;W=!0;if(c){var d=a.finishedWork;null!==d?Fi(a,d,b):(a.finishedWork=null,d=a.timeoutHandle,-1!==d&&(a.timeoutHandle=-1,ze(d)),ci(a,c),d=a.finishedWork,null!==d&&(di()?a.finishedWork=d:Fi(a,d,b)))}else d=a.finishedWork,null!==d?Fi(a,d,b):(a.finishedWork=null,d=a.timeoutHandle,-1!==d&&(a.timeoutHandle=-1,ze(d)),ci(a,c),d=a.finishedWork,null!==d&&Fi(a,d,b));W=!1}\nfunction Fi(a,b,c){var d=a.firstBatch;if(null!==d&&d._expirationTime>=c&&(null===si?si=[d]:si.push(d),d._defer)){a.finishedWork=b;a.expirationTime=0;return}a.finishedWork=null;a===wi?ii++:(wi=a,ii=0);r.unstable_runWithPriority(r.unstable_ImmediatePriority,function(){Zh(a,b)})}function Dh(a){null===oi?x(\"246\"):void 0;oi.expirationTime=0;pi||(pi=!0,qi=a)}function Gi(a,b){var c=X;X=!0;try{return a(b)}finally{(X=c)||W||Yh(1073741823,!1)}}\nfunction Hi(a,b){if(X&&!ri){ri=!0;try{return a(b)}finally{ri=!1}}return a(b)}function Ii(a,b,c){X||W||0===gi||(Yh(gi,!1),gi=0);var d=X;X=!0;try{return r.unstable_runWithPriority(r.unstable_UserBlockingPriority,function(){return a(b,c)})}finally{(X=d)||W||Yh(1073741823,!1)}}\nfunction Ji(a,b,c,d,e){var f=b.current;a:if(c){c=c._reactInternalFiber;b:{2===ed(c)&&1===c.tag?void 0:x(\"170\");var g=c;do{switch(g.tag){case 3:g=g.stateNode.context;break b;case 1:if(J(g.type)){g=g.stateNode.__reactInternalMemoizedMergedChildContext;break b}}g=g.return}while(null!==g);x(\"171\");g=void 0}if(1===c.tag){var h=c.type;if(J(h)){c=Ne(c,h,g);break a}}c=g}else c=He;null===b.context?b.context=c:b.pendingContext=c;b=e;e=nf(d);e.payload={element:a};b=void 0===b?null:b;null!==b&&(e.callback=b);\nof();pf(f,e);qf(f,d);return d}function Ki(a,b,c,d){var e=b.current,f=lf();e=mf(f,e);return Ji(a,b,c,e,d)}function Li(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function Mi(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:Wb,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\nAb=function(a,b,c){switch(b){case \"input\":yc(a,c);b=c.name;if(\"radio\"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+b)+'][type=\"radio\"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Ka(d);e?void 0:x(\"90\");Sb(d);yc(d,e)}}}break;case \"textarea\":de(a,c);break;case \"select\":b=c.value,null!=b&&ae(a,!!c.multiple,b,!1)}};\nfunction Ni(a){var b=1073741822-25*(((1073741822-lf()+500)/25|0)+1);b>=Jh&&(b=Jh-1);this._expirationTime=Jh=b;this._root=a;this._callbacks=this._next=null;this._hasChildren=this._didComplete=!1;this._children=null;this._defer=!0}Ni.prototype.render=function(a){this._defer?void 0:x(\"250\");this._hasChildren=!0;this._children=a;var b=this._root._internalRoot,c=this._expirationTime,d=new Oi;Ji(a,b,null,c,d._onCommit);return d};\nNi.prototype.then=function(a){if(this._didComplete)a();else{var b=this._callbacks;null===b&&(b=this._callbacks=[]);b.push(a)}};\nNi.prototype.commit=function(){var a=this._root._internalRoot,b=a.firstBatch;this._defer&&null!==b?void 0:x(\"251\");if(this._hasChildren){var c=this._expirationTime;if(b!==this){this._hasChildren&&(c=this._expirationTime=b._expirationTime,this.render(this._children));for(var d=null,e=b;e!==this;)d=e,e=e._next;null===d?x(\"251\"):void 0;d._next=e._next;this._next=b;a.firstBatch=this}this._defer=!1;Bi(a,c);b=this._next;this._next=null;b=a.firstBatch=b;null!==b&&b._hasChildren&&b.render(b._children)}else this._next=\nnull,this._defer=!1};Ni.prototype._onComplete=function(){if(!this._didComplete){this._didComplete=!0;var a=this._callbacks;if(null!==a)for(var b=0;b<a.length;b++)(0,a[b])()}};function Oi(){this._callbacks=null;this._didCommit=!1;this._onCommit=this._onCommit.bind(this)}Oi.prototype.then=function(a){if(this._didCommit)a();else{var b=this._callbacks;null===b&&(b=this._callbacks=[]);b.push(a)}};\nOi.prototype._onCommit=function(){if(!this._didCommit){this._didCommit=!0;var a=this._callbacks;if(null!==a)for(var b=0;b<a.length;b++){var c=a[b];\"function\"!==typeof c?x(\"191\",c):void 0;c()}}};\nfunction Pi(a,b,c){b=K(3,null,null,b?3:0);a={current:b,containerInfo:a,pendingChildren:null,pingCache:null,earliestPendingTime:0,latestPendingTime:0,earliestSuspendedTime:0,latestSuspendedTime:0,latestPingedTime:0,didError:!1,pendingCommitExpirationTime:0,finishedWork:null,timeoutHandle:-1,context:null,pendingContext:null,hydrate:c,nextExpirationTimeToWorkOn:0,expirationTime:0,firstBatch:null,nextScheduledRoot:null};this._internalRoot=b.stateNode=a}\nPi.prototype.render=function(a,b){var c=this._internalRoot,d=new Oi;b=void 0===b?null:b;null!==b&&d.then(b);Ki(a,c,null,d._onCommit);return d};Pi.prototype.unmount=function(a){var b=this._internalRoot,c=new Oi;a=void 0===a?null:a;null!==a&&c.then(a);Ki(null,b,null,c._onCommit);return c};Pi.prototype.legacy_renderSubtreeIntoContainer=function(a,b,c){var d=this._internalRoot,e=new Oi;c=void 0===c?null:c;null!==c&&e.then(c);Ki(b,d,a,e._onCommit);return e};\nPi.prototype.createBatch=function(){var a=new Ni(this),b=a._expirationTime,c=this._internalRoot,d=c.firstBatch;if(null===d)c.firstBatch=a,a._next=null;else{for(c=null;null!==d&&d._expirationTime>=b;)c=d,d=d._next;a._next=d;null!==c&&(c._next=a)}return a};function Qi(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}Gb=Gi;Hb=Ii;Ib=function(){W||0===gi||(Yh(gi,!1),gi=0)};\nfunction Ri(a,b){b||(b=a?9===a.nodeType?a.documentElement:a.firstChild:null,b=!(!b||1!==b.nodeType||!b.hasAttribute(\"data-reactroot\")));if(!b)for(var c;c=a.lastChild;)a.removeChild(c);return new Pi(a,!1,b)}\nfunction Si(a,b,c,d,e){var f=c._reactRootContainer;if(f){if(\"function\"===typeof e){var g=e;e=function(){var a=Li(f._internalRoot);g.call(a)}}null!=a?f.legacy_renderSubtreeIntoContainer(a,b,e):f.render(b,e)}else{f=c._reactRootContainer=Ri(c,d);if(\"function\"===typeof e){var h=e;e=function(){var a=Li(f._internalRoot);h.call(a)}}Hi(function(){null!=a?f.legacy_renderSubtreeIntoContainer(a,b,e):f.render(b,e)})}return Li(f._internalRoot)}\nfunction Ti(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;Qi(b)?void 0:x(\"200\");return Mi(a,b,null,c)}\nvar Vi={createPortal:Ti,findDOMNode:function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternalFiber;void 0===b&&(\"function\"===typeof a.render?x(\"188\"):x(\"268\",Object.keys(a)));a=hd(b);a=null===a?null:a.stateNode;return a},hydrate:function(a,b,c){Qi(b)?void 0:x(\"200\");return Si(null,a,b,!0,c)},render:function(a,b,c){Qi(b)?void 0:x(\"200\");return Si(null,a,b,!1,c)},unstable_renderSubtreeIntoContainer:function(a,b,c,d){Qi(c)?void 0:x(\"200\");null==a||void 0===a._reactInternalFiber?\nx(\"38\"):void 0;return Si(a,b,c,!1,d)},unmountComponentAtNode:function(a){Qi(a)?void 0:x(\"40\");return a._reactRootContainer?(Hi(function(){Si(null,null,a,!1,function(){a._reactRootContainer=null})}),!0):!1},unstable_createPortal:function(){return Ti.apply(void 0,arguments)},unstable_batchedUpdates:Gi,unstable_interactiveUpdates:Ii,flushSync:function(a,b){W?x(\"187\"):void 0;var c=X;X=!0;try{return ki(a,b)}finally{X=c,Yh(1073741823,!1)}},unstable_createRoot:Ui,unstable_flushControlled:function(a){var b=\nX;X=!0;try{ki(a)}finally{(X=b)||W||Yh(1073741823,!1)}},__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:{Events:[Ia,Ja,Ka,Ba.injectEventPluginsByName,pa,Qa,function(a){ya(a,Pa)},Eb,Fb,Dd,Da]}};function Ui(a,b){Qi(a)?void 0:x(\"299\",\"unstable_createRoot\");return new Pi(a,!0,null!=b&&!0===b.hydrate)}\n(function(a){var b=a.findFiberByHostInstance;return Te(n({},a,{overrideProps:null,currentDispatcherRef:Tb.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=hd(a);return null===a?null:a.stateNode},findFiberByHostInstance:function(a){return b?b(a):null}}))})({findFiberByHostInstance:Ha,bundleType:0,version:\"16.8.6\",rendererPackageName:\"react-dom\"});var Wi={default:Vi},Xi=Wi&&Vi||Wi;module.exports=Xi.default||Xi;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","/** @license React v0.13.6\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';Object.defineProperty(exports,\"__esModule\",{value:!0});var d=null,e=!1,g=3,k=-1,l=-1,m=!1,n=!1;function p(){if(!m){var a=d.expirationTime;n?q():n=!0;r(t,a)}}\nfunction u(){var a=d,b=d.next;if(d===b)d=null;else{var c=d.previous;d=c.next=b;b.previous=c}a.next=a.previous=null;c=a.callback;b=a.expirationTime;a=a.priorityLevel;var f=g,Q=l;g=a;l=b;try{var h=c()}finally{g=f,l=Q}if(\"function\"===typeof h)if(h={callback:h,priorityLevel:a,expirationTime:b,next:null,previous:null},null===d)d=h.next=h.previous=h;else{c=null;a=d;do{if(a.expirationTime>=b){c=a;break}a=a.next}while(a!==d);null===c?c=d:c===d&&(d=h,p());b=c.previous;b.next=c.previous=h;h.next=c;h.previous=\nb}}function v(){if(-1===k&&null!==d&&1===d.priorityLevel){m=!0;try{do u();while(null!==d&&1===d.priorityLevel)}finally{m=!1,null!==d?p():n=!1}}}function t(a){m=!0;var b=e;e=a;try{if(a)for(;null!==d;){var c=exports.unstable_now();if(d.expirationTime<=c){do u();while(null!==d&&d.expirationTime<=c)}else break}else if(null!==d){do u();while(null!==d&&!w())}}finally{m=!1,e=b,null!==d?p():n=!1,v()}}\nvar x=Date,y=\"function\"===typeof setTimeout?setTimeout:void 0,z=\"function\"===typeof clearTimeout?clearTimeout:void 0,A=\"function\"===typeof requestAnimationFrame?requestAnimationFrame:void 0,B=\"function\"===typeof cancelAnimationFrame?cancelAnimationFrame:void 0,C,D;function E(a){C=A(function(b){z(D);a(b)});D=y(function(){B(C);a(exports.unstable_now())},100)}\nif(\"object\"===typeof performance&&\"function\"===typeof performance.now){var F=performance;exports.unstable_now=function(){return F.now()}}else exports.unstable_now=function(){return x.now()};var r,q,w,G=null;\"undefined\"!==typeof window?G=window:\"undefined\"!==typeof global&&(G=global);\nif(G&&G._schedMock){var H=G._schedMock;r=H[0];q=H[1];w=H[2];exports.unstable_now=H[3]}else if(\"undefined\"===typeof window||\"function\"!==typeof MessageChannel){var I=null,J=function(a){if(null!==I)try{I(a)}finally{I=null}};r=function(a){null!==I?setTimeout(r,0,a):(I=a,setTimeout(J,0,!1))};q=function(){I=null};w=function(){return!1}}else{\"undefined\"!==typeof console&&(\"function\"!==typeof A&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\"),\n\"function\"!==typeof B&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\"));var K=null,L=!1,M=-1,N=!1,O=!1,P=0,R=33,S=33;w=function(){return P<=exports.unstable_now()};var T=new MessageChannel,U=T.port2;T.port1.onmessage=function(){L=!1;var a=K,b=M;K=null;M=-1;var c=exports.unstable_now(),f=!1;if(0>=P-c)if(-1!==b&&b<=c)f=!0;else{N||(N=!0,E(V));K=a;M=b;return}if(null!==a){O=!0;try{a(f)}finally{O=!1}}};\nvar V=function(a){if(null!==K){E(V);var b=a-P+S;b<S&&R<S?(8>b&&(b=8),S=b<R?R:b):R=b;P=a+S;L||(L=!0,U.postMessage(void 0))}else N=!1};r=function(a,b){K=a;M=b;O||0>b?U.postMessage(void 0):N||(N=!0,E(V))};q=function(){K=null;L=!1;M=-1}}exports.unstable_ImmediatePriority=1;exports.unstable_UserBlockingPriority=2;exports.unstable_NormalPriority=3;exports.unstable_IdlePriority=5;exports.unstable_LowPriority=4;\nexports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=g,f=k;g=a;k=exports.unstable_now();try{return b()}finally{g=c,k=f,v()}};exports.unstable_next=function(a){switch(g){case 1:case 2:case 3:var b=3;break;default:b=g}var c=g,f=k;g=b;k=exports.unstable_now();try{return a()}finally{g=c,k=f,v()}};\nexports.unstable_scheduleCallback=function(a,b){var c=-1!==k?k:exports.unstable_now();if(\"object\"===typeof b&&null!==b&&\"number\"===typeof b.timeout)b=c+b.timeout;else switch(g){case 1:b=c+-1;break;case 2:b=c+250;break;case 5:b=c+1073741823;break;case 4:b=c+1E4;break;default:b=c+5E3}a={callback:a,priorityLevel:g,expirationTime:b,next:null,previous:null};if(null===d)d=a.next=a.previous=a,p();else{c=null;var f=d;do{if(f.expirationTime>b){c=f;break}f=f.next}while(f!==d);null===c?c=d:c===d&&(d=a,p());\nb=c.previous;b.next=c.previous=a;a.next=c;a.previous=b}return a};exports.unstable_cancelCallback=function(a){var b=a.next;if(null!==b){if(b===a)d=null;else{a===d&&(d=b);var c=a.previous;c.next=b;b.previous=c}a.next=a.previous=null}};exports.unstable_wrapCallback=function(a){var b=g;return function(){var c=g,f=k;g=b;k=exports.unstable_now();try{return a.apply(this,arguments)}finally{g=c,k=f,v()}}};exports.unstable_getCurrentPriorityLevel=function(){return g};\nexports.unstable_shouldYield=function(){return!e&&(null!==d&&d.expirationTime<l||w())};exports.unstable_continueExecution=function(){null!==d&&p()};exports.unstable_pauseExecution=function(){};exports.unstable_getFirstCallbackNode=function(){return d};\n","var 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","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports['default'] = autoBind;\nvar wontBind = ['constructor', 'render', 'componentWillMount', 'componentDidMount', 'componentWillReceiveProps', 'shouldComponentUpdate', 'componentWillUpdate', 'componentDidUpdate', 'componentWillUnmount'];\n\nvar toBind = [];\n\nfunction autoBind(context) {\n if (context === undefined) {\n console.error('Autobind error: No context provided.');\n return;\n }\n\n var objPrototype = Object.getPrototypeOf(context);\n\n if (arguments.length > 1) {\n // If a list of methods to bind is provided, use it.\n toBind = Array.prototype.slice.call(arguments, 1);\n } else {\n // If no list of methods to bind is provided, bind all available methods in class.\n toBind = Object.getOwnPropertyNames(objPrototype);\n }\n\n toBind.forEach(function (method) {\n var descriptor = Object.getOwnPropertyDescriptor(objPrototype, method);\n\n if (descriptor === undefined) {\n console.warn('Autobind: \"' + method + '\" method not found in class.');\n return;\n }\n\n // Return if it's special case function or if not a function at all\n if (wontBind.indexOf(method) !== -1 || typeof descriptor.value !== 'function') {\n return;\n }\n\n Object.defineProperty(objPrototype, method, boundMethod(objPrototype, method, descriptor));\n });\n}\n\n/**\n* From autobind-decorator (https://github.com/andreypopp/autobind-decorator/tree/master)\n* Return a descriptor removing the value and returning a getter\n* The getter will return a .bind version of the function\n* and memoize the result against a symbol on the instance\n*/\nfunction boundMethod(objPrototype, method, descriptor) {\n var fn = descriptor.value;\n\n return {\n configurable: true,\n get: function get() {\n if (this === objPrototype || this.hasOwnProperty(method)) {\n return fn;\n }\n\n var boundFn = fn.bind(this);\n Object.defineProperty(this, method, {\n value: boundFn,\n configurable: true,\n writable: true\n });\n return boundFn;\n }\n };\n}\nmodule.exports = exports['default'];\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/*!\n * jQuery JavaScript Library v3.4.1\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2019-05-01T21:04Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar document = window.document;\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar concat = arr.concat;\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n // Support: Chrome <=57, Firefox <=52\n // In some browsers, typeof returns \"function\" for HTML <object> elements\n // (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n // We don't want to classify *any* DOM node as a function.\n return typeof obj === \"function\" && typeof obj.nodeType !== \"number\";\n };\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.4.1\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// Support: Android <=4.0 only\n\t// Make sure we trim BOM and NBSP\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a global context\n\tglobalEval: function( code, options ) {\n\t\tDOMEval( code, { nonce: options && options.nonce } );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Support: Android <=4.0 only\n\ttrim: function( text ) {\n\t\treturn text == null ?\n\t\t\t\"\" :\n\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\nfunction( i, name ) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.4\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2019-04-08\n */\n(function( window ) {\n\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ({}).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpush_native = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = \"(?:\\\\\\\\.|[\\\\w-]|[^\\0-\\\\xa0])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace +\n\t\t\"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trhtml = /HTML$/i,\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\n\tfunescape = function( _, escaped, escapedWhitespace ) {\n\t\tvar high = \"0x\" + escaped - 0x10000;\n\t\t// NaN means non-codepoint\n\t\t// Support: Firefox<24\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\n\t\treturn high !== high || escapedWhitespace ?\n\t\t\tescaped :\n\t\t\thigh < 0 ?\n\t\t\t\t// BMP codepoint\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t(arr = slice.call( preferredDoc.childNodes )),\n\t\tpreferredDoc.childNodes\n\t);\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpush_native.apply( target, slice.call(els) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\n\t\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\t\tsetDocument( context );\n\t\t}\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( (m = match[1]) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( (elem = context.getElementById( m )) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && (elem = newContext.getElementById( m )) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[2] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t(!rbuggyQSA || !rbuggyQSA.test( selector )) &&\n\n\t\t\t\t// Support: IE 8 only\n\t\t\t\t// Exclude object elements\n\t\t\t\t(nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\") ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 && rdescend.test( selector ) ) {\n\n\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\tif ( (nid = context.getAttribute( \"id\" )) ) {\n\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", (nid = expando) );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[i] = \"#\" + nid + \" \" + toSelector( groups[i] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn (cache[ key + \" \" ] = value);\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement(\"fieldset\");\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split(\"|\"),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[i] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( (cur = cur.nextSibling) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\tvar namespace = elem.namespaceURI,\n\t\tdocElem = (elem.ownerDocument || elem).documentElement;\n\n\t// Support: IE <=8\n\t// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n\t// https://bugs.jquery.com/ticket/4833\n\treturn !rhtml.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9-11, Edge\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\tif ( preferredDoc !== document &&\n\t\t(subWindow = document.defaultView) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert(function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute(\"className\");\n\t});\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert(function( el ) {\n\t\tel.appendChild( document.createComment(\"\") );\n\t\treturn !el.getElementsByTagName(\"*\").length;\n\t});\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert(function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t});\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute(\"id\") === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode(\"id\");\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode(\"id\");\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( (elem = elems[i++]) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode(\"id\");\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[\"TAG\"] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( (elem = results[i++]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[\"CLASS\"] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( (support.qsa = rnative.test( document.querySelectorAll )) ) {\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( el ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"<a id='\" + expando + \"'></a>\" +\n\t\t\t\t\"<select id='\" + expando + \"-\\r\\\\' msallowcapture=''>\" +\n\t\t\t\t\"<option selected=''></option></select>\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll(\"[msallowcapture^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push(\"~=\");\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( el ) {\n\t\t\tel.innerHTML = \"<a href='' disabled='disabled'></a>\" +\n\t\t\t\t\"<select disabled='disabled'><option/></select>\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement(\"input\");\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll(\"[name=d]\").length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll(\":enabled\").length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll(\":disabled\").length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll(\"*,:x\");\n\t\t\trbuggyQSA.push(\",.*:\");\n\t\t});\n\t}\n\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector) )) ) {\n\n\t\tassert(function( el ) {\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t});\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t));\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( (b = b.parentNode) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\tif ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\t\t\treturn a === document ? -1 :\n\t\t\t\tb === document ? 1 :\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[i] === bp[i] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\t// Set document vars if needed\n\tif ( ( context.ownerDocument || context ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn (sel + \"\").replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( (elem = results[i++]) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( (node = elem[i++]) ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[1] = match[1].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[3] || match[4] || match[5] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[3] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[3] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[6] && match[2];\n\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[4] || match[5] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() { return true; } :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\" );\n\t\t\t\t});\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction(function( selector ) {\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[0] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t}),\n\n\t\t\"has\": markFunction(function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t}),\n\n\t\t\"contains\": markFunction(function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t}),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ?\n\t\t\t\targument + length :\n\t\t\t\targument > length ?\n\t\t\t\t\tlength :\n\t\t\t\t\targument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( (tokens = []) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push({\n\t\t\t\tvalue: matched,\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\n\t\t\t});\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push({\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t});\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[i].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( (oldCache = uniqueCache[ key ]) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", outermost ),\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context === document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching elements by id\n\t\t\tfor ( ; i !== len && (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\tif ( !context && elem.ownerDocument !== document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (matcher = setMatchers[j++]) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[0] = match[0].slice( 0 );\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {\n\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[i];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( (seed = find(\n\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\n\t\t\t\t)) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert(function( el ) {\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement(\"fieldset\") ) & 1;\n});\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert(function( el ) {\n\tel.innerHTML = \"<a href='#'></a>\";\n\treturn el.firstChild.getAttribute(\"href\") === \"#\" ;\n}) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert(function( el ) {\n\tel.innerHTML = \"<input/>\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n}) ) {\n\taddHandle( \"value\", function( elem, name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert(function( el ) {\n\treturn el.getAttribute(\"disabled\") == null;\n}) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\tnull;\n\t\t}\n\t});\n}\n\nreturn Sizzle;\n\n})( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n};\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( typeof elem.contentDocument !== \"undefined\" ) {\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the master Deferred\n\t\t\tmaster = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tmaster.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( master.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn master.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), master.reject );\n\t\t}\n\n\t\treturn master.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\tvalue :\n\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (#9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\nvar swap = function( elem, options, callback, args ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.apply( elem, args || [] );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// Support: IE <=9 only\n\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting <tbody> or other required elements.\n\tthead: [ 1, \"<table>\", \"</table>\" ],\n\tcol: [ 2, \"<table><colgroup>\", \"</colgroup></table>\" ],\n\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\n// Support: IE <=9 only\nwrapMap.optgroup = wrapMap.option;\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"<textarea>x</textarea>\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n} )();\n\n\nvar\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 - 11+\n// focus() and blur() are asynchronous, except when they are no-op.\n// So expect focus to be synchronous when the element is already active,\n// and blur to be synchronous when the element is not already active.\n// (focus and blur are always synchronous in other supported browsers,\n// this just defines when we can count on it).\nfunction expectSync( elem, type ) {\n\treturn ( elem === safeActiveElement() ) === ( type === \"focus\" );\n}\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = {};\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tvar event = jQuery.event.fix( nativeEvent );\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\t\t\thandlers = ( dataPriv.get( this, \"events\" ) || {} )[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG <use> instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", returnTrue );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, expectSync ) {\n\n\t// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !expectSync ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar notAsync, result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\t// Saved data should be false in such cases, but might be a leftover capture object\n\t\t\t\t// from an async native handler (gh-4350)\n\t\t\t\tif ( !saved.length ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t// focus() and blur() are asynchronous\n\t\t\t\t\tnotAsync = expectSync( this, type );\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tif ( saved !== result || notAsync ) {\n\t\t\t\t\t\tdataPriv.set( this, type, false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = {};\n\t\t\t\t\t}\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\treturn result.value;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering the\n\t\t\t\t// native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved.length ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, {\n\t\t\t\t\tvalue: jQuery.event.trigger(\n\n\t\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t\t// Extend with the prototype to reset the above stopImmediatePropagation()\n\t\t\t\t\t\tjQuery.extend( saved[ 0 ], jQuery.Event.prototype ),\n\t\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\t\tthis\n\t\t\t\t\t)\n\t\t\t\t} );\n\n\t\t\t\t// Abort handling of the native event\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (#504, #13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\n\twhich: function( event ) {\n\t\tvar button = event.button;\n\n\t\t// Add which for key events\n\t\tif ( event.which == null && rkeyEvent.test( event.type ) ) {\n\t\t\treturn event.charCode != null ? event.charCode : event.keyCode;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\tif ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {\n\t\t\tif ( button & 1 ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\tif ( button & 2 ) {\n\t\t\t\treturn 3;\n\t\t\t}\n\n\t\t\tif ( button & 4 ) {\n\t\t\t\treturn 2;\n\t\t\t}\n\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn event.which;\n\t}\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, expectSync );\n\n\t\t\t// Return false to allow normal processing in the caller\n\t\t\treturn false;\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t/* eslint-disable max-len */\n\n\t// See https://github.com/eslint/eslint/issues/3229\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)[^>]*)\\/>/gi,\n\n\t/* eslint-enable */\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /<script|<style|<link/i,\n\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.access( src );\n\t\tpdataCur = dataPriv.set( dest, pdataOld );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdelete pdataCur.handle;\n\t\t\tpdataCur.events = {};\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = concat.apply( [], args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html.replace( rxhtmlTag, \"<$1></$2>\" );\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, #12537)\n\t// .css('--customProperty) (#3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trcustomProp = /^--/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t// This happens for inline elements with no explicit setting (gh-3571)\n\t// Support: Android <=4.1 - 4.3 only\n\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t// Support: IE 9-11 only\n\t// Also use offsetWidth/offsetHeight for when box sizing is unreliable\n\t// We use getClientRects() to check for hidden/disconnected.\n\t// In those cases, the computed value can be trusted to be border-box\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\t\tval === \"auto\" ||\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"gridArea\": true,\n\t\t\"gridColumn\": true,\n\t\t\"gridColumnEnd\": true,\n\t\t\"gridColumnStart\": true,\n\t\t\"gridRow\": true,\n\t\t\"gridRowEnd\": true,\n\t\t\"gridRowStart\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t\t} ) :\n\t\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\t\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue && type !== false ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = classesToArray( value );\n\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || {} )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = Date.now();\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {\n\t\txml = undefined;\n\t}\n\n\tif ( !xml || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\tjQuery.error( \"Invalid XML: \" + data );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} )\n\t\t.filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} )\n\t\t.map( function( i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\toriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce++ ) + uncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\n\njQuery._evalUrl = function( url, options ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"<script>\" )\n\t\t\t\t\t.attr( s.scriptAttrs || {} )\n\t\t\t\t\t.prop( { charset: s.scriptCharset, src: s.url } )\n\t\t\t\t\t.on( \"load error\", callback = function( evt ) {\n\t\t\t\t\t\tscript.remove();\n\t\t\t\t\t\tcallback = null;\n\t\t\t\t\t\tif ( evt ) {\n\t\t\t\t\t\t\tcomplete( evt.type === \"error\" ? 404 : 200, evt.type );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\tdocument.head.appendChild( script[ 0 ] );\n\t\t\t},\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup( {\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n} );\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t\"url\" :\n\t\t\ttypeof s.data === \"string\" &&\n\t\t\t\t( s.contentType || \"\" )\n\t\t\t\t\t.indexOf( \"application/x-www-form-urlencoded\" ) === 0 &&\n\t\t\t\trjsonp.test( s.data ) && \"data\"\n\t\t);\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( jsonProp || s.dataTypes[ 0 ] === \"jsonp\" ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\n\t\t// Insert callback into url or form data\n\t\tif ( jsonProp ) {\n\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( s.jsonp !== false ) {\n\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[ \"script json\" ] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// Force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\toverwritten = window[ callbackName ];\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always( function() {\n\n\t\t\t// If previous value didn't exist - remove it\n\t\t\tif ( overwritten === undefined ) {\n\t\t\t\tjQuery( window ).removeProp( callbackName );\n\n\t\t\t// Otherwise restore preexisting value\n\t\t\t} else {\n\t\t\t\twindow[ callbackName ] = overwritten;\n\t\t\t}\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\n\t\t\t\t// Make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// Save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t} );\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Support: Safari 8 only\n// In Safari 8 documents created via document.implementation.createHTMLDocument\n// collapse sibling forms: the second one becomes a child of the first one.\n// Because of that, this security measure has to be disabled in Safari 8.\n// https://bugs.webkit.org/show_bug.cgi?id=137337\nsupport.createHTMLDocument = ( function() {\n\tvar body = document.implementation.createHTMLDocument( \"\" ).body;\n\tbody.innerHTML = \"<form></form><form></form>\";\n\treturn body.childNodes.length === 2;\n} )();\n\n\n// Argument \"data\" should be string of html\n// context (optional): If specified, the fragment will be created in this context,\n// defaults to document\n// keepScripts (optional): If true, will include scripts passed in the html string\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( typeof data !== \"string\" ) {\n\t\treturn [];\n\t}\n\tif ( typeof context === \"boolean\" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\n\tvar base, parsed, scripts;\n\n\tif ( !context ) {\n\n\t\t// Stop scripts or inline event handlers from being executed immediately\n\t\t// by using document.implementation\n\t\tif ( support.createHTMLDocument ) {\n\t\t\tcontext = document.implementation.createHTMLDocument( \"\" );\n\n\t\t\t// Set the base href for the created document\n\t\t\t// so any parsed elements with URLs\n\t\t\t// are based on the document's URL (gh-2965)\n\t\t\tbase = context.createElement( \"base\" );\n\t\t\tbase.href = document.location.href;\n\t\t\tcontext.head.appendChild( base );\n\t\t} else {\n\t\t\tcontext = document;\n\t\t}\n\t}\n\n\tparsed = rsingleTag.exec( data );\n\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[ 1 ] ) ];\n\t}\n\n\tparsed = buildFragment( [ data ], context, scripts );\n\n\tif ( scripts && scripts.length ) {\n\t\tjQuery( scripts ).remove();\n\t}\n\n\treturn jQuery.merge( [], parsed.childNodes );\n};\n\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf( \" \" );\n\n\tif ( off > -1 ) {\n\t\tselector = stripAndCollapse( url.slice( off ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax( {\n\t\t\turl: url,\n\n\t\t\t// If \"type\" variable is undefined, then \"GET\" method will be used.\n\t\t\t// Make value of this field explicit since\n\t\t\t// user can override it through ajaxSetup method\n\t\t\ttype: type || \"GET\",\n\t\t\tdataType: \"html\",\n\t\t\tdata: params\n\t\t} ).done( function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\t\t\t\tjQuery( \"<div>\" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t// If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n\t\t// but they are ignored because response was set above.\n\t\t// If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n\t\t} ).always( callback && function( jqXHR, status ) {\n\t\t\tself.each( function() {\n\t\t\t\tcallback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t} );\n\t\t} );\n\t}\n\n\treturn this;\n};\n\n\n\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( [\n\t\"ajaxStart\",\n\t\"ajaxStop\",\n\t\"ajaxComplete\",\n\t\"ajaxError\",\n\t\"ajaxSuccess\",\n\t\"ajaxSend\"\n], function( i, type ) {\n\tjQuery.fn[ type ] = function( fn ) {\n\t\treturn this.on( type, fn );\n\t};\n} );\n\n\n\n\njQuery.expr.pseudos.animated = function( elem ) {\n\treturn jQuery.grep( jQuery.timers, function( fn ) {\n\t\treturn elem === fn.elem;\n\t} ).length;\n};\n\n\n\n\njQuery.offset = {\n\tsetOffset: function( elem, options, i ) {\n\t\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\n\t\t\tposition = jQuery.css( elem, \"position\" ),\n\t\t\tcurElem = jQuery( elem ),\n\t\t\tprops = {};\n\n\t\t// Set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tcurOffset = curElem.offset();\n\t\tcurCSSTop = jQuery.css( elem, \"top\" );\n\t\tcurCSSLeft = jQuery.css( elem, \"left\" );\n\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) &&\n\t\t\t( curCSSTop + curCSSLeft ).indexOf( \"auto\" ) > -1;\n\n\t\t// Need to be able to calculate position if either\n\t\t// top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( isFunction( options ) ) {\n\n\t\t\t// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n\t\t\toptions = options.call( elem, i, jQuery.extend( {}, curOffset ) );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend( {\n\n\t// offset() relates an element's border box to the document origin\n\toffset: function( options ) {\n\n\t\t// Preserve chaining for setter\n\t\tif ( arguments.length ) {\n\t\t\treturn options === undefined ?\n\t\t\t\tthis :\n\t\t\t\tthis.each( function( i ) {\n\t\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t\t} );\n\t\t}\n\n\t\tvar rect, win,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Return zeros for disconnected and hidden (display: none) elements (gh-2310)\n\t\t// Support: IE <=11 only\n\t\t// Running getBoundingClientRect on a\n\t\t// disconnected node in IE throws an error\n\t\tif ( !elem.getClientRects().length ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\t// Get document-relative position by adding viewport scroll to viewport-relative gBCR\n\t\trect = elem.getBoundingClientRect();\n\t\twin = elem.ownerDocument.defaultView;\n\t\treturn {\n\t\t\ttop: rect.top + win.pageYOffset,\n\t\t\tleft: rect.left + win.pageXOffset\n\t\t};\n\t},\n\n\t// position() relates an element's margin box to its offset parent's padding box\n\t// This corresponds to the behavior of CSS absolute positioning\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset, doc,\n\t\t\telem = this[ 0 ],\n\t\t\tparentOffset = { top: 0, left: 0 };\n\n\t\t// position:fixed elements are offset from the viewport, which itself always has zero offset\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\n\t\t\t// Assume position:fixed implies availability of getBoundingClientRect\n\t\t\toffset = elem.getBoundingClientRect();\n\n\t\t} else {\n\t\t\toffset = this.offset();\n\n\t\t\t// Account for the *real* offset parent, which can be the document or its root element\n\t\t\t// when a statically positioned element is identified\n\t\t\tdoc = elem.ownerDocument;\n\t\t\toffsetParent = elem.offsetParent || doc.documentElement;\n\t\t\twhile ( offsetParent &&\n\t\t\t\t( offsetParent === doc.body || offsetParent === doc.documentElement ) &&\n\t\t\t\tjQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\n\t\t\t\toffsetParent = offsetParent.parentNode;\n\t\t\t}\n\t\t\tif ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {\n\n\t\t\t\t// Incorporate borders into its offset, since they are outside its content origin\n\t\t\t\tparentOffset = jQuery( offsetParent ).offset();\n\t\t\t\tparentOffset.top += jQuery.css( offsetParent, \"borderTopWidth\", true );\n\t\t\t\tparentOffset.left += jQuery.css( offsetParent, \"borderLeftWidth\", true );\n\t\t\t}\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\treturn {\n\t\t\ttop: offset.top - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true )\n\t\t};\n\t},\n\n\t// This method will return documentElement in the following cases:\n\t// 1) For the element inside the iframe without offsetParent, this method will return\n\t// documentElement of the parent window\n\t// 2) For the hidden or detached element\n\t// 3) For body or html element, i.e. in case of the html node - it will return itself\n\t//\n\t// but those exceptions were never presented as a real life use-cases\n\t// and might be considered as more preferable results.\n\t//\n\t// This logic, however, is not guaranteed and can change at any point in the future\n\toffsetParent: function() {\n\t\treturn this.map( function() {\n\t\t\tvar offsetParent = this.offsetParent;\n\n\t\t\twhile ( offsetParent && jQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\n\t\t\treturn offsetParent || documentElement;\n\t\t} );\n\t}\n} );\n\n// Create scrollLeft and scrollTop methods\njQuery.each( { scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\" }, function( method, prop ) {\n\tvar top = \"pageYOffset\" === prop;\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\n\t\t\t// Coalesce documents and windows\n\t\t\tvar win;\n\t\t\tif ( isWindow( elem ) ) {\n\t\t\t\twin = elem;\n\t\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t\twin = elem.defaultView;\n\t\t\t}\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? win[ prop ] : elem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : win.pageXOffset,\n\t\t\t\t\ttop ? val : win.pageYOffset\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length );\n\t};\n} );\n\n// Support: Safari <=7 - 9.1, Chrome <=37 - 49\n// Add the top/left cssHooks using jQuery.fn.position\n// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347\n// getComputedStyle returns percent when specified for top/left/bottom/right;\n// rather than make the css module depend on the offset module, just check for it here\njQuery.each( [ \"top\", \"left\" ], function( i, prop ) {\n\tjQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,\n\t\tfunction( elem, computed ) {\n\t\t\tif ( computed ) {\n\t\t\t\tcomputed = curCSS( elem, prop );\n\n\t\t\t\t// If curCSS returns percentage, fallback to offset\n\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\tjQuery( elem ).position()[ prop ] + \"px\" :\n\t\t\t\t\tcomputed;\n\t\t\t}\n\t\t}\n\t);\n} );\n\n\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( { padding: \"inner\" + name, content: type, \"\": \"outer\" + name },\n\t\tfunction( defaultExtra, funcName ) {\n\n\t\t// Margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( isWindow( elem ) ) {\n\n\t\t\t\t\t// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n\t\t\t\t\treturn funcName.indexOf( \"outer\" ) === 0 ?\n\t\t\t\t\t\telem[ \"inner\" + name ] :\n\t\t\t\t\t\telem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n\t\t\t\t\t// whichever is greatest\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable );\n\t\t};\n\t} );\n} );\n\n\njQuery.each( ( \"blur focus focusin focusout resize scroll click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup contextmenu\" ).split( \" \" ),\n\tfunction( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.on( name, null, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n} );\n\njQuery.fn.extend( {\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n} );\n\n\n\n\njQuery.fn.extend( {\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ?\n\t\t\tthis.off( selector, \"**\" ) :\n\t\t\tthis.off( types, selector || \"**\", fn );\n\t}\n} );\n\n// Bind a function to a context, optionally partially applying any\n// arguments.\n// jQuery.proxy is deprecated to promote standards (specifically Function#bind)\n// However, it is not slated for removal any time soon\njQuery.proxy = function( fn, context ) {\n\tvar tmp, args, proxy;\n\n\tif ( typeof context === \"string\" ) {\n\t\ttmp = fn[ context ];\n\t\tcontext = fn;\n\t\tfn = tmp;\n\t}\n\n\t// Quick check to determine if target is callable, in the spec\n\t// this throws a TypeError, but we will just return undefined.\n\tif ( !isFunction( fn ) ) {\n\t\treturn undefined;\n\t}\n\n\t// Simulated bind\n\targs = slice.call( arguments, 2 );\n\tproxy = function() {\n\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t};\n\n\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\treturn proxy;\n};\n\njQuery.holdReady = function( hold ) {\n\tif ( hold ) {\n\t\tjQuery.readyWait++;\n\t} else {\n\t\tjQuery.ready( true );\n\t}\n};\njQuery.isArray = Array.isArray;\njQuery.parseJSON = JSON.parse;\njQuery.nodeName = nodeName;\njQuery.isFunction = isFunction;\njQuery.isWindow = isWindow;\njQuery.camelCase = camelCase;\njQuery.type = toType;\n\njQuery.now = Date.now;\n\njQuery.isNumeric = function( obj ) {\n\n\t// As of jQuery 3.0, isNumeric is limited to\n\t// strings and numbers (primitives or objects)\n\t// that can be coerced to finite numbers (gh-2662)\n\tvar type = jQuery.type( obj );\n\treturn ( type === \"number\" || type === \"string\" ) &&\n\n\t\t// parseFloat NaNs numeric-cast false positives (\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t!isNaN( obj - parseFloat( obj ) );\n};\n\n\n\n\n// Register as a named AMD module, since jQuery can be concatenated with other\n// files that may use define, but not via a proper concatenation script that\n// understands anonymous AMD modules. A named AMD is safest and most robust\n// way to register. Lowercase jquery is used because AMD module names are\n// derived from file names, and jQuery is normally delivered in a lowercase\n// file name. Do this after creating the global so that if an AMD module wants\n// to call noConflict to hide this version of jQuery, it will work.\n\n// Note that for maximum portability, libraries that are not jQuery should\n// declare themselves as anonymous modules, and avoid setting a global if an\n// AMD loader is present. jQuery is a special case. For more information, see\n// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\nif ( typeof define === \"function\" && define.amd ) {\n\tdefine( \"jquery\", [], function() {\n\t\treturn jQuery;\n\t} );\n}\n\n\n\n\nvar\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$;\n\njQuery.noConflict = function( deep ) {\n\tif ( window.$ === jQuery ) {\n\t\twindow.$ = _$;\n\t}\n\n\tif ( deep && window.jQuery === jQuery ) {\n\t\twindow.jQuery = _jQuery;\n\t}\n\n\treturn jQuery;\n};\n\n// Expose jQuery and $ identifiers, even in AMD\n// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (#13566)\nif ( !noGlobal ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\n\n\n\nreturn jQuery;\n} );\n","module.exports = function() {\n\tthrow new Error(\"define cannot be used indirect\");\n};\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = filterEvents;\n\nvar _contains = _interopRequireDefault(require(\"../query/contains\"));\n\nvar _querySelectorAll = _interopRequireDefault(require(\"../query/querySelectorAll\"));\n\nfunction filterEvents(selector, handler) {\n return function filterHandler(e) {\n var top = e.currentTarget,\n target = e.target,\n matches = (0, _querySelectorAll.default)(top, selector);\n if (matches.some(function (match) {\n return (0, _contains.default)(match, target);\n })) handler.call(this, e);\n };\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = activeElement;\n\nvar _ownerDocument = _interopRequireDefault(require(\"./ownerDocument\"));\n\nfunction activeElement(doc) {\n if (doc === void 0) {\n doc = (0, _ownerDocument.default)();\n }\n\n try {\n return doc.activeElement;\n } catch (e) {\n /* ie throws if no active element */\n }\n}\n\nmodule.exports = exports[\"default\"];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactIs = require('react-is');\n\nvar _createChainableTypeChecker = require('./utils/createChainableTypeChecker');\n\nvar _createChainableTypeChecker2 = _interopRequireDefault(_createChainableTypeChecker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction elementType(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n\n if (_react2.default.isValidElement(propValue)) {\n return new Error('Invalid ' + location + ' `' + propFullName + '` of type ReactElement ' + ('supplied to `' + componentName + '`,expected an element type (a string ') + ', component class, or function component).');\n }\n\n if (!(0, _reactIs.isValidElementType)(propValue)) {\n return new Error('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected an element type (a string ') + ', component class, or function component).');\n }\n\n return null;\n}\n\nexports.default = (0, _createChainableTypeChecker2.default)(elementType);\nmodule.exports = exports['default'];","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/** @license React v16.8.6\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';Object.defineProperty(exports,\"__esModule\",{value:!0});\nvar b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?Symbol.for(\"react.memo\"):\n60115,r=b?Symbol.for(\"react.lazy\"):60116;function t(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case h:return a;default:return u}}case r:case q:case d:return u}}}function v(a){return t(a)===m}exports.typeOf=t;exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;\nexports.Fragment=e;exports.Lazy=r;exports.Memo=q;exports.Portal=d;exports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||\"object\"===typeof a&&null!==a&&(a.$$typeof===r||a.$$typeof===q||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n)};exports.isAsyncMode=function(a){return v(a)||t(a)===l};exports.isConcurrentMode=v;exports.isContextConsumer=function(a){return t(a)===k};\nexports.isContextProvider=function(a){return t(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return t(a)===n};exports.isFragment=function(a){return t(a)===e};exports.isLazy=function(a){return t(a)===r};exports.isMemo=function(a){return t(a)===q};exports.isPortal=function(a){return t(a)===d};exports.isProfiler=function(a){return t(a)===g};exports.isStrictMode=function(a){return t(a)===f};\nexports.isSuspense=function(a){return t(a)===p};\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _addClass = _interopRequireDefault(require(\"./addClass\"));\n\nexports.addClass = _addClass.default;\n\nvar _removeClass = _interopRequireDefault(require(\"./removeClass\"));\n\nexports.removeClass = _removeClass.default;\n\nvar _hasClass = _interopRequireDefault(require(\"./hasClass\"));\n\nexports.hasClass = _hasClass.default;\nvar _default = {\n addClass: _addClass.default,\n removeClass: _removeClass.default,\n hasClass: _hasClass.default\n};\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = addClass;\n\nvar _hasClass = _interopRequireDefault(require(\"./hasClass\"));\n\nfunction addClass(element, className) {\n if (element.classList) element.classList.add(className);else if (!(0, _hasClass.default)(element, className)) if (typeof element.className === 'string') element.className = element.className + ' ' + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + ' ' + className);\n}\n\nmodule.exports = exports[\"default\"];","'use strict';\n\nfunction replaceClassName(origClass, classToRemove) {\n return origClass.replace(new RegExp('(^|\\\\s)' + classToRemove + '(?:\\\\s|$)', 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n\nmodule.exports = function removeClass(element, className) {\n if (element.classList) element.classList.remove(className);else if (typeof element.className === 'string') element.className = replaceClassName(element.className, className);else element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n};","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = hyphenateStyleName;\n\nvar _hyphenate = _interopRequireDefault(require(\"./hyphenate\"));\n\n/**\n * Copyright 2013-2014, Facebook, Inc.\n * All rights reserved.\n * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/hyphenateStyleName.js\n */\nvar msPattern = /^ms-/;\n\nfunction hyphenateStyleName(string) {\n return (0, _hyphenate.default)(string).replace(msPattern, '-ms-');\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = hyphenate;\nvar rUpper = /([A-Z])/g;\n\nfunction hyphenate(string) {\n return string.replace(rUpper, '-$1').toLowerCase();\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = _getComputedStyle;\n\nvar _camelizeStyle = _interopRequireDefault(require(\"../util/camelizeStyle\"));\n\nvar rposition = /^(top|right|bottom|left)$/;\nvar rnumnonpx = /^([+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|))(?!px)[a-z%]+$/i;\n\nfunction _getComputedStyle(node) {\n if (!node) throw new TypeError('No Element passed to `getComputedStyle()`');\n var doc = node.ownerDocument;\n return 'defaultView' in doc ? doc.defaultView.opener ? node.ownerDocument.defaultView.getComputedStyle(node, null) : window.getComputedStyle(node, null) : {\n //ie 8 \"magic\" from: https://github.com/jquery/jquery/blob/1.11-stable/src/css/curCSS.js#L72\n getPropertyValue: function getPropertyValue(prop) {\n var style = node.style;\n prop = (0, _camelizeStyle.default)(prop);\n if (prop == 'float') prop = 'styleFloat';\n var current = node.currentStyle[prop] || null;\n if (current == null && style && style[prop]) current = style[prop];\n\n if (rnumnonpx.test(current) && !rposition.test(prop)) {\n // Remember the original values\n var left = style.left;\n var runStyle = node.runtimeStyle;\n var rsLeft = runStyle && runStyle.left; // Put in the new values to get a computed value out\n\n if (rsLeft) runStyle.left = node.currentStyle.left;\n style.left = prop === 'fontSize' ? '1em' : current;\n current = style.pixelLeft + 'px'; // Revert the changed values\n\n style.left = left;\n if (rsLeft) runStyle.left = rsLeft;\n }\n\n return current;\n }\n };\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = removeStyle;\n\nfunction removeStyle(node, key) {\n return 'removeProperty' in node.style ? node.style.removeProperty(key) : node.style.removeAttribute(key);\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = isTransform;\nvar supportedTransforms = /^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i;\n\nfunction isTransform(property) {\n return !!(property && supportedTransforms.test(property));\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = isOverflowing;\n\nvar _isWindow = _interopRequireDefault(require(\"dom-helpers/query/isWindow\"));\n\nvar _ownerDocument = _interopRequireDefault(require(\"dom-helpers/ownerDocument\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction isBody(node) {\n return node && node.tagName.toLowerCase() === 'body';\n}\n\nfunction bodyIsOverflowing(node) {\n var doc = (0, _ownerDocument.default)(node);\n var win = (0, _isWindow.default)(doc);\n return doc.body.clientWidth < win.innerWidth;\n}\n\nfunction isOverflowing(container) {\n var win = (0, _isWindow.default)(container);\n return win || isBody(container) ? bodyIsOverflowing(container) : container.scrollHeight > container.clientHeight;\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = getWindow;\n\nfunction getWindow(node) {\n return node === node.window ? node : node.nodeType === 9 ? node.defaultView || node.parentWindow : false;\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.ariaHidden = ariaHidden;\nexports.hideSiblings = hideSiblings;\nexports.showSiblings = showSiblings;\nvar BLACKLIST = ['template', 'script', 'style'];\n\nvar isHidable = function isHidable(_ref) {\n var nodeType = _ref.nodeType,\n tagName = _ref.tagName;\n return nodeType === 1 && BLACKLIST.indexOf(tagName.toLowerCase()) === -1;\n};\n\nvar siblings = function siblings(container, exclude, cb) {\n exclude = [].concat(exclude);\n [].forEach.call(container.children, function (node) {\n if (exclude.indexOf(node) === -1 && isHidable(node)) {\n cb(node);\n }\n });\n};\n\nfunction ariaHidden(show, node) {\n if (!node) return;\n\n if (show) {\n node.setAttribute('aria-hidden', 'true');\n } else {\n node.removeAttribute('aria-hidden');\n }\n}\n\nfunction hideSiblings(container, _ref2) {\n var root = _ref2.root,\n backdrop = _ref2.backdrop;\n siblings(container, [root, backdrop], function (node) {\n return ariaHidden(true, node);\n });\n}\n\nfunction showSiblings(container, _ref3) {\n var root = _ref3.root,\n backdrop = _ref3.backdrop;\n siblings(container, [root, backdrop], function (node) {\n return ariaHidden(false, node);\n });\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _componentOrElement = _interopRequireDefault(require(\"prop-types-extra/lib/componentOrElement\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _WaitForContainer = _interopRequireDefault(require(\"./WaitForContainer\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\n * The `<Portal/>` component renders its children into a new \"subtree\" outside of current component hierarchy.\n * You can think of it as a declarative `appendChild()`, or jQuery's `$.fn.appendTo()`.\n * The children of `<Portal/>` component will be appended to the `container` specified.\n */\nvar Portal =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Portal, _React$Component);\n\n function Portal() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = Portal.prototype;\n\n _proto.render = function render() {\n var _this = this;\n\n return this.props.children ? _react.default.createElement(_WaitForContainer.default, {\n container: this.props.container,\n onContainerResolved: this.props.onRendered\n }, function (container) {\n return _reactDom.default.createPortal(_this.props.children, container);\n }) : null;\n };\n\n return Portal;\n}(_react.default.Component);\n\nPortal.displayName = 'Portal';\nPortal.propTypes = {\n /**\n * A Node, Component instance, or function that returns either. The `container` will have the Portal children\n * appended to it.\n */\n container: _propTypes.default.oneOfType([_componentOrElement.default, _propTypes.default.func]),\n onRendered: _propTypes.default.func\n};\nvar _default = Portal;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _componentOrElement = _interopRequireDefault(require(\"prop-types-extra/lib/componentOrElement\"));\n\nvar _inDOM = _interopRequireDefault(require(\"dom-helpers/util/inDOM\"));\n\nvar _ownerDocument = _interopRequireDefault(require(\"dom-helpers/ownerDocument\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _getContainer = _interopRequireDefault(require(\"./utils/getContainer\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar propTypes = {\n /**\n * A Node, Component instance, or function that returns either. The `container` will have the Portal children\n * appended to it.\n */\n container: _propTypes.default.oneOfType([_componentOrElement.default, _propTypes.default.func]),\n onContainerResolved: _propTypes.default.func\n};\n\nvar WaitForContainer =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(WaitForContainer, _React$Component);\n\n function WaitForContainer() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n if (!_inDOM.default) return _assertThisInitialized(_this);\n var container = _this.props.container;\n if (typeof container === 'function') container = container();\n\n if (container && !_reactDom.default.findDOMNode(container)) {\n // The container is a React component that has not yet been rendered.\n // Don't set the container node yet.\n return _assertThisInitialized(_this);\n }\n\n _this.setContainer(container);\n\n return _this;\n }\n\n var _proto = WaitForContainer.prototype;\n\n _proto.UNSAFE_componentWillReceiveProps = function UNSAFE_componentWillReceiveProps(nextProps) {\n if (nextProps.container !== this.props.container) {\n this.setContainer(nextProps.container);\n }\n };\n\n _proto.componentDidMount = function componentDidMount() {\n if (!this._container) {\n this.setContainer(this.props.container);\n this.forceUpdate(this.props.onContainerResolved);\n } else if (this.props.onContainerResolved) {\n this.props.onContainerResolved();\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this._container = null;\n };\n\n _proto.setContainer = function setContainer(container) {\n this._container = (0, _getContainer.default)(container, (0, _ownerDocument.default)().body);\n };\n\n _proto.render = function render() {\n return this._container ? this.props.children(this._container) : null;\n };\n\n return WaitForContainer;\n}(_react.default.Component);\n\nWaitForContainer.propTypes = propTypes;\nvar _default = WaitForContainer;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = _default;\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _ownerDocument = _interopRequireDefault(require(\"dom-helpers/ownerDocument\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _default(componentOrElement) {\n return (0, _ownerDocument.default)(_reactDom.default.findDOMNode(componentOrElement));\n}\n\nmodule.exports = exports.default;","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to) {\n var from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n var toParts = to && to.split('/') || [];\n var fromParts = from && from.split('/') || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash = void 0;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) {\n fromParts.unshift('..');\n }if (mustEndAbs && fromParts[0] !== '' && (!fromParts[0] || !isAbsolute(fromParts[0]))) fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction valueEqual(a, b) {\n if (a === b) return true;\n\n if (a == null || b == null) return false;\n\n if (Array.isArray(a)) {\n return Array.isArray(b) && a.length === b.length && a.every(function (item, index) {\n return valueEqual(item, b[index]);\n });\n }\n\n var aType = typeof a === 'undefined' ? 'undefined' : _typeof(a);\n var bType = typeof b === 'undefined' ? 'undefined' : _typeof(b);\n\n if (aType !== bType) return false;\n\n if (aType === 'object') {\n var aValue = a.valueOf();\n var bValue = b.valueOf();\n\n if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n\n var aKeys = Object.keys(a);\n var bKeys = Object.keys(b);\n\n if (aKeys.length !== bKeys.length) return false;\n\n return aKeys.every(function (key) {\n return valueEqual(a[key], b[key]);\n });\n }\n\n return false;\n}\n\nexport default valueEqual;","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n\n if (isProduction) {\n throw new Error(prefix);\n } else {\n throw new Error(prefix + \": \" + (message || ''));\n }\n}\n\nexport default invariant;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n return new RegExp('^' + prefix + '(\\\\/|\\\\?|#|$)', 'i').test(path);\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex === -1 ? 0 : prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n var hashIndex = window.location.href.indexOf('#');\n window.location.replace(window.location.href.slice(0, hashIndex >= 0 ? hashIndex : 0) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n return '#' + encodePath(basename + createPath(location));\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex === -1 ? 0 : prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n }\n\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport warning from \"warning\";\nimport invariant from \"invariant\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n/**\n * The public API for putting history on context.\n */\n\nvar Router = function (_React$Component) {\n _inherits(Router, _React$Component);\n\n function Router() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Router);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n match: _this.computeMatch(_this.props.history.location.pathname)\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Router.prototype.getChildContext = function getChildContext() {\n return {\n router: _extends({}, this.context.router, {\n history: this.props.history,\n route: {\n location: this.props.history.location,\n match: this.state.match\n }\n })\n };\n };\n\n Router.prototype.computeMatch = function computeMatch(pathname) {\n return {\n path: \"/\",\n url: \"/\",\n params: {},\n isExact: pathname === \"/\"\n };\n };\n\n Router.prototype.componentWillMount = function componentWillMount() {\n var _this2 = this;\n\n var _props = this.props,\n children = _props.children,\n history = _props.history;\n\n\n invariant(children == null || React.Children.count(children) === 1, \"A <Router> may have only one child element\");\n\n // Do this here so we can setState when a <Redirect> changes the\n // location in componentWillMount. This happens e.g. when doing\n // server rendering using a <StaticRouter>.\n this.unlisten = history.listen(function () {\n _this2.setState({\n match: _this2.computeMatch(history.location.pathname)\n });\n });\n };\n\n Router.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n warning(this.props.history === nextProps.history, \"You cannot change <Router history>\");\n };\n\n Router.prototype.componentWillUnmount = function componentWillUnmount() {\n this.unlisten();\n };\n\n Router.prototype.render = function render() {\n var children = this.props.children;\n\n return children ? React.Children.only(children) : null;\n };\n\n return Router;\n}(React.Component);\n\nRouter.propTypes = {\n history: PropTypes.object.isRequired,\n children: PropTypes.node\n};\nRouter.contextTypes = {\n router: PropTypes.object\n};\nRouter.childContextTypes = {\n router: PropTypes.object.isRequired\n};\n\n\nexport default Router;","// Written in this round about way for babel-transform-imports\nimport Router from \"react-router/es/Router\";\n\nexport default Router;","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport warning from \"warning\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createBrowserHistory as createHistory } from \"history\";\nimport Router from \"./Router\";\n\n/**\n * The public API for a <Router> that uses HTML5 history.\n */\n\nvar BrowserRouter = function (_React$Component) {\n _inherits(BrowserRouter, _React$Component);\n\n function BrowserRouter() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, BrowserRouter);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.history = createHistory(_this.props), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n BrowserRouter.prototype.componentWillMount = function componentWillMount() {\n warning(!this.props.history, \"<BrowserRouter> ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\");\n };\n\n BrowserRouter.prototype.render = function render() {\n return React.createElement(Router, { history: this.history, children: this.props.children });\n };\n\n return BrowserRouter;\n}(React.Component);\n\nBrowserRouter.propTypes = {\n basename: PropTypes.string,\n forceRefresh: PropTypes.bool,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n};\n\n\nexport default BrowserRouter;","import pathToRegexp from \"path-to-regexp\";\n\nvar patternCache = {};\nvar cacheLimit = 10000;\nvar cacheCount = 0;\n\nvar compilePath = function compilePath(pattern, options) {\n var cacheKey = \"\" + options.end + options.strict + options.sensitive;\n var cache = patternCache[cacheKey] || (patternCache[cacheKey] = {});\n\n if (cache[pattern]) return cache[pattern];\n\n var keys = [];\n var re = pathToRegexp(pattern, keys, options);\n var compiledPattern = { re: re, keys: keys };\n\n if (cacheCount < cacheLimit) {\n cache[pattern] = compiledPattern;\n cacheCount++;\n }\n\n return compiledPattern;\n};\n\n/**\n * Public API for matching a URL pathname to a path pattern.\n */\nvar matchPath = function matchPath(pathname) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var parent = arguments[2];\n\n if (typeof options === \"string\") options = { path: options };\n\n var _options = options,\n path = _options.path,\n _options$exact = _options.exact,\n exact = _options$exact === undefined ? false : _options$exact,\n _options$strict = _options.strict,\n strict = _options$strict === undefined ? false : _options$strict,\n _options$sensitive = _options.sensitive,\n sensitive = _options$sensitive === undefined ? false : _options$sensitive;\n\n\n if (path == null) return parent;\n\n var _compilePath = compilePath(path, { end: exact, strict: strict, sensitive: sensitive }),\n re = _compilePath.re,\n keys = _compilePath.keys;\n\n var match = re.exec(pathname);\n\n if (!match) return null;\n\n var url = match[0],\n values = match.slice(1);\n\n var isExact = pathname === url;\n\n if (exact && !isExact) return null;\n\n return {\n path: path, // the path pattern used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url, // the matched portion of the URL\n isExact: isExact, // whether or not we matched exactly\n params: keys.reduce(function (memo, key, index) {\n memo[key.name] = values[index];\n return memo;\n }, {})\n };\n};\n\nexport default matchPath;","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"warning\";\nimport invariant from \"invariant\";\nimport matchPath from \"./matchPath\";\n\n/**\n * The public API for rendering the first <Route> that matches.\n */\n\nvar Switch = function (_React$Component) {\n _inherits(Switch, _React$Component);\n\n function Switch() {\n _classCallCheck(this, Switch);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n Switch.prototype.componentWillMount = function componentWillMount() {\n invariant(this.context.router, \"You should not use <Switch> outside a <Router>\");\n };\n\n Switch.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n warning(!(nextProps.location && !this.props.location), '<Switch> elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.');\n\n warning(!(!nextProps.location && this.props.location), '<Switch> elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.');\n };\n\n Switch.prototype.render = function render() {\n var route = this.context.router.route;\n var children = this.props.children;\n\n var location = this.props.location || route.location;\n\n var match = void 0,\n child = void 0;\n React.Children.forEach(children, function (element) {\n if (match == null && React.isValidElement(element)) {\n var _element$props = element.props,\n pathProp = _element$props.path,\n exact = _element$props.exact,\n strict = _element$props.strict,\n sensitive = _element$props.sensitive,\n from = _element$props.from;\n\n var path = pathProp || from;\n\n child = element;\n match = matchPath(location.pathname, { path: path, exact: exact, strict: strict, sensitive: sensitive }, route.match);\n }\n });\n\n return match ? React.cloneElement(child, { location: location, computedMatch: match }) : null;\n };\n\n return Switch;\n}(React.Component);\n\nSwitch.contextTypes = {\n router: PropTypes.shape({\n route: PropTypes.object.isRequired\n }).isRequired\n};\nSwitch.propTypes = {\n children: PropTypes.node,\n location: PropTypes.object\n};\n\n\nexport default Switch;","// Written in this round about way for babel-transform-imports\nimport Switch from \"react-router/es/Switch\";\n\nexport default Switch;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport warning from \"warning\";\nimport invariant from \"invariant\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport matchPath from \"./matchPath\";\n\nvar isEmptyChildren = function isEmptyChildren(children) {\n return React.Children.count(children) === 0;\n};\n\n/**\n * The public API for matching a single path and rendering.\n */\n\nvar Route = function (_React$Component) {\n _inherits(Route, _React$Component);\n\n function Route() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Route);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n match: _this.computeMatch(_this.props, _this.context.router)\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Route.prototype.getChildContext = function getChildContext() {\n return {\n router: _extends({}, this.context.router, {\n route: {\n location: this.props.location || this.context.router.route.location,\n match: this.state.match\n }\n })\n };\n };\n\n Route.prototype.computeMatch = function computeMatch(_ref, router) {\n var computedMatch = _ref.computedMatch,\n location = _ref.location,\n path = _ref.path,\n strict = _ref.strict,\n exact = _ref.exact,\n sensitive = _ref.sensitive;\n\n if (computedMatch) return computedMatch; // <Switch> already computed the match for us\n\n invariant(router, \"You should not use <Route> or withRouter() outside a <Router>\");\n\n var route = router.route;\n\n var pathname = (location || route.location).pathname;\n\n return matchPath(pathname, { path: path, strict: strict, exact: exact, sensitive: sensitive }, route.match);\n };\n\n Route.prototype.componentWillMount = function componentWillMount() {\n warning(!(this.props.component && this.props.render), \"You should not use <Route component> and <Route render> in the same route; <Route render> will be ignored\");\n\n warning(!(this.props.component && this.props.children && !isEmptyChildren(this.props.children)), \"You should not use <Route component> and <Route children> in the same route; <Route children> will be ignored\");\n\n warning(!(this.props.render && this.props.children && !isEmptyChildren(this.props.children)), \"You should not use <Route render> and <Route children> in the same route; <Route children> will be ignored\");\n };\n\n Route.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps, nextContext) {\n warning(!(nextProps.location && !this.props.location), '<Route> elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.');\n\n warning(!(!nextProps.location && this.props.location), '<Route> elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.');\n\n this.setState({\n match: this.computeMatch(nextProps, nextContext.router)\n });\n };\n\n Route.prototype.render = function render() {\n var match = this.state.match;\n var _props = this.props,\n children = _props.children,\n component = _props.component,\n render = _props.render;\n var _context$router = this.context.router,\n history = _context$router.history,\n route = _context$router.route,\n staticContext = _context$router.staticContext;\n\n var location = this.props.location || route.location;\n var props = { match: match, location: location, history: history, staticContext: staticContext };\n\n if (component) return match ? React.createElement(component, props) : null;\n\n if (render) return match ? render(props) : null;\n\n if (typeof children === \"function\") return children(props);\n\n if (children && !isEmptyChildren(children)) return React.Children.only(children);\n\n return null;\n };\n\n return Route;\n}(React.Component);\n\nRoute.propTypes = {\n computedMatch: PropTypes.object, // private, from <Switch>\n path: PropTypes.string,\n exact: PropTypes.bool,\n strict: PropTypes.bool,\n sensitive: PropTypes.bool,\n component: PropTypes.func,\n render: PropTypes.func,\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n location: PropTypes.object\n};\nRoute.contextTypes = {\n router: PropTypes.shape({\n history: PropTypes.object.isRequired,\n route: PropTypes.object.isRequired,\n staticContext: PropTypes.object\n })\n};\nRoute.childContextTypes = {\n router: PropTypes.object.isRequired\n};\n\n\nexport default Route;","// Written in this round about way for babel-transform-imports\nimport Route from \"react-router/es/Route\";\n\nexport default Route;","\r\n\r\n//Обертка для лога в приложении\r\nexport default function Log(sender, message) {\r\n if (sender === null || sender === undefined)\r\n throw \"LogTools: sender not set\";\r\n\r\n console.log(sender + \": \" + message);\r\n}","\r\n\r\n//Общие конфигурации\r\nexport default class Configuration {\r\n static RooDirectoryID = -1;\r\n static upload_chunk_size = 102400;\r\n}","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"invariant\";\nimport { createLocation } from \"history\";\n\nvar isModifiedEvent = function isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n};\n\n/**\n * The public API for rendering a history-aware <a>.\n */\n\nvar Link = function (_React$Component) {\n _inherits(Link, _React$Component);\n\n function Link() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Link);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.handleClick = function (event) {\n if (_this.props.onClick) _this.props.onClick(event);\n\n if (!event.defaultPrevented && // onClick prevented default\n event.button === 0 && // ignore everything but left clicks\n !_this.props.target && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n\n var history = _this.context.router.history;\n var _this$props = _this.props,\n replace = _this$props.replace,\n to = _this$props.to;\n\n\n if (replace) {\n history.replace(to);\n } else {\n history.push(to);\n }\n }\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Link.prototype.render = function render() {\n var _props = this.props,\n replace = _props.replace,\n to = _props.to,\n innerRef = _props.innerRef,\n props = _objectWithoutProperties(_props, [\"replace\", \"to\", \"innerRef\"]); // eslint-disable-line no-unused-vars\n\n invariant(this.context.router, \"You should not use <Link> outside a <Router>\");\n\n invariant(to !== undefined, 'You must specify the \"to\" property');\n\n var history = this.context.router.history;\n\n var location = typeof to === \"string\" ? createLocation(to, null, null, history.location) : to;\n\n var href = history.createHref(location);\n return React.createElement(\"a\", _extends({}, props, { onClick: this.handleClick, href: href, ref: innerRef }));\n };\n\n return Link;\n}(React.Component);\n\nLink.propTypes = {\n onClick: PropTypes.func,\n target: PropTypes.string,\n replace: PropTypes.bool,\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired,\n innerRef: PropTypes.oneOfType([PropTypes.string, PropTypes.func])\n};\nLink.defaultProps = {\n replace: false\n};\nLink.contextTypes = {\n router: PropTypes.shape({\n history: PropTypes.shape({\n push: PropTypes.func.isRequired,\n replace: PropTypes.func.isRequired,\n createHref: PropTypes.func.isRequired\n }).isRequired\n }).isRequired\n};\n\n\nexport default Link;","\r\nimport Log from './LogTools'\r\n\r\n\r\n//Обертка для запросов к базе\r\n//URL - \r\n//Methid : Get Post\r\n//data: данные\r\nexport default function ApiQuery(url, method, data){\r\n Log(\"ApiQuery\", \"query to \" + url);\r\n\r\n return fetch(\r\n url,\r\n {\r\n method: method,\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n credentials: 'include',\r\n body: JSON.stringify(data)\r\n }\r\n ).then(function(response){\r\n return response.json();\r\n });\r\n}","\r\nimport ApiQuery from '../Tools/ApiQuery'\r\n\r\n\r\nexport default class AuthServices {\r\n\r\n constructor() {\r\n\r\n this.URL_Auth = \"api/Auth/Auth\";\r\n this.URL_UserInfo = \"api/Auth/UserInfo\"\r\n\r\n this.AuthCoockieName = \"AuthToken\";\r\n }\r\n\r\n async AuthAsync(login, password) {\r\n\r\n return await ApiQuery(this.URL_Auth, \"Post\",\r\n {\r\n Login: login,\r\n Password: password\r\n }).then(function (data) {\r\n if (data.Successe) {\r\n this._SetTocken(data.Token);\r\n }\r\n else {\r\n this._SetTocken(\"\");\r\n }\r\n\r\n return data;\r\n }.bind(this));\r\n }\r\n\r\n Logout() {\r\n this._SetTocken(\"\");\r\n }\r\n\r\n\r\n async GetUserInfoAsync() {\r\n return await ApiQuery(this.URL_UserInfo, \"Post\")\r\n .then(function (data) {\r\n if (data.Successe) {\r\n this._SetTocken(data.Token);\r\n }\r\n else {\r\n this._SetTocken(\"\");\r\n }\r\n\r\n return data;\r\n }.bind(this));\r\n }\r\n\r\n\r\n //Возвращает true если пользователь авторизован\r\n IsAuth() {\r\n let token = this._GetTocken();\r\n return token != \"\";\r\n }\r\n\r\n\r\n _getCookie(name) {\r\n let matches = document.cookie.match(new RegExp(\r\n \"(?:^|; )\" + name.replace(/([\\.$?*|{}\\(\\)\\[\\]\\\\\\/\\+^])/g, '\\\\$1') + \"=([^;]*)\"\r\n ));\r\n return matches ? decodeURIComponent(matches[1]) : \"\";\r\n }\r\n\r\n //Токен авторизации\r\n _GetTocken() {\r\n return this._getCookie(this.AuthCoockieName);\r\n }\r\n //задать токен\r\n _SetTocken(val) {\r\n document.cookie = this.AuthCoockieName + \"=\" + val;\r\n }\r\n\r\n}\r\n","\r\nimport React from 'react';\r\nimport autoBind from 'react-autobind';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport Log from '../../Tools/LogTools'\r\n\r\nimport AuthServices from '../../Services/AuthServices'\r\n\r\n\r\nexport default class MenuControl extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n autoBind(this);\r\n Log(\"MenuControl\", \"start\");\r\n\r\n //this.state = { counter: 0 };\r\n this.authServices = new AuthServices();\r\n }\r\n\r\n OnAuthChange() {\r\n this.forceUpdate();\r\n }\r\n\r\n render() {\r\n return (\r\n <div>\r\n\r\n <table>\r\n <thead>\r\n <tr>\r\n <td>Menu:</td>\r\n <td>\r\n <Link to={`/`}>\r\n <button>FS</button>\r\n </Link>\r\n </td>\r\n\r\n {this.authServices.IsAuth()\r\n ?\r\n <td>\r\n <Link to={`/Admin`}>\r\n <button>Admin</button>\r\n </Link>\r\n </td>\r\n : <td></td>\r\n }\r\n </tr>\r\n </thead> \r\n </table>\r\n\r\n </div >\r\n );\r\n }\r\n}\r\n\r\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport forwardRef from '@restart/context/forwardRef';\nimport React, { useContext } from 'react';\nvar ThemeContext = React.createContext(new Map());\nvar Consumer = ThemeContext.Consumer,\n Provider = ThemeContext.Provider;\n\nvar ThemeProvider =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(ThemeProvider, _React$Component);\n\n function ThemeProvider(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this.prefixes = new Map();\n Object.keys(_this.props.prefixes).forEach(function (key) {\n _this.prefixes.set(key, _this.props.prefixes[key]);\n });\n return _this;\n }\n\n var _proto = ThemeProvider.prototype;\n\n _proto.render = function render() {\n return React.createElement(Provider, {\n value: this.prefixes\n }, this.props.children);\n };\n\n return ThemeProvider;\n}(React.Component);\n\nexport function useBootstrapPrefix(prefix, defaultPrefix) {\n var prefixes = useContext(ThemeContext);\n return prefix || prefixes.get(defaultPrefix) || defaultPrefix;\n}\n\nfunction createBootstrapComponent(Component, opts) {\n if (typeof opts === 'string') opts = {\n prefix: opts\n };\n var isClassy = Component.prototype && Component.prototype.isReactComponent; // If it's a functional component make sure we don't break it with a ref\n\n var _opts = opts,\n prefix = _opts.prefix,\n _opts$forwardRefAs = _opts.forwardRefAs,\n forwardRefAs = _opts$forwardRefAs === void 0 ? isClassy ? 'ref' : 'innerRef' : _opts$forwardRefAs;\n return forwardRef(function (_ref, ref) {\n var props = _extends({}, _ref);\n\n props[forwardRefAs] = ref;\n var prefixes = useContext(ThemeContext);\n return React.createElement(Component, _extends({}, props, {\n // eslint-disable-next-line react/prop-types\n bsPrefix: props.bsPrefix || prefixes.get(prefix) || prefix\n }));\n }, {\n displayName: \"Bootstrap(\" + (Component.displayName || Component.name) + \")\"\n });\n}\n\nexport { createBootstrapComponent, Consumer as ThemeConsumer };\nexport default ThemeProvider;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport camelize from 'dom-helpers/util/camelize';\nimport { useBootstrapPrefix } from '../ThemeProvider';\n\nvar pascalCase = function pascalCase(str) {\n return str[0].toUpperCase() + camelize(str).slice(1);\n};\n\nexport default function createWithBsPrefix(prefix, _temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$displayName = _ref.displayName,\n displayName = _ref$displayName === void 0 ? pascalCase(prefix) : _ref$displayName,\n _ref$Component = _ref.Component,\n Component = _ref$Component === void 0 ? 'div' : _ref$Component,\n defaultProps = _ref.defaultProps;\n\n var BsComponent = React.forwardRef( // eslint-disable-next-line react/prop-types\n function (_ref2, ref) {\n var className = _ref2.className,\n bsPrefix = _ref2.bsPrefix,\n _ref2$as = _ref2.as,\n Tag = _ref2$as === void 0 ? Component : _ref2$as,\n props = _objectWithoutPropertiesLoose(_ref2, [\"className\", \"bsPrefix\", \"as\"]);\n\n var resolvedPrefix = useBootstrapPrefix(bsPrefix, prefix);\n return React.createElement(Tag, _extends({\n ref: ref,\n className: classNames(className, resolvedPrefix)\n }, props));\n });\n BsComponent.defaultProps = defaultProps;\n BsComponent.displayName = displayName;\n return BsComponent;\n}","import React from 'react';\nvar FormContext = React.createContext({\n controlId: undefined\n});\nexport default FormContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React, { useMemo } from 'react';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormGroup = React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n children = _ref.children,\n controlId = _ref.controlId,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"children\", \"controlId\", \"as\"]);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-group');\n var context = useMemo(function () {\n return {\n controlId: controlId\n };\n }, [controlId]);\n return React.createElement(FormContext.Provider, {\n value: context\n }, React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames(className, bsPrefix)\n }), children));\n});\nFormGroup.displayName = 'FormGroup';\nexport default FormGroup;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nvar propTypes = {\n /**\n * Specify whether the feedback is for valid or invalid fields\n *\n * @type {('valid'|'invalid')}\n */\n type: PropTypes.string.isRequired,\n as: PropTypes.elementType\n};\nvar defaultProps = {\n type: 'valid'\n};\nvar Feedback = React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\nfunction (_ref, ref) {\n var _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n className = _ref.className,\n type = _ref.type,\n props = _objectWithoutPropertiesLoose(_ref, [\"as\", \"className\", \"type\"]);\n\n return React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames(className, type && type + \"-feedback\")\n }));\n});\nFeedback.displayName = 'Feedback';\nFeedback.propTypes = propTypes;\nFeedback.defaultProps = defaultProps;\nexport default Feedback;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport warning from 'warning';\nimport Feedback from './Feedback';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormControl = React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n type = _ref.type,\n size = _ref.size,\n id = _ref.id,\n className = _ref.className,\n isValid = _ref.isValid,\n isInvalid = _ref.isInvalid,\n plaintext = _ref.plaintext,\n readOnly = _ref.readOnly,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'input' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"type\", \"size\", \"id\", \"className\", \"isValid\", \"isInvalid\", \"plaintext\", \"readOnly\", \"as\"]);\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId;\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-control');\n var classes;\n\n if (plaintext) {\n var _classes;\n\n classes = (_classes = {}, _classes[bsPrefix + \"-plaintext\"] = true, _classes);\n } else if (type === 'file') {\n var _classes2;\n\n classes = (_classes2 = {}, _classes2[bsPrefix + \"-file\"] = true, _classes2);\n } else {\n var _classes3;\n\n classes = (_classes3 = {}, _classes3[bsPrefix] = true, _classes3[bsPrefix + \"-\" + size] = size, _classes3);\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(controlId == null || !id, '`controlId` is ignored on `<FormControl>` when `id` is specified.') : void 0;\n return React.createElement(Component, _extends({}, props, {\n type: type,\n ref: ref,\n readOnly: readOnly,\n id: id || controlId,\n className: classNames(className, classes, isValid && \"is-valid\", isInvalid && \"is-invalid\")\n }));\n});\nFormControl.displayName = 'FormControl';\nFormControl.Feedback = Feedback;\nexport default FormControl;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport FormContext from './FormContext';\nvar defaultProps = {\n type: 'checkbox'\n};\nvar FormCheckInput = React.forwardRef(function (_ref, ref) {\n var id = _ref.id,\n bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n isValid = _ref.isValid,\n isInvalid = _ref.isInvalid,\n isStatic = _ref.isStatic,\n props = _objectWithoutPropertiesLoose(_ref, [\"id\", \"bsPrefix\", \"className\", \"isValid\", \"isInvalid\", \"isStatic\"]);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-check-input');\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId,\n custom = _useContext.custom;\n\n return React.createElement(\"input\", _extends({}, props, {\n ref: ref,\n id: id || controlId,\n className: classNames(className, !custom && bsPrefix, custom && 'custom-control-input', isValid && 'is-valid', isInvalid && 'is-invalid', isStatic && 'position-static')\n }));\n});\nFormCheckInput.displayName = 'FormCheckInput';\nFormCheckInput.defaultProps = defaultProps;\nexport default FormCheckInput;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport FormContext from './FormContext';\nvar defaultProps = {\n type: 'checkbox'\n};\nvar FormCheckLabel = React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n htmlFor = _ref.htmlFor,\n props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"htmlFor\"]);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-check-label');\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId,\n custom = _useContext.custom;\n\n return React.createElement(\"label\", _extends({}, props, {\n ref: ref,\n htmlFor: htmlFor || controlId,\n className: classNames(className, !custom && bsPrefix, custom && 'custom-control-label')\n }));\n});\nFormCheckLabel.displayName = 'FormCheckLabel';\nFormCheckLabel.defaultProps = defaultProps;\nexport default FormCheckLabel;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React, { useContext, useMemo } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport FormContext from './FormContext';\nimport Feedback from './Feedback';\nimport FormCheckInput from './FormCheckInput';\nimport FormCheckLabel from './FormCheckLabel';\nvar defaultProps = {\n type: 'checkbox',\n inline: false,\n disabled: false,\n isValid: false,\n isInvalid: false,\n title: ''\n};\nvar FormCheck = React.forwardRef(function (_ref, ref) {\n var id = _ref.id,\n bsPrefix = _ref.bsPrefix,\n inline = _ref.inline,\n disabled = _ref.disabled,\n isValid = _ref.isValid,\n isInvalid = _ref.isInvalid,\n feedback = _ref.feedback,\n className = _ref.className,\n style = _ref.style,\n title = _ref.title,\n type = _ref.type,\n label = _ref.label,\n children = _ref.children,\n custom = _ref.custom,\n props = _objectWithoutPropertiesLoose(_ref, [\"id\", \"bsPrefix\", \"inline\", \"disabled\", \"isValid\", \"isInvalid\", \"feedback\", \"className\", \"style\", \"title\", \"type\", \"label\", \"children\", \"custom\"]);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-check');\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId;\n\n var innerFormContext = useMemo(function () {\n return {\n controlId: id || controlId,\n custom: custom\n };\n }, [controlId, custom, id]);\n var hasLabel = label != null && label !== false && !children;\n var input = React.createElement(FormCheckInput, _extends({}, props, {\n type: type,\n ref: ref,\n isValid: isValid,\n isInvalid: isInvalid,\n isStatic: !hasLabel,\n disabled: disabled\n }));\n return React.createElement(FormContext.Provider, {\n value: innerFormContext\n }, React.createElement(\"div\", {\n style: style,\n className: classNames(className, !custom && bsPrefix, custom && \"custom-control custom-\" + type, inline && (custom ? 'custom-control' : bsPrefix) + \"-inline\")\n }, children || React.createElement(React.Fragment, null, input, hasLabel && React.createElement(FormCheckLabel, {\n title: title\n }, label), (isValid || isInvalid) && React.createElement(Feedback, {\n type: isValid ? 'valid' : 'invalid'\n }, feedback))));\n});\nFormCheck.displayName = 'FormCheck';\nFormCheck.defaultProps = defaultProps;\nFormCheck.Input = FormCheckInput;\nFormCheck.Label = FormCheckLabel;\nexport default FormCheck;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar DEVICE_SIZES = ['xl', 'lg', 'md', 'sm', 'xs'];\nvar Col = React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\nfunction (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"as\"]);\n\n var prefix = useBootstrapPrefix(bsPrefix, 'col');\n var spans = [];\n var classes = [];\n DEVICE_SIZES.forEach(function (brkPoint) {\n var propValue = props[brkPoint];\n delete props[brkPoint];\n var span, offset, order;\n\n if (propValue != null && typeof propValue === 'object') {\n var _propValue$span = propValue.span;\n span = _propValue$span === void 0 ? true : _propValue$span;\n offset = propValue.offset;\n order = propValue.order;\n } else {\n span = propValue;\n }\n\n var infix = brkPoint !== 'xs' ? \"-\" + brkPoint : '';\n if (span != null) spans.push(span === true ? \"\" + prefix + infix : \"\" + prefix + infix + \"-\" + span);\n if (order != null) classes.push(\"order\" + infix + \"-\" + order);\n if (offset != null) classes.push(\"offset\" + infix + \"-\" + offset);\n });\n\n if (!spans.length) {\n spans.push(prefix); // plain 'col'\n }\n\n return React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames.apply(void 0, [className].concat(spans, classes))\n }));\n});\nCol.displayName = 'Col';\nexport default Col;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport warning from 'warning';\nimport Col from './Col';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar defaultProps = {\n column: false,\n srOnly: false\n};\nvar FormLabel = React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n column = _ref.column,\n srOnly = _ref.srOnly,\n className = _ref.className,\n htmlFor = _ref.htmlFor,\n props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"column\", \"srOnly\", \"className\", \"htmlFor\"]);\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId;\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-label');\n var classes = classNames(className, bsPrefix, srOnly && 'sr-only', column && 'col-form-label');\n process.env.NODE_ENV !== \"production\" ? warning(controlId == null || !htmlFor, '`controlId` is ignored on `<FormLabel>` when `htmlFor` is specified.') : void 0;\n htmlFor = htmlFor || controlId;\n if (column) return React.createElement(Col, _extends({\n as: \"label\",\n className: classes,\n htmlFor: htmlFor\n }, props));\n return (// eslint-disable-next-line jsx-a11y/label-has-for, jsx-a11y/label-has-associated-control\n React.createElement(\"label\", _extends({\n ref: ref,\n className: classes,\n htmlFor: htmlFor\n }, props))\n );\n});\nFormLabel.displayName = 'FormLabel';\nFormLabel.defaultProps = defaultProps;\nexport default FormLabel;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormText = React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\nfunction (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'small' : _ref$as,\n muted = _ref.muted,\n props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"as\", \"muted\"]);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-text');\n return React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames(className, bsPrefix, muted && 'text-muted')\n }));\n});\nFormText.displayName = 'FormText';\nexport default FormText;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport createWithBsPrefix from './utils/createWithBsPrefix';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport FormGroup from './FormGroup';\nimport FormControl from './FormControl';\nimport FormCheck from './FormCheck';\nimport FormLabel from './FormLabel';\nimport FormText from './FormText';\nvar defaultProps = {\n inline: false\n};\nvar Form = React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n inline = _ref.inline,\n className = _ref.className,\n validated = _ref.validated,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'form' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"inline\", \"className\", \"validated\", \"as\"]);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form');\n return React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames(className, validated && 'was-validated', inline && bsPrefix + \"-inline\")\n }));\n});\nForm.displayName = 'Form';\nForm.defaultProps = defaultProps;\nForm.Row = createWithBsPrefix('form-row');\nForm.Group = FormGroup;\nForm.Control = FormControl;\nForm.Check = FormCheck;\nForm.Label = FormLabel;\nForm.Text = FormText;\nexport default Form;","\r\nimport toastr from 'toastr'\r\n\r\n\r\nexport default class Notification {\r\n\r\n static Sho(text, title) {\r\n\r\n //debugger;\r\n\r\n let Data = new Date();\r\n let Timestring = \"\" + Data.getHours() + \":\"\r\n + Data.getMinutes() + \":\"\r\n + Data.getSeconds() + \" | \"\r\n + text;\r\n\r\n\r\n toastr.success(Timestring, title,\r\n {\r\n \"timeOut\": 3000,\r\n \"progressBar\": true,\r\n \"closeButton\": true\r\n });\r\n }\r\n\r\n\r\n static MesOk(text, title) {\r\n let Data = new Date();\r\n let Timestring = \"\" + Data.getHours() + \":\"\r\n + Data.getMinutes() + \":\"\r\n + Data.getSeconds() + \" | \"\r\n + text;\r\n\r\n toastr.success(Timestring, title,\r\n {\r\n \"closeButton\": true,\r\n \"progressBar\": true\r\n });\r\n }\r\n static MesOk_NoHide(text, title) {\r\n let Data = new Date();\r\n let Timestring = \"\" + Data.getHours() + \":\"\r\n + Data.getMinutes() + \":\"\r\n + Data.getSeconds() + \" | \"\r\n + text;\r\n\r\n toastr.success(Timestring, title,\r\n {\r\n \"timeOut\": -1,\r\n \"closeButton\": true,\r\n \"progressBar\": true\r\n });\r\n }\r\n\r\n static MesEr(text, title) {\r\n let Data = new Date();\r\n let Timestring = \"\" + Data.getHours() + \":\"\r\n + Data.getMinutes() + \":\"\r\n + Data.getSeconds() + \" | \"\r\n + text;\r\n\r\n\r\n toastr.error(Timestring, title,\r\n {\r\n \"timeOut\": -1,\r\n \"closeButton\": true\r\n });\r\n }\r\n\r\n}\r\n\r\n","\r\nimport React from 'react';\r\nimport autoBind from 'react-autobind';\r\nimport { Form } from 'react-bootstrap'\r\n\r\nimport Log from '../../Tools/LogTools'\r\nimport Notification from '../../Tools/Notification'\r\n\r\nimport AuthServices from '../../Services/AuthServices'\r\n\r\n\r\nexport default class UserControl extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n autoBind(this);\r\n Log(\"UserControl\", \"start\");\r\n\r\n this.state = { UserName: \"\" };//, AuthResult: \"\" };\r\n this.authServices = new AuthServices();\r\n\r\n if (this.authServices.IsAuth())\r\n this.authServices.GetUserInfoAsync().then(function (data) {\r\n\r\n if (data.Successe) {\r\n this.setState({ UserName: data.UserName });// AuthResult: \"\" });\r\n this.props.ParentComponent.OnAuthChange();\r\n }\r\n else {\r\n this.setState({ UserName: \"\" });//, AuthResult: data.ResMsg });\r\n Notification.MesEr(data.ResMessage, \"Auth\");\r\n }\r\n\r\n }.bind(this));\r\n }\r\n\r\n //Кнопка входа\r\n AuthClick() {\r\n let login = this.refs.Login.value;\r\n let password = this.refs.Password.value;\r\n\r\n this.authServices.AuthAsync(login, password)\r\n .then(function (data) {\r\n\r\n if (data.Successe) {\r\n this.setState({ UserName: data.UserName });//, AuthResult: \"\" });\r\n\r\n this.props.ParentComponent.OnAuthChange();\r\n }\r\n else {\r\n this.setState({ UserName: \"\" });//, AuthResult: data.ResMsg });\r\n Notification.MesEr(data.ResMessage, \"Auth\");\r\n }\r\n\r\n }.bind(this));\r\n }\r\n\r\n //Кнопка выхода\r\n LogoutClick() {\r\n this.authServices.Logout();\r\n this.setState({ UserName: \"\" });//, AuthResult: \"\" });\r\n\r\n this.props.ParentComponent.OnAuthChange();\r\n }\r\n\r\n\r\n render() {\r\n let state = this.state;\r\n\r\n return (\r\n <div>\r\n {this.authServices.IsAuth()\r\n ?\r\n <div>\r\n <p>Вы авторизованы. Пользователь: {state.UserName}.</p>\r\n <button onClick={this.LogoutClick}>Logout</button>\r\n </div>\r\n :\r\n <div>\r\n <p>Вы не авторизованы {state.UserName}. Вход:</p>\r\n {/*{state.AuthResult != \"\" ? <p>{state.AuthResult}</p> : \"\"}*/}\r\n\r\n {/*<Form.Label>Email address</Form.Label>*/}\r\n <Form.Control ref=\"Login\" type=\"text\" placeholder=\"Enter login\" />\r\n <Form.Text className=\"text-muted\">\r\n We'll never share your login with anyone else.\r\n </Form.Text>\r\n <br />\r\n {/*<Form.Label>Password</Form.Label>*/}\r\n <Form.Control ref=\"Password\" type=\"password\" placeholder=\"Password\" />\r\n <br />\r\n <button onClick={this.AuthClick}>Auth</button>\r\n </div>\r\n }\r\n </div>\r\n );\r\n }\r\n}\r\n","\r\nimport ApiQuery from '../Tools/ApiQuery'\r\n\r\n\r\nexport default class FileExplorerServices {\r\n constructor() {\r\n\r\n this.URL_DirectoryItems = \"api/Explorer/GetDirectoryItems?ID=\";\r\n this.URL_ScanDirectory = \"api/Explorer/ScanDirectory?ID=\";\r\n\r\n this.URL_Delete = \"api/Explorer/DeleteFile\";\r\n this.URL_Move = \"api/Explorer/MoveElement\";\r\n this.URL_Download = \"api/Explorer/GetFile?ID=\";\r\n this.URL_CreateDirectory = \"api/Explorer/CreateDirectory?\";\r\n\r\n }\r\n\r\n\r\n async DirectoryGetItemsAsync(ID) {\r\n let url = this.URL_DirectoryItems + ID;\r\n\r\n return await ApiQuery(url, \"Get\");\r\n }\r\n\r\n async ScanDirectoryAsync(ID) {\r\n let url = this.URL_ScanDirectory + ID;\r\n\r\n return await ApiQuery(url, \"Get\");\r\n }\r\n\r\n async DeleteAsync(ID) {\r\n\r\n return await ApiQuery(this.URL_Delete, \"POST\",\r\n {\r\n ID: ID\r\n });\r\n\r\n }\r\n\r\n async MoveAsync(elemID, directoryID) {\r\n return await ApiQuery(this.URL_Move, \"POST\",\r\n {\r\n ID: elemID,\r\n NewParent: directoryID\r\n });\r\n }\r\n\r\n\r\n OpenDownload(ID) {\r\n let url = this.URL_Download + ID;\r\n\r\n window.open(url, '_blank');\r\n }\r\n\r\n async CreateDirectoryAsync(dirname, id) {\r\n return await ApiQuery(this.URL_CreateDirectory, \"POST\",\r\n {\r\n ParentID: id,\r\n Name: dirname\r\n });\r\n }\r\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","/**\n * Safe chained function\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n *\n * @param {function} functions to chain\n * @returns {function|null}\n */\nfunction createChainedFunction() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n return funcs.filter(function (f) {\n return f != null;\n }).reduce(function (acc, f) {\n if (typeof f !== 'function') {\n throw new Error('Invalid Argument Type, must only provide functions, undefined, or null.');\n }\n\n if (acc === null) return f;\n return function chainedFunction() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n acc.apply(this, args);\n f.apply(this, args);\n };\n }, null);\n}\n\nexport default createChainedFunction;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport React from 'react';\nimport createChainedFunction from './utils/createChainedFunction';\n\nfunction isTrivialHref(href) {\n return !href || href.trim() === '#';\n}\n/**\n * There are situations due to browser quirks or Bootstrap CSS where\n * an anchor tag is needed, when semantically a button tag is the\n * better choice. SafeAnchor ensures that when an anchor is used like a\n * button its accessible. It also emulates input `disabled` behavior for\n * links, which is usually desirable for Buttons, NavItems, DropdownItems, etc.\n */\n\n\nvar SafeAnchor =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(SafeAnchor, _React$Component);\n\n function SafeAnchor(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n _this.handleClick = _this.handleClick.bind(_assertThisInitialized(_this));\n _this.handleKeyDown = _this.handleKeyDown.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n var _proto = SafeAnchor.prototype;\n\n _proto.handleClick = function handleClick(event) {\n var _this$props = this.props,\n disabled = _this$props.disabled,\n href = _this$props.href,\n onClick = _this$props.onClick;\n\n if (disabled || isTrivialHref(href)) {\n event.preventDefault();\n }\n\n if (disabled) {\n event.stopPropagation();\n return;\n }\n\n if (onClick) {\n onClick(event);\n }\n };\n\n _proto.handleKeyDown = function handleKeyDown(event) {\n if (event.key === ' ') {\n event.preventDefault();\n this.handleClick(event);\n }\n };\n\n _proto.render = function render() {\n var _this$props2 = this.props,\n _this$props2$as = _this$props2.as,\n Component = _this$props2$as === void 0 ? 'a' : _this$props2$as,\n disabled = _this$props2.disabled,\n onKeyDown = _this$props2.onKeyDown,\n innerRef = _this$props2.innerRef,\n props = _objectWithoutPropertiesLoose(_this$props2, [\"as\", \"disabled\", \"onKeyDown\", \"innerRef\"]);\n\n if (isTrivialHref(props.href)) {\n props.role = props.role || 'button'; // we want to make sure there is a href attribute on the node\n // otherwise, the cursor incorrectly styled (except with role='button')\n\n props.href = props.href || '#';\n }\n\n if (disabled) {\n props.tabIndex = -1;\n props['aria-disabled'] = true;\n }\n\n if (innerRef) props.ref = innerRef;\n return React.createElement(Component, _extends({}, props, {\n onClick: this.handleClick,\n onKeyDown: createChainedFunction(this.handleKeyDown, onKeyDown)\n }));\n };\n\n return SafeAnchor;\n}(React.Component);\n\nexport default SafeAnchor;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport SafeAnchor from './SafeAnchor';\nvar defaultProps = {\n variant: 'primary',\n active: false,\n disabled: false,\n type: 'button'\n};\nvar Button = React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n variant = _ref.variant,\n size = _ref.size,\n active = _ref.active,\n className = _ref.className,\n block = _ref.block,\n type = _ref.type,\n as = _ref.as,\n props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"variant\", \"size\", \"active\", \"className\", \"block\", \"type\", \"as\"]);\n\n var prefix = useBootstrapPrefix(bsPrefix, 'btn');\n var classes = classNames(className, prefix, active && 'active', prefix + \"-\" + variant, block && prefix + \"-block\", size && prefix + \"-\" + size);\n\n if (props.href) {\n return React.createElement(SafeAnchor, _extends({}, props, {\n as: as,\n innerRef: ref,\n className: classNames(classes, props.disabled && 'disabled')\n }));\n }\n\n var Component = as || 'button';\n if (ref) props.ref = ref;\n return React.createElement(Component, _extends({}, props, {\n type: type,\n className: classes\n }));\n});\nButton.displayName = 'Button';\nButton.defaultProps = defaultProps;\nexport default Button;","\r\nimport React from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport autoBind from 'react-autobind';\r\nimport { Button } from 'react-bootstrap'\r\n\r\nimport Log from '../../../Tools/LogTools'\r\n\r\n\r\nexport default class FileExplorerRow extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n autoBind(this);\r\n Log(\"FileExplorerRow \" + this.props.ID, \"start\");\r\n\r\n this.state = { ID: this.props.ID, Data: this.props.data, ShoSelect: this.props.ShoSelect };\r\n\r\n //Log(\"FileExplorerRow \" + this.props.ID, \"GetDataID: \" + this.GetDataID());\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n this.props = nextProps;\r\n\r\n if (this.refs.Select != undefined)\r\n this.refs.Select.checked = false;\r\n\r\n this.setState({\r\n ID: this.props.ID,\r\n Data: this.props.data,\r\n ShoSelect: this.props.ShoSelect\r\n });\r\n\r\n //Log(\"FileExplorerRow \" + this.props.ID, \"GetDataID: \" + this.GetDataID());\r\n }\r\n\r\n GetDate() {\r\n return this.state.Data;\r\n }\r\n\r\n GetRowID() {\r\n return this.state.ID;\r\n }\r\n GetDataID() {\r\n return this.state.Data.ID;\r\n }\r\n IsCheked() {\r\n if (this.refs.Select == undefined)\r\n return false;\r\n\r\n return this.refs.Select.checked;\r\n }\r\n\r\n\r\n OnDirectoryClick() {\r\n this.props.ParentComponent.OnDirectoryClick(this.GetDataID());\r\n }\r\n\r\n render() {\r\n let state = this.state;\r\n let elem = state.Data;\r\n\r\n return (\r\n <tr>\r\n <td>{elem.ID}</td>\r\n {state.ShoSelect\r\n ?\r\n <td>\r\n <input ref=\"Select\" type=\"checkbox\" />\r\n </td>\r\n : null\r\n }\r\n\r\n\r\n {(elem.Type === \"RootDirectory\" || elem.Type === \"Directory\")\r\n ?\r\n <td>\r\n <Link to={`/?ID=${elem.ID}`}>\r\n <Button id={elem.ID} onClick={this.OnDirectoryClick} variant=\"outline-dark\">\r\n {elem.Name}\r\n </Button>\r\n </Link>\r\n </td>\r\n : <td>{elem.Name}</td>\r\n }\r\n <td>{elem.Type}</td>\r\n <td>{elem.Size}</td>\r\n </tr>\r\n );\r\n\r\n }\r\n}","\r\nimport React from 'react';\r\nimport autoBind from 'react-autobind';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport Log from '../../../Tools/LogTools'\r\nimport Configuration from '../../../Tools/Configuration'\r\nimport ArrayCompare from '../../../Tools/Sort'\r\n\r\n\r\nimport FileExplorerServices from '../../../Services/FileExplorerServices'\r\n\r\nimport FileExplorerRow from './FileExplorerRow.jsx'\r\n\r\n\r\nexport default class FileExplorerControl extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n autoBind(this);\r\n Log(\"FileExplorerControl\", \"start\");\r\n\r\n\r\n this.state = { data: {}, ShoSelect: this.props.ShoSelect };\r\n this.ChildRows = [];\r\n this.fileExplorerServices = new FileExplorerServices();\r\n\r\n\r\n this.LoadDirectory();\r\n }\r\n\r\n //#endregion \r\n\r\n //#region Events\r\n\r\n OnBackClick(sender) {\r\n this.props.ParentComponent.SetID(this.state.data.ParentID);\r\n Log(\"FileExplorerControl\", \"OnBackClick \" + this.state.data.ParentID);\r\n\r\n //this.state = { ID: new_id };\r\n this.LoadDirectory();\r\n }\r\n\r\n OnDirectoryClick(id) {\r\n this.props.ParentComponent.SetID(id);\r\n Log(\"FileExplorerControl\", \"MoveToDirectory \" + id);\r\n\r\n\r\n //this.state = { ID: new_id };\r\n this.LoadDirectory();\r\n }\r\n\r\n OnSortClick(sender) {\r\n let SortProperty = sender.target.attributes[0].value;\r\n\r\n let data = this.state.data;\r\n //debugger;\r\n data.items.sort(ArrayCompare(SortProperty, 1));\r\n this.setState({ data: data });\r\n }\r\n\r\n\r\n //#endregion\r\n\r\n //Загружает информацию о текущей папке\r\n LoadDirectory() {\r\n let ID = this.props.ParentComponent.GetID();\r\n Log(\"FileExplorerControl\", \"LoadDirectory \" + ID);\r\n\r\n this.fileExplorerServices.DirectoryGetItemsAsync(ID)\r\n .then(function (data) {\r\n this.setState({ data: data, ShoSelect: (this.props.ShoSelect && ID != -1 ? true : false) });\r\n }.bind(this));\r\n }\r\n\r\n OnScanDirClick(sender) {\r\n let ID = this.props.ParentComponent.GetID();\r\n Log(\"FileExplorerControl\", \"ScanDirectory \" + ID);\r\n\r\n this.fileExplorerServices.ScanDirectoryAsync(ID).\r\n then(function (data) {\r\n this.LoadDirectory();\r\n }.bind(this));\r\n }\r\n\r\n //Получить ID данных выбранных строк\r\n GetSelectedID() {\r\n //debugger;\r\n return this.ChildRows.\r\n filter(e => e.IsCheked()).\r\n map(e => e.GetDataID());\r\n }\r\n\r\n render() {\r\n let data = this.state.data;\r\n\r\n //Если данные не пусты\r\n if (JSON.stringify(data) !== '{}') {\r\n Log(\"FileExplorerControl\", \"Data\");\r\n\r\n return (\r\n <div>\r\n {this.props.ParentComponent.GetID() != Configuration.RooDirectoryID\r\n ?\r\n <p>\r\n <Link to={`/?ID=${data.ParentID}`}>\r\n <button onClick={this.OnBackClick}>\r\n l- На уровень вверх - {data.ParentName}\r\n </button>\r\n </Link>\r\n </p>\r\n : null\r\n }\r\n\r\n\r\n <p>{data.LogicPath}</p>\r\n <p>\r\n <button onClick={this.LoadDirectory}>\r\n Update\r\n </button>\r\n <button onClick={this.OnScanDirClick}>\r\n Rescan\r\n </button>\r\n </p>\r\n\r\n\r\n <table>\r\n\r\n <thead>\r\n <tr>\r\n <th>\r\n <button property=\"ID\" onClick={this.OnSortClick}>ID</button>\r\n </th>\r\n {\r\n this.state.ShoSelect\r\n ? <th>Select</th>\r\n : null\r\n }\r\n <th>\r\n <button property=\"Name\" onClick={this.OnSortClick}>Name</button>\r\n </th>\r\n <th>\r\n <button property=\"Type\" onClick={this.OnSortClick}>Type</button>\r\n </th>\r\n <th>\r\n <button property=\"Size\" onClick={this.OnSortClick}>Size</button>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {\r\n data.items.map(function (elem, i, arr) {\r\n return [\r\n <FileExplorerRow ref={row => {\r\n if (row != null) this.ChildRows[i] = row;\r\n else this.ChildRows.splice(i, 1);\r\n }}\r\n ShoSelect={this.state.ShoSelect}\r\n key={i}\r\n ID={i}\r\n data={elem}\r\n ParentComponent={this}\r\n />\r\n ];\r\n }.bind(this))\r\n }\r\n </tbody> \r\n \r\n </table>\r\n </div>\r\n );\r\n }\r\n else {\r\n Log(\"FileExplorerControl\", \"NoData\");\r\n\r\n return (\r\n <div>\r\n <p>NoData</p>\r\n </div>\r\n );\r\n }\r\n }\r\n}","//https://habr.com/ru/post/279867/\r\n\r\n\r\n////Использование\r\n//arr.sort(ArrayCompare()); //Обычная типобезопасная сортировка по возрастанию\r\n//arr.sort(ArrayCompare(-1)); //Обычная типобезопасная сортировка по убыванию\r\n//arr.sort(ArrayCompare('field')); //Сортировка по свойству field по возрастанию\r\n//arr.sort(ArrayCompare('field', -1)); //Сортировка по свойству field по убыванию\r\n///* Сортировка сначала по полю field1\r\n// при совпадении по полю field2, а если и оно совпало, то по полю field3\r\n// все по возрастанию */\r\n//arr.sort(compare('field1', 'field2', 'field3'));\r\n///* Сортировка сначала по полю field1 по возрастанию\r\n// при совпадении по полю field2 по убыванию */\r\n//arr.sort(compare({\r\n// field1: 1,\r\n// field2: -1\r\n//}));\r\n\r\n\r\n//Метод сравнения элементов для сортировки\r\n//field - имя свойства сущности\r\n//order порядок 0 - возрастание, 1 - убывание\r\nexport default function ArrayCompare(field, order) {\r\n var len = arguments.length;\r\n if (len === 0) {\r\n return (a, b) => (a < b && -1) || (a > b && 1) || 0;\r\n }\r\n if (len === 1) {\r\n switch (typeof field) {\r\n case 'number':\r\n return field < 0 ?\r\n ((a, b) => (a < b && 1) || (a > b && -1) || 0) :\r\n ((a, b) => (a < b && -1) || (a > b && 1) || 0);\r\n case 'string':\r\n return (a, b) => (a[field] < b[field] && -1) || (a[field] > b[field] && 1) || 0;\r\n }\r\n }\r\n if (len === 2 && typeof order === 'number') {\r\n return order < 0 ?\r\n ((a, b) => (a[field] < b[field] && 1) || (a[field] > b[field] && -1) || 0) :\r\n ((a, b) => (a[field] < b[field] && -1) || (a[field] > b[field] && 1) || 0);\r\n }\r\n var fields, orders;\r\n if (typeof field === 'object') {\r\n fields = Object.getOwnPropertyNames(field);\r\n orders = fields.map(key => field[key]);\r\n len = fields.length;\r\n } else {\r\n fields = new Array(len);\r\n orders = new Array(len);\r\n for (let i = len; i--;) {\r\n fields[i] = arguments[i];\r\n orders[i] = 1;\r\n }\r\n }\r\n return (a, b) => {\r\n for (let i = 0; i < len; i++) {\r\n if (a[fields[i]] < b[fields[i]]) return orders[i];\r\n if (a[fields[i]] > b[fields[i]]) return -orders[i];\r\n }\r\n return 0;\r\n };\r\n}","export default {\n disabled: false\n};","import React from 'react';\nexport default React.createContext(null);","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport * as PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 1 },\n * entered: { opacity: 1 },\n * exiting: { opacity: 0 },\n * exited: { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * <Transition in={inProp} timeout={duration}>\n * {state => (\n * <div style={{\n * ...defaultStyle,\n * ...transitionStyles[state]\n * }}>\n * I'm a fade Transition!\n * </div>\n * )}\n * </Transition>\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n * <div>\n * <Transition in={inProp} timeout={500}>\n * {state => (\n * // ...\n * )}\n * </Transition>\n * <button onClick={() => setInProp(true)}>\n * Click to Enter\n * </button>\n * </div>\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n }; // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n\n\n var _proto = Transition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n var node = ReactDOM.findDOMNode(this);\n\n if (nextStatus === ENTERING) {\n this.performEnter(node, mounting);\n } else {\n this.performExit(node);\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(node, mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter || config.disabled) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node);\n });\n return;\n }\n\n this.props.onEnter(node, appearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(node, appearing);\n\n _this2.onTransitionEnd(node, enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node, appearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit(node) {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts(); // no exit animation skip right to EXITED\n\n if (!exit || config.disabled) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n return;\n }\n\n this.props.onExit(node);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(node);\n\n _this3.onTransitionEnd(node, timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(node, timeout, handler) {\n this.setNextCallback(handler);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n this.props.addEndListener(node, this.nextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\"]); // filter props for Transtition\n\n\n delete childProps.in;\n delete childProps.mountOnEnter;\n delete childProps.unmountOnExit;\n delete childProps.appear;\n delete childProps.enter;\n delete childProps.exit;\n delete childProps.timeout;\n delete childProps.addEndListener;\n delete childProps.onEnter;\n delete childProps.onEntering;\n delete childProps.onEntered;\n delete childProps.onExit;\n delete childProps.onExiting;\n delete childProps.onExited;\n\n if (typeof children === 'function') {\n // allows for nested Transitions\n return React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, children(status, childProps));\n }\n\n var child = React.Children.only(children);\n return (// allows for nested Transitions\n React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, React.cloneElement(child, childProps))\n );\n };\n\n return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * <Transition in={this.state.in} timeout={150}>\n * {state => (\n * <MyComponent className={`fade fade-${state}`} />\n * )}\n * </Transition>\n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * Normally a component is not transitioned if it is shown when the `<Transition>` component mounts.\n * If you want to transition on the first mount set `appear` to `true`, and the\n * component will transition in as soon as the `<Transition>` mounts.\n *\n * > Note: there are no specific \"appear\" states. `appear` only adds an additional `enter` transition.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. **Note:** Timeouts are still used as a fallback if provided.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func // Name the function so it is clearer in the documentation\n\n} : {};\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = 0;\nTransition.EXITED = 1;\nTransition.ENTERING = 2;\nTransition.ENTERED = 3;\nTransition.EXITING = 4;\nexport default Transition;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\n\nvar _fadeStyles;\n\nimport classNames from 'classnames';\nimport React from 'react';\nimport Transition, { ENTERED, ENTERING } from 'react-transition-group/Transition';\nimport onEnd from 'dom-helpers/transition/end';\nimport triggerBrowserReflow from './utils/triggerBrowserReflow';\nvar defaultProps = {\n in: false,\n timeout: 300,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false\n};\nvar fadeStyles = (_fadeStyles = {}, _fadeStyles[ENTERING] = 'show', _fadeStyles[ENTERED] = 'show', _fadeStyles);\n\nvar Fade =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Fade, _React$Component);\n\n function Fade() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _this.handleEnter = function (node) {\n triggerBrowserReflow(node);\n if (_this.props.onEnter) _this.props.onEnter(node);\n };\n\n return _this;\n }\n\n var _proto = Fade.prototype;\n\n _proto.render = function render() {\n var _this$props = this.props,\n className = _this$props.className,\n children = _this$props.children,\n props = _objectWithoutPropertiesLoose(_this$props, [\"className\", \"children\"]);\n\n return React.createElement(Transition, _extends({\n addEndListener: onEnd\n }, props, {\n onEnter: this.handleEnter\n }), function (status, innerProps) {\n return React.cloneElement(children, _extends({}, innerProps, {\n className: classNames('fade', className, children.props.className, fadeStyles[status])\n }));\n });\n };\n\n return Fade;\n}(React.Component);\n\nFade.defaultProps = defaultProps;\nexport default Fade;","// reading a dimension prop will cause the browser to recalculate,\n// which will let our animations work\nexport default function triggerBrowserReflow(node) {\n node.offsetHeight; // eslint-disable-line no-unused-expressions\n}","import createWithBsPrefix from './utils/createWithBsPrefix';\nexport default createWithBsPrefix('modal-body');","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar ModalDialog = React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n centered = _ref.centered,\n size = _ref.size,\n children = _ref.children,\n scrollable = _ref.scrollable,\n props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"centered\", \"size\", \"children\", \"scrollable\"]);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'modal');\n var dialogClass = bsPrefix + \"-dialog\";\n return React.createElement(\"div\", _extends({}, props, {\n ref: ref,\n className: classNames(dialogClass, className, size && bsPrefix + \"-\" + size, centered && dialogClass + \"-centered\", scrollable && dialogClass + \"-scrollable\")\n }), React.createElement(\"div\", {\n className: classNames(bsPrefix + \"-content\")\n }, children));\n});\nModalDialog.displayName = 'ModalDialog';\nexport default ModalDialog;","import createWithBsPrefix from './utils/createWithBsPrefix';\nexport default createWithBsPrefix('modal-footer');","import { useEffect, useRef } from 'react';\n/**\n * Creates a `Ref` whose value is updated in an effect, ensuring the most recent\n * value is the one rendered with. Generally only required for Concurrent mode usage\n * where previous work in `render()` may be discarded befor being used.\n *\n * This is safe to access in an event handler.\n *\n * @param value The `Ref` value\n */\n\nfunction useCommittedRef(value) {\n var ref = useRef(value);\n useEffect(function () {\n ref.current = value;\n }, [value]);\n return ref;\n}\n\nexport default useCommittedRef;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\nvar propTypes = {\n label: PropTypes.string.isRequired,\n onClick: PropTypes.func\n};\nvar defaultProps = {\n label: 'Close'\n};\nvar CloseButton = React.forwardRef(function (_ref, ref) {\n var label = _ref.label,\n onClick = _ref.onClick,\n className = _ref.className,\n props = _objectWithoutPropertiesLoose(_ref, [\"label\", \"onClick\", \"className\"]);\n\n return React.createElement(\"button\", _extends({\n ref: ref,\n type: \"button\",\n className: classNames('close', className),\n onClick: onClick\n }, props), React.createElement(\"span\", {\n \"aria-hidden\": \"true\"\n }, \"\\xD7\"), React.createElement(\"span\", {\n className: \"sr-only\"\n }, label));\n});\nCloseButton.displayName = 'CloseButton';\nCloseButton.propTypes = propTypes;\nCloseButton.defaultProps = defaultProps;\nexport default CloseButton;","import React from 'react';\nvar ModalContext = React.createContext({\n onHide: function onHide() {}\n});\nexport default ModalContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport CloseButton from './CloseButton';\nimport ModalContext from './ModalContext';\nvar defaultProps = {\n closeLabel: 'Close',\n closeButton: false\n};\nvar ModalHeader = React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n closeLabel = _ref.closeLabel,\n closeButton = _ref.closeButton,\n onHide = _ref.onHide,\n className = _ref.className,\n children = _ref.children,\n props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"closeLabel\", \"closeButton\", \"onHide\", \"className\", \"children\"]);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'modal-header');\n var context = useContext(ModalContext);\n var handleClick = useEventCallback(function () {\n if (context) context.onHide();\n if (onHide) onHide();\n });\n return React.createElement(\"div\", _extends({\n ref: ref\n }, props, {\n className: classNames(className, bsPrefix)\n }), children, closeButton && React.createElement(CloseButton, {\n label: closeLabel,\n onClick: handleClick\n }));\n});\nModalHeader.displayName = 'ModalHeader';\nModalHeader.defaultProps = defaultProps;\nexport default ModalHeader;","import { useCallback } from 'react';\nimport useCommittedRef from './useCommittedRef';\nexport default function useEventCallback(fn) {\n var ref = useCommittedRef(fn);\n return useCallback(function () {\n return ref.current && ref.current.apply(ref, arguments);\n }, [ref]);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React from 'react';\nimport classNames from 'classnames';\nexport default (function (className) {\n return React.forwardRef(function (p, ref) {\n return React.createElement(\"div\", _extends({}, p, {\n ref: ref,\n className: classNames(p.className, className)\n }));\n });\n});","import createWithBsPrefix from './utils/createWithBsPrefix';\nimport divWithClassName from './utils/divWithClassName';\nvar DivStyledAsH4 = divWithClassName('h4');\nexport default createWithBsPrefix('modal-title', {\n Component: DivStyledAsH4\n});","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport qsa from 'dom-helpers/query/querySelectorAll';\nimport css from 'dom-helpers/style';\nimport getScrollbarSize from 'dom-helpers/util/scrollbarSize';\nimport ModalManager from 'react-overlays/ModalManager';\nvar Selector = {\n FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',\n STICKY_CONTENT: '.sticky-top',\n NAVBAR_TOGGLER: '.navbar-toggler'\n};\n\nvar BootstrapModalManager =\n/*#__PURE__*/\nfunction (_ModalManager) {\n _inheritsLoose(BootstrapModalManager, _ModalManager);\n\n function BootstrapModalManager() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _ModalManager.call.apply(_ModalManager, [this].concat(args)) || this;\n\n _this.adjustAndStore = function (prop, element, adjust) {\n var actual = element.style[prop];\n element.dataset[prop] = actual;\n css(element, prop, parseFloat(css(element, prop)) + adjust + \"px\");\n };\n\n _this.restore = function (prop, element) {\n var value = element.dataset[prop];\n\n if (value !== undefined) {\n delete element.dataset[prop];\n css(element, prop, value);\n }\n };\n\n return _this;\n }\n\n var _proto = BootstrapModalManager.prototype;\n\n _proto.setContainerStyle = function setContainerStyle(containerState, container) {\n var _this2 = this;\n\n _ModalManager.prototype.setContainerStyle.call(this, containerState, container);\n\n if (!containerState.overflowing) return;\n var size = getScrollbarSize();\n qsa(container, Selector.FIXED_CONTENT).forEach(function (el) {\n return _this2.adjustAndStore('paddingRight', el, size);\n });\n qsa(container, Selector.STICKY_CONTENT).forEach(function (el) {\n return _this2.adjustAndStore('margingRight', el, -size);\n });\n qsa(container, Selector.NAVBAR_TOGGLER).forEach(function (el) {\n return _this2.adjustAndStore('margingRight', el, size);\n });\n };\n\n _proto.removeContainerStyle = function removeContainerStyle(containerState, container) {\n var _this3 = this;\n\n _ModalManager.prototype.removeContainerStyle.call(this, containerState, container);\n\n qsa(container, Selector.FIXED_CONTENT).forEach(function (el) {\n return _this3.restore('paddingRight', el);\n });\n qsa(container, Selector.STICKY_CONTENT).forEach(function (el) {\n return _this3.restore('margingRight', el);\n });\n qsa(container, Selector.NAVBAR_TOGGLER).forEach(function (el) {\n return _this3.restore('margingRight', el);\n });\n };\n\n return BootstrapModalManager;\n}(ModalManager);\n\nexport { BootstrapModalManager as default };","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport classNames from 'classnames';\nimport events from 'dom-helpers/events';\nimport ownerDocument from 'dom-helpers/ownerDocument';\nimport canUseDOM from 'dom-helpers/util/inDOM';\nimport getScrollbarSize from 'dom-helpers/util/scrollbarSize';\nimport React from 'react';\nimport BaseModal from 'react-overlays/Modal';\nimport Fade from './Fade';\nimport Body from './ModalBody';\nimport ModalDialog from './ModalDialog';\nimport Footer from './ModalFooter';\nimport Header from './ModalHeader';\nimport Title from './ModalTitle';\nimport BootstrapModalManager from './utils/BootstrapModalManager';\nimport { createBootstrapComponent } from './ThemeProvider';\nimport ModalContext from './ModalContext';\nvar defaultProps = {\n show: false,\n backdrop: true,\n keyboard: true,\n autoFocus: true,\n enforceFocus: true,\n restoreFocus: true,\n animation: true,\n dialogAs: ModalDialog,\n manager: new BootstrapModalManager()\n};\n/* eslint-disable no-use-before-define, react/no-multi-comp */\n\nfunction DialogTransition(props) {\n return React.createElement(Fade, props);\n}\n\nfunction BackdropTransition(props) {\n return React.createElement(Fade, props);\n}\n/* eslint-enable no-use-before-define */\n\n\nvar Modal =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Modal, _React$Component);\n\n function Modal() {\n var _this;\n\n for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n _args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(_args)) || this;\n _this.state = {\n style: {}\n };\n _this.modalContext = {\n onHide: function onHide() {\n return _this.props.onHide();\n }\n };\n\n _this.setModalRef = function (ref) {\n _this._modal = ref;\n };\n\n _this.handleDialogMouseDown = function () {\n _this._waitingForMouseUp = true;\n };\n\n _this.handleMouseUp = function (e) {\n if (_this._waitingForMouseUp && e.target === _this._modal.dialog) {\n _this._ignoreBackdropClick = true;\n }\n\n _this._waitingForMouseUp = false;\n };\n\n _this.handleClick = function (e) {\n if (_this._ignoreBackdropClick || e.target !== e.currentTarget) {\n _this._ignoreBackdropClick = false;\n return;\n }\n\n _this.props.onHide();\n };\n\n _this.handleEnter = function (node) {\n var _this$props;\n\n if (node) {\n node.style.display = 'block';\n\n _this.updateDialogStyle(node);\n }\n\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n if (_this.props.onEnter) (_this$props = _this.props).onEnter.apply(_this$props, [node].concat(args));\n };\n\n _this.handleEntering = function (node) {\n var _this$props2;\n\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n\n if (_this.props.onEntering) (_this$props2 = _this.props).onEntering.apply(_this$props2, [node].concat(args)); // FIXME: This should work even when animation is disabled.\n\n events.on(window, 'resize', _this.handleWindowResize);\n };\n\n _this.handleExited = function (node) {\n var _this$props3;\n\n if (node) node.style.display = ''; // RHL removes it sometimes\n\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n\n if (_this.props.onExited) (_this$props3 = _this.props).onExited.apply(_this$props3, args); // FIXME: This should work even when animation is disabled.\n\n events.off(window, 'resize', _this.handleWindowResize);\n };\n\n _this.handleWindowResize = function () {\n _this.updateDialogStyle(_this._modal.dialog);\n };\n\n _this.renderBackdrop = function (props) {\n var _this$props4 = _this.props,\n bsPrefix = _this$props4.bsPrefix,\n backdropClassName = _this$props4.backdropClassName;\n return React.createElement(\"div\", _extends({}, props, {\n className: classNames(bsPrefix + \"-backdrop\", backdropClassName)\n }));\n };\n\n return _this;\n }\n\n var _proto = Modal.prototype;\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n // Clean up the listener if we need to.\n events.off(window, 'resize', this.handleWindowResize);\n };\n\n _proto.updateDialogStyle = function updateDialogStyle(node) {\n if (!canUseDOM) return;\n var manager = this.props.manager;\n var containerIsOverflowing = manager.isContainerOverflowing(this._modal);\n var modalIsOverflowing = node.scrollHeight > ownerDocument(node).documentElement.clientHeight;\n this.setState({\n style: {\n paddingRight: containerIsOverflowing && !modalIsOverflowing ? getScrollbarSize() : undefined,\n paddingLeft: !containerIsOverflowing && modalIsOverflowing ? getScrollbarSize() : undefined\n }\n });\n };\n\n _proto.render = function render() {\n var _this$props5 = this.props,\n bsPrefix = _this$props5.bsPrefix,\n className = _this$props5.className,\n style = _this$props5.style,\n dialogClassName = _this$props5.dialogClassName,\n children = _this$props5.children,\n Dialog = _this$props5.dialogAs,\n show = _this$props5.show,\n animation = _this$props5.animation,\n backdrop = _this$props5.backdrop,\n keyboard = _this$props5.keyboard,\n manager = _this$props5.manager,\n onEscapeKeyDown = _this$props5.onEscapeKeyDown,\n onShow = _this$props5.onShow,\n onHide = _this$props5.onHide,\n container = _this$props5.container,\n autoFocus = _this$props5.autoFocus,\n enforceFocus = _this$props5.enforceFocus,\n restoreFocus = _this$props5.restoreFocus,\n onEntered = _this$props5.onEntered,\n onExit = _this$props5.onExit,\n onExiting = _this$props5.onExiting,\n _ = _this$props5.onExited,\n _1 = _this$props5.onEntering,\n _6 = _this$props5.onEnter,\n _4 = _this$props5.onEntering,\n _2 = _this$props5.backdropClassName,\n props = _objectWithoutPropertiesLoose(_this$props5, [\"bsPrefix\", \"className\", \"style\", \"dialogClassName\", \"children\", \"dialogAs\", \"show\", \"animation\", \"backdrop\", \"keyboard\", \"manager\", \"onEscapeKeyDown\", \"onShow\", \"onHide\", \"container\", \"autoFocus\", \"enforceFocus\", \"restoreFocus\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"onEntering\", \"onEnter\", \"onEntering\", \"backdropClassName\"]);\n\n var clickHandler = backdrop === true ? this.handleClick : null;\n\n var baseModalStyle = _extends({}, style, this.state.style); // Sets `display` always block when `animation` is false\n\n\n if (!animation) baseModalStyle.display = 'block';\n return React.createElement(ModalContext.Provider, {\n value: this.modalContext\n }, React.createElement(BaseModal, {\n show: show,\n backdrop: backdrop,\n container: container,\n keyboard: keyboard,\n autoFocus: autoFocus,\n enforceFocus: enforceFocus,\n restoreFocus: restoreFocus,\n onEscapeKeyDown: onEscapeKeyDown,\n onShow: onShow,\n onHide: onHide,\n onEntered: onEntered,\n onExit: onExit,\n onExiting: onExiting,\n manager: manager,\n ref: this.setModalRef,\n style: baseModalStyle,\n className: classNames(className, bsPrefix),\n containerClassName: bsPrefix + \"-open\",\n transition: animation ? DialogTransition : undefined,\n backdropTransition: animation ? BackdropTransition : undefined,\n renderBackdrop: this.renderBackdrop,\n onClick: clickHandler,\n onMouseUp: this.handleMouseUp,\n onEnter: this.handleEnter,\n onEntering: this.handleEntering,\n onExited: this.handleExited\n }, React.createElement(Dialog, _extends({}, props, {\n onMouseDown: this.handleDialogMouseDown,\n className: dialogClassName\n }), children)));\n };\n\n return Modal;\n}(React.Component);\n\nModal.defaultProps = defaultProps;\nvar DecoratedModal = createBootstrapComponent(Modal, 'modal');\nDecoratedModal.Body = Body;\nDecoratedModal.Header = Header;\nDecoratedModal.Title = Title;\nDecoratedModal.Footer = Footer;\nDecoratedModal.Dialog = ModalDialog;\nDecoratedModal.TRANSITION_DURATION = 300;\nDecoratedModal.BACKDROP_TRANSITION_DURATION = 150;\nexport default DecoratedModal;","\r\nimport React from 'react';\r\nimport autoBind from 'react-autobind';\r\nimport { Modal, Button } from 'react-bootstrap'\r\n\r\nimport Log from '../../../Tools/LogTools'\r\nimport Notification from '../../../Tools/Notification'\r\n\r\nimport FileExplorerServices from '../../../Services/FileExplorerServices'\r\n\r\nimport FileExplorerControl from '../FileExplorer/FileExplorerControl.jsx'\r\n\r\n\r\nexport default class ExplorerActionsControl extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n autoBind(this);\r\n Log(\"ExplorerActionsControl\", \"start\")\r\n\r\n this.state = { ResultMsg: \"\", MoveWindowsShow: false }\r\n this.fileExplorerServices = new FileExplorerServices();\r\n }\r\n\r\n\r\n OnDownloadClick(sender) {\r\n\r\n let selected = this.props.ParentComponent.refs.\r\n FileExplorerControl.GetSelectedID();\r\n\r\n selected.map((e) => {\r\n Log(\"ExplorerActionsControl\", \"OnDownload \" + e);\r\n\r\n this.fileExplorerServices.OpenDownload(e);\r\n });\r\n }\r\n\r\n OnDeleteClick(sender) {\r\n\r\n let selected = this.props.ParentComponent.refs.\r\n FileExplorerControl.GetSelectedID();\r\n let promises = selected.map((e) => {\r\n Log(\"ExplorerActionsControl\", \"OnDelete \" + e);\r\n return this.fileExplorerServices.DeleteAsync(e);\r\n });\r\n\r\n let Result = \"\";\r\n\r\n\r\n Promise.all(promises).then(function (data) {\r\n data.map(function (e) {\r\n Result += \"Succese: \" + e.Successe + \" ResultMsg:\" + e.ResMessage + \" | \";\r\n });\r\n\r\n Notification.MesOk(Result, 'Move');\r\n //this.setState({ ResultMsg: Result });\r\n this.props.\r\n ParentComponent.OnItemsChange();\r\n }.bind(this));\r\n\r\n }\r\n\r\n\r\n OnMoveClick(sender) {\r\n let selected = this.props.ParentComponent.refs.\r\n FileExplorerControl.GetSelectedID();\r\n\r\n if (selected.length == 0)\r\n return;\r\n\r\n this.selected = selected;\r\n\r\n this.setState({ MoveWindowsShow: true });\r\n }\r\n\r\n OnCreateDirectoryClick(sender) {\r\n //debugger;\r\n let dirname = this.refs.DirectoryName.value;\r\n let id = this.props.ParentComponent.GetID();\r\n\r\n let url = \"/Explorer/CreateDirectory?ParentID=\" + id\r\n + \"&Name=\" + dirname;\r\n\r\n this.fileExplorerServices.CreateDirectoryAsync(dirname, id).\r\n then(function (data) {\r\n this.props.ParentComponent.OnItemsChange();\r\n Notification.MesOk('Complete', 'CreateDir');\r\n }.bind(this));\r\n\r\n this.refs.DirectoryName.value = \"\";\r\n }\r\n\r\n\r\n OnMoveWindowCloseClick() {\r\n this.setState({ MoveWindowsShow: false });\r\n }\r\n\r\n GetID() {\r\n if (this.SelectedID != undefined)\r\n return this.SelectedID;\r\n\r\n return this.props.ParentComponent.GetID();\r\n }\r\n SetID(ID) {\r\n this.SelectedID = ID;\r\n }\r\n\r\n OnMoveWindowClick() {\r\n let promises = this.selected.map(function (e) {\r\n Log(\"ExplorerActionsControl\", \"OnMove \" + e);\r\n return this.fileExplorerServices.MoveAsync(e, this.SelectedID);\r\n }.bind(this));\r\n\r\n let Result = \"\";\r\n Promise.all(promises).then(function (data) {\r\n Result += \"Succese: \" + e.Successe + \" ResultMsg:\" + e.ResMessage + \" | \";\r\n\r\n //this.setState({ ResultMsg: Result });\r\n Notification.MesOk(Result, 'Move');\r\n this.props.\r\n ParentComponent.OnItemsChange();\r\n }.bind(this));\r\n\r\n this.setState({ MoveWindowsShow: false });\r\n }\r\n\r\n\r\n render() {\r\n\r\n return (\r\n <div>\r\n <p>ExplorerControlPanel</p>\r\n\r\n <p>\r\n <input ref=\"DirectoryName\" />\r\n <button onClick={this.OnCreateDirectoryClick}>CreateDirectory</button>\r\n </p>\r\n\r\n\r\n {this.state.ResultMsg != \"\"\r\n ? <p>{this.state.ResultMsg}</p>\r\n : \"\"\r\n }\r\n\r\n <table>\r\n <thead>\r\n <tr>\r\n <th><button onClick={this.OnDownloadClick}>Скачать</button></th>\r\n <th><button onClick={this.OnDeleteClick}>Удалить</button></th>\r\n <th><button onClick={this.OnMoveClick}>Переместить</button></th>\r\n </tr>\r\n </thead>\r\n </table>\r\n\r\n <Modal ref=\"Modal\"\r\n show={this.state.MoveWindowsShow}\r\n onHide={this.OnMoveWindowCloseClick}\r\n\r\n size=\"lg\"\r\n aria-labelledby=\"contained-modal-title-vcenter\"\r\n centered\r\n >\r\n <Modal.Header closeButton>\r\n <Modal.Title>Select destination directory</Modal.Title>\r\n </Modal.Header>\r\n <Modal.Body>\r\n <FileExplorerControl ref=\"FileExplorerControl\"\r\n ParentComponent={this}\r\n ShoSelect={false}\r\n />\r\n </Modal.Body>\r\n <Modal.Footer>\r\n <Button variant=\"secondary\" onClick={this.OnMoveWindowCloseClick}>\r\n Cansel\r\n </Button>\r\n <Button variant=\"primary\" onClick={this.OnMoveWindowClick}>\r\n Move to directory\r\n </Button>\r\n </Modal.Footer>\r\n </Modal>\r\n </div>\r\n );\r\n\r\n }\r\n}\r\n","\r\nimport ApiQuery from '../Tools/ApiQuery'\r\nimport Configuration from '../Tools/Configuration'\r\nimport Log from '../Tools/LogTools'\r\n\r\n\r\nexport default class UploadServices {\r\n\r\n constructor() {\r\n\r\n this.URL_Start = \"/api/UploadFiles/StartUpload\";\r\n this.URL_Upload = \"/api/UploadFiles/UploadBlob\";\r\n this.URL_Cansel = \"/api/UploadFiles/Cansel\";\r\n\r\n this.upload_chunk_size = Configuration.upload_chunk_size;\r\n this.ID = -1;\r\n\r\n this._ContinueDownload = false;\r\n\r\n this._file = null;\r\n this._ParentID = null;\r\n\r\n //Callback события\r\n //(number progresse)\r\n this.OnProggresseChange = null;\r\n //(number id)\r\n this.OnIDReceived = null;\r\n //(string Msg)\r\n this.OnError = null;\r\n }\r\n\r\n\r\n //Считывает часть файла\r\n //startByte - int позиция начала чтения\r\n //stopByte - int позиция окончания чтения\r\n async _ReadBlobAsync(startByte, stopByte) {\r\n\r\n return new Promise(function (resolve, reject) {\r\n //Считываем часть файла\r\n let blob = this._file.slice(startByte, stopByte);\r\n\r\n let reader = new FileReader();\r\n reader.onload = function () {\r\n resolve(reader.result);\r\n };\r\n reader.onerror = reject;\r\n\r\n reader.readAsDataURL(blob);\r\n }.bind(this));\r\n }\r\n\r\n //Сообщает серверу о начале загрузки файла, получает ID загрузки\r\n async _StartUploadAsync() {\r\n let res;\r\n\r\n await ApiQuery(this.URL_Start, \"Post\",\r\n {\r\n //ID папки\r\n ParentID: this._ParentID,\r\n //Имя файла\r\n Name: this._file.name,\r\n //Размеры\r\n Size: this._file.size\r\n }).then(function (data) {\r\n res = data;\r\n }.bind(this));\r\n\r\n return res;\r\n }\r\n\r\n //Выполняет загрузка блока\r\n async _UploadBlobAsync(bin_data, ChunkNumb) {\r\n\r\n Log(\"UploadServices\", \"_UploadBlobAsync\");\r\n\r\n if (!this._ContinueDownload)\r\n return { State: true };\r\n\r\n\r\n if (bin_data != '') {\r\n Log(\"UploadServices\", this.URL_Upload + ChunkNumb);\r\n\r\n let res;\r\n\r\n await ApiQuery(this.URL_Upload, \"Post\",\r\n {\r\n //ID загрузки\r\n ID: this.ID,\r\n //Кусок файла\r\n chunk: bin_data\r\n //Номер куска\r\n //'ChunkNumb': ChunkNumb\r\n }).then(function (data) {\r\n res = data;\r\n }.bind(this));\r\n\r\n return res;\r\n }\r\n }\r\n\r\n\r\n //Инициирует загрузку файла\r\n //parent_id - int ID папки для загрузки\r\n async UploadFileAsync(file, parent_id) {\r\n\r\n this._file = file;\r\n this._ParentID = parent_id;\r\n\r\n let start_info = await this._StartUploadAsync();\r\n if (!start_info.State) {\r\n if (this.OnError != null)\r\n this.OnError(start_info.Msg);\r\n return;\r\n }\r\n\r\n this._ContinueDownload = true;\r\n this.ID = start_info.ID;\r\n if (this.OnIDReceived != null)\r\n this.OnIDReceived(this.ID);\r\n\r\n for (let pos = 0, ChunkNumb = 0; pos < this._file.size; pos += this.upload_chunk_size, ChunkNumb++) {\r\n if (!this._ContinueDownload)\r\n return;\r\n\r\n let bin_data = await this._ReadBlobAsync(pos, pos + this.upload_chunk_size);\r\n let state = await this._UploadBlobAsync(bin_data, ChunkNumb);\r\n\r\n\r\n if (!state.State) {\r\n //alert('Загрузка прервана');\r\n\r\n if (this.OnError != null)\r\n this.OnError(state.Msg);\r\n return;\r\n }\r\n\r\n // Вычисляем процент отправленного\r\n let p = Math.round(pos * 100 / file.size);\r\n Log(\"UploadServices\", 'p = ' + p);\r\n\r\n if (this.OnProggresseChange != null)\r\n this.OnProggresseChange(p);\r\n }\r\n\r\n this._ContinueDownload = false;\r\n }\r\n\r\n Cansel() {\r\n this._ContinueDownload = false;\r\n\r\n //Костыль задержка, чтобы асинхронный загрузчик точно прервал работу\r\n //и не попытался получить доступ к ужаленному проекту загрузки\r\n //Возможно зависит от размера блока\r\n setTimeout(function () {\r\n\r\n ApiQuery(this.URL_Cansel, \"Post\",\r\n {\r\n //ID файла\r\n ID: this.ID,\r\n });\r\n\r\n }.bind(this),\r\n 500);\r\n }\r\n\r\n}\r\n","\r\nimport React from 'react';\r\nimport autoBind from 'react-autobind';\r\n\r\nimport Log from '../../../Tools/LogTools'\r\nimport Notification from '../../../Tools/Notification'\r\n\r\nimport UploadServices from '../../../Services/UploadServices'\r\n\r\n\r\nexport default class UploaderControl extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n autoBind(this);\r\n Log(\"UploaderControl\", \"start\"); \r\n\r\n //state 0 - выбор файла\r\n //state 1 - загрузка\r\n this.state = { progress: 0, ButtonUploadEnable: true, _state: 0, FileInfo: {}, ResultMsg: \"\" };\r\n\r\n\r\n this.uploadServices = new UploadServices();\r\n this.uploadServices.OnProggresseChange = this.OnProgresseChange;\r\n //this.uploadServices.OnIDReceived = null;\r\n this.uploadServices.OnError = this.OnError;\r\n }\r\n\r\n UploadClick() {\r\n\r\n let input = this.refs.file;\r\n let files = input.files;\r\n\r\n\r\n if (files.length == 0)\r\n return;\r\n let file = files[0];\r\n\r\n this.setState({ ButtonUploadEnable: false, _state: 1, FileInfo: { name: file.name, size: file.size } });\r\n\r\n this.uploadServices.UploadFileAsync(file, this.props.ParentComponent.GetID()).then(function () {\r\n Notification.MesOk('Complete','Upload');\r\n\r\n this.setState({ ButtonUploadEnable: true, _state: 0, FileInfo: {}, ResultMsg: \"\" });\r\n this.props.ParentComponent.OnItemsChange();\r\n input.value = \"\";\r\n }.bind(this));\r\n }\r\n\r\n CancelClick() {\r\n this.uploadServices.Cansel();\r\n this.setState({ ButtonUploadEnable: true, _state: 0, FileInfo: {} });\r\n }\r\n\r\n OnProgresseChange(Process) {\r\n this.setState({ progress: Process });\r\n }\r\n\r\n OnError(Msg) {\r\n this.setState({ progress: 0, ButtonUploadEnable: true, _state: 0, FileInfo: {}, ResultMsg: Msg });\r\n }\r\n\r\n\r\n\r\n render() {\r\n return (\r\n <div>\r\n <h2>Upload</h2>\r\n <p>\r\n <input ref=\"file\" type=\"file\" disabled={!this.state.ButtonUploadEnable} />\r\n <button disabled={!this.state.ButtonUploadEnable} onClick={this.UploadClick}>Upload</button>\r\n <button disabled={this.state.ButtonUploadEnable} onClick={this.CancelClick}>Cancel</button>\r\n </p>\r\n\r\n {this.state._state == 1\r\n ?\r\n <div>\r\n <p>Прогресс {this.state.progress} %</p>\r\n <p>Выполняется загрука файла:</p>\r\n <p>Имя файла: {this.state.FileInfo.name}</p>\r\n <p>Размеры файла: {this.state.FileInfo.size}</p>\r\n </div>\r\n : \"\"\r\n }\r\n\r\n {this.state.ResultMsg != \"\"\r\n ? <p>Результат: {this.state.ResultMsg}</p>\r\n : null\r\n }\r\n\r\n </div>\r\n );\r\n }\r\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar defaultProps = {\n role: 'toolbar'\n};\nvar ButtonToolbar = React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\"]);\n\n var prefix = useBootstrapPrefix(bsPrefix, 'btn-toolbar');\n return React.createElement(\"div\", _extends({}, props, {\n ref: ref,\n className: classNames(className, prefix)\n }));\n});\nButtonToolbar.displayName = 'ButtonToolbar';\nButtonToolbar.defaultProps = defaultProps;\nexport default ButtonToolbar;","\r\nimport React from 'react';\r\nimport autoBind from 'react-autobind';\r\nimport { ButtonToolbar, Button } from 'react-bootstrap'\r\n\r\nimport Log from '../../Tools/LogTools'\r\n\r\n\r\n\r\nexport default class BootstrapControl extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n autoBind(this);\r\n Log(\"BootstrapControl\", \"start\");\r\n }\r\n\r\n\r\n //PostTest() {\r\n // let test_url = \"/Test/Test\";\r\n \r\n // fetch(test_url,\r\n // {\r\n // method: \"Post\",\r\n // headers: {\r\n // 'Content-Type': 'application/json'\r\n // },\r\n // body: JSON.stringify({ id: 2, name: \"n\" })\r\n // });\r\n //}\r\n\r\n ToastifyTest() {\r\n\r\n this.Leght = (this.Leght == undefined ? 0 : this.Leght) + 500;\r\n\r\n //Notification.Sho(\"Test\");\r\n }\r\n\r\n render() {\r\n\r\n return (\r\n <div>\r\n <p>Bootstrap test</p>\r\n <ButtonToolbar>\r\n <Button onClick={this.ToastifyTest} variant=\"outline-primary\">Primary</Button>\r\n <Button variant=\"outline-secondary\">Secondary</Button>\r\n <Button variant=\"outline-success\">Success</Button>\r\n <Button variant=\"outline-warning\">Warning</Button>\r\n <Button variant=\"outline-danger\">Danger</Button>\r\n <Button variant=\"outline-info\">Info</Button>\r\n <Button variant=\"outline-light\">Light</Button>\r\n <Button variant=\"outline-dark\">Dark</Button>\r\n </ButtonToolbar>\r\n </div>\r\n );\r\n\r\n }\r\n}\r\n","\r\nimport React from 'react';\r\nimport autoBind from 'react-autobind';\r\n\r\nimport Log from '../../Tools/LogTools'\r\nimport Configuration from '../../Tools/Configuration'\r\n\r\nimport MenuControl from '../Controls/MenuControl.jsx'\r\nimport UserControl from '../Controls/UserControl.jsx'\r\nimport FileExplorerControl from '../Controls/FileExplorer/FileExplorerControl.jsx'\r\nimport ExplorerActionsControl from '../Controls/FileExplorer/ExplorerActionsControl.jsx'\r\nimport UploaderControl from '../Controls/FileExplorer/UploaderControl.jsx'\r\nimport BootstrapControl from '../Controls/BootstrapControl.jsx'\r\n\r\n\r\nexport default class FileExplorerPage extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n autoBind(this);\r\n Log(\"FileExplorerPage\", \"start\");\r\n\r\n //this.state = { counter: 0 };\r\n\r\n //Получить ID из url\r\n var Url_ID = new URL(window.location.href).\r\n searchParams.get(\"ID\");\r\n\r\n if (Url_ID != null)\r\n this.SetID(Url_ID);\r\n //if (this.props.match != undefined\r\n // && this.props.match.params != undefined\r\n // && this.props.match.params.ID != undefined)\r\n // this.SetID(this.props.match.params.ID);\r\n //Получить id от родительского компонента\r\n else\r\n this.SetID(-1);\r\n }\r\n\r\n\r\n OnAuthChange() {\r\n this.OnItemsChange();\r\n this.refs.MenuControl.OnAuthChange();\r\n }\r\n OnItemsChange() {\r\n this.refs.FileExplorerControl.\r\n LoadDirectory();\r\n }\r\n\r\n SetID(val) {\r\n this.CurrentID = val;\r\n Log(\"FileExplorerPage\", this.CurrentID);\r\n }\r\n\r\n GetID() {\r\n return this.CurrentID;\r\n }\r\n\r\n\r\n render() {\r\n return (\r\n <div>\r\n <hr />\r\n <MenuControl ref=\"MenuControl\"\r\n ParentComponent={this}\r\n />\r\n <hr />\r\n <UserControl ref=\"UserControl\"\r\n ParentComponent={this}\r\n />\r\n\r\n <hr />\r\n <FileExplorerControl ref=\"FileExplorerControl\"\r\n ParentComponent={this}\r\n ShoSelect={true}\r\n />\r\n <hr />\r\n {this.GetID() != Configuration.RooDirectoryID\r\n ?\r\n <div> \r\n <ExplorerActionsControl ref=\"ExplorerActionsControl\"\r\n ParentComponent={this}\r\n />\r\n <hr />\r\n <UploaderControl ref=\"UploaderControl\"\r\n ParentComponent={this}\r\n />\r\n <hr />\r\n </div>\r\n : \"\"\r\n }\r\n <BootstrapControl />\r\n <hr />\r\n\r\n </div>\r\n );\r\n }\r\n}\r\n\r\n","\r\nimport React from 'react';\r\nimport autoBind from 'react-autobind';\r\n\r\nimport Log from '../../Tools/LogTools'\r\n\r\nimport AuthServices from '../../Services/AuthServices'\r\n\r\n\r\nexport default class AdministratorPage extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n autoBind(this);\r\n Log(\"AdministratorPage\", \"start\");\r\n\r\n this.state = { ActiveWindows: 0 };\r\n this.authServices = new AuthServices();\r\n }\r\n\r\n OnAuthChange() {\r\n this.refs.MenuControl.OnAuthChange();\r\n }\r\n\r\n OnUsersClick() {\r\n this.setState({ ActiveWindows: 0 });\r\n }\r\n OnGroupsClick() {\r\n this.setState({ ActiveWindows: 1 });\r\n }\r\n\r\n\r\n render() {\r\n return (\r\n <div>\r\n <hr />\r\n <MenuControl ref=\"MenuControl\"\r\n ParentComponent={this}\r\n />\r\n <hr />\r\n {this.authServices.IsAuth()\r\n ?\r\n <div>\r\n <Nav variant=\"tabs\">\r\n <Nav.Item>\r\n <Nav.Link onClick={this.OnUsersClick}> Users</Nav.Link>\r\n </Nav.Item>\r\n <Nav.Item>\r\n <Nav.Link onClick={this.OnGroupsClick}> Groups</Nav.Link>\r\n </Nav.Item>\r\n </Nav>\r\n\r\n {this.state.ActiveWindows == 0\r\n ?\r\n <div>\r\n UsersWindows\r\n </div>\r\n :\r\n <div>\r\n GroupsWindow\r\n </div>\r\n }\r\n </div>\r\n : <p>Вы не авторизованы</p>\r\n }\r\n\r\n </div>\r\n );\r\n }\r\n}\r\n\r\n","\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { BrowserRouter as Router, Route, Switch } from 'react-router-dom';\r\n\r\nimport Log from '../Tools/LogTools'\r\n\r\nimport FileExplorerPage from './Pages/FileExplorerPage.jsx'\r\nimport AdministratorPage from './Pages/AdministratorPage.jsx' \r\n\r\n\r\nexport default class RouteSystem extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n Log(\"RouteSystem\", \"start\");\r\n\r\n }\r\n\r\n render() {\r\n return (\r\n <Router>\r\n <Switch>\r\n <Route ref=\"CurrentPage\" exact path=\"/\" component={FileExplorerPage} />\r\n <Route ref=\"CurrentPage\" exact path=\"/App\" component={FileExplorerPage} />\r\n <Route ref=\"CurrentPage\" exact path=\"/index.html\" component={FileExplorerPage} />\r\n <Route ref=\"CurrentPage\" path=\"/?ID=:ID\" component={FileExplorerPage} />\r\n <Route ref=\"CurrentPage\" path=\"/Admin\" component={AdministratorPage} />\r\n </Switch>\r\n </Router>\r\n );\r\n }\r\n}\r\n\r\nReactDOM.render(\r\n <RouteSystem />,\r\n document.getElementById(\"App\")\r\n)\r\n\r\n","\r\nimport './React/RouteSystem.jsx'\r\n\r\nconsole.log(\"index.js\");\r\n"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/react/index.js","webpack:///./node_modules/@babel/runtime/helpers/esm/extends.js","webpack:///./node_modules/prop-types/index.js","webpack:///./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack:///./node_modules/classnames/index.js","webpack:///./node_modules/react-autobind/index.js","webpack:///./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack:///./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack:///./node_modules/react-dom/index.js","webpack:///./node_modules/warning/warning.js","webpack:///./node_modules/invariant/browser.js","webpack:///./node_modules/dom-helpers/util/inDOM.js","webpack:///./node_modules/dom-helpers/query/querySelectorAll.js","webpack:///./node_modules/dom-helpers/ownerDocument.js","webpack:///./node_modules/dom-helpers/util/scrollbarSize.js","webpack:///./node_modules/dom-helpers/style/index.js","webpack:///./node_modules/react-tabulator/lib/Utils.js","webpack:///./node_modules/toastr/toastr.js","webpack:///./node_modules/react-tabulator/lib/index.js","webpack:///./node_modules/dom-helpers/events/index.js","webpack:///./node_modules/object-assign/index.js","webpack:///./node_modules/prop-types-extra/lib/componentOrElement.js","webpack:///./node_modules/prop-types-extra/lib/utils/createChainableTypeChecker.js","webpack:///./node_modules/@restart/context/forwardRef.js","webpack:///./node_modules/dom-helpers/util/camelize.js","webpack:///./node_modules/react-overlays/ModalManager.js","webpack:///./node_modules/react-tabulator/lib/ReactTabulator.js","webpack:///./node_modules/pick-react-known-prop/dist/index.js","webpack:///./node_modules/react-tabulator/lib/ConfigUtils.js","webpack:///./node_modules/tabulator-tables/dist/js/tabulator.js","webpack:///./node_modules/dom-helpers/events/on.js","webpack:///./node_modules/dom-helpers/events/off.js","webpack:///./node_modules/dom-helpers/query/contains.js","webpack:///./node_modules/dom-helpers/events/listen.js","webpack:///./node_modules/dom-helpers/class/hasClass.js","webpack:///./node_modules/dom-helpers/util/camelizeStyle.js","webpack:///./node_modules/dom-helpers/transition/properties.js","webpack:///./node_modules/react-overlays/utils/getContainer.js","webpack:///./node_modules/react-overlays/Modal.js","webpack:///./node_modules/dom-helpers/transition/end.js","webpack:///./node_modules/@restart/context/mapContextToProps.js","webpack:///./node_modules/path-to-regexp/index.js","webpack:///./node_modules/react/cjs/react.production.min.js","webpack:///./node_modules/react-dom/cjs/react-dom.production.min.js","webpack:///./node_modules/scheduler/index.js","webpack:///./node_modules/scheduler/cjs/scheduler.production.min.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/react-autobind/lib/autoBind.js","webpack:///./node_modules/prop-types/factoryWithThrowingShims.js","webpack:///./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack:///./node_modules/jquery/dist/jquery.js","webpack:///(webpack)/buildin/amd-define.js","webpack:///./node_modules/react-dom/server.browser.js","webpack:///./node_modules/react-dom/cjs/react-dom-server.browser.production.min.js","webpack:///./node_modules/react-tabulator/lib/React15Tabulator.js","webpack:///./node_modules/react-tabulator/lib/ReactTabulatorExample.js","webpack:///./node_modules/react-tabulator/lib/editors/DateEditor.js","webpack:///./node_modules/react-tabulator/lib/editors/MultiSelectEditor.js","webpack:///./node_modules/react-tag-autocomplete/dist-es5/ReactTags.js","webpack:///./node_modules/react-tag-autocomplete/dist-es5/Tag.js","webpack:///./node_modules/react-tag-autocomplete/dist-es5/Input.js","webpack:///./node_modules/react-tag-autocomplete/dist-es5/Suggestions.js","webpack:///./node_modules/react-tabulator/lib/formatters/MultiValueFormatter.js","webpack:///./node_modules/dom-helpers/events/filter.js","webpack:///./node_modules/dom-helpers/activeElement.js","webpack:///./node_modules/prop-types-extra/lib/elementType.js","webpack:///./node_modules/react-is/index.js","webpack:///./node_modules/react-is/cjs/react-is.production.min.js","webpack:///./node_modules/dom-helpers/class/index.js","webpack:///./node_modules/dom-helpers/class/addClass.js","webpack:///./node_modules/dom-helpers/class/removeClass.js","webpack:///./node_modules/dom-helpers/util/hyphenateStyle.js","webpack:///./node_modules/dom-helpers/util/hyphenate.js","webpack:///./node_modules/dom-helpers/style/getComputedStyle.js","webpack:///./node_modules/dom-helpers/style/removeStyle.js","webpack:///./node_modules/dom-helpers/transition/isTransform.js","webpack:///./node_modules/react-overlays/utils/isOverflowing.js","webpack:///./node_modules/dom-helpers/query/isWindow.js","webpack:///./node_modules/react-overlays/utils/manageAriaHidden.js","webpack:///./node_modules/react-overlays/Portal.js","webpack:///./node_modules/react-overlays/WaitForContainer.js","webpack:///./node_modules/react-overlays/utils/ownerDocument.js","webpack:///./node_modules/prop-types-extra/lib/all.js","webpack:///./node_modules/isarray/index.js","webpack:///./node_modules/date-fns/esm/_lib/toInteger/index.js","webpack:///./node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","webpack:///./node_modules/date-fns/esm/toDate/index.js","webpack:///./node_modules/date-fns/esm/addDays/index.js","webpack:///./node_modules/date-fns/esm/addMilliseconds/index.js","webpack:///./node_modules/date-fns/esm/addHours/index.js","webpack:///./node_modules/date-fns/esm/startOfWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/cloneObject/index.js","webpack:///./node_modules/date-fns/esm/startOfISOWeek/index.js","webpack:///./node_modules/date-fns/esm/getISOWeekYear/index.js","webpack:///./node_modules/date-fns/esm/startOfISOWeekYear/index.js","webpack:///./node_modules/date-fns/esm/startOfDay/index.js","webpack:///./node_modules/date-fns/esm/differenceInCalendarDays/index.js","webpack:///./node_modules/date-fns/esm/setISOWeekYear/index.js","webpack:///./node_modules/date-fns/esm/addISOWeekYears/index.js","webpack:///./node_modules/date-fns/esm/addMinutes/index.js","webpack:///./node_modules/date-fns/esm/getDaysInMonth/index.js","webpack:///./node_modules/date-fns/esm/addMonths/index.js","webpack:///./node_modules/date-fns/esm/addQuarters/index.js","webpack:///./node_modules/date-fns/esm/addSeconds/index.js","webpack:///./node_modules/date-fns/esm/addWeeks/index.js","webpack:///./node_modules/date-fns/esm/addYears/index.js","webpack:///./node_modules/date-fns/esm/areIntervalsOverlapping/index.js","webpack:///./node_modules/date-fns/esm/closestIndexTo/index.js","webpack:///./node_modules/date-fns/esm/closestTo/index.js","webpack:///./node_modules/date-fns/esm/compareAsc/index.js","webpack:///./node_modules/date-fns/esm/compareDesc/index.js","webpack:///./node_modules/date-fns/esm/differenceInCalendarISOWeekYears/index.js","webpack:///./node_modules/date-fns/esm/differenceInCalendarISOWeeks/index.js","webpack:///./node_modules/date-fns/esm/differenceInCalendarMonths/index.js","webpack:///./node_modules/date-fns/esm/getQuarter/index.js","webpack:///./node_modules/date-fns/esm/differenceInCalendarQuarters/index.js","webpack:///./node_modules/date-fns/esm/differenceInCalendarWeeks/index.js","webpack:///./node_modules/date-fns/esm/differenceInCalendarYears/index.js","webpack:///./node_modules/date-fns/esm/differenceInDays/index.js","webpack:///./node_modules/date-fns/esm/differenceInMilliseconds/index.js","webpack:///./node_modules/date-fns/esm/differenceInHours/index.js","webpack:///./node_modules/date-fns/esm/subISOWeekYears/index.js","webpack:///./node_modules/date-fns/esm/differenceInISOWeekYears/index.js","webpack:///./node_modules/date-fns/esm/differenceInMinutes/index.js","webpack:///./node_modules/date-fns/esm/differenceInMonths/index.js","webpack:///./node_modules/date-fns/esm/differenceInQuarters/index.js","webpack:///./node_modules/date-fns/esm/differenceInSeconds/index.js","webpack:///./node_modules/date-fns/esm/differenceInWeeks/index.js","webpack:///./node_modules/date-fns/esm/differenceInYears/index.js","webpack:///./node_modules/date-fns/esm/eachDayOfInterval/index.js","webpack:///./node_modules/date-fns/esm/eachWeekOfInterval/index.js","webpack:///./node_modules/date-fns/esm/isSunday/index.js","webpack:///./node_modules/date-fns/esm/isWeekend/index.js","webpack:///./node_modules/date-fns/esm/eachWeekendOfInterval/index.js","webpack:///./node_modules/date-fns/esm/startOfMonth/index.js","webpack:///./node_modules/date-fns/esm/endOfMonth/index.js","webpack:///./node_modules/date-fns/esm/eachWeekendOfMonth/index.js","webpack:///./node_modules/date-fns/esm/startOfYear/index.js","webpack:///./node_modules/date-fns/esm/endOfYear/index.js","webpack:///./node_modules/date-fns/esm/eachWeekendOfYear/index.js","webpack:///./node_modules/date-fns/esm/endOfDay/index.js","webpack:///./node_modules/date-fns/esm/endOfDecade/index.js","webpack:///./node_modules/date-fns/esm/endOfHour/index.js","webpack:///./node_modules/date-fns/esm/endOfWeek/index.js","webpack:///./node_modules/date-fns/esm/endOfISOWeek/index.js","webpack:///./node_modules/date-fns/esm/endOfISOWeekYear/index.js","webpack:///./node_modules/date-fns/esm/endOfMinute/index.js","webpack:///./node_modules/date-fns/esm/endOfQuarter/index.js","webpack:///./node_modules/date-fns/esm/endOfSecond/index.js","webpack:///./node_modules/date-fns/esm/isValid/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","webpack:///./node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","webpack:///./node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","webpack:///./node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","webpack:///./node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","webpack:///./node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","webpack:///./node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","webpack:///./node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","webpack:///./node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","webpack:///./node_modules/date-fns/esm/_lib/getUTCWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","webpack:///./node_modules/date-fns/esm/format/_lib/formatters/index.js","webpack:///./node_modules/date-fns/esm/format/_lib/longFormatters/index.js","webpack:///./node_modules/date-fns/esm/subMilliseconds/index.js","webpack:///./node_modules/date-fns/esm/_lib/protectedTokens/index.js","webpack:///./node_modules/date-fns/esm/format/index.js","webpack:///./node_modules/date-fns/esm/formatDistance/index.js","webpack:///./node_modules/date-fns/esm/formatDistanceStrict/index.js","webpack:///./node_modules/date-fns/esm/formatRelative/index.js","webpack:///./node_modules/date-fns/esm/fromUnixTime/index.js","webpack:///./node_modules/date-fns/esm/getDate/index.js","webpack:///./node_modules/date-fns/esm/getDay/index.js","webpack:///./node_modules/date-fns/esm/getDayOfYear/index.js","webpack:///./node_modules/date-fns/esm/isLeapYear/index.js","webpack:///./node_modules/date-fns/esm/getDaysInYear/index.js","webpack:///./node_modules/date-fns/esm/getDecade/index.js","webpack:///./node_modules/date-fns/esm/getHours/index.js","webpack:///./node_modules/date-fns/esm/getISODay/index.js","webpack:///./node_modules/date-fns/esm/getISOWeek/index.js","webpack:///./node_modules/date-fns/esm/getISOWeeksInYear/index.js","webpack:///./node_modules/date-fns/esm/getMilliseconds/index.js","webpack:///./node_modules/date-fns/esm/getMinutes/index.js","webpack:///./node_modules/date-fns/esm/getMonth/index.js","webpack:///./node_modules/date-fns/esm/getOverlappingDaysInIntervals/index.js","webpack:///./node_modules/date-fns/esm/getSeconds/index.js","webpack:///./node_modules/date-fns/esm/getTime/index.js","webpack:///./node_modules/date-fns/esm/getUnixTime/index.js","webpack:///./node_modules/date-fns/esm/getWeekYear/index.js","webpack:///./node_modules/date-fns/esm/startOfWeekYear/index.js","webpack:///./node_modules/date-fns/esm/getWeek/index.js","webpack:///./node_modules/date-fns/esm/getWeekOfMonth/index.js","webpack:///./node_modules/date-fns/esm/lastDayOfMonth/index.js","webpack:///./node_modules/date-fns/esm/getWeeksInMonth/index.js","webpack:///./node_modules/date-fns/esm/getYear/index.js","webpack:///./node_modules/date-fns/esm/isAfter/index.js","webpack:///./node_modules/date-fns/esm/isBefore/index.js","webpack:///./node_modules/date-fns/esm/isDate/index.js","webpack:///./node_modules/date-fns/esm/isEqual/index.js","webpack:///./node_modules/date-fns/esm/isFirstDayOfMonth/index.js","webpack:///./node_modules/date-fns/esm/isFriday/index.js","webpack:///./node_modules/date-fns/esm/isLastDayOfMonth/index.js","webpack:///./node_modules/date-fns/esm/isMonday/index.js","webpack:///./node_modules/date-fns/esm/isSameDay/index.js","webpack:///./node_modules/date-fns/esm/startOfHour/index.js","webpack:///./node_modules/date-fns/esm/isSameHour/index.js","webpack:///./node_modules/date-fns/esm/isSameWeek/index.js","webpack:///./node_modules/date-fns/esm/isSameISOWeek/index.js","webpack:///./node_modules/date-fns/esm/isSameISOWeekYear/index.js","webpack:///./node_modules/date-fns/esm/startOfMinute/index.js","webpack:///./node_modules/date-fns/esm/isSameMinute/index.js","webpack:///./node_modules/date-fns/esm/isSameMonth/index.js","webpack:///./node_modules/date-fns/esm/startOfQuarter/index.js","webpack:///./node_modules/date-fns/esm/isSameQuarter/index.js","webpack:///./node_modules/date-fns/esm/startOfSecond/index.js","webpack:///./node_modules/date-fns/esm/isSameSecond/index.js","webpack:///./node_modules/date-fns/esm/isSameYear/index.js","webpack:///./node_modules/date-fns/esm/isSaturday/index.js","webpack:///./node_modules/date-fns/esm/isThursday/index.js","webpack:///./node_modules/date-fns/esm/isTuesday/index.js","webpack:///./node_modules/date-fns/esm/isWednesday/index.js","webpack:///./node_modules/date-fns/esm/isWithinInterval/index.js","webpack:///./node_modules/date-fns/esm/lastDayOfDecade/index.js","webpack:///./node_modules/date-fns/esm/lastDayOfWeek/index.js","webpack:///./node_modules/date-fns/esm/lastDayOfISOWeek/index.js","webpack:///./node_modules/date-fns/esm/lastDayOfISOWeekYear/index.js","webpack:///./node_modules/date-fns/esm/lastDayOfQuarter/index.js","webpack:///./node_modules/date-fns/esm/lastDayOfYear/index.js","webpack:///./node_modules/date-fns/esm/max/index.js","webpack:///./node_modules/date-fns/esm/min/index.js","webpack:///./node_modules/date-fns/esm/_lib/setUTCDay/index.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/index.js","webpack:///./node_modules/date-fns/esm/_lib/setUTCWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/setUTCISOWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/setUTCISODay/index.js","webpack:///./node_modules/date-fns/esm/parse/index.js","webpack:///./node_modules/date-fns/esm/roundToNearestMinutes/index.js","webpack:///./node_modules/date-fns/esm/setDate/index.js","webpack:///./node_modules/date-fns/esm/setDay/index.js","webpack:///./node_modules/date-fns/esm/setDayOfYear/index.js","webpack:///./node_modules/date-fns/esm/setHours/index.js","webpack:///./node_modules/date-fns/esm/setISODay/index.js","webpack:///./node_modules/date-fns/esm/setISOWeek/index.js","webpack:///./node_modules/date-fns/esm/setMilliseconds/index.js","webpack:///./node_modules/date-fns/esm/setMinutes/index.js","webpack:///./node_modules/date-fns/esm/setMonth/index.js","webpack:///./node_modules/date-fns/esm/setQuarter/index.js","webpack:///./node_modules/date-fns/esm/setSeconds/index.js","webpack:///./node_modules/date-fns/esm/setWeek/index.js","webpack:///./node_modules/date-fns/esm/setWeekYear/index.js","webpack:///./node_modules/date-fns/esm/setYear/index.js","webpack:///./node_modules/date-fns/esm/startOfDecade/index.js","webpack:///./node_modules/date-fns/esm/subDays/index.js","webpack:///./node_modules/date-fns/esm/subHours/index.js","webpack:///./node_modules/date-fns/esm/subMinutes/index.js","webpack:///./node_modules/date-fns/esm/subMonths/index.js","webpack:///./node_modules/date-fns/esm/subQuarters/index.js","webpack:///./node_modules/date-fns/esm/subSeconds/index.js","webpack:///./node_modules/date-fns/esm/subWeeks/index.js","webpack:///./node_modules/date-fns/esm/subYears/index.js","webpack:///./node_modules/date-fns/esm/index.js","webpack:///./node_modules/resolve-pathname/index.js","webpack:///./node_modules/value-equal/index.js","webpack:///./node_modules/tiny-invariant/dist/tiny-invariant.esm.js","webpack:///./node_modules/history/esm/history.js","webpack:///./node_modules/react-router/es/Router.js","webpack:///./node_modules/react-router-dom/es/Router.js","webpack:///./node_modules/react-router-dom/es/BrowserRouter.js","webpack:///./node_modules/react-router/es/matchPath.js","webpack:///./node_modules/react-router/es/Switch.js","webpack:///./node_modules/react-router-dom/es/Switch.js","webpack:///./node_modules/react-router/es/Route.js","webpack:///./node_modules/react-router-dom/es/Route.js","webpack:///./src/Tools/LogTools.js","webpack:///./src/Tools/Configuration.js","webpack:///./node_modules/react-router-dom/es/Link.js","webpack:///./src/Tools/ApiQuery.js","webpack:///./src/Services/AuthServices.js","webpack:///./src/React/Controls/MenuControl.jsx","webpack:///./node_modules/react-bootstrap/es/ThemeProvider.js","webpack:///./node_modules/react-bootstrap/es/utils/createWithBsPrefix.js","webpack:///./node_modules/react-bootstrap/es/FormContext.js","webpack:///./node_modules/react-bootstrap/es/FormGroup.js","webpack:///./node_modules/react-bootstrap/es/Feedback.js","webpack:///./node_modules/react-bootstrap/es/FormControl.js","webpack:///./node_modules/react-bootstrap/es/FormCheckInput.js","webpack:///./node_modules/react-bootstrap/es/FormCheckLabel.js","webpack:///./node_modules/react-bootstrap/es/FormCheck.js","webpack:///./node_modules/react-bootstrap/es/Col.js","webpack:///./node_modules/react-bootstrap/es/FormLabel.js","webpack:///./node_modules/react-bootstrap/es/FormText.js","webpack:///./node_modules/react-bootstrap/es/Form.js","webpack:///./src/Tools/Notification.js","webpack:///./src/React/Controls/UserControl.jsx","webpack:///./src/Services/FileExplorerServices.js","webpack:///./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack:///./node_modules/react-bootstrap/es/utils/createChainedFunction.js","webpack:///./node_modules/react-bootstrap/es/SafeAnchor.js","webpack:///./node_modules/react-bootstrap/es/Button.js","webpack:///./src/React/Controls/FileExplorer/FileExplorerRow.jsx","webpack:///./src/React/Controls/FileExplorer/FileExplorerControl.jsx","webpack:///./src/Tools/Sort.js","webpack:///./node_modules/react-transition-group/esm/config.js","webpack:///./node_modules/react-transition-group/esm/TransitionGroupContext.js","webpack:///./node_modules/react-transition-group/esm/Transition.js","webpack:///./node_modules/react-bootstrap/es/Fade.js","webpack:///./node_modules/react-bootstrap/es/utils/triggerBrowserReflow.js","webpack:///./node_modules/react-bootstrap/es/ModalBody.js","webpack:///./node_modules/react-bootstrap/es/ModalDialog.js","webpack:///./node_modules/react-bootstrap/es/ModalFooter.js","webpack:///./node_modules/@restart/hooks/esm/useCommittedRef.js","webpack:///./node_modules/@restart/hooks/esm/useEventCallback.js","webpack:///./node_modules/react-bootstrap/es/CloseButton.js","webpack:///./node_modules/react-bootstrap/es/ModalContext.js","webpack:///./node_modules/react-bootstrap/es/ModalHeader.js","webpack:///./node_modules/react-bootstrap/es/utils/divWithClassName.js","webpack:///./node_modules/react-bootstrap/es/ModalTitle.js","webpack:///./node_modules/react-bootstrap/es/utils/BootstrapModalManager.js","webpack:///./node_modules/react-bootstrap/es/Modal.js","webpack:///./src/React/Controls/FileExplorer/ExplorerActionsControl.jsx","webpack:///./src/Services/UploadServices.js","webpack:///./src/React/Controls/FileExplorer/UploaderControl.jsx","webpack:///./node_modules/react-bootstrap/es/ButtonToolbar.js","webpack:///./src/React/Controls/BootstrapControl.jsx","webpack:///./src/React/Pages/FileExplorerPage.jsx","webpack:///./node_modules/uncontrollable/esm/utils.js","webpack:///./node_modules/uncontrollable/esm/hook.js","webpack:///./node_modules/react-bootstrap/es/NavbarContext.js","webpack:///./node_modules/react-bootstrap/es/CardContext.js","webpack:///./node_modules/react-bootstrap/es/SelectableContext.js","webpack:///./node_modules/react-bootstrap/es/NavContext.js","webpack:///./node_modules/react-bootstrap/es/TabContext.js","webpack:///./node_modules/react-bootstrap/es/AbstractNav.js","webpack:///./node_modules/react-bootstrap/es/NavItem.js","webpack:///./node_modules/react-bootstrap/es/AbstractNavItem.js","webpack:///./node_modules/react-bootstrap/es/NavLink.js","webpack:///./node_modules/react-bootstrap/es/Nav.js","webpack:///./src/Services/UserServices.js","webpack:///./src/React/Controls/Admin/UserListControl.jsx","webpack:///./src/React/Pages/AdministratorPage.jsx","webpack:///./src/React/RouteSystem.jsx","webpack:///./src/index.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","require","_extends","assign","target","arguments","length","source","apply","this","__webpack_exports__","_objectWithoutPropertiesLoose","excluded","sourceKeys","keys","indexOf","__WEBPACK_AMD_DEFINE_RESULT__","hasOwn","classNames","classes","arg","argType","push","Array","isArray","inner","join","default","undefined","obj","_inheritsLoose","subClass","superClass","constructor","__proto__","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","err","console","error","warning","condition","format","a","b","e","f","Error","args","argIndex","replace","framesToPop","_default","window","document","createElement","element","selector","found","maybeID","maybeClass","nameOnly","slice","simpleSelectorRE","test","getElementById","getElementsByClassName","toArray","getElementsByTagName","querySelectorAll","Function","node","ownerDocument","_interopRequireDefault","recalc","size","_inDOM","scrollDiv","style","position","top","width","height","overflow","body","appendChild","offsetWidth","clientWidth","removeChild","css","transforms","props","_camelizeStyle","_getComputedStyle2","getPropertyValue","_hyphenateStyle","forEach","_isTransform","_removeStyle","_properties","transform","cssText","React","react_dom_1","clone","JSON","parse","stringify","isSameArray","reactFormatter","JSX","cell","formatterParams","onRendered","cellEl","getElement","CompWithMoreProps","cloneElement","render","querySelector","__WEBPACK_AMD_DEFINE_ARRAY__","define","$","$container","listener","previousToast","toastId","toastType","info","success","toastr","clear","$toastElement","clearOptions","options","getOptions","getContainer","clearToast","toastsToClear","children","clearContainer","remove","removeToast","message","title","optionsOverride","notify","type","iconClass","iconClasses","subscribe","callback","version","containerId","attr","addClass","positionClass","appendTo","createContainer","force","hideMethod","duration","hideDuration","easing","hideEasing","complete","publish","map","extend","preventDuplicates","shouldExit","intervalId","$titleElement","$messageElement","$progressElement","$closeElement","closeHtml","progressBar","hideEta","maxHideTime","response","state","startTime","Date","toastClass","suffix","escapeHtml","append","titleClass","setTitle","messageClass","setMessage","closeButton","closeClass","prepend","progressClass","rtl","newestOnTop","ariaValue","setAria","hide","showMethod","showDuration","showEasing","onShown","timeOut","setTimeout","hideToast","parseFloat","getTime","setInterval","updateProgress","closeOnHover","hover","stickAround","delayedHideToast","onclick","tapToDismiss","click","event","stopPropagation","cancelBubble","onCloseClick","debug","log","override","method","closeMethod","closeDuration","closeEasing","clearTimeout","onHidden","endTime","extendedTimeOut","stop","percentage","is","ReactTabulator_1","React15Tabulator_1","ReactTabulatorExample_1","Utils_1","ReactTabulator","React15Tabulator","ReactTabulatorExample","_on","on","_off","off","_filter","filter","_listen","listen","getOwnPropertySymbols","propIsEnumerable","propertyIsEnumerable","toObject","val","TypeError","test1","String","getOwnPropertyNames","test2","fromCharCode","test3","split","letter","shouldUseNative","from","symbols","to","_typeof","iterator","_react2","_createChainableTypeChecker2","propName","componentName","location","propFullName","propValue","propType","isValidElement","nodeType","validate","checkType","isRequired","componentNameSafe","propFullNameSafe","_len","_key","concat","chainedCheckType","renderFn","_temp","_ref","propTypes","defaultProps","_ref$allowFallback","allowFallback","_ref$displayName","displayName","ref","_react","forwardRef","string","rHyphen","_","chr","toUpperCase","_class","_style","_scrollbarSize","_isOverflowing","_manageAriaHidden","ModalManager","_ref$hideSiblingNodes","hideSiblingNodes","_ref$handleContainerO","handleContainerOverflow","modals","containers","data","scrollbarSize","_proto","isContainerOverflowing","modal","containerIndexFromModal","overflowing","arr","cb","idx","some","setContainerStyle","containerState","container","paddingRight","parseInt","removeContainerStyle","add","className","modalIdx","containerIdx","hideSiblings","splice","removeClass","showSiblings","_data$modals","backdrop","dialog","ariaHidden","isTopModal","extendStatics","__extends","setPrototypeOf","__","__assign","ReactDOM","pick_react_known_prop_1","ConfigUtils_1","Tabulator","default_1","_super","_this","htmlProps","mainId","Math","floor","random","table","pickValidHTMLProps","pickHTMLProps","componentDidMount","domEle","findDOMNode","that","_a","columns","propOptions","propsToOptions","layout","tableBuilding","dataLoaded","setState","componentWillUnmount","destroy","getDerivedStateFromProps","noData","componentDidUpdate","setData","data-instance","Component","id","loaded","pickSVGProps","_pickHtmlProps2","_pickSvgProps2","_htmlAttributes2","_pickProps2","ReactHTMLAttrs","reduce","attrs","prop","Boolean","abbr","accept","acceptCharset","accessKey","action","allowFullScreen","allowTransparency","alt","async","autoComplete","autoFocus","autoPlay","cellPadding","cellSpacing","challenge","charset","checked","cite","class","cols","colSpan","command","content","contentEditable","contextMenu","controls","coords","crossOrigin","dateTime","defer","dir","disabled","download","draggable","dropzone","encType","for","form","formAction","formEncType","formMethod","formNoValidate","formTarget","frameBorder","headers","hidden","high","href","hrefLang","htmlFor","httpEquiv","icon","inputMode","isMap","itemId","itemProp","itemRef","itemScope","itemType","kind","label","lang","list","loop","manifest","max","maxLength","media","mediaGroup","min","minLength","multiple","muted","noValidate","open","optimum","pattern","ping","placeholder","poster","preload","radioGroup","readOnly","rel","required","role","rows","rowSpan","sandbox","scope","scoped","scrolling","seamless","selected","shape","sizes","sortable","span","spellCheck","src","srcDoc","srcSet","start","step","tabIndex","translate","typeMustMatch","useMap","wmode","wrap","_lodash","_lodash2","out","objectTag","func","funcProto","objectProto","funcToString","toString","objectCtorString","objectToString","getPrototype","getPrototypeOf","isObjectLike","result","isHostObject","proto","Ctor","_svgAttributes2","accentHeight","accumulate","additive","alphabetic","amplitude","arabicForm","ascent","attributeName","attributeType","azimuth","baseFrequency","baseProfile","bbox","begin","bias","by","calcMode","capHeight","clipPathUnits","contentScriptType","contentStyleType","cx","cy","descent","diffuseConstant","divisor","dur","dx","dy","edgeMode","elevation","end","exponent","externalResourcesRequired","fill","filterRes","filterUnits","fontFamily","fontSize","fontStretch","fontStyle","fx","fy","g1","g2","glyphame","glyphRef","gradientTransform","gradientUnits","hanging","horizAdvX","horizOriginX","horizOriginY","ideographic","in","in2","intercept","k","k1","k2","k3","k4","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","lengthAdjust","limitingConeAngle","local","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","mathematical","numOctaves","offset","onAbort","onActivate","onBegin","onClick","onEnd","onError","onFocusIn","onFocusOut","onLoad","onMouseDown","onMouseMove","onMouseOut","onMouseOver","onMouseUp","onRepeat","onResize","onScroll","onUnload","onZoom","operator","order","orient","orientation","origin","overlinePosition","overlineThickness","panose1","path","pathLength","patternContentUnits","patternTransform","patternUnits","points","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","radius","refX","refY","renderingIntent","repeatCount","repeatDur","requiredExtensions","requiredFeatures","restart","rotate","rx","ry","scale","seed","slope","spacing","specularConstant","specularExponent","spreadMethod","startOffset","stdDeviation","stemh","stemv","stitchTiles","strikethroughPosition","strikethroughThickness","surfaceScale","systemLanguage","tableValues","targetX","targetY","textLength","u1","u2","underlinePosition","underlineThickness","unicode","unicodeRange","unitsPerEm","vAlphabetic","vHanging","vIdeographic","vMathematical","values","vertAdvY","vertOriginX","vertOriginY","viewBox","viewTarget","widths","x","xHeight","x1","x2","xChannelSelector","xlink","xml","y","y1","y2","yChannelSelector","z","zoomAndPan","alignmentBaseline","baselineShift","clipPath","clipRule","clip","colorInterpolationFilters","colorInterpolation","colorProfile","colorRendering","color","cursor","direction","display","dominantBaseline","enableBackground","fillOpacity","fillRule","floodColor","floodOpacity","fontSizeAdjust","fontVariant","fontWeight","glyphOrientationHorizontal","glyphOrientationVertical","imageRendering","kerning","letterSpacing","lightingColor","markerEnd","markerMid","markerStart","mask","opacity","pointerEvents","shapeRendering","stopColor","stopOpacity","strokeDasharray","strokeDashoffset","strokeLinecap","strokeLinejoin","strokeMiterlimit","strokeOpacity","strokeWidth","stroke","textAnchor","textDecoration","textRendering","unicodeBidi","visibility","wordSpacing","writingMode","server_1","NOOPS","output","_i","defaultOptions_1","opt","callbackNames_1","callbackName","renderToString","__WEBPACK_AMD_DEFINE_FACTORY__","factory","findIndex","predicate","len","thisArg","kValue","find","ColumnManager","blockHozScrollEvent","headersElement","createHeadersElement","createHeaderElement","rowManager","columnsByIndex","columnsByField","scrollLeft","insertBefore","firstChild","el","classList","headerVisible","initialize","setRowManager","manager","getHeadersElement","scrollHorizontal","left","hozAdjust","scrollWidth","marginLeft","modExists","frozenColumns","generateColumnsFromRowData","row","sorter","col","field","isNaN","match","setColumns","self","reset","def","_addColumn","_reIndexColumns","responsiveLayout","redraw","definition","before","nextToColumn","column","Column","colEl","index","findColumnIndex","parentIndex","getTopColumn","nextEl","parentNode","nextSibling","unshift","registerColumnField","registerColumnPosition","reRegisterPosition","_verticalAlignHeaders","minHeight","clearVerticalAlign","getHeight","verticalAlign","columnVertAlign","adjustTableSize","findColumn","subject","ColumnComponent","_getSelf","HTMLElement","getColumnByField","getColumnByIndex","getFirstVisibileColumn","visible","getColumns","getRealColumns","traverse","getDefinitions","active","getDefinition","getDefinitionTree","getComponents","structured","getComponent","getWidth","moveColumn","after","_moveColumnInArray","columnMoved","columnManager","persistentLayout","persistence","save","updateRows","toIndex","fromIndex","cells","scrollToColumn","ifVisible","adjust","Promise","resolve","reject","scrollToColumnPosition","scrollToColumnIfVisible","offsetLeft","warn","generateCells","generateCell","getFlexBaseWidth","totalWidth","fixedWidth","scrollHeight","clientHeight","minWidth","colWidth","columnMinWidth","addColumn","columnCalcs","activeRows","getMode","reinitializeWidth","reinitialize","deregisterColumn","getField","helpers","elVisible","resetScroll","update","footerManager","_column","getCells","getVisibility","show","isGroup","toggle","delete","getSubColumns","getParentColumn","parent","scrollTo","getTable","headerFilterFocus","setHeaderFilterFocus","reloadHeaderFilter","setHeaderFilterValue","getNextColumn","nextCol","nextColumn","getPrevColumn","prevCol","prevColumn","contentElement","groupElement","createGroupElement","tooltip","hozAlign","fieldStructure","getFieldValue","setFieldValue","setField","checkDefinition","cellEvents","cellClick","cellDblClick","cellContext","cellTap","cellDblTap","cellTapHold","cellMouseEnter","cellMouseLeave","cellMouseOver","cellMouseOut","cellMouseMove","widthStyled","minWidthStyled","widthFixed","_mapDepricatedFunctionality","newCol","attachColumn","checkColumnVisibility","rowHandle","movableRows","moveRow","setHandle","_buildHeader","setAttribute","_this2","defaultOptionList","nestedFieldSeparator","_getNestedData","_getFlatData","_setNesteData","_setFlatData","hideInHtml","htmlOutput","setTooltip","headerTooltip","tooltipsHeader","localize","headerVertical","_bindEvents","_buildColumnHeaderContent","_buildGroupHeader","_buildColumnHeader","resizableColumns","resizeColumns","initializeColumn","headerFilter","headerFilterPlaceholder","setHeaderFilterColumnPlaceholder","movableColumns","topCalc","bottomCalc","addEventListener","dblTap","tapHold","tap","headerClick","headerDblClick","headerContext","headerTap","passive","headerDblTap","headerTapHold","cellEdited","cellEditing","cellEditCancelled","sort","editor","edit","validator","mutator","accessor","cssClass","setMinWidth","tooltips","align","_buildColumnHeaderTitle","titleHolderElement","editableTitle","titleElement","focus","columnTitleChanged","text","_formatColumnHeaderTitle","formatter","contents","params","mockCell","titleFormatter","getFormatter","getValue","titleFormatterParams","Node","innerHTML","dataObj","structure","alignment","parentHeight","getGroupElement","offsetHeight","paddingTop","getFirstColumn","getLastColumn","updateBranches","colDefs","columnVisibilityChanged","silent","responsiveToggle","updateColumnVisibility","matchChildWidths","childWidth","maxWidth","setWidth","setWidthActual","checkCellHeights","heightInitialized","offsetParent","clearCellHeight","calcHeight","setCellHeight","cellCount","Cell","hideHeaderFilterElements","fitToData","showHeaderFilterElements","clearWidth","deleteCell","RowManager","createHolderElement","tableElement","createTableElement","firstRender","renderMode","activeRowsCount","displayRows","displayRowsCount","scrollTop","vDomRowHeight","vDomTop","vDomBottom","vDomScrollPosTop","vDomScrollPosBottom","vDomTopPad","vDomBottomPad","vDomMaxRenderChain","vDomWindowBuffer","vDomWindowMinTotalRows","vDomWindowMinMarginRows","vDomTopNewRows","vDomBottomNewRows","getTableElement","getRowPosition","setColumnManager","setRenderMode","groupBy","groupRows","scrollHeaders","scrollVertical","ajaxProgressiveLoad","ajax","nextPage","findRow","Row","RowComponent","getRowFromDataObject","getRowFromPosition","scrollToRow","rowTop","_this3","rowIndex","getDisplayRows","rowEl","scrollToRowPosition","scrollToRowIfVisible","elOffset","abs","_virtualRenderFill","renderInPosition","_this4","pagination","_setDataActual","reRenderInPosition","autoColumns","dataLoading","_wipeElements","history","selectRow","clearSelectionData","reactiveData","watchData","refreshActiveData","wipe","deleteRow","blockRedraw","allIndex","activeIndex","setActiveRows","displayRowIterator","displayIndex","rowDeleted","dataEdited","getData","updateGroupRows","addRow","pos","addRowActual","addRows","_this5","findAddRowPos","reverse","item","addRowPos","dispRows","paginationAddRow","page","getPageSize","assignRowToGroup","getGroup","_moveRowInArray","rowAdded","moveRowActual","rowMoved","toGroup","fromGroup","removeRow","insertRow","styleRow","clearData","getRowIndex","findRowIndex","getDisplayRowIndex","nextDisplayRow","rowOnly","nextRow","prevDisplayRow","prevRow","getDataCount","_genRemoteRequest","ajaxSorting","sorters","getSort","paginationDataSentNames","ajaxFiltering","filters","getFilters","setParams","sendRequest","then","catch","filterRefresh","setPage","loadData","sorterRefresh","loadOrignalData","progressiveLoad","stage","skipStage","cancelEdit","selectable","selectablePersistence","deselectRows","resetDisplayRows","frozenRows","isFrozen","getDisplayIndex","setDisplayIndex","getNextDisplayIndex","setDisplayRows","getRows","dataTree","setMaxRows","renderTable","layoutColumnsOnNewData","getVisibleRows","viewable","topEdge","bottomEdge","topFound","topRow","bottomRow","offsetTop","getRenderMode","topOffset","diff","virtualDom","renderStarted","_simpleRender","renderEmptyScroll","renderComplete","_clearVirtualDom","checkClassicModeGroupHeaderWidth","onlyGroupHeaders","paddingBottom","forceMove","holder","topPad","rowsHeight","topPadHeight","heightOccupied","ceil","rowHeight","initialized","normalizeHeight","vDomScrollHeight","countGroups","topDiff","bottomDiff","margin","_addTopRow","_removeBottomRow","_removeTopRow","_addBottomRow","topRowHeight","_quickNormalizeRowHeight","bottomRowHeight","virtualDomBuffer","otherHeight","external","maxHeight","tableWidth","browser","createEvent","initEvent","dispatchEvent","Event","_row","getCell","getIndex","getPosition","pageTo","setPageToRow","move","moveToRow","updateData","select","selectRows","deselect","toggleSelect","toggleRow","isSelected","isRowSelected","freeze","freezeRow","unfreeze","unfreezeRow","treeCollapse","collapseRow","treeExpand","expandRow","treeToggle","getTreeParent","getTreeChildren","reformat","getNextRow","getPrevRow","heightStyled","manualHeight","outerHeight","generateElement","detachElement","initializeRow","rowClick","rowDblClick","rowContext","rowMouseEnter","rowMouseLeave","rowMouseOver","rowMouseOut","rowMouseMove","rowTap","rowDblTap","rowTapHold","deleteCells","layoutRow","cellRendered","rowFormatter","resizableRows","resizeRows","reinitializeHeight","setHeight","clearHeight","transformRow","watchRow","_this6","attrname","block","unblock","setValueProcessData","getChildField","rowUpdated","getCellIndex","findCell","findNextEditableCell","nextCell","allowEdit","check","findPrevEditableCell","prevCell","toRow","_this7","deleteActual","_deselectRow","group","recalcRowGroup","CellComponent","_cell","getOldValue","getRow","getColumn","setValue","mutate","restoreOldValue","setValueActual","nav","checkHeight","oldValue","build","_configureCell","textAlign","tooltipGenerationMode","_generateTooltip","_bindClickEvents","_bindTouchEvents","_bindMouseEvents","bindEditor","initializeCell","component","preventDefault","selection","range","createTextRange","moveToElementText","getSelection","createRange","selectNode","removeAllRanges","addRange","_generateContents","formatValue","newValue","changed","transformCell","layoutElement","editCell","editing","getCurrentCell","calcs","next","right","prev","up","down","FooterManager","links","_initialize","footerElement","activate","deactivate","link","footerRedraw","browserSlow","initializeElement","initializeOptions","_create","comms","register","defaultOptions","autoResize","initialSort","initialFilter","initialHeaderFilter","columnHeaderSortMulti","sortOrderReverse","keybindings","clipboard","clipboardCopyStyled","clipboardCopySelector","clipboardCopyFormatter","clipboardPasteParser","clipboardPasteAction","clipboardCopyConfig","clipboardCopied","clipboardPasted","clipboardPasteError","downloadDataFormatter","downloadReady","blob","downloadComplete","downloadConfig","dataTreeElementColumn","dataTreeBranchElement","dataTreeChildIndent","dataTreeChildField","dataTreeCollapseElement","dataTreeExpandElement","dataTreeStartExpanded","dataTreeRowExpanded","dataTreeRowCollapsed","printAsHtml","printFormatter","printHeader","printFooter","printCopyStyle","printVisibleRows","printConfig","selectableRangeMode","selectableRollingSelection","selectableCheck","locale","langs","persistentSort","persistentFilter","persistenceID","persistenceMode","responsiveLayoutCollapseStartOpen","responsiveLayoutCollapseUseFormatters","responsiveLayoutCollapseFormatter","paginationSize","paginationButtonCount","paginationSizeSelector","paginationElement","paginationDataSent","paginationDataReceived","ajaxURL","ajaxURLGenerator","ajaxParams","ajaxConfig","ajaxContentType","ajaxRequestFunc","ajaxLoader","ajaxLoaderLoading","ajaxLoaderError","ajaxProgressiveLoadDelay","ajaxProgressiveLoadScrollMargin","groupStartOpen","groupValues","groupHeader","htmlOutputConfig","movableRowsConnectedTables","movableRowsSender","movableRowsReceiver","movableRowsSendingStart","movableRowsSent","movableRowsSentFailed","movableRowsSendingStop","movableRowsReceivingStart","movableRowsReceived","movableRowsReceivedFailed","movableRowsReceivingStop","tableBuilt","rowSelectionChanged","rowSelected","rowDeselected","rowResized","columnResized","htmlImporting","htmlImported","ajaxRequesting","ajaxResponse","ajaxError","dataFiltering","dataFiltered","dataSorting","dataSorted","groupToggleElement","groupClosedShowCalcs","dataGrouping","dataGrouped","groupVisibilityChanged","groupClick","groupDblClick","groupContext","groupTap","groupDblTap","groupTapHold","pageLoaded","localized","validationFailed","historyUndo","historyRedo","_clearSelection","empty","_clearObjectPointers","bindModules","tagName","htmlTableImport","parseTable","_buildElement","_loadInitialData","_this8","mod","_detectBrowser","setHeaderFilterPlaceholder","installLang","setLocale","load","setSort","setFilter","resizeTable","print","deregister","unwatchData","clearBindings","ua","navigator","userAgent","setDataFromLocalFile","extensions","_this9","input","file","files","reader","FileReader","readAsText","onload","_setData","onerror","config","blockActiveRequest","inPosition","getUrl","setConfig","setUrl","searchRows","search","searchData","getHtml","htmlTableExport","printFullscreen","getAjaxUrl","replaceData","_this10","responses","addData","_this11","updateOrAddData","_this12","newRows","_this13","_this14","updateOrAddRow","_this15","updateRow","_this16","_this17","fromRow","copyToClipboard","selectorParams","copy","getColumnDefinitions","getColumnLayout","parseColumns","setColumnLayout","mergeDefinition","showColumn","hideColumn","toggleColumn","deleteColumn","_this18","getLocale","getLang","sortList","getSorters","clearSort","addFilter","all","getHeaderFilters","removeFilter","clearFilter","clearHeaderFilter","deselectRow","toggleSelectRow","getSelectedRows","getSelectedData","setMaxPage","_this19","setPageSize","previousPage","getPage","getPageMax","setGroupBy","groups","setGroupStartOpen","setGroupHeader","getGroups","getGroupedData","getCalcResults","getResults","navigatePrev","currentCell","navigateNext","navigateLeft","navigateRight","navigateUp","navigateDown","undo","redo","getHistoryUndoSize","getHistoryRedoSize","filename","downloadToTab","tableComms","receive","moduleBindings","extendModule","registerModule","plugin","box","getBoundingClientRect","pageYOffset","documentElement","clientTop","pageXOffset","clientLeft","deepClone","tables","lookupTable","query","matches","results","matchElement","Layout","modes","fitData","fitDataFill","fitColumns","flexColWidth","overflowWidth","flexWidth","flexGrowUnits","flexColumns","fixedShrinkColumns","flexShrinkUnits","gapFill","calcWidth","scaleColumns","freeSpace","shrinkCols","oversizeCols","oversizeSpace","remainingSpace","nextColWidth","gap","changeUnits","undersizeCols","calcGrow","widthGrow","calcShrink","widthShrink","Localize","bindings","headerFilters","_setLangProp","desiredLocale","language","toLowerCase","prefix","traverseLang","trans","_executeBindings","getText","pathArray","_getLangElement","root","level","rootPath","_loop","binding","items","loading","page_size","first","first_title","last","last_title","prev_title","next_title","Comms","getConnections","selectors","connections","con","send","connection","commsReceived","Accessor","allowedTypes","charAt","lookupAccessor","accessors","dataIn","Ajax","url","urlGenerator","loaderElement","createLoaderElement","msgElement","createMsgElement","loadingElement","errorElement","loaderPromise","requestOrder","template","trim","defaultLoaderPromise","defaultURLGenerator","initializeProgressive","getParams","_loadDefaultConfig","defaultConfig","_loadDataProgressive","_loadDataStandard","_this20","generateParamsList","serializeParams","encoded","encodeURIComponent","requestNo","_this21","showLoader","hideLoader","showError","contentType","contentTypeFormatters","Accept","credentials","fetch","ok","json","status","statusText","Content-Type","FormData","ColumnCalcs","topCalcs","botCalcs","genColumn","topElement","botElement","botRow","topInitialized","botInitialized","topCalcParams","botCalcParams","bottomCalcParams","calculations","initializeTopRow","botCalc","initializeBottomRow","removeCalcs","rowsToData","generateRow","recalcGroup","getRowGroup","rowData","bottom","generateRowData","generateTopRow","generateBottomRow","disable","enable","paramKey","hasTopCalcs","hasBottomCalcs","getKey","getGroupResults","groupObj","subGroups","getSubGroups","subGroupResults","subgroup","avg","calcParams","precision","sum","Number","toFixed","count","Clipboard","copySelector","copySelectorParams","copyFormatter","copyFormatterParams","pasteParser","pasteAction","htmlElement","blocked","processConfig","generateContent","clipboardData","outerHTML","originalEvent","paste","setPasteParser","setPasteAction","columnHeaders","rowGroups","clipboardCopyHeader","originalSelectionText","pasteActions","parser","pasteParsers","checkPaseOrigin","getPasteData","mutateData","valid","internal","sel","textRange","selectNodeContents","setSelector","setFormatter","execCommand","copySelectors","copyFormatters","generateSimpleHeaders","generateColumnGroupHeaders","_this22","colData","processColumnGroup","_this23","groupData","subGroup","subGroupData","groupHeadersToRows","parseColumnGroup","rowArray","buildComplexRows","_this24","processGroupData","_this25","getCalcRow","calcData","buildOutput","_this26","generateHTML","parseRowGroupData","calcObj","_this27","oddRow","evenRow","calcRow","firstRow","firstCell","firstGroup","styleCells","headerEl","addCalcRow","processRows","isCalc","j","mapElementStyles","header","headerHolderEl","columnEl","generateHeaders","getComputedStyle","processGroup","groupEl","groupCellEl","lookup","background-color","font-weight","font-family","font-size","border-top","border-left","border-right","border-bottom","fromStyle","userSelection","raw","headerFindSuccess","columnMap","shift","insert","DataTree","indent","collapseEl","expandEl","branchEl","elementField","startOpen","dummyEl","firstCol","childArray","controlEl","generateControlElement","cloneNode","marginRight","paddingLeft","_this28","oldControl","replaceChild","_this29","getChildren","child","_this30","generateChildren","sub","_this31","childData","childRow","checkForRestyle","Download","fields","interceptCallback","downloadFunc","downloaders","processColumns","processDefinitions","processData","mime","triggerDownload","columnGroups","processedDefinitions","processDefinition","_this32","maxDepth","processedColumn","depth","downloadTitle","_this33","_this34","newTab","Blob","URL","createObjectURL","msSaveOrOpenBlob","csv","setFileContents","fileContents","titles","delimiter","parseRows","parseGroup","bom","pdf","headerDepth","autoTableParams","rowGroupStyles","fillColor","rowCalcStyles","jsPDFParams","jsPDF","unit","parseValue","parseRow","styles","doc","autoTable","addPageContent","head","documentProcessing","xlsx","sheetName","workbook","SheetNames","Sheets","groupRowIndexs","groupColumnIndexs","calcRowIndexs","generateSheet","sheet","XLSX","utils","sheet_add_aoa","encode_range","merges","merge","generateMerges","rowsToSheet","sheetOnly","sheets","buf","ArrayBuffer","view","Uint8Array","charCodeAt","s2ab","write","bookType","bookSST","Edit","mouseClick","recursionBlock","invalidEdit","editable","editorParams","editors","clearEditor","contains","focusCellNoEvent","forceEdit","cellEditor","rendered","blur","cancel","cellValue","onChange","padding","boxSizing","keyCode","textarea","whiteSpace","resize","heightNow","number","blurFunc","removeEventListener","initialValue","listEl","dataItems","displayItems","currentItem","blurable","getUniqueColumnValues","sortValuesList","parseItems","inputValues","curentValue","dataList","displayList","processComplexListItem","listItemFormatter","setCurrentItem","chooseItem","fillList","hideList","cancelItem","stopImmediatePropagation","showList","autocomplete","allItems","filterList","term","intialLoad","searchObjs","searchFunc","showListOnEmpty","current","showInputValue","freetext","allowEmpty","itemList","star","maxStars","getAttribute","stars","starsHolder","createElementNS","starChange","buildStar","starHolder","nextStar","changeValue","textOverflow","progress","mouseDrag","mouseDragWidth","percent","handle","bar","updateValue","calcVal","round","backgroundColor","screenX","tickCross","tristate","indetermValue","indeterminateValue","indetermState","indeterminate","marginTop","Filter","headerFilterElements","headerFilterColumns","prevSuccess","filterFunc","filterType","tagType","attrType","emptyFunc","headerFilterFunc","headerFilterFuncParams","fieldVal","colVal","generateHeaderFilterElement","filterElement","editorElement","cellWrapper","typingTimer","searchTrigger","_this35","headerElement","oldFilterElement","oldFilterElementIndex","oldColumnIndex","headerFilterEmptyCheck","headerFilterParams","hasAttribute","headerFilterLiveFilter","hasChanged","findFilter","findSubFilters","filtersToArray","_this36","searchType","filterRecurse","rowList","activeRowComponents","filterRow","subFilter","=","filterVal","rowVal","filterParams","<","<=",">",">=","!=","regex","RegExp","like","Format","crossElement","formatters","plaintext","renderedCallback","sanitizeHTML","entityMap","&","\"","'","/","`","emptyToSpace","html","money","integer","decimal","rgx","floatVal","decimalSym","thousandSym","thousand","symbol","symbolAfter","urlPrefix","labelField","urlField","image","truthy","allowTruthy","tick","tickElement","cross","datetime","inputFormat","outputFormat","invalid","invalidPlaceholder","newDatetime","moment","isValid","datetimediff","humanize","date","traffic","percentValue","colors","legend","legendColor","legendAlign","buttonTick","buttonCross","rownum","responsiveCollapse","toggleList","isOpen","collapse","FrozenColumns","leftColumns","rightColumns","leftMargin","rightMargin","rightPadding","initializationMode","scrollEndTimer","edge","frozen","_this37","calcMargins","layoutColumnPosition","layoutCalcRows","_calcSpace","allCells","_this38","_this39","FrozenRows","styleRows","GroupComponent","_group","getParentGroup","toggleVisibility","groupManager","Group","generator","oldGroup","hasSubGroups","groupIDLookups","_addRowToGroup","_addRow","old","groupList","elementContents","arrowElement","createElements","addBindings","createValueGroups","initializeGroupHeader","_this40","allowedValues","_createGroup","groupID","groupKey","headerGenerator","conformRowData","generateGroupHeaderContents","scrollHeader","removeGroup","getHeadersAndRows","noCalc","_visSet","getRowCount","compoment","addBindingsd","childNodes","GroupRows","langValue","lookupFunc","generateGroups","groupComponents","pullGroupListData","groupListData","rowCount","headerContent","oldGroups","createGroup","assignRowToExistingGroup","newGroupNeeded","History","undoers","redoers","cellEdit","rowAdd","rowDelete","newRow","_rebindRow","rowMove","oldRow","HtmlTableImport","fieldIndex","hasIndex","_extractOptions","_extractHeaders","_generateBlankHeaders","newElement","attributes","optionsArr","optionsList","attrib","_attribValue","_findCol","exists","textContent","HtmlTableExport","cloneTableStyle","colVisProp","genereateTable","generateHeaderElements","generateBodyElements","_this41","_this42","columnVisCheck","_this43","_this44","bodyEl","text-align","padding-top","padding-left","padding-right","padding-bottom","Keybindings","watchKeys","pressedKeys","keyupBinding","keydownBinding","mergedBindings","mapBindings","bindEvents","_this45","_loop2","actions","mapBinding","symbolsList","ctrl","code","checkBinding","ctrlKey","shiftKey","navPrev","navNext","navUp","navDown","scrollPageUp","scrollPageDown","scrollToStart","scrollToEnd","keyBlock","newPos","scrollMax","navLeft","navRight","MoveColumns","placeholderElement","createPlaceholderElement","hoverElement","checkTimeout","checkPeriod","moving","toCol","toColAfter","startX","autoScrollMargin","autoScrollStep","autoScrollTimeout","touchMove","moveHover","endMove","mousemove","touches","pageX","which","startMove","bindTouchEvents","prevColWidth","nextColWidthLast","prevColWidthLast","startXMove","moveToCol","_bindMouseMove","_unbindMouseMove","movingCells","scrollPos","columnHolder","xPos","MoveRows","toRowAfter","hasHandle","startY","tableRowDropEvent","connectedTable","connectedRow","mouseup","tableRowDrop","pageY","previousSibling","nextRowHeight","prevRowHeight","nextRowHeightLast","prevRowHeightLast","startYMove","setStartPosition","connectToTables","disconnectFromTables","moveHoverConnections","moveHoverTable","rowHolder","yPos","connect","disconnect","dropComplete","sender","senders","receiver","receivers","fromTable","toTable","Mutator","enabled","lookupMutator","mutators","mutatorEdit","Page","pageSizes","button","pagesElement","firstBut","prevBut","nextBut","lastBut","pageSizeSelect","generatePageSizeSelectList","_this46","itemEl","pageSelectLabel","_key2","paginationDataReceivedNames","trigger","_this47","_this48","_setPageButtons","leftSize","rightSize","_generatePageButton","_this49","_this50","_this51","_getRemotePage","oldParams","pageParams","_this52","_parseRemoteData","last_page","footer","current_page","Persistence","persistProps","localStorage","retreiveData","getItem","cookie","cookiePos","substr","oldCols","newCols","_findColumn","validateSorters","saveData","setItem","expireDate","setDate","getDate","toUTCString","definitions","Print","manualBlock","replaceTable","cleanup","footerContent","scrollX","scrollY","footerEl","tableEl","ReactiveData","origFuncs","currentVersion","configurable","pop","startRow","oldRows","writable","watchKey","getOwnPropertyDescriptor","set","unwatchRow","ResizeColumns","startColumn","startWidth","prevHandle","variableHeight","handleDown","nearestColumn","_checkResizability","_mouseDown","prevHandleDown","colIndex","resizable","mouseMove","mouseUp","ResizeRows","startHeight","screenY","ResizeTable","observer","ResizeObserver","entry","observe","unobserve","ResponsiveLayout","hiddenColumns","collapseFormatter","collapseStartOpen","formatCollapsedData","responsive","generateCollapsedContent","generateCollapsedRowContent","working","generateCollapsedRowData","mockCellComponent","listContents","div","SelectRow","selecting","lastClickedRow","selectPrev","selectedRows","_rowSelectionChanged","endSelect","lastClickedRowIdx","rowIdx","fromRowIdx","toRowIdx","toggledRows","metaKey","toggledRow","_selectRow","rowInfo","selectedRow","Sort","arrowEl","sorterParams","startingDir","headerSortStartingDir","headerSortTristate","headerSort","newSortList","findSorter","clearColumnHeaders","setColumnHeader","_sortItem","_sortRow","el1Comp","el2Comp","el1","el2","aRow","bRow","alignEmptyValues","decimalSeparator","thousandSeparator","emptyAlign","localeCompare","time","boolean","array","calc","alphanum","as","bs","a1","b1","L","rd","isFinite","Validate","_extractValidator","parts","_buildValidator","parameters","validators","float","numeric","unique","cellData","eventName","handler","capture","attachEvent","srcElement","currentTarget","detachEvent","context","compareDocumentPosition","fallback","baseVal","_camelize","msPattern","animationEnd","animationDelay","animationTiming","animationDuration","animationName","transitionEnd","transitionDuration","transitionDelay","transitionTiming","transitionProperty","_getTransitionPropert","vendorMap","O","Moz","Webkit","ms","vendors","vendor","getTransitionProperties","timing","delay","defaultContainer","_reactDom","_activeElement","_contains","_propTypes","_componentOrElement","_elementType","_ModalManager","_Portal","_getContainer","_ownerDocument","_assertThisInitialized","ReferenceError","modalManager","Modal","_React$Component","_args","exited","onPortalRendered","onShow","containerClassName","removeKeydownListener","handleDocumentKeyDown","removeFocusListener","enforceFocus","onHide","restoreFocus","restoreLastFocus","setDialogRef","setBackdropRef","handleHidden","_this$props","onExited","handleBackdropClick","onBackdropClick","keyboard","onEscapeKeyDown","_isMounted","currentActiveElement","renderBackdrop","_this$props2","Transition","backdropTransition","appear","nextProps","transition","getSnapshotBeforeUpdate","prevProps","lastFocus","_this$props3","_this$props4","renderDialog","_this$props4$role","onExit","onExiting","onEnter","onEntering","onEntered","dialogProps","aria-modal","newProps","omitProps","unmountOnExit","Fragment","bool","oneOfType","oneOf","Manager","backup","fakeEvent","done","parseDuration","_parseDuration","str","mult","maybeOpts","mapToProps","$mapContextToProps","consumers","_forwardRef","getDisplayName","ensureConsumer","Consumer","maybeArrayOfConsumers","_ref$forwardRefAs","forwardRefAs","SingleConsumer","contextTransform","_extends2","propsWithRef","_extends3","reduceRight","Context","_len2","contexts","isarray","pathToRegexp","compile","tokensToFunction","tokensToRegExp","PATH_REGEXP","res","tokens","defaultDelimiter","exec","escaped","modifier","asterisk","partial","repeat","optional","escapeGroup","escapeString","encodeURIComponentPretty","encodeURI","opts","encode","pretty","token","segment","attachKeys","re","flags","sensitive","strict","route","endsWithDelimiter","regexpToRegexp","arrayToRegexp","stringToRegexp","q","u","v","w","aa","ba","A","B","g","h","ca","C","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","D","E","refs","updater","F","G","isReactComponent","forceUpdate","H","isPureReactComponent","I","J","K","__self","__source","M","$$typeof","_owner","N","P","Q","keyPrefix","R","U","S","T",":","escape","ea","fa","V","da","W","X","Children","only","createRef","PureComponent","createContext","_calculateChangedBits","_currentValue","_currentValue2","_threadCount","Provider","_context","lazy","_ctor","_status","_result","memo","compare","useCallback","useContext","useEffect","useImperativeHandle","useDebugValue","useLayoutEffect","useMemo","useReducer","useRef","useState","StrictMode","Suspense","createFactory","unstable_ConcurrentMode","unstable_Profiler","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ReactCurrentDispatcher","ReactCurrentOwner","Y","Z","ha","ia","ja","la","ma","na","oa","extractEvents","eventTypes","pa","phasedRegistrationNames","qa","registrationName","ra","sa","dependencies","ta","va","wa","ka","xa","ya","za","Aa","_dispatchListeners","_dispatchInstances","isPropagationStopped","isPersistent","release","Ba","injectEventPluginOrder","injectEventPluginsByName","Ca","stateNode","Da","Ea","Fa","Ga","Ha","tag","Ia","Ja","Ka","La","return","Ma","dispatchConfig","Na","_targetInst","Oa","Pa","Qa","Ra","Sa","Ta","animationend","animationiteration","animationstart","transitionend","Ua","Va","Wa","animation","Xa","Ya","Za","$a","ab","bb","db","eb","fb","gb","nativeEvent","Interface","isDefaultPrevented","defaultPrevented","returnValue","ib","eventPool","jb","destructor","hb","getPooled","persist","eventPhase","bubbles","cancelable","timeStamp","now","isTrusted","kb","lb","mb","nb","ob","documentMode","pb","qb","rb","sb","beforeInput","bubbled","captured","compositionEnd","compositionStart","compositionUpdate","tb","ub","vb","detail","wb","zb","xb","altKey","char","yb","Ab","Bb","Cb","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","datetime-local","email","month","password","tel","week","Mb","nodeName","Nb","correspondingUseElement","Ob","Pb","Rb","_valueTracker","stopTracking","Qb","Sb","Tb","Ub","Vb","Wb","Xb","Yb","Zb","$b","ac","bc","cc","dc","ec","fc","gc","hc","ic","jc","_debugOwner","_debugSource","fileName","lineNumber","kc","lc","mc","nc","acceptsBooleans","attributeNamespace","mustUseProperty","propertyName","rc","sc","tc","pc","qc","oc","removeAttribute","setAttributeNS","uc","vc","defaultChecked","defaultValue","_wrapperState","initialChecked","wc","controlled","xc","yc","zc","Ac","activeElement","Bc","change","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","_isInputEventSupported","Qc","Rc","Alt","Control","Meta","Shift","Sc","getModifierState","Tc","Uc","Vc","Wc","Xc","Yc","clientX","clientY","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Zc","pointerId","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","$c","mouseEnter","mouseLeave","pointerEnter","pointerLeave","ad","defaultView","parentWindow","alternate","bd","cd","dd","ed","effectTag","fd","hd","sibling","gd","elapsedTime","pseudoElement","jd","kd","ld","charCode","md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","nd","8","9","12","13","16","17","18","19","20","27","32","33","34","35","36","37","38","39","40","45","46","112","113","114","115","116","117","118","119","120","121","122","123","144","145","224","od","pd","dataTransfer","qd","targetTouches","changedTouches","sd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","td","ud","vd","wd","isInteractive","xd","isInteractiveTopLevelEventType","yd","zd","Ad","targetInst","ancestors","containerInfo","topLevelType","Bd","Cd","Dd","Ed","Fd","Gd","Hd","Id","Jd","Kd","Ld","Nd","HTMLIFrameElement","contentWindow","Od","Qd","focusedElem","selectionRange","Md","selectionStart","selectionEnd","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","setStart","setEnd","Rd","Sd","Td","Ud","Vd","Wd","Xd","Yd","onSelect","$d","Zd","ae","defaultSelected","be","dangerouslySetInnerHTML","ce","de","ee","SimpleEventPlugin","EnterLeaveEventPlugin","ChangeEventPlugin","SelectEventPlugin","BeforeInputEventPlugin","fe","mathml","svg","ge","he","ie","je","MSApp","execUnsafeLocalFunction","namespaceURI","ke","lastChild","nodeValue","le","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","lineClamp","lineHeight","orphans","tabSize","widows","zIndex","zoom","me","ne","oe","setProperty","substring","pe","menuitem","area","base","br","embed","hr","img","keygen","meta","param","track","wbr","qe","se","te","ue","ve","we","xe","__html","ye","ze","Ae","unstable_scheduleCallback","Be","unstable_cancelCallback","De","Ee","Set","Fe","Ge","He","Ie","Je","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","childContextTypes","Ke","Le","Me","Ne","getChildContext","Oe","__reactInternalMemoizedMergedChildContext","Pe","Qe","Re","Se","Ue","elementType","pendingProps","contextDependencies","memoizedState","updateQueue","memoizedProps","lastEffect","firstEffect","nextEffect","childExpirationTime","expirationTime","Ve","Xe","Ye","Ze","$e","af","bf","pendingChildren","implementation","cf","didError","earliestPendingTime","latestPendingTime","df","ff","latestPingedTime","earliestSuspendedTime","latestSuspendedTime","gf","nextExpirationTimeToWorkOn","jf","kf","baseState","tf","_reactInternalFiber","lf","nf","mf","payload","of","pf","qf","rf","sf","uf","shouldComponentUpdate","vf","contextType","wf","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","xf","yf","UNSAFE_componentWillMount","componentWillMount","zf","Af","_stringRef","Bf","Cf","Map","Df","Ef","Ff","Gf","Hf","If","Jf","Kf","Lf","Mf","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","Vf","Wf","Xf","Yf","Zf","$f","ag","bg","cg","dg","eg","fg","gg","hg","ig","jg","kg","lg","mg","queue","baseUpdate","ng","og","pg","lastRenderedReducer","dispatch","qg","lastRenderedState","eagerReducer","eagerState","rg","deps","sg","tg","ug","vg","wg","readContext","xg","yg","zg","Ag","Bg","Cg","Dg","Eg","Fg","Gg","Hg","Ig","Jg","Kg","Lg","Mg","Ng","Og","Pg","UNSAFE_componentWillUpdate","componentWillUpdate","Qg","getDerivedStateFromError","Rg","pendingContext","Sg","timedOutAt","Tg","Ug","hf","We","hydrate","observedBits","unstable_observedBits","Vg","Wg","Xg","Yg","Zg","$g","ah","bh","firstUpdate","lastUpdate","firstCapturedUpdate","lastCapturedUpdate","firstCapturedEffect","lastCapturedEffect","ch","dh","eh","fh","gh","hh","ih","jh","stack","kh","lh","mh","nh","oh","ph","WeakSet","qh","rh","sh","th","vh","wh","xh","yh","_reactRootContainer","zh","wasMultiple","Ce","uh","hi","Xh","has","Bh","WeakMap","Ch","Dh","Eh","componentDidCatch","Fh","componentStack","Gh","Hh","Ih","Jh","Kh","Lh","Mh","Nh","Oh","Ph","Qh","Rh","Sh","Th","Uh","__reactInternalSnapshotBeforeUpdate","Vh","Zh","pendingCommitExpirationTime","ef","Pd","Yh","unstable_runWithPriority","unstable_NormalPriority","finishedWork","$h","ai","createTextNode","bi","ci","di","maxDuration","pingCache","ei","fi","unstable_getCurrentPriorityLevel","unstable_ImmediatePriority","unstable_UserBlockingPriority","unstable_LowPriority","unstable_IdlePriority","gi","ii","ji","ki","li","mi","ni","oi","pi","qi","ri","si","ti","unstable_now","ui","vi","wi","xi","yi","zi","timeout","timeoutHandle","Bi","Ci","nextScheduledRoot","Di","Ei","unstable_shouldYield","_onComplete","Fi","firstBatch","_expirationTime","_defer","Gi","Hi","Ii","Ji","Ki","Li","Ni","_root","_callbacks","_next","_hasChildren","_didComplete","_children","Oi","_didCommit","_onCommit","Pi","_internalRoot","Qi","Si","legacy_renderSubtreeIntoContainer","Ri","Ti","Mi","commit","unmount","createBatch","Vi","createPortal","unstable_renderSubtreeIntoContainer","unmountComponentAtNode","unstable_createPortal","unstable_batchedUpdates","unstable_interactiveUpdates","flushSync","unstable_createRoot","unstable_flushControlled","Events","findFiberByHostInstance","bundleType","rendererPackageName","isDisabled","supportsFiber","inject","onCommitFiberRoot","onCommitFiberUnmount","Te","overrideProps","currentDispatcherRef","findHostInstanceByFiber","Wi","Xi","global","previous","priorityLevel","requestAnimationFrame","cancelAnimationFrame","performance","_schedMock","MessageChannel","port2","port1","onmessage","postMessage","unstable_next","unstable_wrapCallback","unstable_continueExecution","unstable_pauseExecution","unstable_getFirstCallbackNode","objPrototype","toBind","descriptor","wontBind","fn","boundFn","boundMethod","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","secret","getShim","ReactPropTypes","any","arrayOf","instanceOf","objectOf","exact","checkPropTypes","PropTypes","noGlobal","getProto","class2type","fnToString","ObjectFunctionString","support","isFunction","isWindow","preservedScriptAttributes","nonce","noModule","DOMEval","script","toType","jQuery","init","rtrim","isArrayLike","jquery","num","pushStack","elems","ret","prevObject","each","elem","eq","copyIsArray","deep","isPlainObject","expando","isReady","msg","noop","isEmptyObject","globalEval","makeArray","inArray","second","grep","invert","callbackExpect","guid","Sizzle","Expr","isXML","tokenize","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","preferredDoc","dirruns","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","push_native","booleans","whitespace","identifier","pseudos","rwhitespace","rcomma","rcombinators","rdescend","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","needsContext","rhtml","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","escapedWhitespace","rcssescape","fcssescape","asCodePoint","unloadHandler","inDisabledFieldset","addCombinator","els","nid","newSelector","newContext","qsa","toSelector","testContext","qsaError","cache","cacheLength","markFunction","assert","addHandle","attrHandle","siblingCheck","cur","sourceIndex","createInputPseudo","createButtonPseudo","createDisabledPseudo","createPositionalPseudo","argument","matchIndexes","namespace","hasCompare","subWindow","createComment","getById","getElementsByName","attrId","getAttributeNode","tmp","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","adown","bup","sortDetached","aup","ap","bp","expr","elements","specified","uniqueSort","duplicates","detectDuplicates","sortStable","createPseudo","relative"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","what","simple","forward","ofType","uniqueCache","outerCache","nodeIndex","useCache","uniqueID","pseudo","setFilters","matched","not","matcher","unmatched","elemLang","hash","hasFocus","selectedIndex","even","odd","lt","gt","radio","checkbox","submit","combinator","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","multipleContexts","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","parseOnly","soFar","preFilters","cached","setMatchers","elementMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","matcherFromGroupMatchers","compiled","isXMLDoc","escapeSelector","until","truncate","siblings","rneedsContext","rsingleTag","winnow","qualifier","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","targets","closest","prevAll","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","rnothtmlwhite","Identity","Thrower","ex","adoptValue","noValue","promise","fail","Callbacks","flag","createOptions","firing","memory","fired","locked","firingIndex","fire","once","stopOnFalse","lock","fireWith","Deferred","tuples","always","deferred","pipe","fns","newDefer","tuple","returned","onFulfilled","onRejected","onProgress","special","mightThrow","notifyWith","resolveWith","process","exceptionHook","stackTrace","rejectWith","getStackHook","stateString","when","singleValue","remaining","resolveContexts","resolveValues","master","updateFunc","rerrorNames","readyException","readyList","completed","readyWait","wait","readyState","doScroll","access","chainable","emptyGet","bulk","rmsPrefix","rdashAlpha","fcamelCase","camelCase","acceptData","owner","Data","uid","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","removeData","_data","_removeData","dequeue","startLength","hooks","_queueHooks","setter","clearQueue","pnum","rcssNum","cssExpand","isAttached","composed","getRootNode","isHiddenWithinTree","swap","adjustCSS","valueParts","tween","adjusted","maxIterations","currentValue","initial","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","showHide","rcheckableType","rtagName","rscriptType","wrapMap","option","thead","tr","getAll","setGlobalEval","refElements","optgroup","tbody","tfoot","colgroup","caption","buildFragment","scripts","ignored","attached","fragment","createDocumentFragment","nodes","htmlPrefilter","checkClone","noCloneChecked","rkeyEvent","rmouseEvent","rtypenamespace","returnTrue","returnFalse","expectSync","safeActiveElement","types","one","origFn","leverageNative","notAsync","saved","isTrigger","delegateType","handleObjIn","eventHandle","events","handleObj","handlers","namespaces","origType","elemData","triggered","bindType","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","handlerQueue","fix","delegateTarget","preDispatch","isImmediatePropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","noBubble","beforeunload","isSimulated","offsetX","offsetY","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rxhtmlTag","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","pdataOld","pdataCur","udataOld","udataCur","fixInput","domManip","collection","hasScripts","iNoClone","valueIsFunction","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","replaceWith","prependTo","insertAfter","replaceAll","original","rnumnonpx","getStyles","opener","rboxStyle","curCSS","computed","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","pixelBoxStylesVal","boxSizingReliableVal","scrollboxSizeVal","measure","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","cssPrefixes","emptyStyle","vendorProps","finalPropName","final","cssProps","capName","vendorPropName","rdisplayswap","rcustomProp","cssShow","cssNormalTransform","setPositiveNumber","subtract","boxModelAdjustment","dimension","isBorderBox","computedVal","extra","delta","getWidthOrHeight","valueIsBorderBox","offsetProp","getClientRects","Tween","cssHooks","origName","isCustomProp","scrollboxSizeBuggy","border","expand","expanded","propHooks","run","eased","linear","swing","cos","PI","fxNow","inProgress","rfxtypes","rrun","schedule","interval","createFxNow","genFx","includeWidth","createTween","Animation","tweeners","properties","stopped","prefilters","currentTime","tweens","specialEasing","originalProperties","originalOptions","gotoEnd","propFilter","timer","anim","*","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflowX","overflowY","prefilter","speed","speeds","fadeTo","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","attrNames","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","tabindex","curValue","clazz","finalValue","toggleClass","stateVal","isValidValue","hasClass","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","simulate","triggerHandler","attaches","rquery","parseXML","DOMParser","parseFromString","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","valueOrFunction","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","lastModified","etag","isLocal","protocol","accepts","responseFields","converters","* text","text html","text json","text xml","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","overrideMimeType","mimeType","abort","finalText","crossDomain","host","hasContent","ifModified","beforeSend","nativeStatusText","isSuccess","modified","ct","finalDataType","firstDataType","ajaxHandleResponses","conv2","conv","dataFilter","throws","ajaxConvert","getJSON","getScript","text script","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","xhr","XMLHttpRequest","xhrSuccessStatus","0","1223","xhrSupported","cors","errorCallback","username","xhrFields","onabort","ontimeout","onreadystatechange","responseType","responseText","binary","scriptAttrs","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","overwritten","responseContainer","jsonProp","createHTMLDocument","keepScripts","parsed","animated","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","rect","win","parentOffset","Height","Width","","defaultExtra","funcName","fnOver","fnOut","unbind","delegate","undelegate","proxy","holdReady","hold","parseJSON","isNumeric","_jQuery","_$","noConflict","Uint16Array","listing","pre","suppressContentEditableWarning","suppressHydrationWarning","domNamespace","childIndex","threadID","exhausted","currentSelectValue","previousWasTextNode","makeStaticMarkup","suspenseDepth","contextIndex","contextStack","contextValueStack","clearProviders","pushProvider","popProvider","read","fallbackFrame","renderDOM","Infinity","renderToStaticMarkup","renderToNodeStream","renderToStaticNodeStream","DateEditor_1","MultiSelectEditor_1","MultiValueFormatter_1","alert","age","dob","rating","passed","pets","colorOptions","red","green","yellow","editableColumns","data-custom-attr","newData","date_fns_1","inputCss","Editor","setValueOnSuccess","ev","onKeyPress","onBlur","valueDt","awareOfUnicodeTokens","onKeyUp","ReactTags","autofocus","handleDelete","newValues","handleAddition","handleBlur","parentElement","suggestions","tags","allowNew","autoresize","minQueryLength","Tag","Input","Suggestions","KEYS","CLASS_NAMES","rootFocused","selectedTag","selectedTagName","searchInput","suggestionActive","suggestionDisabled","superclass","focused","expandable","inputEventHandlers","onFocus","handleFocus","onInput","handleInput","onKeyDown","handleKeyDown","handleInputChange","ref$1","delimiters","delimiterChars","handleDelimiter","allowBackspace","deleteTag","suggestion","addTag","handleClick","addOnBlur","handleValidate","clearInputOnDelete","this$1","TagComponent","tagComponent","onDelete","aria-live","aria-relevant","inputAttributes","listboxId","suggestionsFilter","maxSuggestionsLength","SIZER_STYLES","STYLE_PROPS","inputWidth","copyInputStyles","updateInputWidth","inputStyle","sizer","aria-autocomplete","aria-label","aria-owns","aria-activedescendant","aria-expanded","escapeForRegExp","markIt","filterSuggestions","handleMouseDown","aria-disabled","createCellEl","_querySelectorAll","_reactIs","isValidElementType","typeOf","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","ForwardRef","Lazy","Memo","Portal","Profiler","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","_addClass","_removeClass","_hasClass","replaceClassName","origClass","classToRemove","_hyphenate","rUpper","currentStyle","rposition","runStyle","runtimeStyle","rsLeft","pixelLeft","removeProperty","supportedTransforms","_isWindow","innerWidth","bodyIsOverflowing","_ref2","_ref3","BLACKLIST","exclude","_WaitForContainer","onContainerResolved","WaitForContainer","setContainer","_container","componentOrElement","_createChainableTypeChecker","toInteger","dirtyNumber","NaN","MILLISECONDS_IN_MINUTE","getTimezoneOffsetInMilliseconds","dirtyDate","baseTimezoneOffset","getTimezoneOffset","setSeconds","millisecondsPartOfTimezoneOffset","MILLISECONDS_IN_HOUR","DEFAULT_ADDITIONAL_DIGITS","patterns","dateTimeDelimeter","plainTime","timeZoneDelimeter","YY","YYY","YYYY","YYYYY","MM","DDD","MMDD","Www","WwwD","HH","HHMM","HHMMSS","timezone","timezoneZ","timezoneHH","timezoneHHMM","toDate","dirtyOptions","additionalDigits","RangeError","dateStrings","dateString","timeString","splitDateString","parseYearResult","patternYYY","patternYYYYY","yearString","year","restDateString","centuryString","parseYear","setUTCFullYear","validateDate","dayOfYear","isLeapYear","isLeapYearIndex","validateDayOfYearDate","day","validateWeekDate","dayOfISOWeekYear","dayOfWeek","parseDate","timestamp","hours","minutes","validateTime","seconds","parseTime","timezoneString","absoluteOffset","validateTimezone","parseTimezone","isoWeekYear","getUTCDay","setUTCDate","getUTCDate","DAYS_IN_MONTH","DAYS_IN_MONTH_LEAP_YEAR","addDays","dirtyAmount","amount","addMilliseconds","addHours","startOfWeek","localeWeekStartsOn","weekStartsOn","defaultWeekStartsOn","getDay","setHours","cloneObject","dirtyObject","startOfISOWeek","startOfWeekOptions","getISOWeekYear","getFullYear","fourthOfJanuaryOfNextYear","setFullYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","startOfISOWeekYear","fourthOfJanuary","startOfDay","MILLISECONDS_IN_DAY","differenceInCalendarDays","dirtyDateLeft","dirtyDateRight","startOfDayLeft","startOfDayRight","timestampLeft","timestampRight","setISOWeekYear","dirtyISOWeekYear","addISOWeekYears","addMinutes","getDaysInMonth","monthIndex","getMonth","lastDayOfMonth","addMonths","desiredMonth","dateWithDesiredMonth","daysInMonth","setMonth","addQuarters","addSeconds","addWeeks","addYears","areIntervalsOverlapping","dirtyIntervalLeft","dirtyIntervalRight","intervalLeft","intervalRight","leftStartTime","leftEndTime","rightStartTime","rightEndTime","closestIndexTo","dirtyDateToCompare","dirtyDatesArray","dateToCompare","minDistance","timeToCompare","currentDate","distance","closestTo","compareAsc","dateLeft","dateRight","compareDesc","differenceInCalendarISOWeekYears","MILLISECONDS_IN_WEEK","differenceInCalendarISOWeeks","startOfISOWeekLeft","startOfISOWeekRight","differenceInCalendarMonths","getQuarter","differenceInCalendarQuarters","differenceInCalendarWeeks","startOfWeekLeft","startOfWeekRight","differenceInCalendarYears","differenceInDays","sign","difference","differenceInMilliseconds","differenceInHours","subISOWeekYears","differenceInISOWeekYears","differenceInMinutes","differenceInMonths","differenceInQuarters","differenceInSeconds","differenceInWeeks","differenceInYears","eachDayOfInterval","dirtyInterval","startDate","dates","eachWeekOfInterval","endDate","startDateWeek","endDateWeek","weeks","currentWeek","isSunday","isWeekend","eachWeekendOfInterval","dateInterval","weekends","startOfMonth","endOfMonth","eachWeekendOfMonth","startOfYear","cleanDate","endOfYear","eachWeekendOfYear","endOfDay","endOfDecade","decade","endOfHour","setMinutes","endOfWeek","endOfISOWeek","endOfWeekOptions","endOfISOWeekYear","setMilliseconds","getMilliseconds","endOfMinute","endOfQuarter","currentMonth","endOfSecond","formatDistanceLocale","lessThanXSeconds","other","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","buildFormatLongFn","defaultWidth","formats","formatLong","full","long","medium","short","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","buildLocalizeFn","dirtyIndex","formattingValues","defaultFormattingWidth","argumentCallback","buildMatchFn","dirtyString","matchPattern","matchPatterns","defaultMatchWidth","matchResult","matchedString","parsePatterns","defaultParseWidth","findKey","valueCallback","rest","formatDistance","addSuffix","comparison","formatRelative","baseDate","ordinalNumber","rem100","era","narrow","abbreviated","wide","quarter","dayPeriod","am","pm","midnight","noon","morning","afternoon","evening","night","defaulFormattingWidth","parsePattern","parseResult","firstWeekContainsDate","startOfUTCISOWeek","setUTCHours","getUTCISOWeekYear","getUTCFullYear","getUTCISOWeek","startOfUTCISOWeekYear","startOfUTCWeek","getUTCWeekYear","localeFirstWeekContainsDate","defaultFirstWeekContainsDate","firstWeekOfNextYear","firstWeekOfThisYear","getUTCWeek","firstWeek","startOfUTCWeekYear","dayPeriodEnum","addLeadingZeros","targetLength","formatTimezone","dirtyDelimeter","delimeter","absOffset","formatTimezoneWithOptionalMinutes","formatTimezoneShort","signedYear","signedWeekYear","weekYear","getUTCMonth","isoWeek","dayOfMonth","setUTCMonth","getUTCDayOfYear","localDayOfWeek","isoDayOfWeek","dayPeriodEnumValue","getUTCHours","getUTCMinutes","getUTCSeconds","numberOfDigits","milliseconds","getUTCMilliseconds","pow","timezoneOffset","_originalDate","originalDate","dateLongFormatter","timeLongFormatter","longFormatters","dateTimeFormat","datePattern","timePattern","subMilliseconds","protectedTokens","isProtectedToken","throwProtectedError","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","dirtyFormatStr","formatStr","defaultLocale","utcDate","formatterOptions","firstCharacter","longFormatter","MINUTES_IN_DAY","MINUTES_IN_ALMOST_TWO_DAYS","MINUTES_IN_MONTH","MINUTES_IN_TWO_MONTHS","dirtyBaseDate","localizeOptions","months","offsetInSeconds","includeSeconds","days","nearestMonth","monthsSinceStartOfYear","years","MINUTES_IN_YEAR","formatDistanceStrict","roundingMethodFn","roundingMethod","utcBaseDate","fromUnixTime","dirtyUnixTime","getDayOfYear","getDaysInYear","getDecade","getHours","getISODay","getISOWeek","getISOWeeksInYear","thisYear","valueOf","getMinutes","getOverlappingDaysInIntervals","differenceInMs","getSeconds","getUnixTime","getWeekYear","startOfWeekYear","getWeek","getWeekOfMonth","startWeekDay","getWeeksInMonth","getYear","isAfter","isBefore","isDate","isEqual","dirtyLeftDate","dirtyRightDate","isFirstDayOfMonth","isFriday","isLastDayOfMonth","isMonday","isSameDay","dateLeftStartOfDay","dateRightStartOfDay","startOfHour","isSameHour","dateLeftStartOfHour","dateRightStartOfHour","isSameWeek","dateLeftStartOfWeek","dateRightStartOfWeek","isSameISOWeek","isSameWeekOptions","isSameISOWeekYear","dateLeftStartOfYear","dateRightStartOfYear","startOfMinute","isSameMinute","dateLeftStartOfMinute","dateRightStartOfMinute","isSameMonth","startOfQuarter","isSameQuarter","dateLeftStartOfQuarter","dateRightStartOfQuarter","startOfSecond","isSameSecond","dateLeftStartOfSecond","dateRightStartOfSecond","isSameYear","isSaturday","isThursday","isTuesday","isWednesday","isWithinInterval","lastDayOfDecade","lastDayOfWeek","lastDayOfISOWeek","lastDayOfWeekOptions","lastDayOfISOWeekYear","lastDayOfQuarter","lastDayOfYear","setUTCDay","dirtyDay","MILLISECONDS_IN_SECOND","numericPatterns","hour23h","hour24h","hour11h","hour12h","minute","singleDigit","twoDigits","threeDigits","fourDigits","anyDigitsSigned","singleDigitSigned","twoDigitsSigned","threeDigitsSigned","fourDigitsSigned","timezonePatterns","parseNumericPattern","parseTimezonePattern","parseAnyDigitsSigned","parseNDigits","parseNDigitsSigned","dayPeriodEnumToHours","enumValue","normalizeTwoDigitYear","twoDigitYear","currentYear","isCommonEra","absCurrentYear","rangeEnd","parsers","priority","isTwoDigitYear","normalizedTwoDigitYear","firstWeekOfYear","dirtyWeek","setUTCWeek","dirtyISOWeek","setUTCISOWeek","wholeWeekDays","setUTCISODay","isPM","setUTCMinutes","setUTCSeconds","setUTCMilliseconds","TIMEZONE_UNIT_PRIORITY","notWhitespaceRegExp","dirtyDateString","dirtyFormatString","formatString","subFnOptions","setters","dateToSystemTimezone","uniquePrioritySetters","setterArray","convertedDate","roundToNearestMinutes","dirtyNearestTo","nearestTo","roundedMinutes","remainderMinutes","addedMinutes","dirtyDayOfMonth","setDay","currentDay","setDayOfYear","dirtyDayOfYear","dirtyHours","setISODay","setISOWeek","dirtyMilliseconds","dirtyMinutes","dirtyMonth","setQuarter","dirtyQuarter","dirtySeconds","setWeek","setWeekYear","dirtyWeekYear","setYear","dirtyYear","startOfDecade","subDays","subHours","subMinutes","subMonths","subQuarters","subSeconds","subWeeks","subYears","formatDistance_formatDistance","formatRelative_formatRelative","lastDayOfMonth_lastDayOfMonth","isAbsolute","pathname","spliceOne","resolvePathname","toParts","fromParts","isToAbs","isFromAbs","mustEndAbs","hasTrailingSlash","part","valueEqual","isProduction","invariant","addLeadingSlash","stripBasename","hasBasename","stripTrailingSlash","createPath","createLocation","currentLocation","hashIndex","searchIndex","parsePath","decodeURI","URIError","createTransitionManager","prompt","listeners","setPrompt","nextPrompt","confirmTransitionTo","getUserConfirmation","appendListener","isActive","notifyListeners","canUseDOM","getConfirmation","confirm","PopStateEvent","HashChangeEvent","getHistoryState","createBrowserHistory","globalHistory","canUseHistory","needsHashChangeListener","_props","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","basename","getDOMLocation","historyState","_window$location","createKey","transitionManager","nextState","handlePopState","isExtraneousPopstateEvent","handlePop","handleHashChange","forceNextPop","fromLocation","toLocation","allKeys","go","revertPop","initialLocation","createHref","listenerCount","checkDOMListeners","isBlocked","pushState","prevIndex","nextKeys","replaceState","goBack","goForward","unlisten","_possibleConstructorReturn","Router","instance","Constructor","_classCallCheck","computeMatch","_inherits","router","isExact","BrowserRouter","createHistory","patternCache","cacheCount","compilePath","cacheKey","compiledPattern","matchPath","_options","_options$exact","_options$strict","_options$sensitive","_compilePath","Switch","_element$props","pathProp","computedMatch","isEmptyChildren","Route","nextContext","_context$router","staticContext","Log","Configuration","isModifiedEvent","Link","innerRef","_objectWithoutProperties","ApiQuery","AuthServices_AuthServices","URL_Auth","URL_UserInfo","AuthCoockieName","[object Object]","login","Login","Password","Successe","_SetTocken","Token","Logout","IsAuth","_GetTocken","_getCookie","decodeURIComponent","MenuControl","super","autoBind","authServices","AuthServices","OnAuthChange","react_default","es_Link","ThemeContext","useBootstrapPrefix","defaultPrefix","prefixes","ThemeProvider","pascalCase","camelize","createWithBsPrefix","_ref$Component","BsComponent","bsPrefix","_ref2$as","resolvedPrefix","FormContext","controlId","FormGroup","_ref$as","Feedback","FormControl","_classes","isInvalid","_classes2","_classes3","FormCheckInput","isStatic","_useContext","custom","FormCheckLabel","FormCheck","inline","feedback","innerFormContext","hasLabel","Label","DEVICE_SIZES","Col","spans","brkPoint","_propValue$span","infix","FormLabel","srOnly","FormText","Form","validated","Check","Text","Notification_Notification","Timestring","UserControl","UserName","GetUserInfoAsync","ParentComponent","Notification","MesEr","ResMessage","AuthClick","AuthAsync","LogoutClick","es_Form","FileExplorerServices_FileExplorerServices","URL_DirectoryItems","URL_ScanDirectory","URL_Delete","URL_Move","URL_Download","URL_CreateDirectory","elemID","directoryID","NewParent","OpenDownload","dirname","ParentID","Name","createChainedFunction","funcs","acc","isTrivialHref","SafeAnchor","_this$props2$as","Button","variant","FileExplorerRow","ShoSelect","Select","GetDate","GetRowID","GetDataID","IsCheked","OnDirectoryClick","Type","es_Button","Size","FileExplorerControl","ChildRows","fileExplorerServices","FileExplorerServices","LoadDirectory","OnBackClick","SetID","OnSortClick","SortProperty","orders","ArrayCompare","GetID","DirectoryGetItemsAsync","OnScanDirClick","ScanDirectoryAsync","GetSelectedID","RooDirectoryID","ParentName","LogicPath","FileExplorerRow_FileExplorerRow","esm_config","UNMOUNTED","EXITED","ENTERING","ENTERED","initialStatus","isMounting","enter","appearStatus","mountOnEnter","nextCallback","prevState","updateStatus","nextStatus","cancelNextCallback","getTimeouts","exit","mounting","performEnter","performExit","appearing","timeouts","enterTimeout","safeSetState","onTransitionEnd","setNextCallback","doesNotHaveTimeoutOrListener","addEndListener","childProps","TransitionGroupContext","EXITING","_fadeStyles","fadeStyles","Fade","handleEnter","triggerBrowserReflow","innerProps","ModalDialog","centered","scrollable","dialogClass","useCommittedRef","useEventCallback","CloseButton","aria-hidden","ModalContext","ModalHeader","closeLabel","Selector","dialogAs","BootstrapModalManager","adjustAndStore","actual","dataset","restore","getScrollbarSize","DialogTransition","BackdropTransition","modalContext","setModalRef","_modal","handleDialogMouseDown","_waitingForMouseUp","handleMouseUp","_ignoreBackdropClick","updateDialogStyle","handleEntering","_len3","_key3","handleWindowResize","handleExited","_len4","_key4","backdropClassName","containerIsOverflowing","modalIsOverflowing","_this$props5","dialogClassName","Dialog","clickHandler","baseModalStyle","BaseModal","DecoratedModal","isClassy","_opts","_opts$forwardRefAs","createBootstrapComponent","Body","Header","Title","Footer","TRANSITION_DURATION","BACKDROP_TRANSITION_DURATION","ExplorerActionsControl","ResultMsg","MoveWindowsShow","GetUserList","SaveUserList","OnDownloadClick","OnDeleteClick","promises","DeleteAsync","Result","MesOk","OnItemsChange","OnMoveClick","OnCreateDirectoryClick","DirectoryName","CreateDirectoryAsync","OnMoveWindowCloseClick","SelectedID","OnMoveWindowClick","MoveAsync","es_Modal","aria-labelledby","FileExplorerControl_FileExplorerControl","UploadServices_UploadServices","URL_Start","URL_Upload","URL_Cansel","upload_chunk_size","_ContinueDownload","_file","_ParentID","OnProggresseChange","OnIDReceived","OnError","startByte","stopByte","bin_data","ChunkNumb","State","chunk","parent_id","start_info","_StartUploadAsync","_ReadBlobAsync","_UploadBlobAsync","Msg","Cansel","UploaderControl","ButtonUploadEnable","_state","FileInfo","uploadServices","UploadServices","OnProgresseChange","UploadClick","UploadFileAsync","CancelClick","Process","ButtonToolbar","BootstrapControl","ToastifyTest","Leght","es_ButtonToolbar","FileExplorerPage","Url_ID","searchParams","CurrentID","MenuControl_MenuControl","UserControl_UserControl","ExplorerActionsControl_ExplorerActionsControl","UploaderControl_UploaderControl","BootstrapControl_BootstrapControl","isProp","defaultKey","_toPropertyKey","hint","prim","toPrimitive","_toPrimitive","SelectableContext","makeEventKey","eventKey","NavContext","TabContext","AbstractNav","navContext","handleSelect","parentOnSelect","nextActiveChild","getNextActiveChild","rbEventKey","_needsRefocus","attachRef","listNode","activeKey","getControlledId","getControllerId","activeChild","nextIndex","mapContextToProps","tabContext","NavItem","AbstractNavItem","navKey","handleOnclick","NavLink","Nav","uncontrolledProps","_classNames","navbarBsPrefix","cardHeaderBsPrefix","_useUncontrolled","fieldName","Utils","propsValue","handlerName","_useState","stateValue","wasProp","propsHandler","useUncontrolled","_useUncontrolled$as","justify","navbar","navbarContext","NavbarContext","cardContext","CardContext","Item","UserServices_UserServices","URL_GetUsers","URL_SetUsers","users","UserListControl","Users","ShoGroups","UserGroups","Active","Changes","Groups","EnterInGroup","userServices","UserServices","ButtonFormatter","OnGroupsClick","DeleteUserClick","columns_groups","DownloadUsers","GetUsersAsync","UploadUsers","SetUsersAsync","OnCellChange","data_row","OnCellChange_Groups","UpdateClick","CreateUserCick","new_user","user","OnGroupsClose","lib","AdministratorPage","ActiveWindows","OnUsersClick","es_Nav","UserListControl_UserListControl","es_BrowserRouter","react_router_dom_es_Switch","react_router_dom_es_Route"],"mappings":"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","file":"app_bundle.js","sourcesContent":[" \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 = \"/build\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 87);\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","module.exports = require('./lib/autoBind');\n","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 1 ? len - 1 : 0);\n for (var key = 1; key < len; key++) {\n args[key - 1] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _default = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = qsa;\n// Zepto.js\n// (c) 2010-2015 Thomas Fuchs\n// Zepto.js may be freely distributed under the MIT license.\nvar simpleSelectorRE = /^[\\w-]*$/;\nvar toArray = Function.prototype.bind.call(Function.prototype.call, [].slice);\n\nfunction qsa(element, selector) {\n var maybeID = selector[0] === '#',\n maybeClass = selector[0] === '.',\n nameOnly = maybeID || maybeClass ? selector.slice(1) : selector,\n isSimple = simpleSelectorRE.test(nameOnly),\n found;\n\n if (isSimple) {\n if (maybeID) {\n element = element.getElementById ? element : document;\n return (found = element.getElementById(nameOnly)) ? [found] : [];\n }\n\n if (element.getElementsByClassName && maybeClass) return toArray(element.getElementsByClassName(nameOnly));\n return toArray(element.getElementsByTagName(selector));\n }\n\n return toArray(element.querySelectorAll(selector));\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = ownerDocument;\n\nfunction ownerDocument(node) {\n return node && node.ownerDocument || document;\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = scrollbarSize;\n\nvar _inDOM = _interopRequireDefault(require(\"./inDOM\"));\n\nvar size;\n\nfunction scrollbarSize(recalc) {\n if (!size && size !== 0 || recalc) {\n if (_inDOM.default) {\n var scrollDiv = document.createElement('div');\n scrollDiv.style.position = 'absolute';\n scrollDiv.style.top = '-9999px';\n scrollDiv.style.width = '50px';\n scrollDiv.style.height = '50px';\n scrollDiv.style.overflow = 'scroll';\n document.body.appendChild(scrollDiv);\n size = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n }\n }\n\n return size;\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = style;\n\nvar _camelizeStyle = _interopRequireDefault(require(\"../util/camelizeStyle\"));\n\nvar _hyphenateStyle = _interopRequireDefault(require(\"../util/hyphenateStyle\"));\n\nvar _getComputedStyle2 = _interopRequireDefault(require(\"./getComputedStyle\"));\n\nvar _removeStyle = _interopRequireDefault(require(\"./removeStyle\"));\n\nvar _properties = require(\"../transition/properties\");\n\nvar _isTransform = _interopRequireDefault(require(\"../transition/isTransform\"));\n\nfunction style(node, property, value) {\n var css = '';\n var transforms = '';\n var props = property;\n\n if (typeof property === 'string') {\n if (value === undefined) {\n return node.style[(0, _camelizeStyle.default)(property)] || (0, _getComputedStyle2.default)(node).getPropertyValue((0, _hyphenateStyle.default)(property));\n } else {\n (props = {})[property] = value;\n }\n }\n\n Object.keys(props).forEach(function (key) {\n var value = props[key];\n\n if (!value && value !== 0) {\n (0, _removeStyle.default)(node, (0, _hyphenateStyle.default)(key));\n } else if ((0, _isTransform.default)(key)) {\n transforms += key + \"(\" + value + \") \";\n } else {\n css += (0, _hyphenateStyle.default)(key) + \": \" + value + \";\";\n }\n });\n\n if (transforms) {\n css += _properties.transform + \": \" + transforms + \";\";\n }\n\n node.style.cssText += ';' + css;\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\nexports.__esModule = true;\nvar React = require(\"react\");\nvar react_dom_1 = require(\"react-dom\");\nfunction clone(obj) {\n return JSON.parse(JSON.stringify(obj));\n}\nexports.clone = clone;\nfunction isSameArray(a, b) {\n var i = a.length;\n if (i !== b.length) {\n return false;\n }\n while (i--) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n}\nexports.isSameArray = isSameArray;\nfunction reactFormatter(JSX) {\n return function customFormatter(cell, formatterParams, onRendered) {\n //cell - the cell component\n //formatterParams - parameters set for the column\n //onRendered - function to call when the formatter has been rendered\n onRendered(function () {\n var cellEl = cell.getElement();\n var CompWithMoreProps = React.cloneElement(JSX, { cell: cell });\n react_dom_1.render(CompWithMoreProps, cellEl.querySelector('.formatterCell'));\n });\n return '<div class=\"formatterCell\"></div>';\n };\n}\nexports.reactFormatter = reactFormatter;\n","/*\n * Toastr\n * Copyright 2012-2015\n * Authors: John Papa, Hans Fjällemark, and Tim Ferrell.\n * All Rights Reserved.\n * Use, reproduction, distribution, and modification of this code is subject to the terms and\n * conditions of the MIT license, available at http://www.opensource.org/licenses/mit-license.php\n *\n * ARIA Support: Greta Krafsig\n *\n * Project: https://github.com/CodeSeven/toastr\n */\n/* global define */\n(function (define) {\n define(['jquery'], function ($) {\n return (function () {\n var $container;\n var listener;\n var toastId = 0;\n var toastType = {\n error: 'error',\n info: 'info',\n success: 'success',\n warning: 'warning'\n };\n\n var toastr = {\n clear: clear,\n remove: remove,\n error: error,\n getContainer: getContainer,\n info: info,\n options: {},\n subscribe: subscribe,\n success: success,\n version: '2.1.4',\n warning: warning\n };\n\n var previousToast;\n\n return toastr;\n\n ////////////////\n\n function error(message, title, optionsOverride) {\n return notify({\n type: toastType.error,\n iconClass: getOptions().iconClasses.error,\n message: message,\n optionsOverride: optionsOverride,\n title: title\n });\n }\n\n function getContainer(options, create) {\n if (!options) { options = getOptions(); }\n $container = $('#' + options.containerId);\n if ($container.length) {\n return $container;\n }\n if (create) {\n $container = createContainer(options);\n }\n return $container;\n }\n\n function info(message, title, optionsOverride) {\n return notify({\n type: toastType.info,\n iconClass: getOptions().iconClasses.info,\n message: message,\n optionsOverride: optionsOverride,\n title: title\n });\n }\n\n function subscribe(callback) {\n listener = callback;\n }\n\n function success(message, title, optionsOverride) {\n return notify({\n type: toastType.success,\n iconClass: getOptions().iconClasses.success,\n message: message,\n optionsOverride: optionsOverride,\n title: title\n });\n }\n\n function warning(message, title, optionsOverride) {\n return notify({\n type: toastType.warning,\n iconClass: getOptions().iconClasses.warning,\n message: message,\n optionsOverride: optionsOverride,\n title: title\n });\n }\n\n function clear($toastElement, clearOptions) {\n var options = getOptions();\n if (!$container) { getContainer(options); }\n if (!clearToast($toastElement, options, clearOptions)) {\n clearContainer(options);\n }\n }\n\n function remove($toastElement) {\n var options = getOptions();\n if (!$container) { getContainer(options); }\n if ($toastElement && $(':focus', $toastElement).length === 0) {\n removeToast($toastElement);\n return;\n }\n if ($container.children().length) {\n $container.remove();\n }\n }\n\n // internal functions\n\n function clearContainer (options) {\n var toastsToClear = $container.children();\n for (var i = toastsToClear.length - 1; i >= 0; i--) {\n clearToast($(toastsToClear[i]), options);\n }\n }\n\n function clearToast ($toastElement, options, clearOptions) {\n var force = clearOptions && clearOptions.force ? clearOptions.force : false;\n if ($toastElement && (force || $(':focus', $toastElement).length === 0)) {\n $toastElement[options.hideMethod]({\n duration: options.hideDuration,\n easing: options.hideEasing,\n complete: function () { removeToast($toastElement); }\n });\n return true;\n }\n return false;\n }\n\n function createContainer(options) {\n $container = $('<div/>')\n .attr('id', options.containerId)\n .addClass(options.positionClass);\n\n $container.appendTo($(options.target));\n return $container;\n }\n\n function getDefaults() {\n return {\n tapToDismiss: true,\n toastClass: 'toast',\n containerId: 'toast-container',\n debug: false,\n\n showMethod: 'fadeIn', //fadeIn, slideDown, and show are built into jQuery\n showDuration: 300,\n showEasing: 'swing', //swing and linear are built into jQuery\n onShown: undefined,\n hideMethod: 'fadeOut',\n hideDuration: 1000,\n hideEasing: 'swing',\n onHidden: undefined,\n closeMethod: false,\n closeDuration: false,\n closeEasing: false,\n closeOnHover: true,\n\n extendedTimeOut: 1000,\n iconClasses: {\n error: 'toast-error',\n info: 'toast-info',\n success: 'toast-success',\n warning: 'toast-warning'\n },\n iconClass: 'toast-info',\n positionClass: 'toast-top-right',\n timeOut: 5000, // Set timeOut and extendedTimeOut to 0 to make it sticky\n titleClass: 'toast-title',\n messageClass: 'toast-message',\n escapeHtml: false,\n target: 'body',\n closeHtml: '<button type=\"button\">×</button>',\n closeClass: 'toast-close-button',\n newestOnTop: true,\n preventDuplicates: false,\n progressBar: false,\n progressClass: 'toast-progress',\n rtl: false\n };\n }\n\n function publish(args) {\n if (!listener) { return; }\n listener(args);\n }\n\n function notify(map) {\n var options = getOptions();\n var iconClass = map.iconClass || options.iconClass;\n\n if (typeof (map.optionsOverride) !== 'undefined') {\n options = $.extend(options, map.optionsOverride);\n iconClass = map.optionsOverride.iconClass || iconClass;\n }\n\n if (shouldExit(options, map)) { return; }\n\n toastId++;\n\n $container = getContainer(options, true);\n\n var intervalId = null;\n var $toastElement = $('<div/>');\n var $titleElement = $('<div/>');\n var $messageElement = $('<div/>');\n var $progressElement = $('<div/>');\n var $closeElement = $(options.closeHtml);\n var progressBar = {\n intervalId: null,\n hideEta: null,\n maxHideTime: null\n };\n var response = {\n toastId: toastId,\n state: 'visible',\n startTime: new Date(),\n options: options,\n map: map\n };\n\n personalizeToast();\n\n displayToast();\n\n handleEvents();\n\n publish(response);\n\n if (options.debug && console) {\n console.log(response);\n }\n\n return $toastElement;\n\n function escapeHtml(source) {\n if (source == null) {\n source = '';\n }\n\n return source\n .replace(/&/g, '&')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n .replace(/</g, '<')\n .replace(/>/g, '>');\n }\n\n function personalizeToast() {\n setIcon();\n setTitle();\n setMessage();\n setCloseButton();\n setProgressBar();\n setRTL();\n setSequence();\n setAria();\n }\n\n function setAria() {\n var ariaValue = '';\n switch (map.iconClass) {\n case 'toast-success':\n case 'toast-info':\n ariaValue = 'polite';\n break;\n default:\n ariaValue = 'assertive';\n }\n $toastElement.attr('aria-live', ariaValue);\n }\n\n function handleEvents() {\n if (options.closeOnHover) {\n $toastElement.hover(stickAround, delayedHideToast);\n }\n\n if (!options.onclick && options.tapToDismiss) {\n $toastElement.click(hideToast);\n }\n\n if (options.closeButton && $closeElement) {\n $closeElement.click(function (event) {\n if (event.stopPropagation) {\n event.stopPropagation();\n } else if (event.cancelBubble !== undefined && event.cancelBubble !== true) {\n event.cancelBubble = true;\n }\n\n if (options.onCloseClick) {\n options.onCloseClick(event);\n }\n\n hideToast(true);\n });\n }\n\n if (options.onclick) {\n $toastElement.click(function (event) {\n options.onclick(event);\n hideToast();\n });\n }\n }\n\n function displayToast() {\n $toastElement.hide();\n\n $toastElement[options.showMethod](\n {duration: options.showDuration, easing: options.showEasing, complete: options.onShown}\n );\n\n if (options.timeOut > 0) {\n intervalId = setTimeout(hideToast, options.timeOut);\n progressBar.maxHideTime = parseFloat(options.timeOut);\n progressBar.hideEta = new Date().getTime() + progressBar.maxHideTime;\n if (options.progressBar) {\n progressBar.intervalId = setInterval(updateProgress, 10);\n }\n }\n }\n\n function setIcon() {\n if (map.iconClass) {\n $toastElement.addClass(options.toastClass).addClass(iconClass);\n }\n }\n\n function setSequence() {\n if (options.newestOnTop) {\n $container.prepend($toastElement);\n } else {\n $container.append($toastElement);\n }\n }\n\n function setTitle() {\n if (map.title) {\n var suffix = map.title;\n if (options.escapeHtml) {\n suffix = escapeHtml(map.title);\n }\n $titleElement.append(suffix).addClass(options.titleClass);\n $toastElement.append($titleElement);\n }\n }\n\n function setMessage() {\n if (map.message) {\n var suffix = map.message;\n if (options.escapeHtml) {\n suffix = escapeHtml(map.message);\n }\n $messageElement.append(suffix).addClass(options.messageClass);\n $toastElement.append($messageElement);\n }\n }\n\n function setCloseButton() {\n if (options.closeButton) {\n $closeElement.addClass(options.closeClass).attr('role', 'button');\n $toastElement.prepend($closeElement);\n }\n }\n\n function setProgressBar() {\n if (options.progressBar) {\n $progressElement.addClass(options.progressClass);\n $toastElement.prepend($progressElement);\n }\n }\n\n function setRTL() {\n if (options.rtl) {\n $toastElement.addClass('rtl');\n }\n }\n\n function shouldExit(options, map) {\n if (options.preventDuplicates) {\n if (map.message === previousToast) {\n return true;\n } else {\n previousToast = map.message;\n }\n }\n return false;\n }\n\n function hideToast(override) {\n var method = override && options.closeMethod !== false ? options.closeMethod : options.hideMethod;\n var duration = override && options.closeDuration !== false ?\n options.closeDuration : options.hideDuration;\n var easing = override && options.closeEasing !== false ? options.closeEasing : options.hideEasing;\n if ($(':focus', $toastElement).length && !override) {\n return;\n }\n clearTimeout(progressBar.intervalId);\n return $toastElement[method]({\n duration: duration,\n easing: easing,\n complete: function () {\n removeToast($toastElement);\n clearTimeout(intervalId);\n if (options.onHidden && response.state !== 'hidden') {\n options.onHidden();\n }\n response.state = 'hidden';\n response.endTime = new Date();\n publish(response);\n }\n });\n }\n\n function delayedHideToast() {\n if (options.timeOut > 0 || options.extendedTimeOut > 0) {\n intervalId = setTimeout(hideToast, options.extendedTimeOut);\n progressBar.maxHideTime = parseFloat(options.extendedTimeOut);\n progressBar.hideEta = new Date().getTime() + progressBar.maxHideTime;\n }\n }\n\n function stickAround() {\n clearTimeout(intervalId);\n progressBar.hideEta = 0;\n $toastElement.stop(true, true)[options.showMethod](\n {duration: options.showDuration, easing: options.showEasing}\n );\n }\n\n function updateProgress() {\n var percentage = ((progressBar.hideEta - (new Date().getTime())) / progressBar.maxHideTime) * 100;\n $progressElement.width(percentage + '%');\n }\n }\n\n function getOptions() {\n return $.extend({}, getDefaults(), toastr.options);\n }\n\n function removeToast($toastElement) {\n if (!$container) { $container = getContainer(); }\n if ($toastElement.is(':visible')) {\n return;\n }\n $toastElement.remove();\n $toastElement = null;\n if ($container.children().length === 0) {\n $container.remove();\n previousToast = undefined;\n }\n }\n\n })();\n });\n}(typeof define === 'function' && define.amd ? define : function (deps, factory) {\n if (typeof module !== 'undefined' && module.exports) { //Node\n module.exports = factory(require('jquery'));\n } else {\n window.toastr = factory(window.jQuery);\n }\n}));\n","\"use strict\";\nexports.__esModule = true;\nvar ReactTabulator_1 = require(\"./ReactTabulator\");\nvar React15Tabulator_1 = require(\"./React15Tabulator\");\nvar ReactTabulatorExample_1 = require(\"./ReactTabulatorExample\");\nvar Utils_1 = require(\"./Utils\");\nmodule.exports = {\n ReactTabulator: ReactTabulator_1[\"default\"],\n React15Tabulator: React15Tabulator_1[\"default\"],\n ReactTabulatorExample: ReactTabulatorExample_1[\"default\"],\n reactFormatter: Utils_1.reactFormatter\n};\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _on = _interopRequireDefault(require(\"./on\"));\n\nexports.on = _on.default;\n\nvar _off = _interopRequireDefault(require(\"./off\"));\n\nexports.off = _off.default;\n\nvar _filter = _interopRequireDefault(require(\"./filter\"));\n\nexports.filter = _filter.default;\n\nvar _listen = _interopRequireDefault(require(\"./listen\"));\n\nexports.listen = _listen.default;\nvar _default = {\n on: _on.default,\n off: _off.default,\n filter: _filter.default,\n listen: _listen.default\n};\nexports.default = _default;","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _createChainableTypeChecker = require('./utils/createChainableTypeChecker');\n\nvar _createChainableTypeChecker2 = _interopRequireDefault(_createChainableTypeChecker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = typeof propValue === 'undefined' ? 'undefined' : _typeof(propValue);\n\n if (_react2.default.isValidElement(propValue)) {\n return new Error('Invalid ' + location + ' `' + propFullName + '` of type ReactElement ' + ('supplied to `' + componentName + '`, expected a ReactComponent or a ') + 'DOMElement. You can usually obtain a ReactComponent or DOMElement ' + 'from a ReactElement by attaching a ref to it.');\n }\n\n if ((propType !== 'object' || typeof propValue.render !== 'function') && propValue.nodeType !== 1) {\n return new Error('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected a ReactComponent or a ') + 'DOMElement.');\n }\n\n return null;\n}\n\nexports.default = (0, _createChainableTypeChecker2.default)(validate);\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = createChainableTypeChecker;\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n// Mostly taken from ReactPropTypes.\n\nfunction createChainableTypeChecker(validate) {\n function checkType(isRequired, props, propName, componentName, location, propFullName) {\n var componentNameSafe = componentName || '<<anonymous>>';\n var propFullNameSafe = propFullName || propName;\n\n if (props[propName] == null) {\n if (isRequired) {\n return new Error('Required ' + location + ' `' + propFullNameSafe + '` was not specified ' + ('in `' + componentNameSafe + '`.'));\n }\n\n return null;\n }\n\n for (var _len = arguments.length, args = Array(_len > 6 ? _len - 6 : 0), _key = 6; _key < _len; _key++) {\n args[_key - 6] = arguments[_key];\n }\n\n return validate.apply(undefined, [props, propName, componentNameSafe, location, propFullNameSafe].concat(args));\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n}\nmodule.exports = exports['default'];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = forwardRef;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction forwardRef(renderFn, _temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n propTypes = _ref.propTypes,\n defaultProps = _ref.defaultProps,\n _ref$allowFallback = _ref.allowFallback,\n allowFallback = _ref$allowFallback === void 0 ? false : _ref$allowFallback,\n _ref$displayName = _ref.displayName,\n displayName = _ref$displayName === void 0 ? renderFn.name || renderFn.displayName : _ref$displayName;\n\n var render = function render(props, ref) {\n return renderFn(props, ref);\n };\n\n return Object.assign(_react.default.forwardRef || !allowFallback ? _react.default.forwardRef(render) : function (props) {\n return render(props, null);\n }, {\n displayName: displayName,\n propTypes: propTypes,\n defaultProps: defaultProps\n });\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.default = camelize;\nvar rHyphen = /-(.)/g;\n\nfunction camelize(string) {\n return string.replace(rHyphen, function (_, chr) {\n return chr.toUpperCase();\n });\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _class = _interopRequireDefault(require(\"dom-helpers/class\"));\n\nvar _style = _interopRequireDefault(require(\"dom-helpers/style\"));\n\nvar _scrollbarSize = _interopRequireDefault(require(\"dom-helpers/util/scrollbarSize\"));\n\nvar _isOverflowing = _interopRequireDefault(require(\"./utils/isOverflowing\"));\n\nvar _manageAriaHidden = require(\"./utils/manageAriaHidden\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction findIndexOf(arr, cb) {\n var idx = -1;\n arr.some(function (d, i) {\n if (cb(d, i)) {\n idx = i;\n return true;\n }\n });\n return idx;\n}\n/**\n * Proper state managment for containers and the modals in those containers.\n *\n * @internal Used by the Modal to ensure proper styling of containers.\n */\n\n\nvar ModalManager =\n/*#__PURE__*/\nfunction () {\n function ModalManager(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$hideSiblingNodes = _ref.hideSiblingNodes,\n hideSiblingNodes = _ref$hideSiblingNodes === void 0 ? true : _ref$hideSiblingNodes,\n _ref$handleContainerO = _ref.handleContainerOverflow,\n handleContainerOverflow = _ref$handleContainerO === void 0 ? true : _ref$handleContainerO;\n\n this.hideSiblingNodes = hideSiblingNodes;\n this.handleContainerOverflow = handleContainerOverflow;\n this.modals = [];\n this.containers = [];\n this.data = [];\n this.scrollbarSize = (0, _scrollbarSize.default)();\n }\n\n var _proto = ModalManager.prototype;\n\n _proto.isContainerOverflowing = function isContainerOverflowing(modal) {\n var data = this.data[this.containerIndexFromModal(modal)];\n return data && data.overflowing;\n };\n\n _proto.containerIndexFromModal = function containerIndexFromModal(modal) {\n return findIndexOf(this.data, function (d) {\n return d.modals.indexOf(modal) !== -1;\n });\n };\n\n _proto.setContainerStyle = function setContainerStyle(containerState, container) {\n var style = {\n overflow: 'hidden' // we are only interested in the actual `style` here\n // becasue we will override it\n\n };\n containerState.style = {\n overflow: container.style.overflow,\n paddingRight: container.style.paddingRight\n };\n\n if (containerState.overflowing) {\n // use computed style, here to get the real padding\n // to add our scrollbar width\n style.paddingRight = parseInt((0, _style.default)(container, 'paddingRight') || 0, 10) + this.scrollbarSize + \"px\";\n }\n\n (0, _style.default)(container, style);\n };\n\n _proto.removeContainerStyle = function removeContainerStyle(containerState, container) {\n var style = containerState.style;\n Object.keys(style).forEach(function (key) {\n container.style[key] = style[key];\n });\n };\n\n _proto.add = function add(modal, container, className) {\n var modalIdx = this.modals.indexOf(modal);\n var containerIdx = this.containers.indexOf(container);\n\n if (modalIdx !== -1) {\n return modalIdx;\n }\n\n modalIdx = this.modals.length;\n this.modals.push(modal);\n\n if (this.hideSiblingNodes) {\n (0, _manageAriaHidden.hideSiblings)(container, modal);\n }\n\n if (containerIdx !== -1) {\n this.data[containerIdx].modals.push(modal);\n return modalIdx;\n }\n\n var data = {\n modals: [modal],\n //right now only the first modal of a container will have its classes applied\n classes: className ? className.split(/\\s+/) : [],\n overflowing: (0, _isOverflowing.default)(container)\n };\n\n if (this.handleContainerOverflow) {\n this.setContainerStyle(data, container);\n }\n\n data.classes.forEach(_class.default.addClass.bind(null, container));\n this.containers.push(container);\n this.data.push(data);\n return modalIdx;\n };\n\n _proto.remove = function remove(modal) {\n var modalIdx = this.modals.indexOf(modal);\n\n if (modalIdx === -1) {\n return;\n }\n\n var containerIdx = this.containerIndexFromModal(modal);\n var data = this.data[containerIdx];\n var container = this.containers[containerIdx];\n data.modals.splice(data.modals.indexOf(modal), 1);\n this.modals.splice(modalIdx, 1); // if that was the last modal in a container,\n // clean up the container\n\n if (data.modals.length === 0) {\n data.classes.forEach(_class.default.removeClass.bind(null, container));\n\n if (this.handleContainerOverflow) {\n this.removeContainerStyle(data, container);\n }\n\n if (this.hideSiblingNodes) {\n (0, _manageAriaHidden.showSiblings)(container, modal);\n }\n\n this.containers.splice(containerIdx, 1);\n this.data.splice(containerIdx, 1);\n } else if (this.hideSiblingNodes) {\n //otherwise make sure the next top modal is visible to a SR\n var _data$modals = data.modals[data.modals.length - 1],\n backdrop = _data$modals.backdrop,\n dialog = _data$modals.dialog;\n (0, _manageAriaHidden.ariaHidden)(false, dialog);\n (0, _manageAriaHidden.ariaHidden)(false, backdrop);\n }\n };\n\n _proto.isTopModal = function isTopModal(modal) {\n return !!this.modals.length && this.modals[this.modals.length - 1] === modal;\n };\n\n return ModalManager;\n}();\n\nvar _default = ModalManager;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nexports.__esModule = true;\nvar React = require(\"react\");\nvar ReactDOM = require(\"react-dom\");\nvar pick_react_known_prop_1 = require(\"pick-react-known-prop\");\nvar ConfigUtils_1 = require(\"./ConfigUtils\");\nvar Utils_1 = require(\"./Utils\");\n/* tslint:disable-next-line */\nvar Tabulator = require('tabulator-tables');\nvar default_1 = /** @class */ (function (_super) {\n __extends(default_1, _super);\n function default_1() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = {\n data: []\n };\n _this.ref = null;\n _this.htmlProps = null;\n _this.mainId = \"tabulator-\" + +new Date() + \"-\" + Math.floor(Math.random() * 9999999); // random id\n _this.table = null; // will be set once Tabulator instantiated\n _this.pickValidHTMLProps = function () {\n // run once\n if (!_this.htmlProps) {\n _this.htmlProps = pick_react_known_prop_1.pickHTMLProps(_this.props); // pick valid html props\n delete _this.htmlProps['data']; // don't render data & columns as attributes\n delete _this.htmlProps['columns'];\n }\n };\n return _this;\n }\n default_1.prototype.componentDidMount = function () {\n var domEle = ReactDOM.findDOMNode(this.ref); // mounted DOM element\n var that = this;\n var _a = this.props, columns = _a.columns, data = _a.data, options = _a.options;\n var propOptions = ConfigUtils_1.propsToOptions(this.props);\n new Tabulator(domEle, __assign({ columns: columns }, propOptions, { layout: 'fitColumns', // fit columns to width of table (optional)\n tableBuilding: function () {\n that.table = this; // keep table instance\n that.props.tableBuilding ? that.props.tableBuilding() : '';\n },\n dataLoaded: function () {\n that.props.dataLoaded ? that.props.dataLoaded() : '';\n } }, options, { // props.options are passed to Tabulator's options.\n data: data }));\n // await table.setData(data);\n // console.log('- componentDidMount');\n if (data && data.length > 0) {\n this.setState({ data: data });\n }\n };\n default_1.prototype.componentWillUnmount = function () {\n this.table.destroy();\n };\n // React 16.5.x - \"getDerivedStateFromProps\" replaces both \"componentWillMount\" & \"componentWillReceiveProps\"\n // This function will be ignored when running with React 15.6.x\n default_1.getDerivedStateFromProps = function (props, state) {\n // console.log('- getDerivedStateFromProps', props, state);\n var noData = !props.data || props.data.length === 0;\n if (!state && noData) {\n // first time (similar to: componentWillMount)\n return null;\n }\n if (state && state.data.length === 0 && props.data.length === 0) {\n return null;\n }\n if (state && props.data) {\n // this triggers componentDidUpdate\n if (!Utils_1.isSameArray(state.data, props.data)) {\n return __assign({}, state, { data: props.data });\n }\n }\n return {};\n };\n // componentDidUpdate(prevProps, prevState)\n default_1.prototype.componentDidUpdate = function () {\n this.table.setData(this.state.data);\n };\n default_1.prototype.render = function () {\n var _this = this;\n this.pickValidHTMLProps();\n var className = this.props.className;\n return React.createElement(\"div\", __assign({ ref: function (ref) { return (_this.ref = ref); }, \"data-instance\": this.mainId }, this.htmlProps, { className: className }));\n };\n return default_1;\n}(React.Component));\nexports[\"default\"] = default_1;\n","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\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\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.loaded = 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// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.pickSVGProps = exports.pickHTMLProps = undefined;\n\n\tvar _pickHtmlProps = __webpack_require__(1);\n\n\tvar _pickHtmlProps2 = _interopRequireDefault(_pickHtmlProps);\n\n\tvar _pickSvgProps = __webpack_require__(5);\n\n\tvar _pickSvgProps2 = _interopRequireDefault(_pickSvgProps);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\texports.pickHTMLProps = _pickHtmlProps2.default;\n\texports.pickSVGProps = _pickSvgProps2.default;\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\tvar _htmlAttributes = __webpack_require__(2);\n\n\tvar _htmlAttributes2 = _interopRequireDefault(_htmlAttributes);\n\n\tvar _pickProps = __webpack_require__(3);\n\n\tvar _pickProps2 = _interopRequireDefault(_pickProps);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tvar extra = ['about', 'datatype', 'defaultChecked', 'defaultValue', 'inlist', 'prefix', 'property', 'resource', 'typeof', 'vocab', 'autoCapitalize', 'autoCorrect', 'color', 'itemProp', 'itemScope', 'itemType', 'itemRef', 'itemID', 'security', 'unselectable', 'results', 'autoSave', 'allowtransparency', 'charSet', 'ismap', 'typemustmatch',\n\n\t// handlers:\n\t'onBlur', 'onChange', 'onClick', 'onContextMenu', 'onCopy', 'onCut', 'onDoubleClick', 'onDrag', 'onDragEnd', 'onDragEnter', 'onDragExit', 'onDragLeave', 'onDragOver', 'onDragStart', 'onDrop', 'onFocus', 'onInput', 'onKeyDown', 'onKeyPress', 'onKeyUp', 'onMouseDown', 'onMouseEnter', 'onMouseLeave', 'onMouseMove', 'onMouseOut', 'onMouseOver', 'onMouseUp', 'onPaste', 'onScroll', 'onSubmit', 'onTouchCancel', 'onTouchEnd', 'onTouchMove', 'onTouchStart', 'onWheel', 'onCompositionEnd', 'onCompositionStart', 'onCompositionUpdate', 'onInvalid', 'onPointerDown', 'onPointerMove', 'onPointerUp', 'onPointerCancel', 'onGotPointerCapture', 'onLostPointerCapture', 'onPointerEnter', 'onPointerLeave', 'onPointerOver', 'onPointerOut', 'onSelect', 'onAbort', 'onCanPlay', 'onCanPlayThrough', 'onDurationChange', 'onEmptied', 'onEncrypted', 'onEnded', 'onError', 'onLoadedData', 'onLoadedMetadata', 'onLoadStart', 'onPause', 'onPlay', 'onPlaying', 'onProgress', 'onRateChange', 'onSeeked', 'onSeeking', 'onStalled', 'onSuspend', 'onTimeUpdate', 'onVolumeChange', 'onWaiting', 'onLoad', 'onError', 'onAnimationStart', 'onAnimationEnd', 'onAnimationIteration', 'onTransitionEnd', 'onToggle'];\n\n\tvar ReactHTMLAttrs = _extends({}, _htmlAttributes2.default, extra.reduce(function (attrs, prop) {\n\t attrs[prop] = prop;\n\t return attrs;\n\t}, {}));\n\n\texports.default = (0, _pickProps2.default)(function (prop) {\n\t return Boolean(ReactHTMLAttrs[prop]) || /^(data|aria)-/.test(prop);\n\t});\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\t/*!\n\t * html-attributes\n\t * https://github.com/alexmingoia/html-attributes\n\t */\n\n\t'use strict';\n\n\t/**\n\t * @module html-attributes\n\t */\n\n\tmodule.exports = {\n\t \"abbr\": \"abbr\",\n\t \"accept\": \"accept\",\n\t \"acceptCharset\": \"accept-charset\",\n\t \"accessKey\": \"accesskey\",\n\t \"action\": \"action\",\n\t \"allowFullScreen\": \"allowfullscreen\",\n\t \"allowTransparency\": \"allowtransparency\",\n\t \"alt\": \"alt\",\n\t \"async\": \"async\",\n\t \"autoComplete\": \"autocomplete\",\n\t \"autoFocus\": \"autofocus\",\n\t \"autoPlay\": \"autoplay\",\n\t \"cellPadding\": \"cellpadding\",\n\t \"cellSpacing\": \"cellspacing\",\n\t \"challenge\": \"challenge\",\n\t \"charset\": \"charset\",\n\t \"checked\": \"checked\",\n\t \"cite\": \"cite\",\n\t \"class\": \"class\",\n\t \"className\": \"class\",\n\t \"cols\": \"cols\",\n\t \"colSpan\": \"colspan\",\n\t \"command\": \"command\",\n\t \"content\": \"content\",\n\t \"contentEditable\": \"contenteditable\",\n\t \"contextMenu\": \"contextmenu\",\n\t \"controls\": \"controls\",\n\t \"coords\": \"coords\",\n\t \"crossOrigin\": \"crossorigin\",\n\t \"data\": \"data\",\n\t \"dateTime\": \"datetime\",\n\t \"default\": \"default\",\n\t \"defer\": \"defer\",\n\t \"dir\": \"dir\",\n\t \"disabled\": \"disabled\",\n\t \"download\": \"download\",\n\t \"draggable\": \"draggable\",\n\t \"dropzone\": \"dropzone\",\n\t \"encType\": \"enctype\",\n\t \"for\": \"for\",\n\t \"form\": \"form\",\n\t \"formAction\": \"formaction\",\n\t \"formEncType\": \"formenctype\",\n\t \"formMethod\": \"formmethod\",\n\t \"formNoValidate\": \"formnovalidate\",\n\t \"formTarget\": \"formtarget\",\n\t \"frameBorder\": \"frameBorder\",\n\t \"headers\": \"headers\",\n\t \"height\": \"height\",\n\t \"hidden\": \"hidden\",\n\t \"high\": \"high\",\n\t \"href\": \"href\",\n\t \"hrefLang\": \"hreflang\",\n\t \"htmlFor\": \"for\",\n\t \"httpEquiv\": \"http-equiv\",\n\t \"icon\": \"icon\",\n\t \"id\": \"id\",\n\t \"inputMode\": \"inputmode\",\n\t \"isMap\": \"ismap\",\n\t \"itemId\": \"itemid\",\n\t \"itemProp\": \"itemprop\",\n\t \"itemRef\": \"itemref\",\n\t \"itemScope\": \"itemscope\",\n\t \"itemType\": \"itemtype\",\n\t \"kind\": \"kind\",\n\t \"label\": \"label\",\n\t \"lang\": \"lang\",\n\t \"list\": \"list\",\n\t \"loop\": \"loop\",\n\t \"manifest\": \"manifest\",\n\t \"max\": \"max\",\n\t \"maxLength\": \"maxlength\",\n\t \"media\": \"media\",\n\t \"mediaGroup\": \"mediagroup\",\n\t \"method\": \"method\",\n\t \"min\": \"min\",\n\t \"minLength\": \"minlength\",\n\t \"multiple\": \"multiple\",\n\t \"muted\": \"muted\",\n\t \"name\": \"name\",\n\t \"noValidate\": \"novalidate\",\n\t \"open\": \"open\",\n\t \"optimum\": \"optimum\",\n\t \"pattern\": \"pattern\",\n\t \"ping\": \"ping\",\n\t \"placeholder\": \"placeholder\",\n\t \"poster\": \"poster\",\n\t \"preload\": \"preload\",\n\t \"radioGroup\": \"radiogroup\",\n\t \"readOnly\": \"readonly\",\n\t \"rel\": \"rel\",\n\t \"required\": \"required\",\n\t \"role\": \"role\",\n\t \"rows\": \"rows\",\n\t \"rowSpan\": \"rowspan\",\n\t \"sandbox\": \"sandbox\",\n\t \"scope\": \"scope\",\n\t \"scoped\": \"scoped\",\n\t \"scrolling\": \"scrolling\",\n\t \"seamless\": \"seamless\",\n\t \"selected\": \"selected\",\n\t \"shape\": \"shape\",\n\t \"size\": \"size\",\n\t \"sizes\": \"sizes\",\n\t \"sortable\": \"sortable\",\n\t \"span\": \"span\",\n\t \"spellCheck\": \"spellcheck\",\n\t \"src\": \"src\",\n\t \"srcDoc\": \"srcdoc\",\n\t \"srcSet\": \"srcset\",\n\t \"start\": \"start\",\n\t \"step\": \"step\",\n\t \"style\": \"style\",\n\t \"tabIndex\": \"tabindex\",\n\t \"target\": \"target\",\n\t \"title\": \"title\",\n\t \"translate\": \"translate\",\n\t \"type\": \"type\",\n\t \"typeMustMatch\": \"typemustmatch\",\n\t \"useMap\": \"usemap\",\n\t \"value\": \"value\",\n\t \"width\": \"width\",\n\t \"wmode\": \"wmode\",\n\t \"wrap\": \"wrap\"\n\t};\n\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _lodash = __webpack_require__(4);\n\n\tvar _lodash2 = _interopRequireDefault(_lodash);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\texports.default = function (filter) {\n\t return function (props) {\n\t if (!(0, _lodash2.default)(props)) throw new Error('props should be a plain object');\n\t var out = {};\n\t for (var key in props) {\n\t if (props.hasOwnProperty(key) && filter(key)) {\n\t out[key] = props[key];\n\t }\n\t }\n\t return out;\n\t };\n\t};\n\n/***/ },\n/* 4 */\n/***/ function(module, exports) {\n\n\t/**\n\t * lodash (Custom Build) <https://lodash.com/>\n\t * Build: `lodash modularize exports=\"npm\" -o ./`\n\t * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n\t * Released under MIT license <https://lodash.com/license>\n\t * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n\t * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n\t */\n\n\t/** `Object#toString` result references. */\n\tvar objectTag = '[object Object]';\n\n\t/**\n\t * Checks if `value` is a host object in IE < 9.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n\t */\n\tfunction isHostObject(value) {\n\t // Many host objects are `Object` objects that can coerce to strings\n\t // despite having improperly defined `toString` methods.\n\t var result = false;\n\t if (value != null && typeof value.toString != 'function') {\n\t try {\n\t result = !!(value + '');\n\t } catch (e) {}\n\t }\n\t return result;\n\t}\n\n\t/**\n\t * Creates a unary function that invokes `func` with its argument transformed.\n\t *\n\t * @private\n\t * @param {Function} func The function to wrap.\n\t * @param {Function} transform The argument transform.\n\t * @returns {Function} Returns the new function.\n\t */\n\tfunction overArg(func, transform) {\n\t return function(arg) {\n\t return func(transform(arg));\n\t };\n\t}\n\n\t/** Used for built-in method references. */\n\tvar funcProto = Function.prototype,\n\t objectProto = Object.prototype;\n\n\t/** Used to resolve the decompiled source of functions. */\n\tvar funcToString = funcProto.toString;\n\n\t/** Used to check objects for own properties. */\n\tvar hasOwnProperty = objectProto.hasOwnProperty;\n\n\t/** Used to infer the `Object` constructor. */\n\tvar objectCtorString = funcToString.call(Object);\n\n\t/**\n\t * Used to resolve the\n\t * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n\t * of values.\n\t */\n\tvar objectToString = objectProto.toString;\n\n\t/** Built-in value references. */\n\tvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\n\t/**\n\t * Checks if `value` is object-like. A value is object-like if it's not `null`\n\t * and has a `typeof` result of \"object\".\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n\t * @example\n\t *\n\t * _.isObjectLike({});\n\t * // => true\n\t *\n\t * _.isObjectLike([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isObjectLike(_.noop);\n\t * // => false\n\t *\n\t * _.isObjectLike(null);\n\t * // => false\n\t */\n\tfunction isObjectLike(value) {\n\t return !!value && typeof value == 'object';\n\t}\n\n\t/**\n\t * Checks if `value` is a plain object, that is, an object created by the\n\t * `Object` constructor or one with a `[[Prototype]]` of `null`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.8.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n\t * @example\n\t *\n\t * function Foo() {\n\t * this.a = 1;\n\t * }\n\t *\n\t * _.isPlainObject(new Foo);\n\t * // => false\n\t *\n\t * _.isPlainObject([1, 2, 3]);\n\t * // => false\n\t *\n\t * _.isPlainObject({ 'x': 0, 'y': 0 });\n\t * // => true\n\t *\n\t * _.isPlainObject(Object.create(null));\n\t * // => true\n\t */\n\tfunction isPlainObject(value) {\n\t if (!isObjectLike(value) ||\n\t objectToString.call(value) != objectTag || isHostObject(value)) {\n\t return false;\n\t }\n\t var proto = getPrototype(value);\n\t if (proto === null) {\n\t return true;\n\t }\n\t var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n\t return (typeof Ctor == 'function' &&\n\t Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString);\n\t}\n\n\tmodule.exports = isPlainObject;\n\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _pickProps = __webpack_require__(3);\n\n\tvar _pickProps2 = _interopRequireDefault(_pickProps);\n\n\tvar _svgAttributes = __webpack_require__(6);\n\n\tvar _svgAttributes2 = _interopRequireDefault(_svgAttributes);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\texports.default = (0, _pickProps2.default)(function (prop) {\n\t return Boolean(_svgAttributes2.default[prop]);\n\t});\n\n/***/ },\n/* 6 */\n/***/ function(module, exports) {\n\n\t/*!\n\t * svg-attributes\n\t * https://github.com/alexmingoia/svg-attributes\n\t */\n\n\t'use strict';\n\n\t/**\n\t * @module svg-attributes\n\t */\n\n\tmodule.exports = {\n\t /**\n\t * Regular attributes\n\t */\n\t \"accentHeight\": \"accent-height\",\n\t \"accumulate\": \"accumulate\",\n\t \"additive\": \"additive\",\n\t \"alphabetic\": \"alphabetic\",\n\t \"amplitude\": \"amplitude\",\n\t \"arabicForm\": \"arabic-form\",\n\t \"ascent\": \"ascent\",\n\t \"attributeName\": \"attributeName\",\n\t \"attributeType\": \"attributeType\",\n\t \"azimuth\": \"azimuth\",\n\t \"baseFrequency\": \"baseFrequency\",\n\t \"baseProfile\": \"baseProfile\",\n\t \"bbox\": \"bbox\",\n\t \"begin\": \"begin\",\n\t \"bias\": \"bias\",\n\t \"by\": \"by\",\n\t \"calcMode\": \"calcMode\",\n\t \"capHeight\": \"cap-height\",\n\t \"class\": \"class\",\n\t \"clipPathUnits\": \"clipPathUnits\",\n\t \"contentScriptType\": \"contentScriptType\",\n\t \"contentStyleType\": \"contentStyleType\",\n\t \"cx\": \"cx\",\n\t \"cy\": \"cy\",\n\t \"d\": \"d\",\n\t \"descent\": \"descent\",\n\t \"diffuseConstant\": \"diffuseConstant\",\n\t \"divisor\": \"divisor\",\n\t \"dur\": \"dur\",\n\t \"dx\": \"dx\",\n\t \"dy\": \"dy\",\n\t \"edgeMode\": \"edgeMode\",\n\t \"elevation\": \"elevation\",\n\t \"end\": \"end\",\n\t \"exponent\": \"exponent\",\n\t \"externalResourcesRequired\": \"externalResourcesRequired\",\n\t \"fill\": \"fill\",\n\t \"filterRes\": \"filterRes\",\n\t \"filterUnits\": \"filterUnits\",\n\t \"fontFamily\": \"font-family\",\n\t \"fontSize\": \"font-size\",\n\t \"fontStretch\": \"font-stretch\",\n\t \"fontStyle\": \"font-style\",\n\t \"format\": \"format\",\n\t \"from\": \"from\",\n\t \"fx\": \"fx\",\n\t \"fy\": \"fy\",\n\t \"g1\": \"g1\",\n\t \"g2\": \"g2\",\n\t \"glyphame\": \"glyph-name\",\n\t \"glyphRef\": \"glyphRef\",\n\t \"gradientTransform\": \"gradientTransform\",\n\t \"gradientUnits\": \"gradientUnits\",\n\t \"hanging\": \"hanging\",\n\t \"height\": \"height\",\n\t \"horizAdvX\": \"horiz-adv-x\",\n\t \"horizOriginX\": \"horiz-origin-x\",\n\t \"horizOriginY\": \"horiz-origin-y\",\n\t \"id\": \"id\",\n\t \"ideographic\": \"ideographic\",\n\t \"in\": \"in\",\n\t \"in2\": \"in2\",\n\t \"intercept\": \"intercept\",\n\t \"k\": \"k\",\n\t \"k1\": \"k1\",\n\t \"k2\": \"k2\",\n\t \"k3\": \"k3\",\n\t \"k4\": \"k4\",\n\t \"kernelMatrix\": \"kernelMatrix\",\n\t \"kernelUnitLength\": \"kernelUnitLength\",\n\t \"keyPoints\": \"keyPoints\",\n\t \"keySplines\": \"keySplines\",\n\t \"keyTimes\": \"keyTimes\",\n\t \"lang\": \"lang\",\n\t \"lengthAdjust\": \"lengthAdjust\",\n\t \"limitingConeAngle\": \"limitingConeAngle\",\n\t \"local\": \"local\",\n\t \"markerHeight\": \"markerHeight\",\n\t \"markerUnits\": \"markerUnits\",\n\t \"markerWidth\": \"markerWidth\",\n\t \"maskContentUnits\": \"maskContentUnits\",\n\t \"maskUnits\": \"maskUnits\",\n\t \"mathematical\": \"mathematical\",\n\t \"max\": \"max\",\n\t \"media\": \"media\",\n\t \"method\": \"method\",\n\t \"min\": \"min\",\n\t \"mode\": \"mode\",\n\t \"name\": \"name\",\n\t \"numOctaves\": \"numOctaves\",\n\t \"offset\": \"offset\",\n\t \"onAbort\": \"onabort\",\n\t \"onActivate\": \"onactivate\",\n\t \"onBegin\": \"onbegin\",\n\t \"onClick\": \"onclick\",\n\t \"onEnd\": \"onend\",\n\t \"onError\": \"onerror\",\n\t \"onFocusIn\": \"onfocusin\",\n\t \"onFocusOut\": \"onfocusout\",\n\t \"onLoad\": \"onload\",\n\t \"onMouseDown\": \"onmousedown\",\n\t \"onMouseMove\": \"onmousemove\",\n\t \"onMouseOut\": \"onmouseout\",\n\t \"onMouseOver\": \"onmouseover\",\n\t \"onMouseUp\": \"onmouseup\",\n\t \"onRepeat\": \"onrepeat\",\n\t \"onResize\": \"onresize\",\n\t \"onScroll\": \"onscroll\",\n\t \"onUnload\": \"onunload\",\n\t \"onZoom\": \"onzoom\",\n\t \"operator\": \"operator\",\n\t \"order\": \"order\",\n\t \"orient\": \"orient\",\n\t \"orientation\": \"orientation\",\n\t \"origin\": \"origin\",\n\t \"overlinePosition\": \"overline-position\",\n\t \"overlineThickness\": \"overline-thickness\",\n\t \"panose1\": \"panose-1\",\n\t \"path\": \"path\",\n\t \"pathLength\": \"pathLength\",\n\t \"patternContentUnits\": \"patternContentUnits\",\n\t \"patternTransform\": \"patternTransform\",\n\t \"patternUnits\": \"patternUnits\",\n\t \"points\": \"points\",\n\t \"pointsAtX\": \"pointsAtX\",\n\t \"pointsAtY\": \"pointsAtY\",\n\t \"pointsAtZ\": \"pointsAtZ\",\n\t \"preserveAlpha\": \"preserveAlpha\",\n\t \"preserveAspectRatio\": \"preserveAspectRatio\",\n\t \"primitiveUnits\": \"primitiveUnits\",\n\t \"r\": \"r\",\n\t \"radius\": \"radius\",\n\t \"refX\": \"refX\",\n\t \"refY\": \"refY\",\n\t \"renderingIntent\": \"rendering-intent\",\n\t \"repeatCount\": \"repeatCount\",\n\t \"repeatDur\": \"repeatDur\",\n\t \"requiredExtensions\": \"requiredExtensions\",\n\t \"requiredFeatures\": \"requiredFeatures\",\n\t \"restart\": \"restart\",\n\t \"result\": \"result\",\n\t \"rotate\": \"rotate\",\n\t \"rx\": \"rx\",\n\t \"ry\": \"ry\",\n\t \"scale\": \"scale\",\n\t \"seed\": \"seed\",\n\t \"slope\": \"slope\",\n\t \"spacing\": \"spacing\",\n\t \"specularConstant\": \"specularConstant\",\n\t \"specularExponent\": \"specularExponent\",\n\t \"spreadMethod\": \"spreadMethod\",\n\t \"startOffset\": \"startOffset\",\n\t \"stdDeviation\": \"stdDeviation\",\n\t \"stemh\": \"stemh\",\n\t \"stemv\": \"stemv\",\n\t \"stitchTiles\": \"stitchTiles\",\n\t \"strikethroughPosition\": \"strikethrough-position\",\n\t \"strikethroughThickness\": \"strikethrough-thickness\",\n\t \"string\": \"string\",\n\t \"style\": \"style\",\n\t \"surfaceScale\": \"surfaceScale\",\n\t \"systemLanguage\": \"systemLanguage\",\n\t \"tableValues\": \"tableValues\",\n\t \"target\": \"target\",\n\t \"targetX\": \"targetX\",\n\t \"targetY\": \"targetY\",\n\t \"textLength\": \"textLength\",\n\t \"title\": \"title\",\n\t \"to\": \"to\",\n\t \"transform\": \"transform\",\n\t \"type\": \"type\",\n\t \"u1\": \"u1\",\n\t \"u2\": \"u2\",\n\t \"underlinePosition\": \"underline-position\",\n\t \"underlineThickness\": \"underline-thickness\",\n\t \"unicode\": \"unicode\",\n\t \"unicodeRange\": \"unicode-range\",\n\t \"unitsPerEm\": \"units-per-em\",\n\t \"vAlphabetic\": \"v-alphabetic\",\n\t \"vHanging\": \"v-hanging\",\n\t \"vIdeographic\": \"v-ideographic\",\n\t \"vMathematical\": \"v-mathematical\",\n\t \"values\": \"values\",\n\t \"version\": \"version\",\n\t \"vertAdvY\": \"vert-adv-y\",\n\t \"vertOriginX\": \"vert-origin-x\",\n\t \"vertOriginY\": \"vert-origin-y\",\n\t \"viewBox\": \"viewBox\",\n\t \"viewTarget\": \"viewTarget\",\n\t \"width\": \"width\",\n\t \"widths\": \"widths\",\n\t \"x\": \"x\",\n\t \"xHeight\": \"x-height\",\n\t \"x1\": \"x1\",\n\t \"x2\": \"x2\",\n\t \"xChannelSelector\": \"xChannelSelector\",\n\t \"xlink\": \"xlink\",\n\t \"xml\": \"xml\",\n\t \"y\": \"y\",\n\t \"y1\": \"y1\",\n\t \"y2\": \"y2\",\n\t \"yChannelSelector\": \"yChannelSelector\",\n\t \"z\": \"z\",\n\t \"zoomAndPan\": \"zoomAndPan\",\n\t /**\n\t * Presentation attributes\n\t */\n\t \"alignmentBaseline\": \"alignment-baseline\",\n\t \"baselineShift\": \"baseline-shift\",\n\t \"clipPath\": \"clip-path\",\n\t \"clipRule\": \"clip-rule\",\n\t \"clip\": \"clip\",\n\t \"colorInterpolationFilters\": \"color-interpolation-filters\",\n\t \"colorInterpolation\": \"color-interpolation\",\n\t \"colorProfile\": \"color-profile\",\n\t \"colorRendering\": \"color-rendering\",\n\t \"color\": \"color\",\n\t \"cursor\": \"cursor\",\n\t \"direction\": \"direction\",\n\t \"display\": \"display\",\n\t \"dominantBaseline\": \"dominant-baseline\",\n\t \"enableBackground\": \"enable-background\",\n\t \"fillOpacity\": \"fill-opacity\",\n\t \"fillRule\": \"fill-rule\",\n\t \"filter\": \"filter\",\n\t \"floodColor\": \"flood-color\",\n\t \"floodOpacity\": \"flood-opacity\",\n\t \"fontSizeAdjust\": \"font-size-adjust\",\n\t \"fontVariant\": \"font-variant\",\n\t \"fontWeight\": \"font-weight\",\n\t \"glyphOrientationHorizontal\": \"glyph-orientation-horizontal\",\n\t \"glyphOrientationVertical\": \"glyph-orientation-vertical\",\n\t \"imageRendering\": \"image-rendering\",\n\t \"kerning\": \"kerning\",\n\t \"letterSpacing\": \"letter-spacing\",\n\t \"lightingColor\": \"lighting-color\",\n\t \"markerEnd\": \"marker-end\",\n\t \"markerMid\": \"marker-mid\",\n\t \"markerStart\": \"marker-start\",\n\t \"mask\": \"mask\",\n\t \"opacity\": \"opacity\",\n\t \"overflow\": \"overflow\",\n\t \"pointerEvents\": \"pointer-events\",\n\t \"shapeRendering\": \"shape-rendering\",\n\t \"stopColor\": \"stop-color\",\n\t \"stopOpacity\": \"stop-opacity\",\n\t \"strokeDasharray\": \"stroke-dasharray\",\n\t \"strokeDashoffset\": \"stroke-dashoffset\",\n\t \"strokeLinecap\": \"stroke-linecap\",\n\t \"strokeLinejoin\": \"stroke-linejoin\",\n\t \"strokeMiterlimit\": \"stroke-miterlimit\",\n\t \"strokeOpacity\": \"stroke-opacity\",\n\t \"strokeWidth\": \"stroke-width\",\n\t \"stroke\": \"stroke\",\n\t \"textAnchor\": \"text-anchor\",\n\t \"textDecoration\": \"text-decoration\",\n\t \"textRendering\": \"text-rendering\",\n\t \"unicodeBidi\": \"unicode-bidi\",\n\t \"visibility\": \"visibility\",\n\t \"wordSpacing\": \"word-spacing\",\n\t \"writingMode\": \"writing-mode\"\n\t};\n\n\n/***/ }\n/******/ ]);","\"use strict\";\nexports.__esModule = true;\nvar server_1 = require(\"react-dom/server\");\n// .prettierignore (to keep relevant props together)\nvar NOOPS = function () { };\n// get callbacks from props (default: NOOP) to set them to Tabulator options later.\nexports.propsToOptions = function (props) {\n var output = {};\n var defaultOptions = ['height', 'layout', 'layoutColumnsOnNewData', 'columnMinWidth', 'columnVertAlign',\n 'resizableColumns', 'resizableRows', 'autoResize', 'tooltips', 'tooltipsHeader', 'tooltipGenerationMode',\n 'initialSort', 'initialFilter', 'footerElement', 'index', 'keybindings', 'clipboard', 'clipboardCopyStyled',\n 'clipboardCopySelector', 'clipboardCopyFormatter', 'clipboardCopyHeader', 'clipboardPasteParser',\n 'clipboardPasteAction', 'rowFormatter', 'placeholder'];\n for (var _i = 0, defaultOptions_1 = defaultOptions; _i < defaultOptions_1.length; _i++) {\n var opt = defaultOptions_1[_i];\n if (typeof props[opt] !== 'undefined') {\n output[opt] = props[opt];\n }\n }\n var callbackNames = ['tableBuilt', 'rowClick', 'rowDblClick', 'rowContext', 'rowTap', 'rowDblTap', 'rowTapHold',\n 'rowAdded', 'rowDeleted', 'rowMoved', 'rowUpdated', 'rowSelectionChanged', 'rowSelected', 'rowDeselected', 'rowResized',\n 'cellClick', 'cellDblClick', 'cellContext', 'cellTap', 'cellDblTap', 'cellTapHold', 'cellEditing', 'cellEdited', 'cellEditCancelled',\n 'columnMoved', 'columnResized', 'columnTitleChanged', 'columnVisibilityChanged',\n 'headerClick', 'headerDblClick', 'headerContext', 'headerTap', 'headerDblTap', 'headerTapHold',\n 'htmlImporting', 'htmlImported', 'dataLoading', 'dataLoaded', 'dataEdited',\n 'ajaxRequesting', 'ajaxResponse', 'ajaxError', 'dataFiltering', 'dataFiltered', 'dataSorting', 'dataSorted',\n 'renderStarted', 'renderComplete', 'pageLoaded', 'localized', 'dataGrouping', 'dataGrouped',\n 'groupVisibilityChanged', 'groupClick', 'groupDblClick', 'groupContext', 'groupTap', 'groupDblTap', 'groupTapHold',\n 'movableRowsSendingStart', 'movableRowsSent', 'movableRowsSentFailed', 'movableRowsSendingStop', 'movableRowsReceivingStart', 'movableRowsReceived', 'movableRowsReceivedFailed', 'movableRowsReceivingStop',\n 'validationFailed', 'clipboardCopied', 'clipboardPasted', 'clipboardPasteError',\n 'downloadDataFormatter', 'downloadReady', 'downloadComplete'];\n for (var _a = 0, callbackNames_1 = callbackNames; _a < callbackNames_1.length; _a++) {\n var callbackName = callbackNames_1[_a];\n output[callbackName] = props[callbackName] || NOOPS;\n }\n if (typeof props['footerElement'] === 'object') {\n // convert from JSX to HTML string (tabulator's footerElement accepts string)\n output['footerElement'] = server_1.renderToString(props['footerElement']);\n }\n return output;\n};\n","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n/* Tabulator v4.3.0 (c) Oliver Folkerd */\n\n;(function (global, factory) {\n\tif ((typeof exports === 'undefined' ? 'undefined' : _typeof(exports)) === 'object' && typeof module !== 'undefined') {\n\t\tmodule.exports = factory();\n\t} else if (typeof define === 'function' && define.amd) {\n\t\tdefine(factory);\n\t} else {\n\t\tglobal.Tabulator = factory();\n\t}\n})(this, function () {\n\n\t'use strict';\n\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.findIndex\n\n\n\tif (!Array.prototype.findIndex) {\n\n\t\tObject.defineProperty(Array.prototype, 'findIndex', {\n\n\t\t\tvalue: function value(predicate) {\n\n\t\t\t\t// 1. Let O be ? ToObject(this value).\n\n\n\t\t\t\tif (this == null) {\n\n\t\t\t\t\tthrow new TypeError('\"this\" is null or not defined');\n\t\t\t\t}\n\n\t\t\t\tvar o = Object(this);\n\n\t\t\t\t// 2. Let len be ? ToLength(? Get(O, \"length\")).\n\n\n\t\t\t\tvar len = o.length >>> 0;\n\n\t\t\t\t// 3. If IsCallable(predicate) is false, throw a TypeError exception.\n\n\n\t\t\t\tif (typeof predicate !== 'function') {\n\n\t\t\t\t\tthrow new TypeError('predicate must be a function');\n\t\t\t\t}\n\n\t\t\t\t// 4. If thisArg was supplied, let T be thisArg; else let T be undefined.\n\n\n\t\t\t\tvar thisArg = arguments[1];\n\n\t\t\t\t// 5. Let k be 0.\n\n\n\t\t\t\tvar k = 0;\n\n\t\t\t\t// 6. Repeat, while k < len\n\n\n\t\t\t\twhile (k < len) {\n\n\t\t\t\t\t// a. Let Pk be ! ToString(k).\n\n\n\t\t\t\t\t// b. Let kValue be ? Get(O, Pk).\n\n\n\t\t\t\t\t// c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).\n\n\n\t\t\t\t\t// d. If testResult is true, return k.\n\n\n\t\t\t\t\tvar kValue = o[k];\n\n\t\t\t\t\tif (predicate.call(thisArg, kValue, k, o)) {\n\n\t\t\t\t\t\treturn k;\n\t\t\t\t\t}\n\n\t\t\t\t\t// e. Increase k by 1.\n\n\n\t\t\t\t\tk++;\n\t\t\t\t}\n\n\t\t\t\t// 7. Return -1.\n\n\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t});\n\t}\n\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.find\n\n\n\tif (!Array.prototype.find) {\n\n\t\tObject.defineProperty(Array.prototype, 'find', {\n\n\t\t\tvalue: function value(predicate) {\n\n\t\t\t\t// 1. Let O be ? ToObject(this value).\n\n\n\t\t\t\tif (this == null) {\n\n\t\t\t\t\tthrow new TypeError('\"this\" is null or not defined');\n\t\t\t\t}\n\n\t\t\t\tvar o = Object(this);\n\n\t\t\t\t// 2. Let len be ? ToLength(? Get(O, \"length\")).\n\n\n\t\t\t\tvar len = o.length >>> 0;\n\n\t\t\t\t// 3. If IsCallable(predicate) is false, throw a TypeError exception.\n\n\n\t\t\t\tif (typeof predicate !== 'function') {\n\n\t\t\t\t\tthrow new TypeError('predicate must be a function');\n\t\t\t\t}\n\n\t\t\t\t// 4. If thisArg was supplied, let T be thisArg; else let T be undefined.\n\n\n\t\t\t\tvar thisArg = arguments[1];\n\n\t\t\t\t// 5. Let k be 0.\n\n\n\t\t\t\tvar k = 0;\n\n\t\t\t\t// 6. Repeat, while k < len\n\n\n\t\t\t\twhile (k < len) {\n\n\t\t\t\t\t// a. Let Pk be ! ToString(k).\n\n\n\t\t\t\t\t// b. Let kValue be ? Get(O, Pk).\n\n\n\t\t\t\t\t// c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).\n\n\n\t\t\t\t\t// d. If testResult is true, return kValue.\n\n\n\t\t\t\t\tvar kValue = o[k];\n\n\t\t\t\t\tif (predicate.call(thisArg, kValue, k, o)) {\n\n\t\t\t\t\t\treturn kValue;\n\t\t\t\t\t}\n\n\t\t\t\t\t// e. Increase k by 1.\n\n\n\t\t\t\t\tk++;\n\t\t\t\t}\n\n\t\t\t\t// 7. Return undefined.\n\n\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t});\n\t}\n\n\tvar ColumnManager = function ColumnManager(table) {\n\n\t\tthis.table = table; //hold parent table\n\n\n\t\tthis.blockHozScrollEvent = false;\n\n\t\tthis.headersElement = this.createHeadersElement();\n\n\t\tthis.element = this.createHeaderElement(); //containing element\n\n\n\t\tthis.rowManager = null; //hold row manager object\n\n\n\t\tthis.columns = []; // column definition object\n\n\n\t\tthis.columnsByIndex = []; //columns by index\n\n\n\t\tthis.columnsByField = {}; //columns by field\n\n\n\t\tthis.scrollLeft = 0;\n\n\t\tthis.element.insertBefore(this.headersElement, this.element.firstChild);\n\t};\n\n\t////////////// Setup Functions /////////////////\n\n\n\tColumnManager.prototype.createHeadersElement = function () {\n\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-headers\");\n\n\t\treturn el;\n\t};\n\n\tColumnManager.prototype.createHeaderElement = function () {\n\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-header\");\n\n\t\tif (!this.table.options.headerVisible) {\n\n\t\t\tel.classList.add(\"tabulator-header-hidden\");\n\t\t}\n\n\t\treturn el;\n\t};\n\n\tColumnManager.prototype.initialize = function () {\n\n\t\tvar self = this;\n\n\t\t//scroll body along with header\n\n\n\t\t// self.element.addEventListener(\"scroll\", function(e){\n\n\n\t\t// \tif(!self.blockHozScrollEvent){\n\n\n\t\t// \t\tself.table.rowManager.scrollHorizontal(self.element.scrollLeft);\n\n\n\t\t// \t}\n\n\n\t\t// });\n\n\t};\n\n\t//link to row manager\n\n\n\tColumnManager.prototype.setRowManager = function (manager) {\n\n\t\tthis.rowManager = manager;\n\t};\n\n\t//return containing element\n\n\n\tColumnManager.prototype.getElement = function () {\n\n\t\treturn this.element;\n\t};\n\n\t//return header containing element\n\n\n\tColumnManager.prototype.getHeadersElement = function () {\n\n\t\treturn this.headersElement;\n\t};\n\n\t// ColumnManager.prototype.tempScrollBlock = function(){\n\n\n\t// \tclearTimeout(this.blockHozScrollEvent);\n\n\n\t// \tthis.blockHozScrollEvent = setTimeout(() => {this.blockHozScrollEvent = false;}, 50);\n\n\n\t// }\n\n\n\t//scroll horizontally to match table body\n\n\n\tColumnManager.prototype.scrollHorizontal = function (left) {\n\n\t\tvar hozAdjust = 0,\n\t\t scrollWidth = this.element.scrollWidth - this.table.element.clientWidth;\n\n\t\t// this.tempScrollBlock();\n\n\n\t\tthis.element.scrollLeft = left;\n\n\t\t//adjust for vertical scrollbar moving table when present\n\n\n\t\tif (left > scrollWidth) {\n\n\t\t\thozAdjust = left - scrollWidth;\n\n\t\t\tthis.element.style.marginLeft = -hozAdjust + \"px\";\n\t\t} else {\n\n\t\t\tthis.element.style.marginLeft = 0;\n\t\t}\n\n\t\t//keep frozen columns fixed in position\n\n\n\t\t//this._calcFrozenColumnsPos(hozAdjust + 3);\n\n\n\t\tthis.scrollLeft = left;\n\n\t\tif (this.table.modExists(\"frozenColumns\")) {\n\n\t\t\tthis.table.modules.frozenColumns.scrollHorizontal();\n\t\t}\n\t};\n\n\t///////////// Column Setup Functions /////////////\n\n\n\tColumnManager.prototype.generateColumnsFromRowData = function (data) {\n\n\t\tvar cols = [],\n\t\t row,\n\t\t sorter;\n\n\t\tif (data && data.length) {\n\n\t\t\trow = data[0];\n\n\t\t\tfor (var key in row) {\n\n\t\t\t\tvar col = {\n\n\t\t\t\t\tfield: key,\n\n\t\t\t\t\ttitle: key\n\n\t\t\t\t};\n\n\t\t\t\tvar value = row[key];\n\n\t\t\t\tswitch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {\n\n\t\t\t\t\tcase \"undefined\":\n\n\t\t\t\t\t\tsorter = \"string\";\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"boolean\":\n\n\t\t\t\t\t\tsorter = \"boolean\";\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"object\":\n\n\t\t\t\t\t\tif (Array.isArray(value)) {\n\n\t\t\t\t\t\t\tsorter = \"array\";\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tsorter = \"string\";\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tif (!isNaN(value) && value !== \"\") {\n\n\t\t\t\t\t\t\tsorter = \"number\";\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tif (value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)) {\n\n\t\t\t\t\t\t\t\tsorter = \"alphanum\";\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tsorter = \"string\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\tcol.sorter = sorter;\n\n\t\t\t\tcols.push(col);\n\t\t\t}\n\n\t\t\tthis.table.options.columns = cols;\n\n\t\t\tthis.setColumns(this.table.options.columns);\n\t\t}\n\t};\n\n\tColumnManager.prototype.setColumns = function (cols, row) {\n\n\t\tvar self = this;\n\n\t\twhile (self.headersElement.firstChild) {\n\t\t\tself.headersElement.removeChild(self.headersElement.firstChild);\n\t\t}self.columns = [];\n\n\t\tself.columnsByIndex = [];\n\n\t\tself.columnsByField = {};\n\n\t\t//reset frozen columns\n\n\n\t\tif (self.table.modExists(\"frozenColumns\")) {\n\n\t\t\tself.table.modules.frozenColumns.reset();\n\t\t}\n\n\t\tcols.forEach(function (def, i) {\n\n\t\t\tself._addColumn(def);\n\t\t});\n\n\t\tself._reIndexColumns();\n\n\t\tif (self.table.options.responsiveLayout && self.table.modExists(\"responsiveLayout\", true)) {\n\n\t\t\tself.table.modules.responsiveLayout.initialize();\n\t\t}\n\n\t\tself.redraw(true);\n\t};\n\n\tColumnManager.prototype._addColumn = function (definition, before, nextToColumn) {\n\n\t\tvar column = new Column(definition, this),\n\t\t colEl = column.getElement(),\n\t\t index = nextToColumn ? this.findColumnIndex(nextToColumn) : nextToColumn;\n\n\t\tif (nextToColumn && index > -1) {\n\n\t\t\tvar parentIndex = this.columns.indexOf(nextToColumn.getTopColumn());\n\n\t\t\tvar nextEl = nextToColumn.getElement();\n\n\t\t\tif (before) {\n\n\t\t\t\tthis.columns.splice(parentIndex, 0, column);\n\n\t\t\t\tnextEl.parentNode.insertBefore(colEl, nextEl);\n\t\t\t} else {\n\n\t\t\t\tthis.columns.splice(parentIndex + 1, 0, column);\n\n\t\t\t\tnextEl.parentNode.insertBefore(colEl, nextEl.nextSibling);\n\t\t\t}\n\t\t} else {\n\n\t\t\tif (before) {\n\n\t\t\t\tthis.columns.unshift(column);\n\n\t\t\t\tthis.headersElement.insertBefore(column.getElement(), this.headersElement.firstChild);\n\t\t\t} else {\n\n\t\t\t\tthis.columns.push(column);\n\n\t\t\t\tthis.headersElement.appendChild(column.getElement());\n\t\t\t}\n\t\t}\n\n\t\treturn column;\n\t};\n\n\tColumnManager.prototype.registerColumnField = function (col) {\n\n\t\tif (col.definition.field) {\n\n\t\t\tthis.columnsByField[col.definition.field] = col;\n\t\t}\n\t};\n\n\tColumnManager.prototype.registerColumnPosition = function (col) {\n\n\t\tthis.columnsByIndex.push(col);\n\t};\n\n\tColumnManager.prototype._reIndexColumns = function () {\n\n\t\tthis.columnsByIndex = [];\n\n\t\tthis.columns.forEach(function (column) {\n\n\t\t\tcolumn.reRegisterPosition();\n\t\t});\n\t};\n\n\t//ensure column headers take up the correct amount of space in column groups\n\n\n\tColumnManager.prototype._verticalAlignHeaders = function () {\n\n\t\tvar self = this,\n\t\t minHeight = 0;\n\n\t\tself.columns.forEach(function (column) {\n\n\t\t\tvar height;\n\n\t\t\tcolumn.clearVerticalAlign();\n\n\t\t\theight = column.getHeight();\n\n\t\t\tif (height > minHeight) {\n\n\t\t\t\tminHeight = height;\n\t\t\t}\n\t\t});\n\n\t\tself.columns.forEach(function (column) {\n\n\t\t\tcolumn.verticalAlign(self.table.options.columnVertAlign, minHeight);\n\t\t});\n\n\t\tself.rowManager.adjustTableSize();\n\t};\n\n\t//////////////// Column Details /////////////////\n\n\n\tColumnManager.prototype.findColumn = function (subject) {\n\n\t\tvar self = this;\n\n\t\tif ((typeof subject === 'undefined' ? 'undefined' : _typeof(subject)) == \"object\") {\n\n\t\t\tif (subject instanceof Column) {\n\n\t\t\t\t//subject is column element\n\n\n\t\t\t\treturn subject;\n\t\t\t} else if (subject instanceof ColumnComponent) {\n\n\t\t\t\t//subject is public column component\n\n\n\t\t\t\treturn subject._getSelf() || false;\n\t\t\t} else if (typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement) {\n\n\t\t\t\t//subject is a HTML element of the column header\n\n\n\t\t\t\tvar match = self.columns.find(function (column) {\n\n\t\t\t\t\treturn column.element === subject;\n\t\t\t\t});\n\n\t\t\t\treturn match || false;\n\t\t\t}\n\t\t} else {\n\n\t\t\t//subject should be treated as the field name of the column\n\n\n\t\t\treturn this.columnsByField[subject] || false;\n\t\t}\n\n\t\t//catch all for any other type of input\n\n\n\t\treturn false;\n\t};\n\n\tColumnManager.prototype.getColumnByField = function (field) {\n\n\t\treturn this.columnsByField[field];\n\t};\n\n\tColumnManager.prototype.getColumnByIndex = function (index) {\n\n\t\treturn this.columnsByIndex[index];\n\t};\n\n\tColumnManager.prototype.getFirstVisibileColumn = function (index) {\n\n\t\tvar index = this.columnsByIndex.findIndex(function (col) {\n\n\t\t\treturn col.visible;\n\t\t});\n\n\t\treturn index > -1 ? this.columnsByIndex[index] : false;\n\t};\n\n\tColumnManager.prototype.getColumns = function () {\n\n\t\treturn this.columns;\n\t};\n\n\tColumnManager.prototype.findColumnIndex = function (column) {\n\n\t\treturn this.columnsByIndex.findIndex(function (col) {\n\n\t\t\treturn column === col;\n\t\t});\n\t};\n\n\t//return all columns that are not groups\n\n\n\tColumnManager.prototype.getRealColumns = function () {\n\n\t\treturn this.columnsByIndex;\n\t};\n\n\t//travers across columns and call action\n\n\n\tColumnManager.prototype.traverse = function (callback) {\n\n\t\tvar self = this;\n\n\t\tself.columnsByIndex.forEach(function (column, i) {\n\n\t\t\tcallback(column, i);\n\t\t});\n\t};\n\n\t//get defintions of actual columns\n\n\n\tColumnManager.prototype.getDefinitions = function (active) {\n\n\t\tvar self = this,\n\t\t output = [];\n\n\t\tself.columnsByIndex.forEach(function (column) {\n\n\t\t\tif (!active || active && column.visible) {\n\n\t\t\t\toutput.push(column.getDefinition());\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t};\n\n\t//get full nested definition tree\n\n\n\tColumnManager.prototype.getDefinitionTree = function () {\n\n\t\tvar self = this,\n\t\t output = [];\n\n\t\tself.columns.forEach(function (column) {\n\n\t\t\toutput.push(column.getDefinition(true));\n\t\t});\n\n\t\treturn output;\n\t};\n\n\tColumnManager.prototype.getComponents = function (structured) {\n\n\t\tvar self = this,\n\t\t output = [],\n\t\t columns = structured ? self.columns : self.columnsByIndex;\n\n\t\tcolumns.forEach(function (column) {\n\n\t\t\toutput.push(column.getComponent());\n\t\t});\n\n\t\treturn output;\n\t};\n\n\tColumnManager.prototype.getWidth = function () {\n\n\t\tvar width = 0;\n\n\t\tthis.columnsByIndex.forEach(function (column) {\n\n\t\t\tif (column.visible) {\n\n\t\t\t\twidth += column.getWidth();\n\t\t\t}\n\t\t});\n\n\t\treturn width;\n\t};\n\n\tColumnManager.prototype.moveColumn = function (from, to, after) {\n\n\t\tthis._moveColumnInArray(this.columns, from, to, after);\n\n\t\tthis._moveColumnInArray(this.columnsByIndex, from, to, after, true);\n\n\t\tif (this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)) {\n\n\t\t\tthis.table.modules.responsiveLayout.initialize();\n\t\t}\n\n\t\tif (this.table.options.columnMoved) {\n\n\t\t\tthis.table.options.columnMoved.call(this.table, from.getComponent(), this.table.columnManager.getComponents());\n\t\t}\n\n\t\tif (this.table.options.persistentLayout && this.table.modExists(\"persistence\", true)) {\n\n\t\t\tthis.table.modules.persistence.save(\"columns\");\n\t\t}\n\t};\n\n\tColumnManager.prototype._moveColumnInArray = function (columns, from, to, after, updateRows) {\n\n\t\tvar fromIndex = columns.indexOf(from),\n\t\t toIndex;\n\n\t\tif (fromIndex > -1) {\n\n\t\t\tcolumns.splice(fromIndex, 1);\n\n\t\t\ttoIndex = columns.indexOf(to);\n\n\t\t\tif (toIndex > -1) {\n\n\t\t\t\tif (after) {\n\n\t\t\t\t\ttoIndex = toIndex + 1;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\ttoIndex = fromIndex;\n\t\t\t}\n\n\t\t\tcolumns.splice(toIndex, 0, from);\n\n\t\t\tif (updateRows) {\n\n\t\t\t\tthis.table.rowManager.rows.forEach(function (row) {\n\n\t\t\t\t\tif (row.cells.length) {\n\n\t\t\t\t\t\tvar cell = row.cells.splice(fromIndex, 1)[0];\n\n\t\t\t\t\t\trow.cells.splice(toIndex, 0, cell);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t};\n\n\tColumnManager.prototype.scrollToColumn = function (column, position, ifVisible) {\n\t\tvar _this = this;\n\n\t\tvar left = 0,\n\t\t offset = 0,\n\t\t adjust = 0,\n\t\t colEl = column.getElement();\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tif (typeof position === \"undefined\") {\n\n\t\t\t\tposition = _this.table.options.scrollToColumnPosition;\n\t\t\t}\n\n\t\t\tif (typeof ifVisible === \"undefined\") {\n\n\t\t\t\tifVisible = _this.table.options.scrollToColumnIfVisible;\n\t\t\t}\n\n\t\t\tif (column.visible) {\n\n\t\t\t\t//align to correct position\n\n\n\t\t\t\tswitch (position) {\n\n\t\t\t\t\tcase \"middle\":\n\n\t\t\t\t\tcase \"center\":\n\n\t\t\t\t\t\tadjust = -_this.element.clientWidth / 2;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"right\":\n\n\t\t\t\t\t\tadjust = colEl.clientWidth - _this.headersElement.clientWidth;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\t//check column visibility\n\n\n\t\t\t\tif (!ifVisible) {\n\n\t\t\t\t\toffset = colEl.offsetLeft;\n\n\t\t\t\t\tif (offset > 0 && offset + colEl.offsetWidth < _this.element.clientWidth) {\n\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t//calculate scroll position\n\n\n\t\t\t\tleft = colEl.offsetLeft + _this.element.scrollLeft + adjust;\n\n\t\t\t\tleft = Math.max(Math.min(left, _this.table.rowManager.element.scrollWidth - _this.table.rowManager.element.clientWidth), 0);\n\n\t\t\t\t_this.table.rowManager.scrollHorizontal(left);\n\n\t\t\t\t_this.scrollHorizontal(left);\n\n\t\t\t\tresolve();\n\t\t\t} else {\n\n\t\t\t\tconsole.warn(\"Scroll Error - Column not visible\");\n\n\t\t\t\treject(\"Scroll Error - Column not visible\");\n\t\t\t}\n\t\t});\n\t};\n\n\t//////////////// Cell Management /////////////////\n\n\n\tColumnManager.prototype.generateCells = function (row) {\n\n\t\tvar self = this;\n\n\t\tvar cells = [];\n\n\t\tself.columnsByIndex.forEach(function (column) {\n\n\t\t\tcells.push(column.generateCell(row));\n\t\t});\n\n\t\treturn cells;\n\t};\n\n\t//////////////// Column Management /////////////////\n\n\n\tColumnManager.prototype.getFlexBaseWidth = function () {\n\n\t\tvar self = this,\n\t\t totalWidth = self.table.element.clientWidth,\n\t\t //table element width\n\n\n\t\tfixedWidth = 0;\n\n\t\t//adjust for vertical scrollbar if present\n\n\n\t\tif (self.rowManager.element.scrollHeight > self.rowManager.element.clientHeight) {\n\n\t\t\ttotalWidth -= self.rowManager.element.offsetWidth - self.rowManager.element.clientWidth;\n\t\t}\n\n\t\tthis.columnsByIndex.forEach(function (column) {\n\n\t\t\tvar width, minWidth, colWidth;\n\n\t\t\tif (column.visible) {\n\n\t\t\t\twidth = column.definition.width || 0;\n\n\t\t\t\tminWidth = typeof column.minWidth == \"undefined\" ? self.table.options.columnMinWidth : parseInt(column.minWidth);\n\n\t\t\t\tif (typeof width == \"string\") {\n\n\t\t\t\t\tif (width.indexOf(\"%\") > -1) {\n\n\t\t\t\t\t\tcolWidth = totalWidth / 100 * parseInt(width);\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tcolWidth = parseInt(width);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\tcolWidth = width;\n\t\t\t\t}\n\n\t\t\t\tfixedWidth += colWidth > minWidth ? colWidth : minWidth;\n\t\t\t}\n\t\t});\n\n\t\treturn fixedWidth;\n\t};\n\n\tColumnManager.prototype.addColumn = function (definition, before, nextToColumn) {\n\n\t\tvar column = this._addColumn(definition, before, nextToColumn);\n\n\t\tthis._reIndexColumns();\n\n\t\tif (this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)) {\n\n\t\t\tthis.table.modules.responsiveLayout.initialize();\n\t\t}\n\n\t\tif (this.table.modExists(\"columnCalcs\")) {\n\n\t\t\tthis.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);\n\t\t}\n\n\t\tthis.redraw();\n\n\t\tif (this.table.modules.layout.getMode() != \"fitColumns\") {\n\n\t\t\tcolumn.reinitializeWidth();\n\t\t}\n\n\t\tthis._verticalAlignHeaders();\n\n\t\tthis.table.rowManager.reinitialize();\n\t};\n\n\t//remove column from system\n\n\n\tColumnManager.prototype.deregisterColumn = function (column) {\n\n\t\tvar field = column.getField(),\n\t\t index;\n\n\t\t//remove from field list\n\n\n\t\tif (field) {\n\n\t\t\tdelete this.columnsByField[field];\n\t\t}\n\n\t\t//remove from index list\n\n\n\t\tindex = this.columnsByIndex.indexOf(column);\n\n\t\tif (index > -1) {\n\n\t\t\tthis.columnsByIndex.splice(index, 1);\n\t\t}\n\n\t\t//remove from column list\n\n\n\t\tindex = this.columns.indexOf(column);\n\n\t\tif (index > -1) {\n\n\t\t\tthis.columns.splice(index, 1);\n\t\t}\n\n\t\tif (this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)) {\n\n\t\t\tthis.table.modules.responsiveLayout.initialize();\n\t\t}\n\n\t\tthis.redraw();\n\t};\n\n\t//redraw columns\n\n\n\tColumnManager.prototype.redraw = function (force) {\n\n\t\tif (force) {\n\n\t\t\tif (Tabulator.prototype.helpers.elVisible(this.element)) {\n\n\t\t\t\tthis._verticalAlignHeaders();\n\t\t\t}\n\n\t\t\tthis.table.rowManager.resetScroll();\n\n\t\t\tthis.table.rowManager.reinitialize();\n\t\t}\n\n\t\tif (this.table.modules.layout.getMode() == \"fitColumns\") {\n\n\t\t\tthis.table.modules.layout.layout();\n\t\t} else {\n\n\t\t\tif (force) {\n\n\t\t\t\tthis.table.modules.layout.layout();\n\t\t\t} else {\n\n\t\t\t\tif (this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)) {\n\n\t\t\t\t\tthis.table.modules.responsiveLayout.update();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (this.table.modExists(\"frozenColumns\")) {\n\n\t\t\tthis.table.modules.frozenColumns.layout();\n\t\t}\n\n\t\tif (this.table.modExists(\"columnCalcs\")) {\n\n\t\t\tthis.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);\n\t\t}\n\n\t\tif (force) {\n\n\t\t\tif (this.table.options.persistentLayout && this.table.modExists(\"persistence\", true)) {\n\n\t\t\t\tthis.table.modules.persistence.save(\"columns\");\n\t\t\t}\n\n\t\t\tif (this.table.modExists(\"columnCalcs\")) {\n\n\t\t\t\tthis.table.modules.columnCalcs.redraw();\n\t\t\t}\n\t\t}\n\n\t\tthis.table.footerManager.redraw();\n\t};\n\n\t//public column object\n\n\tvar ColumnComponent = function ColumnComponent(column) {\n\n\t\tthis._column = column;\n\n\t\tthis.type = \"ColumnComponent\";\n\t};\n\n\tColumnComponent.prototype.getElement = function () {\n\n\t\treturn this._column.getElement();\n\t};\n\n\tColumnComponent.prototype.getDefinition = function () {\n\n\t\treturn this._column.getDefinition();\n\t};\n\n\tColumnComponent.prototype.getField = function () {\n\n\t\treturn this._column.getField();\n\t};\n\n\tColumnComponent.prototype.getCells = function () {\n\n\t\tvar cells = [];\n\n\t\tthis._column.cells.forEach(function (cell) {\n\n\t\t\tcells.push(cell.getComponent());\n\t\t});\n\n\t\treturn cells;\n\t};\n\n\tColumnComponent.prototype.getVisibility = function () {\n\n\t\treturn this._column.visible;\n\t};\n\n\tColumnComponent.prototype.show = function () {\n\n\t\tif (this._column.isGroup) {\n\n\t\t\tthis._column.columns.forEach(function (column) {\n\n\t\t\t\tcolumn.show();\n\t\t\t});\n\t\t} else {\n\n\t\t\tthis._column.show();\n\t\t}\n\t};\n\n\tColumnComponent.prototype.hide = function () {\n\n\t\tif (this._column.isGroup) {\n\n\t\t\tthis._column.columns.forEach(function (column) {\n\n\t\t\t\tcolumn.hide();\n\t\t\t});\n\t\t} else {\n\n\t\t\tthis._column.hide();\n\t\t}\n\t};\n\n\tColumnComponent.prototype.toggle = function () {\n\n\t\tif (this._column.visible) {\n\n\t\t\tthis.hide();\n\t\t} else {\n\n\t\t\tthis.show();\n\t\t}\n\t};\n\n\tColumnComponent.prototype.delete = function () {\n\n\t\tthis._column.delete();\n\t};\n\n\tColumnComponent.prototype.getSubColumns = function () {\n\n\t\tvar output = [];\n\n\t\tif (this._column.columns.length) {\n\n\t\t\tthis._column.columns.forEach(function (column) {\n\n\t\t\t\toutput.push(column.getComponent());\n\t\t\t});\n\t\t}\n\n\t\treturn output;\n\t};\n\n\tColumnComponent.prototype.getParentColumn = function () {\n\n\t\treturn this._column.parent instanceof Column ? this._column.parent.getComponent() : false;\n\t};\n\n\tColumnComponent.prototype._getSelf = function () {\n\n\t\treturn this._column;\n\t};\n\n\tColumnComponent.prototype.scrollTo = function () {\n\n\t\treturn this._column.table.columnManager.scrollToColumn(this._column);\n\t};\n\n\tColumnComponent.prototype.getTable = function () {\n\n\t\treturn this._column.table;\n\t};\n\n\tColumnComponent.prototype.headerFilterFocus = function () {\n\n\t\tif (this._column.table.modExists(\"filter\", true)) {\n\n\t\t\tthis._column.table.modules.filter.setHeaderFilterFocus(this._column);\n\t\t}\n\t};\n\n\tColumnComponent.prototype.reloadHeaderFilter = function () {\n\n\t\tif (this._column.table.modExists(\"filter\", true)) {\n\n\t\t\tthis._column.table.modules.filter.reloadHeaderFilter(this._column);\n\t\t}\n\t};\n\n\tColumnComponent.prototype.setHeaderFilterValue = function (value) {\n\n\t\tif (this._column.table.modExists(\"filter\", true)) {\n\n\t\t\tthis._column.table.modules.filter.setHeaderFilterValue(this._column, value);\n\t\t}\n\t};\n\n\tColumnComponent.prototype.getNextColumn = function () {\n\n\t\tvar nextCol = this._column.nextColumn();\n\n\t\treturn nextCol ? nextCol.getComponent() : false;\n\t};\n\n\tColumnComponent.prototype.getPrevColumn = function () {\n\n\t\tvar prevCol = this._column.prevColumn();\n\n\t\treturn prevCol ? prevCol.getComponent() : false;\n\t};\n\n\tvar Column = function Column(def, parent) {\n\n\t\tvar self = this;\n\n\t\tthis.table = parent.table;\n\n\t\tthis.definition = def; //column definition\n\n\t\tthis.parent = parent; //hold parent object\n\n\t\tthis.type = \"column\"; //type of element\n\n\t\tthis.columns = []; //child columns\n\n\t\tthis.cells = []; //cells bound to this column\n\n\t\tthis.element = this.createElement(); //column header element\n\n\t\tthis.contentElement = false;\n\n\t\tthis.groupElement = this.createGroupElement(); //column group holder element\n\n\t\tthis.isGroup = false;\n\n\t\tthis.tooltip = false; //hold column tooltip\n\n\t\tthis.hozAlign = \"\"; //horizontal text alignment\n\n\n\t\t//multi dimentional filed handling\n\n\t\tthis.field = \"\";\n\n\t\tthis.fieldStructure = \"\";\n\n\t\tthis.getFieldValue = \"\";\n\n\t\tthis.setFieldValue = \"\";\n\n\t\tthis.setField(this.definition.field);\n\n\t\tthis.checkDefinition();\n\n\t\tthis.modules = {}; //hold module variables;\n\n\n\t\tthis.cellEvents = {\n\n\t\t\tcellClick: false,\n\n\t\t\tcellDblClick: false,\n\n\t\t\tcellContext: false,\n\n\t\t\tcellTap: false,\n\n\t\t\tcellDblTap: false,\n\n\t\t\tcellTapHold: false,\n\n\t\t\tcellMouseEnter: false,\n\n\t\t\tcellMouseLeave: false,\n\n\t\t\tcellMouseOver: false,\n\n\t\t\tcellMouseOut: false,\n\n\t\t\tcellMouseMove: false\n\n\t\t};\n\n\t\tthis.width = null; //column width\n\n\t\tthis.widthStyled = \"\"; //column width prestyled to improve render efficiency\n\n\t\tthis.minWidth = null; //column minimum width\n\n\t\tthis.minWidthStyled = \"\"; //column minimum prestyled to improve render efficiency\n\n\t\tthis.widthFixed = false; //user has specified a width for this column\n\n\n\t\tthis.visible = true; //default visible state\n\n\n\t\tthis._mapDepricatedFunctionality();\n\n\t\t//initialize column\n\n\t\tif (def.columns) {\n\n\t\t\tthis.isGroup = true;\n\n\t\t\tdef.columns.forEach(function (def, i) {\n\n\t\t\t\tvar newCol = new Column(def, self);\n\n\t\t\t\tself.attachColumn(newCol);\n\t\t\t});\n\n\t\t\tself.checkColumnVisibility();\n\t\t} else {\n\n\t\t\tparent.registerColumnField(this);\n\t\t}\n\n\t\tif (def.rowHandle && this.table.options.movableRows !== false && this.table.modExists(\"moveRow\")) {\n\n\t\t\tthis.table.modules.moveRow.setHandle(true);\n\t\t}\n\n\t\tthis._buildHeader();\n\t};\n\n\tColumn.prototype.createElement = function () {\n\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-col\");\n\n\t\tel.setAttribute(\"role\", \"columnheader\");\n\n\t\tel.setAttribute(\"aria-sort\", \"none\");\n\n\t\treturn el;\n\t};\n\n\tColumn.prototype.createGroupElement = function () {\n\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-col-group-cols\");\n\n\t\treturn el;\n\t};\n\n\tColumn.prototype.checkDefinition = function () {\n\t\tvar _this2 = this;\n\n\t\tObject.keys(this.definition).forEach(function (key) {\n\n\t\t\tif (_this2.defaultOptionList.indexOf(key) === -1) {\n\n\t\t\t\tconsole.warn(\"Invalid column definition option in '\" + (_this2.field || _this2.definition.title) + \"' column:\", key);\n\t\t\t}\n\t\t});\n\t};\n\n\tColumn.prototype.setField = function (field) {\n\n\t\tthis.field = field;\n\n\t\tthis.fieldStructure = field ? this.table.options.nestedFieldSeparator ? field.split(this.table.options.nestedFieldSeparator) : [field] : [];\n\n\t\tthis.getFieldValue = this.fieldStructure.length > 1 ? this._getNestedData : this._getFlatData;\n\n\t\tthis.setFieldValue = this.fieldStructure.length > 1 ? this._setNesteData : this._setFlatData;\n\t};\n\n\t//register column position with column manager\n\n\tColumn.prototype.registerColumnPosition = function (column) {\n\n\t\tthis.parent.registerColumnPosition(column);\n\t};\n\n\t//register column position with column manager\n\n\tColumn.prototype.registerColumnField = function (column) {\n\n\t\tthis.parent.registerColumnField(column);\n\t};\n\n\t//trigger position registration\n\n\tColumn.prototype.reRegisterPosition = function () {\n\n\t\tif (this.isGroup) {\n\n\t\t\tthis.columns.forEach(function (column) {\n\n\t\t\t\tcolumn.reRegisterPosition();\n\t\t\t});\n\t\t} else {\n\n\t\t\tthis.registerColumnPosition(this);\n\t\t}\n\t};\n\n\tColumn.prototype._mapDepricatedFunctionality = function () {\n\n\t\tif (typeof this.definition.hideInHtml !== \"undefined\") {\n\n\t\t\tthis.definition.htmlOutput = !this.definition.hideInHtml;\n\n\t\t\tconsole.warn(\"hideInHtml column definition property is depricated, you should now use htmlOutput\");\n\t\t}\n\t};\n\n\tColumn.prototype.setTooltip = function () {\n\n\t\tvar self = this,\n\t\t def = self.definition;\n\n\t\t//set header tooltips\n\n\t\tvar tooltip = def.headerTooltip || def.tooltip === false ? def.headerTooltip : self.table.options.tooltipsHeader;\n\n\t\tif (tooltip) {\n\n\t\t\tif (tooltip === true) {\n\n\t\t\t\tif (def.field) {\n\n\t\t\t\t\tself.table.modules.localize.bind(\"columns|\" + def.field, function (value) {\n\n\t\t\t\t\t\tself.element.setAttribute(\"title\", value || def.title);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\n\t\t\t\t\tself.element.setAttribute(\"title\", def.title);\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\tif (typeof tooltip == \"function\") {\n\n\t\t\t\t\ttooltip = tooltip(self.getComponent());\n\n\t\t\t\t\tif (tooltip === false) {\n\n\t\t\t\t\t\ttooltip = \"\";\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tself.element.setAttribute(\"title\", tooltip);\n\t\t\t}\n\t\t} else {\n\n\t\t\tself.element.setAttribute(\"title\", \"\");\n\t\t}\n\t};\n\n\t//build header element\n\n\tColumn.prototype._buildHeader = function () {\n\n\t\tvar self = this,\n\t\t def = self.definition;\n\n\t\twhile (self.element.firstChild) {\n\t\t\tself.element.removeChild(self.element.firstChild);\n\t\t}if (def.headerVertical) {\n\n\t\t\tself.element.classList.add(\"tabulator-col-vertical\");\n\n\t\t\tif (def.headerVertical === \"flip\") {\n\n\t\t\t\tself.element.classList.add(\"tabulator-col-vertical-flip\");\n\t\t\t}\n\t\t}\n\n\t\tself.contentElement = self._bindEvents();\n\n\t\tself.contentElement = self._buildColumnHeaderContent();\n\n\t\tself.element.appendChild(self.contentElement);\n\n\t\tif (self.isGroup) {\n\n\t\t\tself._buildGroupHeader();\n\t\t} else {\n\n\t\t\tself._buildColumnHeader();\n\t\t}\n\n\t\tself.setTooltip();\n\n\t\t//set resizable handles\n\n\t\tif (self.table.options.resizableColumns && self.table.modExists(\"resizeColumns\")) {\n\n\t\t\tself.table.modules.resizeColumns.initializeColumn(\"header\", self, self.element);\n\t\t}\n\n\t\t//set resizable handles\n\n\t\tif (def.headerFilter && self.table.modExists(\"filter\") && self.table.modExists(\"edit\")) {\n\n\t\t\tif (typeof def.headerFilterPlaceholder !== \"undefined\" && def.field) {\n\n\t\t\t\tself.table.modules.localize.setHeaderFilterColumnPlaceholder(def.field, def.headerFilterPlaceholder);\n\t\t\t}\n\n\t\t\tself.table.modules.filter.initializeColumn(self);\n\t\t}\n\n\t\t//set resizable handles\n\n\t\tif (self.table.modExists(\"frozenColumns\")) {\n\n\t\t\tself.table.modules.frozenColumns.initializeColumn(self);\n\t\t}\n\n\t\t//set movable column\n\n\t\tif (self.table.options.movableColumns && !self.isGroup && self.table.modExists(\"moveColumn\")) {\n\n\t\t\tself.table.modules.moveColumn.initializeColumn(self);\n\t\t}\n\n\t\t//set calcs column\n\n\t\tif ((def.topCalc || def.bottomCalc) && self.table.modExists(\"columnCalcs\")) {\n\n\t\t\tself.table.modules.columnCalcs.initializeColumn(self);\n\t\t}\n\n\t\t//update header tooltip on mouse enter\n\n\t\tself.element.addEventListener(\"mouseenter\", function (e) {\n\n\t\t\tself.setTooltip();\n\t\t});\n\t};\n\n\tColumn.prototype._bindEvents = function () {\n\n\t\tvar self = this,\n\t\t def = self.definition,\n\t\t dblTap,\n\t\t tapHold,\n\t\t tap;\n\n\t\t//setup header click event bindings\n\n\t\tif (typeof def.headerClick == \"function\") {\n\n\t\t\tself.element.addEventListener(\"click\", function (e) {\n\t\t\t\tdef.headerClick(e, self.getComponent());\n\t\t\t});\n\t\t}\n\n\t\tif (typeof def.headerDblClick == \"function\") {\n\n\t\t\tself.element.addEventListener(\"dblclick\", function (e) {\n\t\t\t\tdef.headerDblClick(e, self.getComponent());\n\t\t\t});\n\t\t}\n\n\t\tif (typeof def.headerContext == \"function\") {\n\n\t\t\tself.element.addEventListener(\"contextmenu\", function (e) {\n\t\t\t\tdef.headerContext(e, self.getComponent());\n\t\t\t});\n\t\t}\n\n\t\t//setup header tap event bindings\n\n\t\tif (typeof def.headerTap == \"function\") {\n\n\t\t\ttap = false;\n\n\t\t\tself.element.addEventListener(\"touchstart\", function (e) {\n\n\t\t\t\ttap = true;\n\t\t\t}, { passive: true });\n\n\t\t\tself.element.addEventListener(\"touchend\", function (e) {\n\n\t\t\t\tif (tap) {\n\n\t\t\t\t\tdef.headerTap(e, self.getComponent());\n\t\t\t\t}\n\n\t\t\t\ttap = false;\n\t\t\t});\n\t\t}\n\n\t\tif (typeof def.headerDblTap == \"function\") {\n\n\t\t\tdblTap = null;\n\n\t\t\tself.element.addEventListener(\"touchend\", function (e) {\n\n\t\t\t\tif (dblTap) {\n\n\t\t\t\t\tclearTimeout(dblTap);\n\n\t\t\t\t\tdblTap = null;\n\n\t\t\t\t\tdef.headerDblTap(e, self.getComponent());\n\t\t\t\t} else {\n\n\t\t\t\t\tdblTap = setTimeout(function () {\n\n\t\t\t\t\t\tclearTimeout(dblTap);\n\n\t\t\t\t\t\tdblTap = null;\n\t\t\t\t\t}, 300);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (typeof def.headerTapHold == \"function\") {\n\n\t\t\ttapHold = null;\n\n\t\t\tself.element.addEventListener(\"touchstart\", function (e) {\n\n\t\t\t\tclearTimeout(tapHold);\n\n\t\t\t\ttapHold = setTimeout(function () {\n\n\t\t\t\t\tclearTimeout(tapHold);\n\n\t\t\t\t\ttapHold = null;\n\n\t\t\t\t\ttap = false;\n\n\t\t\t\t\tdef.headerTapHold(e, self.getComponent());\n\t\t\t\t}, 1000);\n\t\t\t}, { passive: true });\n\n\t\t\tself.element.addEventListener(\"touchend\", function (e) {\n\n\t\t\t\tclearTimeout(tapHold);\n\n\t\t\t\ttapHold = null;\n\t\t\t});\n\t\t}\n\n\t\t//store column cell click event bindings\n\n\t\tif (typeof def.cellClick == \"function\") {\n\n\t\t\tself.cellEvents.cellClick = def.cellClick;\n\t\t}\n\n\t\tif (typeof def.cellDblClick == \"function\") {\n\n\t\t\tself.cellEvents.cellDblClick = def.cellDblClick;\n\t\t}\n\n\t\tif (typeof def.cellContext == \"function\") {\n\n\t\t\tself.cellEvents.cellContext = def.cellContext;\n\t\t}\n\n\t\t//store column mouse event bindings\n\n\t\tif (typeof def.cellMouseEnter == \"function\") {\n\n\t\t\tself.cellEvents.cellMouseEnter = def.cellMouseEnter;\n\t\t}\n\n\t\tif (typeof def.cellMouseLeave == \"function\") {\n\n\t\t\tself.cellEvents.cellMouseLeave = def.cellMouseLeave;\n\t\t}\n\n\t\tif (typeof def.cellMouseOver == \"function\") {\n\n\t\t\tself.cellEvents.cellMouseOver = def.cellMouseOver;\n\t\t}\n\n\t\tif (typeof def.cellMouseOut == \"function\") {\n\n\t\t\tself.cellEvents.cellMouseOut = def.cellMouseOut;\n\t\t}\n\n\t\tif (typeof def.cellMouseMove == \"function\") {\n\n\t\t\tself.cellEvents.cellMouseMove = def.cellMouseMove;\n\t\t}\n\n\t\t//setup column cell tap event bindings\n\n\t\tif (typeof def.cellTap == \"function\") {\n\n\t\t\tself.cellEvents.cellTap = def.cellTap;\n\t\t}\n\n\t\tif (typeof def.cellDblTap == \"function\") {\n\n\t\t\tself.cellEvents.cellDblTap = def.cellDblTap;\n\t\t}\n\n\t\tif (typeof def.cellTapHold == \"function\") {\n\n\t\t\tself.cellEvents.cellTapHold = def.cellTapHold;\n\t\t}\n\n\t\t//setup column cell edit callbacks\n\n\t\tif (typeof def.cellEdited == \"function\") {\n\n\t\t\tself.cellEvents.cellEdited = def.cellEdited;\n\t\t}\n\n\t\tif (typeof def.cellEditing == \"function\") {\n\n\t\t\tself.cellEvents.cellEditing = def.cellEditing;\n\t\t}\n\n\t\tif (typeof def.cellEditCancelled == \"function\") {\n\n\t\t\tself.cellEvents.cellEditCancelled = def.cellEditCancelled;\n\t\t}\n\t};\n\n\t//build header element for header\n\n\tColumn.prototype._buildColumnHeader = function () {\n\n\t\tvar self = this,\n\t\t def = self.definition,\n\t\t table = self.table,\n\t\t sortable;\n\n\t\t//set column sorter\n\n\t\tif (table.modExists(\"sort\")) {\n\n\t\t\ttable.modules.sort.initializeColumn(self, self.contentElement);\n\t\t}\n\n\t\t//set column formatter\n\n\t\tif (table.modExists(\"format\")) {\n\n\t\t\ttable.modules.format.initializeColumn(self);\n\t\t}\n\n\t\t//set column editor\n\n\t\tif (typeof def.editor != \"undefined\" && table.modExists(\"edit\")) {\n\n\t\t\ttable.modules.edit.initializeColumn(self);\n\t\t}\n\n\t\t//set colum validator\n\n\t\tif (typeof def.validator != \"undefined\" && table.modExists(\"validate\")) {\n\n\t\t\ttable.modules.validate.initializeColumn(self);\n\t\t}\n\n\t\t//set column mutator\n\n\t\tif (table.modExists(\"mutator\")) {\n\n\t\t\ttable.modules.mutator.initializeColumn(self);\n\t\t}\n\n\t\t//set column accessor\n\n\t\tif (table.modExists(\"accessor\")) {\n\n\t\t\ttable.modules.accessor.initializeColumn(self);\n\t\t}\n\n\t\t//set respoviveLayout\n\n\t\tif (_typeof(table.options.responsiveLayout) && table.modExists(\"responsiveLayout\")) {\n\n\t\t\ttable.modules.responsiveLayout.initializeColumn(self);\n\t\t}\n\n\t\t//set column visibility\n\n\t\tif (typeof def.visible != \"undefined\") {\n\n\t\t\tif (def.visible) {\n\n\t\t\t\tself.show(true);\n\t\t\t} else {\n\n\t\t\t\tself.hide(true);\n\t\t\t}\n\t\t}\n\n\t\t//asign additional css classes to column header\n\n\t\tif (def.cssClass) {\n\n\t\t\tvar classeNames = def.cssClass.split(\" \");\n\n\t\t\tclasseNames.forEach(function (className) {\n\n\t\t\t\tself.element.classList.add(className);\n\t\t\t});\n\t\t}\n\n\t\tif (def.field) {\n\n\t\t\tthis.element.setAttribute(\"tabulator-field\", def.field);\n\t\t}\n\n\t\t//set min width if present\n\n\t\tself.setMinWidth(typeof def.minWidth == \"undefined\" ? self.table.options.columnMinWidth : parseInt(def.minWidth));\n\n\t\tself.reinitializeWidth();\n\n\t\t//set tooltip if present\n\n\t\tself.tooltip = self.definition.tooltip || self.definition.tooltip === false ? self.definition.tooltip : self.table.options.tooltips;\n\n\t\t//set orizontal text alignment\n\n\t\tself.hozAlign = typeof self.definition.align == \"undefined\" ? \"\" : self.definition.align;\n\t};\n\n\tColumn.prototype._buildColumnHeaderContent = function () {\n\n\t\tvar self = this,\n\t\t def = self.definition,\n\t\t table = self.table;\n\n\t\tvar contentElement = document.createElement(\"div\");\n\n\t\tcontentElement.classList.add(\"tabulator-col-content\");\n\n\t\tcontentElement.appendChild(self._buildColumnHeaderTitle());\n\n\t\treturn contentElement;\n\t};\n\n\t//build title element of column\n\n\tColumn.prototype._buildColumnHeaderTitle = function () {\n\n\t\tvar self = this,\n\t\t def = self.definition,\n\t\t table = self.table,\n\t\t title;\n\n\t\tvar titleHolderElement = document.createElement(\"div\");\n\n\t\ttitleHolderElement.classList.add(\"tabulator-col-title\");\n\n\t\tif (def.editableTitle) {\n\n\t\t\tvar titleElement = document.createElement(\"input\");\n\n\t\t\ttitleElement.classList.add(\"tabulator-title-editor\");\n\n\t\t\ttitleElement.addEventListener(\"click\", function (e) {\n\n\t\t\t\te.stopPropagation();\n\n\t\t\t\ttitleElement.focus();\n\t\t\t});\n\n\t\t\ttitleElement.addEventListener(\"change\", function () {\n\n\t\t\t\tdef.title = titleElement.value;\n\n\t\t\t\ttable.options.columnTitleChanged.call(self.table, self.getComponent());\n\t\t\t});\n\n\t\t\ttitleHolderElement.appendChild(titleElement);\n\n\t\t\tif (def.field) {\n\n\t\t\t\ttable.modules.localize.bind(\"columns|\" + def.field, function (text) {\n\n\t\t\t\t\ttitleElement.value = text || def.title || \" \";\n\t\t\t\t});\n\t\t\t} else {\n\n\t\t\t\ttitleElement.value = def.title || \" \";\n\t\t\t}\n\t\t} else {\n\n\t\t\tif (def.field) {\n\n\t\t\t\ttable.modules.localize.bind(\"columns|\" + def.field, function (text) {\n\n\t\t\t\t\tself._formatColumnHeaderTitle(titleHolderElement, text || def.title || \" \");\n\t\t\t\t});\n\t\t\t} else {\n\n\t\t\t\tself._formatColumnHeaderTitle(titleHolderElement, def.title || \" \");\n\t\t\t}\n\t\t}\n\n\t\treturn titleHolderElement;\n\t};\n\n\tColumn.prototype._formatColumnHeaderTitle = function (el, title) {\n\n\t\tvar formatter, contents, params, mockCell;\n\n\t\tif (this.definition.titleFormatter && this.table.modExists(\"format\")) {\n\n\t\t\tformatter = this.table.modules.format.getFormatter(this.definition.titleFormatter);\n\n\t\t\tmockCell = {\n\n\t\t\t\tgetValue: function getValue() {\n\n\t\t\t\t\treturn title;\n\t\t\t\t},\n\n\t\t\t\tgetElement: function getElement() {\n\n\t\t\t\t\treturn el;\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t\tparams = this.definition.titleFormatterParams || {};\n\n\t\t\tparams = typeof params === \"function\" ? params() : params;\n\n\t\t\tcontents = formatter.call(this.table.modules.format, mockCell, params);\n\n\t\t\tswitch (typeof contents === 'undefined' ? 'undefined' : _typeof(contents)) {\n\n\t\t\t\tcase \"object\":\n\n\t\t\t\t\tif (contents instanceof Node) {\n\n\t\t\t\t\t\tel.appendChild(contents);\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tel.innerHTML = \"\";\n\n\t\t\t\t\t\tconsole.warn(\"Format Error - Title formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:\", contents);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"undefined\":\n\n\t\t\t\tcase \"null\":\n\n\t\t\t\t\tel.innerHTML = \"\";\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tel.innerHTML = contents;\n\n\t\t\t}\n\t\t} else {\n\n\t\t\tel.innerHTML = title;\n\t\t}\n\t};\n\n\t//build header element for column group\n\n\tColumn.prototype._buildGroupHeader = function () {\n\n\t\tthis.element.classList.add(\"tabulator-col-group\");\n\n\t\tthis.element.setAttribute(\"role\", \"columngroup\");\n\n\t\tthis.element.setAttribute(\"aria-title\", this.definition.title);\n\n\t\tthis.element.appendChild(this.groupElement);\n\t};\n\n\t//flat field lookup\n\n\tColumn.prototype._getFlatData = function (data) {\n\n\t\treturn data[this.field];\n\t};\n\n\t//nested field lookup\n\n\tColumn.prototype._getNestedData = function (data) {\n\n\t\tvar dataObj = data,\n\t\t structure = this.fieldStructure,\n\t\t length = structure.length,\n\t\t output;\n\n\t\tfor (var i = 0; i < length; i++) {\n\n\t\t\tdataObj = dataObj[structure[i]];\n\n\t\t\toutput = dataObj;\n\n\t\t\tif (!dataObj) {\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn output;\n\t};\n\n\t//flat field set\n\n\tColumn.prototype._setFlatData = function (data, value) {\n\n\t\tif (this.field) {\n\n\t\t\tdata[this.field] = value;\n\t\t}\n\t};\n\n\t//nested field set\n\n\tColumn.prototype._setNesteData = function (data, value) {\n\n\t\tvar dataObj = data,\n\t\t structure = this.fieldStructure,\n\t\t length = structure.length;\n\n\t\tfor (var i = 0; i < length; i++) {\n\n\t\t\tif (i == length - 1) {\n\n\t\t\t\tdataObj[structure[i]] = value;\n\t\t\t} else {\n\n\t\t\t\tif (!dataObj[structure[i]]) {\n\n\t\t\t\t\tdataObj[structure[i]] = {};\n\t\t\t\t}\n\n\t\t\t\tdataObj = dataObj[structure[i]];\n\t\t\t}\n\t\t}\n\t};\n\n\t//attach column to this group\n\n\tColumn.prototype.attachColumn = function (column) {\n\n\t\tvar self = this;\n\n\t\tif (self.groupElement) {\n\n\t\t\tself.columns.push(column);\n\n\t\t\tself.groupElement.appendChild(column.getElement());\n\t\t} else {\n\n\t\t\tconsole.warn(\"Column Warning - Column being attached to another column instead of column group\");\n\t\t}\n\t};\n\n\t//vertically align header in column\n\n\tColumn.prototype.verticalAlign = function (alignment, height) {\n\n\t\t//calculate height of column header and group holder element\n\n\t\tvar parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : height || this.parent.getHeadersElement().clientHeight;\n\n\t\t// var parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : this.parent.getHeadersElement().clientHeight;\n\n\n\t\tthis.element.style.height = parentHeight + \"px\";\n\n\t\tif (this.isGroup) {\n\n\t\t\tthis.groupElement.style.minHeight = parentHeight - this.contentElement.offsetHeight + \"px\";\n\t\t}\n\n\t\t//vertically align cell contents\n\n\t\tif (!this.isGroup && alignment !== \"top\") {\n\n\t\t\tif (alignment === \"bottom\") {\n\n\t\t\t\tthis.element.style.paddingTop = this.element.clientHeight - this.contentElement.offsetHeight + \"px\";\n\t\t\t} else {\n\n\t\t\t\tthis.element.style.paddingTop = (this.element.clientHeight - this.contentElement.offsetHeight) / 2 + \"px\";\n\t\t\t}\n\t\t}\n\n\t\tthis.columns.forEach(function (column) {\n\n\t\t\tcolumn.verticalAlign(alignment);\n\t\t});\n\t};\n\n\t//clear vertical alignmenet\n\n\tColumn.prototype.clearVerticalAlign = function () {\n\n\t\tthis.element.style.paddingTop = \"\";\n\n\t\tthis.element.style.height = \"\";\n\n\t\tthis.element.style.minHeight = \"\";\n\n\t\tthis.groupElement.style.minHeight = \"\";\n\n\t\tthis.columns.forEach(function (column) {\n\n\t\t\tcolumn.clearVerticalAlign();\n\t\t});\n\t};\n\n\t//// Retreive Column Information ////\n\n\n\t//return column header element\n\n\tColumn.prototype.getElement = function () {\n\n\t\treturn this.element;\n\t};\n\n\t//return colunm group element\n\n\tColumn.prototype.getGroupElement = function () {\n\n\t\treturn this.groupElement;\n\t};\n\n\t//return field name\n\n\tColumn.prototype.getField = function () {\n\n\t\treturn this.field;\n\t};\n\n\t//return the first column in a group\n\n\tColumn.prototype.getFirstColumn = function () {\n\n\t\tif (!this.isGroup) {\n\n\t\t\treturn this;\n\t\t} else {\n\n\t\t\tif (this.columns.length) {\n\n\t\t\t\treturn this.columns[0].getFirstColumn();\n\t\t\t} else {\n\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t};\n\n\t//return the last column in a group\n\n\tColumn.prototype.getLastColumn = function () {\n\n\t\tif (!this.isGroup) {\n\n\t\t\treturn this;\n\t\t} else {\n\n\t\t\tif (this.columns.length) {\n\n\t\t\t\treturn this.columns[this.columns.length - 1].getLastColumn();\n\t\t\t} else {\n\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t};\n\n\t//return all columns in a group\n\n\tColumn.prototype.getColumns = function () {\n\n\t\treturn this.columns;\n\t};\n\n\t//return all columns in a group\n\n\tColumn.prototype.getCells = function () {\n\n\t\treturn this.cells;\n\t};\n\n\t//retreive the top column in a group of columns\n\n\tColumn.prototype.getTopColumn = function () {\n\n\t\tif (this.parent.isGroup) {\n\n\t\t\treturn this.parent.getTopColumn();\n\t\t} else {\n\n\t\t\treturn this;\n\t\t}\n\t};\n\n\t//return column definition object\n\n\tColumn.prototype.getDefinition = function (updateBranches) {\n\n\t\tvar colDefs = [];\n\n\t\tif (this.isGroup && updateBranches) {\n\n\t\t\tthis.columns.forEach(function (column) {\n\n\t\t\t\tcolDefs.push(column.getDefinition(true));\n\t\t\t});\n\n\t\t\tthis.definition.columns = colDefs;\n\t\t}\n\n\t\treturn this.definition;\n\t};\n\n\t//////////////////// Actions ////////////////////\n\n\n\tColumn.prototype.checkColumnVisibility = function () {\n\n\t\tvar visible = false;\n\n\t\tthis.columns.forEach(function (column) {\n\n\t\t\tif (column.visible) {\n\n\t\t\t\tvisible = true;\n\t\t\t}\n\t\t});\n\n\t\tif (visible) {\n\n\t\t\tthis.show();\n\n\t\t\tthis.parent.table.options.columnVisibilityChanged.call(this.table, this.getComponent(), false);\n\t\t} else {\n\n\t\t\tthis.hide();\n\t\t}\n\t};\n\n\t//show column\n\n\tColumn.prototype.show = function (silent, responsiveToggle) {\n\n\t\tif (!this.visible) {\n\n\t\t\tthis.visible = true;\n\n\t\t\tthis.element.style.display = \"\";\n\n\t\t\tif (this.parent.isGroup) {\n\n\t\t\t\tthis.parent.checkColumnVisibility();\n\t\t\t}\n\n\t\t\tthis.cells.forEach(function (cell) {\n\n\t\t\t\tcell.show();\n\t\t\t});\n\n\t\t\tif (!this.isGroup && this.width === null) {\n\n\t\t\t\tthis.reinitializeWidth();\n\t\t\t}\n\n\t\t\tthis.table.columnManager._verticalAlignHeaders();\n\n\t\t\tif (this.table.options.persistentLayout && this.table.modExists(\"responsiveLayout\", true)) {\n\n\t\t\t\tthis.table.modules.persistence.save(\"columns\");\n\t\t\t}\n\n\t\t\tif (!responsiveToggle && this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)) {\n\n\t\t\t\tthis.table.modules.responsiveLayout.updateColumnVisibility(this, this.visible);\n\t\t\t}\n\n\t\t\tif (!silent) {\n\n\t\t\t\tthis.table.options.columnVisibilityChanged.call(this.table, this.getComponent(), true);\n\t\t\t}\n\n\t\t\tif (this.parent.isGroup) {\n\n\t\t\t\tthis.parent.matchChildWidths();\n\t\t\t}\n\t\t}\n\t};\n\n\t//hide column\n\n\tColumn.prototype.hide = function (silent, responsiveToggle) {\n\n\t\tif (this.visible) {\n\n\t\t\tthis.visible = false;\n\n\t\t\tthis.element.style.display = \"none\";\n\n\t\t\tthis.table.columnManager._verticalAlignHeaders();\n\n\t\t\tif (this.parent.isGroup) {\n\n\t\t\t\tthis.parent.checkColumnVisibility();\n\t\t\t}\n\n\t\t\tthis.cells.forEach(function (cell) {\n\n\t\t\t\tcell.hide();\n\t\t\t});\n\n\t\t\tif (this.table.options.persistentLayout && this.table.modExists(\"persistence\", true)) {\n\n\t\t\t\tthis.table.modules.persistence.save(\"columns\");\n\t\t\t}\n\n\t\t\tif (!responsiveToggle && this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)) {\n\n\t\t\t\tthis.table.modules.responsiveLayout.updateColumnVisibility(this, this.visible);\n\t\t\t}\n\n\t\t\tif (!silent) {\n\n\t\t\t\tthis.table.options.columnVisibilityChanged.call(this.table, this.getComponent(), false);\n\t\t\t}\n\n\t\t\tif (this.parent.isGroup) {\n\n\t\t\t\tthis.parent.matchChildWidths();\n\t\t\t}\n\t\t}\n\t};\n\n\tColumn.prototype.matchChildWidths = function () {\n\n\t\tvar childWidth = 0;\n\n\t\tif (this.contentElement && this.columns.length) {\n\n\t\t\tthis.columns.forEach(function (column) {\n\n\t\t\t\tif (column.visible) {\n\n\t\t\t\t\tchildWidth += column.getWidth();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.contentElement.style.maxWidth = childWidth - 1 + \"px\";\n\t\t}\n\t};\n\n\tColumn.prototype.setWidth = function (width) {\n\n\t\tthis.widthFixed = true;\n\n\t\tthis.setWidthActual(width);\n\t};\n\n\tColumn.prototype.setWidthActual = function (width) {\n\n\t\tif (isNaN(width)) {\n\n\t\t\twidth = Math.floor(this.table.element.clientWidth / 100 * parseInt(width));\n\t\t}\n\n\t\twidth = Math.max(this.minWidth, width);\n\n\t\tthis.width = width;\n\n\t\tthis.widthStyled = width ? width + \"px\" : \"\";\n\n\t\tthis.element.style.width = this.widthStyled;\n\n\t\tif (!this.isGroup) {\n\n\t\t\tthis.cells.forEach(function (cell) {\n\n\t\t\t\tcell.setWidth();\n\t\t\t});\n\t\t}\n\n\t\tif (this.parent.isGroup) {\n\n\t\t\tthis.parent.matchChildWidths();\n\t\t}\n\n\t\t//set resizable handles\n\n\t\tif (this.table.modExists(\"frozenColumns\")) {\n\n\t\t\tthis.table.modules.frozenColumns.layout();\n\t\t}\n\t};\n\n\tColumn.prototype.checkCellHeights = function () {\n\n\t\tvar rows = [];\n\n\t\tthis.cells.forEach(function (cell) {\n\n\t\t\tif (cell.row.heightInitialized) {\n\n\t\t\t\tif (cell.row.getElement().offsetParent !== null) {\n\n\t\t\t\t\trows.push(cell.row);\n\n\t\t\t\t\tcell.row.clearCellHeight();\n\t\t\t\t} else {\n\n\t\t\t\t\tcell.row.heightInitialized = false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\trows.forEach(function (row) {\n\n\t\t\trow.calcHeight();\n\t\t});\n\n\t\trows.forEach(function (row) {\n\n\t\t\trow.setCellHeight();\n\t\t});\n\t};\n\n\tColumn.prototype.getWidth = function () {\n\n\t\t// return this.element.offsetWidth;\n\n\t\treturn this.width;\n\t};\n\n\tColumn.prototype.getHeight = function () {\n\n\t\treturn this.element.offsetHeight;\n\t};\n\n\tColumn.prototype.setMinWidth = function (minWidth) {\n\n\t\tthis.minWidth = minWidth;\n\n\t\tthis.minWidthStyled = minWidth ? minWidth + \"px\" : \"\";\n\n\t\tthis.element.style.minWidth = this.minWidthStyled;\n\n\t\tthis.cells.forEach(function (cell) {\n\n\t\t\tcell.setMinWidth();\n\t\t});\n\t};\n\n\tColumn.prototype.delete = function () {\n\n\t\tif (this.isGroup) {\n\n\t\t\tthis.columns.forEach(function (column) {\n\n\t\t\t\tcolumn.delete();\n\t\t\t});\n\t\t}\n\n\t\tvar cellCount = this.cells.length;\n\n\t\tfor (var i = 0; i < cellCount; i++) {\n\n\t\t\tthis.cells[0].delete();\n\t\t}\n\n\t\tthis.element.parentNode.removeChild(this.element);\n\n\t\tthis.table.columnManager.deregisterColumn(this);\n\t};\n\n\t//////////////// Cell Management /////////////////\n\n\n\t//generate cell for this column\n\n\tColumn.prototype.generateCell = function (row) {\n\n\t\tvar self = this;\n\n\t\tvar cell = new Cell(self, row);\n\n\t\tthis.cells.push(cell);\n\n\t\treturn cell;\n\t};\n\n\tColumn.prototype.nextColumn = function () {\n\n\t\tvar index = this.table.columnManager.findColumnIndex(this);\n\n\t\treturn index > -1 ? this.table.columnManager.getColumnByIndex(index + 1) : false;\n\t};\n\n\tColumn.prototype.prevColumn = function () {\n\n\t\tvar index = this.table.columnManager.findColumnIndex(this);\n\n\t\treturn index > -1 ? this.table.columnManager.getColumnByIndex(index - 1) : false;\n\t};\n\n\tColumn.prototype.reinitializeWidth = function (force) {\n\n\t\tthis.widthFixed = false;\n\n\t\t//set width if present\n\n\t\tif (typeof this.definition.width !== \"undefined\" && !force) {\n\n\t\t\tthis.setWidth(this.definition.width);\n\t\t}\n\n\t\t//hide header filters to prevent them altering column width\n\n\t\tif (this.table.modExists(\"filter\")) {\n\n\t\t\tthis.table.modules.filter.hideHeaderFilterElements();\n\t\t}\n\n\t\tthis.fitToData();\n\n\t\t//show header filters again after layout is complete\n\n\t\tif (this.table.modExists(\"filter\")) {\n\n\t\t\tthis.table.modules.filter.showHeaderFilterElements();\n\t\t}\n\t};\n\n\t//set column width to maximum cell width\n\n\tColumn.prototype.fitToData = function () {\n\n\t\tvar self = this;\n\n\t\tif (!this.widthFixed) {\n\n\t\t\tthis.element.style.width = \"\";\n\n\t\t\tself.cells.forEach(function (cell) {\n\n\t\t\t\tcell.clearWidth();\n\t\t\t});\n\t\t}\n\n\t\tvar maxWidth = this.element.offsetWidth;\n\n\t\tif (!self.width || !this.widthFixed) {\n\n\t\t\tself.cells.forEach(function (cell) {\n\n\t\t\t\tvar width = cell.getWidth();\n\n\t\t\t\tif (width > maxWidth) {\n\n\t\t\t\t\tmaxWidth = width;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (maxWidth) {\n\n\t\t\t\tself.setWidthActual(maxWidth + 1);\n\t\t\t}\n\t\t}\n\t};\n\n\tColumn.prototype.deleteCell = function (cell) {\n\n\t\tvar index = this.cells.indexOf(cell);\n\n\t\tif (index > -1) {\n\n\t\t\tthis.cells.splice(index, 1);\n\t\t}\n\t};\n\n\tColumn.prototype.defaultOptionList = [\"title\", \"field\", \"columns\", \"visible\", \"align\", \"width\", \"minWidth\", \"widthGrow\", \"widthShrink\", \"resizable\", \"frozen\", \"responsive\", \"tooltip\", \"cssClass\", \"rowHandle\", \"hideInHtml\", \"print\", \"htmlOutput\", \"sorter\", \"sorterParams\", \"formatter\", \"formatterParams\", \"variableHeight\", \"editable\", \"editor\", \"editorParams\", \"validator\", \"mutator\", \"mutatorParams\", \"mutatorData\", \"mutatorDataParams\", \"mutatorEdit\", \"mutatorEditParams\", \"mutatorClipboard\", \"mutatorClipboardParams\", \"accessor\", \"accessorParams\", \"accessorData\", \"accessorDataParams\", \"accessorDownload\", \"accessorDownloadParams\", \"accessorClipboard\", \"accessorClipboardParams\", \"download\", \"downloadTitle\", \"topCalc\", \"topCalcParams\", \"topCalcFormatter\", \"topCalcFormatterParams\", \"bottomCalc\", \"bottomCalcParams\", \"bottomCalcFormatter\", \"bottomCalcFormatterParams\", \"cellClick\", \"cellDblClick\", \"cellContext\", \"cellTap\", \"cellDblTap\", \"cellTapHold\", \"cellMouseEnter\", \"cellMouseLeave\", \"cellMouseOver\", \"cellMouseOut\", \"cellMouseMove\", \"cellEditing\", \"cellEdited\", \"cellEditCancelled\", \"headerSort\", \"headerSortStartingDir\", \"headerSortTristate\", \"headerClick\", \"headerDblClick\", \"headerContext\", \"headerTap\", \"headerDblTap\", \"headerTapHold\", \"headerTooltip\", \"headerVertical\", \"editableTitle\", \"titleFormatter\", \"titleFormatterParams\", \"headerFilter\", \"headerFilterPlaceholder\", \"headerFilterParams\", \"headerFilterEmptyCheck\", \"headerFilterFunc\", \"headerFilterFuncParams\", \"headerFilterLiveFilter\", \"print\"];\n\n\t//////////////// Event Bindings /////////////////\n\n\n\t//////////////// Object Generation /////////////////\n\n\tColumn.prototype.getComponent = function () {\n\n\t\treturn new ColumnComponent(this);\n\t};\n\n\tvar RowManager = function RowManager(table) {\n\n\t\tthis.table = table;\n\n\t\tthis.element = this.createHolderElement(); //containing element\n\n\t\tthis.tableElement = this.createTableElement(); //table element\n\n\t\tthis.columnManager = null; //hold column manager object\n\n\t\tthis.height = 0; //hold height of table element\n\n\n\t\tthis.firstRender = false; //handle first render\n\n\t\tthis.renderMode = \"classic\"; //current rendering mode\n\n\n\t\tthis.rows = []; //hold row data objects\n\n\t\tthis.activeRows = []; //rows currently available to on display in the table\n\n\t\tthis.activeRowsCount = 0; //count of active rows\n\n\n\t\tthis.displayRows = []; //rows currently on display in the table\n\n\t\tthis.displayRowsCount = 0; //count of display rows\n\n\n\t\tthis.scrollTop = 0;\n\n\t\tthis.scrollLeft = 0;\n\n\t\tthis.vDomRowHeight = 20; //approximation of row heights for padding\n\n\n\t\tthis.vDomTop = 0; //hold position for first rendered row in the virtual DOM\n\n\t\tthis.vDomBottom = 0; //hold possition for last rendered row in the virtual DOM\n\n\n\t\tthis.vDomScrollPosTop = 0; //last scroll position of the vDom top;\n\n\t\tthis.vDomScrollPosBottom = 0; //last scroll position of the vDom bottom;\n\n\n\t\tthis.vDomTopPad = 0; //hold value of padding for top of virtual DOM\n\n\t\tthis.vDomBottomPad = 0; //hold value of padding for bottom of virtual DOM\n\n\n\t\tthis.vDomMaxRenderChain = 90; //the maximum number of dom elements that can be rendered in 1 go\n\n\n\t\tthis.vDomWindowBuffer = 0; //window row buffer before removing elements, to smooth scrolling\n\n\n\t\tthis.vDomWindowMinTotalRows = 20; //minimum number of rows to be generated in virtual dom (prevent buffering issues on tables with tall rows)\n\n\t\tthis.vDomWindowMinMarginRows = 5; //minimum number of rows to be generated in virtual dom margin\n\n\n\t\tthis.vDomTopNewRows = []; //rows to normalize after appending to optimize render speed\n\n\t\tthis.vDomBottomNewRows = []; //rows to normalize after appending to optimize render speed\n\t};\n\n\t//////////////// Setup Functions /////////////////\n\n\n\tRowManager.prototype.createHolderElement = function () {\n\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-tableHolder\");\n\n\t\tel.setAttribute(\"tabindex\", 0);\n\n\t\treturn el;\n\t};\n\n\tRowManager.prototype.createTableElement = function () {\n\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-table\");\n\n\t\treturn el;\n\t};\n\n\t//return containing element\n\n\tRowManager.prototype.getElement = function () {\n\n\t\treturn this.element;\n\t};\n\n\t//return table element\n\n\tRowManager.prototype.getTableElement = function () {\n\n\t\treturn this.tableElement;\n\t};\n\n\t//return position of row in table\n\n\tRowManager.prototype.getRowPosition = function (row, active) {\n\n\t\tif (active) {\n\n\t\t\treturn this.activeRows.indexOf(row);\n\t\t} else {\n\n\t\t\treturn this.rows.indexOf(row);\n\t\t}\n\t};\n\n\t//link to column manager\n\n\tRowManager.prototype.setColumnManager = function (manager) {\n\n\t\tthis.columnManager = manager;\n\t};\n\n\tRowManager.prototype.initialize = function () {\n\n\t\tvar self = this;\n\n\t\tself.setRenderMode();\n\n\t\t//initialize manager\n\n\t\tself.element.appendChild(self.tableElement);\n\n\t\tself.firstRender = true;\n\n\t\t//scroll header along with table body\n\n\t\tself.element.addEventListener(\"scroll\", function () {\n\n\t\t\tvar left = self.element.scrollLeft;\n\n\t\t\t//handle horizontal scrolling\n\n\t\t\tif (self.scrollLeft != left) {\n\n\t\t\t\tself.columnManager.scrollHorizontal(left);\n\n\t\t\t\tif (self.table.options.groupBy) {\n\n\t\t\t\t\tself.table.modules.groupRows.scrollHeaders(left);\n\t\t\t\t}\n\n\t\t\t\tif (self.table.modExists(\"columnCalcs\")) {\n\n\t\t\t\t\tself.table.modules.columnCalcs.scrollHorizontal(left);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tself.scrollLeft = left;\n\t\t});\n\n\t\t//handle virtual dom scrolling\n\n\t\tif (this.renderMode === \"virtual\") {\n\n\t\t\tself.element.addEventListener(\"scroll\", function () {\n\n\t\t\t\tvar top = self.element.scrollTop;\n\n\t\t\t\tvar dir = self.scrollTop > top;\n\n\t\t\t\t//handle verical scrolling\n\n\t\t\t\tif (self.scrollTop != top) {\n\n\t\t\t\t\tself.scrollTop = top;\n\n\t\t\t\t\tself.scrollVertical(dir);\n\n\t\t\t\t\tif (self.table.options.ajaxProgressiveLoad == \"scroll\") {\n\n\t\t\t\t\t\tself.table.modules.ajax.nextPage(self.element.scrollHeight - self.element.clientHeight - top);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\tself.scrollTop = top;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t};\n\n\t////////////////// Row Manipulation //////////////////\n\n\n\tRowManager.prototype.findRow = function (subject) {\n\n\t\tvar self = this;\n\n\t\tif ((typeof subject === 'undefined' ? 'undefined' : _typeof(subject)) == \"object\") {\n\n\t\t\tif (subject instanceof Row) {\n\n\t\t\t\t//subject is row element\n\n\t\t\t\treturn subject;\n\t\t\t} else if (subject instanceof RowComponent) {\n\n\t\t\t\t//subject is public row component\n\n\t\t\t\treturn subject._getSelf() || false;\n\t\t\t} else if (typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement) {\n\n\t\t\t\t//subject is a HTML element of the row\n\n\t\t\t\tvar match = self.rows.find(function (row) {\n\n\t\t\t\t\treturn row.element === subject;\n\t\t\t\t});\n\n\t\t\t\treturn match || false;\n\t\t\t}\n\t\t} else if (typeof subject == \"undefined\" || subject === null) {\n\n\t\t\treturn false;\n\t\t} else {\n\n\t\t\t//subject should be treated as the index of the row\n\n\t\t\tvar _match = self.rows.find(function (row) {\n\n\t\t\t\treturn row.data[self.table.options.index] == subject;\n\t\t\t});\n\n\t\t\treturn _match || false;\n\t\t}\n\n\t\t//catch all for any other type of input\n\n\n\t\treturn false;\n\t};\n\n\tRowManager.prototype.getRowFromDataObject = function (data) {\n\n\t\tvar match = this.rows.find(function (row) {\n\n\t\t\treturn row.data === data;\n\t\t});\n\n\t\treturn match || false;\n\t};\n\n\tRowManager.prototype.getRowFromPosition = function (position, active) {\n\n\t\tif (active) {\n\n\t\t\treturn this.activeRows[position];\n\t\t} else {\n\n\t\t\treturn this.rows[position];\n\t\t}\n\t};\n\n\tRowManager.prototype.scrollToRow = function (row, position, ifVisible) {\n\t\tvar _this3 = this;\n\n\t\tvar rowIndex = this.getDisplayRows().indexOf(row),\n\t\t rowEl = row.getElement(),\n\t\t rowTop,\n\t\t offset = 0;\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tif (rowIndex > -1) {\n\n\t\t\t\tif (typeof position === \"undefined\") {\n\n\t\t\t\t\tposition = _this3.table.options.scrollToRowPosition;\n\t\t\t\t}\n\n\t\t\t\tif (typeof ifVisible === \"undefined\") {\n\n\t\t\t\t\tifVisible = _this3.table.options.scrollToRowIfVisible;\n\t\t\t\t}\n\n\t\t\t\tif (position === \"nearest\") {\n\n\t\t\t\t\tswitch (_this3.renderMode) {\n\n\t\t\t\t\t\tcase \"classic\":\n\n\t\t\t\t\t\t\trowTop = Tabulator.prototype.helpers.elOffset(rowEl).top;\n\n\t\t\t\t\t\t\tposition = Math.abs(_this3.element.scrollTop - rowTop) > Math.abs(_this3.element.scrollTop + _this3.element.clientHeight - rowTop) ? \"bottom\" : \"top\";\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase \"virtual\":\n\n\t\t\t\t\t\t\tposition = Math.abs(_this3.vDomTop - rowIndex) > Math.abs(_this3.vDomBottom - rowIndex) ? \"bottom\" : \"top\";\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t//check row visibility\n\n\t\t\t\tif (!ifVisible) {\n\n\t\t\t\t\tif (Tabulator.prototype.helpers.elVisible(rowEl)) {\n\n\t\t\t\t\t\toffset = Tabulator.prototype.helpers.elOffset(rowEl).top - Tabulator.prototype.helpers.elOffset(_this3.element).top;\n\n\t\t\t\t\t\tif (offset > 0 && offset < _this3.element.clientHeight - rowEl.offsetHeight) {\n\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t//scroll to row\n\n\t\t\t\tswitch (_this3.renderMode) {\n\n\t\t\t\t\tcase \"classic\":\n\n\t\t\t\t\t\t_this3.element.scrollTop = Tabulator.prototype.helpers.elOffset(rowEl).top - Tabulator.prototype.helpers.elOffset(_this3.element).top + _this3.element.scrollTop;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"virtual\":\n\n\t\t\t\t\t\t_this3._virtualRenderFill(rowIndex, true);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\t//align to correct position\n\n\t\t\t\tswitch (position) {\n\n\t\t\t\t\tcase \"middle\":\n\n\t\t\t\t\tcase \"center\":\n\n\t\t\t\t\t\t_this3.element.scrollTop = _this3.element.scrollTop - _this3.element.clientHeight / 2;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"bottom\":\n\n\t\t\t\t\t\t_this3.element.scrollTop = _this3.element.scrollTop - _this3.element.clientHeight + rowEl.offsetHeight;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\t\t\t} else {\n\n\t\t\t\tconsole.warn(\"Scroll Error - Row not visible\");\n\n\t\t\t\treject(\"Scroll Error - Row not visible\");\n\t\t\t}\n\t\t});\n\t};\n\n\t////////////////// Data Handling //////////////////\n\n\n\tRowManager.prototype.setData = function (data, renderInPosition) {\n\t\tvar _this4 = this;\n\n\t\tvar self = this;\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tif (renderInPosition && _this4.getDisplayRows().length) {\n\n\t\t\t\tif (self.table.options.pagination) {\n\n\t\t\t\t\tself._setDataActual(data, true);\n\t\t\t\t} else {\n\n\t\t\t\t\t_this4.reRenderInPosition(function () {\n\n\t\t\t\t\t\tself._setDataActual(data);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\tif (_this4.table.options.autoColumns) {\n\n\t\t\t\t\t_this4.table.columnManager.generateColumnsFromRowData(data);\n\t\t\t\t}\n\n\t\t\t\t_this4.resetScroll();\n\n\t\t\t\t_this4._setDataActual(data);\n\t\t\t}\n\n\t\t\tresolve();\n\t\t});\n\t};\n\n\tRowManager.prototype._setDataActual = function (data, renderInPosition) {\n\n\t\tvar self = this;\n\n\t\tself.table.options.dataLoading.call(this.table, data);\n\n\t\tthis._wipeElements();\n\n\t\tif (this.table.options.history && this.table.modExists(\"history\")) {\n\n\t\t\tthis.table.modules.history.clear();\n\t\t}\n\n\t\tif (Array.isArray(data)) {\n\n\t\t\tif (this.table.modExists(\"selectRow\")) {\n\n\t\t\t\tthis.table.modules.selectRow.clearSelectionData();\n\t\t\t}\n\n\t\t\tif (this.table.options.reactiveData && this.table.modExists(\"reactiveData\", true)) {\n\n\t\t\t\tthis.table.modules.reactiveData.watchData(data);\n\t\t\t}\n\n\t\t\tdata.forEach(function (def, i) {\n\n\t\t\t\tif (def && (typeof def === 'undefined' ? 'undefined' : _typeof(def)) === \"object\") {\n\n\t\t\t\t\tvar row = new Row(def, self);\n\n\t\t\t\t\tself.rows.push(row);\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn(\"Data Loading Warning - Invalid row data detected and ignored, expecting object but received:\", def);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tself.table.options.dataLoaded.call(this.table, data);\n\n\t\t\tself.refreshActiveData(false, false, renderInPosition);\n\t\t} else {\n\n\t\t\tconsole.error(\"Data Loading Error - Unable to process data due to invalid data type \\nExpecting: array \\nReceived: \", typeof data === 'undefined' ? 'undefined' : _typeof(data), \"\\nData: \", data);\n\t\t}\n\t};\n\n\tRowManager.prototype._wipeElements = function () {\n\n\t\tthis.rows.forEach(function (row) {\n\n\t\t\trow.wipe();\n\t\t});\n\n\t\tif (this.table.options.groupBy && this.table.modExists(\"groupRows\")) {\n\n\t\t\tthis.table.modules.groupRows.wipe();\n\t\t}\n\n\t\tthis.rows = [];\n\t};\n\n\tRowManager.prototype.deleteRow = function (row, blockRedraw) {\n\n\t\tvar allIndex = this.rows.indexOf(row),\n\t\t activeIndex = this.activeRows.indexOf(row);\n\n\t\tif (activeIndex > -1) {\n\n\t\t\tthis.activeRows.splice(activeIndex, 1);\n\t\t}\n\n\t\tif (allIndex > -1) {\n\n\t\t\tthis.rows.splice(allIndex, 1);\n\t\t}\n\n\t\tthis.setActiveRows(this.activeRows);\n\n\t\tthis.displayRowIterator(function (rows) {\n\n\t\t\tvar displayIndex = rows.indexOf(row);\n\n\t\t\tif (displayIndex > -1) {\n\n\t\t\t\trows.splice(displayIndex, 1);\n\t\t\t}\n\t\t});\n\n\t\tif (!blockRedraw) {\n\n\t\t\tthis.reRenderInPosition();\n\t\t}\n\n\t\tthis.table.options.rowDeleted.call(this.table, row.getComponent());\n\n\t\tthis.table.options.dataEdited.call(this.table, this.getData());\n\n\t\tif (this.table.options.groupBy && this.table.modExists(\"groupRows\")) {\n\n\t\t\tthis.table.modules.groupRows.updateGroupRows(true);\n\t\t} else if (this.table.options.pagination && this.table.modExists(\"page\")) {\n\n\t\t\tthis.refreshActiveData(false, false, true);\n\t\t} else {\n\n\t\t\tif (this.table.options.pagination && this.table.modExists(\"page\")) {\n\n\t\t\t\tthis.refreshActiveData(\"page\");\n\t\t\t}\n\t\t}\n\t};\n\n\tRowManager.prototype.addRow = function (data, pos, index, blockRedraw) {\n\n\t\tvar row = this.addRowActual(data, pos, index, blockRedraw);\n\n\t\tif (this.table.options.history && this.table.modExists(\"history\")) {\n\n\t\t\tthis.table.modules.history.action(\"rowAdd\", row, { data: data, pos: pos, index: index });\n\t\t}\n\n\t\treturn row;\n\t};\n\n\t//add multiple rows\n\n\tRowManager.prototype.addRows = function (data, pos, index) {\n\t\tvar _this5 = this;\n\n\t\tvar self = this,\n\t\t length = 0,\n\t\t rows = [];\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tpos = _this5.findAddRowPos(pos);\n\n\t\t\tif (!Array.isArray(data)) {\n\n\t\t\t\tdata = [data];\n\t\t\t}\n\n\t\t\tlength = data.length - 1;\n\n\t\t\tif (typeof index == \"undefined\" && pos || typeof index !== \"undefined\" && !pos) {\n\n\t\t\t\tdata.reverse();\n\t\t\t}\n\n\t\t\tdata.forEach(function (item, i) {\n\n\t\t\t\tvar row = self.addRow(item, pos, index, true);\n\n\t\t\t\trows.push(row);\n\t\t\t});\n\n\t\t\tif (_this5.table.options.groupBy && _this5.table.modExists(\"groupRows\")) {\n\n\t\t\t\t_this5.table.modules.groupRows.updateGroupRows(true);\n\t\t\t} else if (_this5.table.options.pagination && _this5.table.modExists(\"page\")) {\n\n\t\t\t\t_this5.refreshActiveData(false, false, true);\n\t\t\t} else {\n\n\t\t\t\t_this5.reRenderInPosition();\n\t\t\t}\n\n\t\t\t//recalc column calculations if present\n\n\t\t\tif (_this5.table.modExists(\"columnCalcs\")) {\n\n\t\t\t\t_this5.table.modules.columnCalcs.recalc(_this5.table.rowManager.activeRows);\n\t\t\t}\n\n\t\t\tresolve(rows);\n\t\t});\n\t};\n\n\tRowManager.prototype.findAddRowPos = function (pos) {\n\n\t\tif (typeof pos === \"undefined\") {\n\n\t\t\tpos = this.table.options.addRowPos;\n\t\t}\n\n\t\tif (pos === \"pos\") {\n\n\t\t\tpos = true;\n\t\t}\n\n\t\tif (pos === \"bottom\") {\n\n\t\t\tpos = false;\n\t\t}\n\n\t\treturn pos;\n\t};\n\n\tRowManager.prototype.addRowActual = function (data, pos, index, blockRedraw) {\n\n\t\tvar row = data instanceof Row ? data : new Row(data || {}, this),\n\t\t top = this.findAddRowPos(pos),\n\t\t dispRows;\n\n\t\tif (!index && this.table.options.pagination && this.table.options.paginationAddRow == \"page\") {\n\n\t\t\tdispRows = this.getDisplayRows();\n\n\t\t\tif (top) {\n\n\t\t\t\tif (dispRows.length) {\n\n\t\t\t\t\tindex = dispRows[0];\n\t\t\t\t} else {\n\n\t\t\t\t\tif (this.activeRows.length) {\n\n\t\t\t\t\t\tindex = this.activeRows[this.activeRows.length - 1];\n\n\t\t\t\t\t\ttop = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\tif (dispRows.length) {\n\n\t\t\t\t\tindex = dispRows[dispRows.length - 1];\n\n\t\t\t\t\ttop = dispRows.length < this.table.modules.page.getPageSize() ? false : true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (index) {\n\n\t\t\tindex = this.findRow(index);\n\t\t}\n\n\t\tif (this.table.options.groupBy && this.table.modExists(\"groupRows\")) {\n\n\t\t\tthis.table.modules.groupRows.assignRowToGroup(row);\n\n\t\t\tvar groupRows = row.getGroup().rows;\n\n\t\t\tif (groupRows.length > 1) {\n\n\t\t\t\tif (!index || index && groupRows.indexOf(index) == -1) {\n\n\t\t\t\t\tif (top) {\n\n\t\t\t\t\t\tif (groupRows[0] !== row) {\n\n\t\t\t\t\t\t\tindex = groupRows[0];\n\n\t\t\t\t\t\t\tthis._moveRowInArray(row.getGroup().rows, row, index, top);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif (groupRows[groupRows.length - 1] !== row) {\n\n\t\t\t\t\t\t\tindex = groupRows[groupRows.length - 1];\n\n\t\t\t\t\t\t\tthis._moveRowInArray(row.getGroup().rows, row, index, top);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._moveRowInArray(row.getGroup().rows, row, index, top);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (index) {\n\n\t\t\tvar allIndex = this.rows.indexOf(index),\n\t\t\t activeIndex = this.activeRows.indexOf(index);\n\n\t\t\tthis.displayRowIterator(function (rows) {\n\n\t\t\t\tvar displayIndex = rows.indexOf(index);\n\n\t\t\t\tif (displayIndex > -1) {\n\n\t\t\t\t\trows.splice(top ? displayIndex : displayIndex + 1, 0, row);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (activeIndex > -1) {\n\n\t\t\t\tthis.activeRows.splice(top ? activeIndex : activeIndex + 1, 0, row);\n\t\t\t}\n\n\t\t\tif (allIndex > -1) {\n\n\t\t\t\tthis.rows.splice(top ? allIndex : allIndex + 1, 0, row);\n\t\t\t}\n\t\t} else {\n\n\t\t\tif (top) {\n\n\t\t\t\tthis.displayRowIterator(function (rows) {\n\n\t\t\t\t\trows.unshift(row);\n\t\t\t\t});\n\n\t\t\t\tthis.activeRows.unshift(row);\n\n\t\t\t\tthis.rows.unshift(row);\n\t\t\t} else {\n\n\t\t\t\tthis.displayRowIterator(function (rows) {\n\n\t\t\t\t\trows.push(row);\n\t\t\t\t});\n\n\t\t\t\tthis.activeRows.push(row);\n\n\t\t\t\tthis.rows.push(row);\n\t\t\t}\n\t\t}\n\n\t\tthis.setActiveRows(this.activeRows);\n\n\t\tthis.table.options.rowAdded.call(this.table, row.getComponent());\n\n\t\tthis.table.options.dataEdited.call(this.table, this.getData());\n\n\t\tif (!blockRedraw) {\n\n\t\t\tthis.reRenderInPosition();\n\t\t}\n\n\t\treturn row;\n\t};\n\n\tRowManager.prototype.moveRow = function (from, to, after) {\n\n\t\tif (this.table.options.history && this.table.modExists(\"history\")) {\n\n\t\t\tthis.table.modules.history.action(\"rowMove\", from, { pos: this.getRowPosition(from), to: to, after: after });\n\t\t}\n\n\t\tthis.moveRowActual(from, to, after);\n\n\t\tthis.table.options.rowMoved.call(this.table, from.getComponent());\n\t};\n\n\tRowManager.prototype.moveRowActual = function (from, to, after) {\n\n\t\tvar self = this;\n\n\t\tthis._moveRowInArray(this.rows, from, to, after);\n\n\t\tthis._moveRowInArray(this.activeRows, from, to, after);\n\n\t\tthis.displayRowIterator(function (rows) {\n\n\t\t\tself._moveRowInArray(rows, from, to, after);\n\t\t});\n\n\t\tif (this.table.options.groupBy && this.table.modExists(\"groupRows\")) {\n\n\t\t\tvar toGroup = to.getGroup();\n\n\t\t\tvar fromGroup = from.getGroup();\n\n\t\t\tif (toGroup === fromGroup) {\n\n\t\t\t\tthis._moveRowInArray(toGroup.rows, from, to, after);\n\t\t\t} else {\n\n\t\t\t\tif (fromGroup) {\n\n\t\t\t\t\tfromGroup.removeRow(from);\n\t\t\t\t}\n\n\t\t\t\ttoGroup.insertRow(from, to, after);\n\t\t\t}\n\t\t}\n\t};\n\n\tRowManager.prototype._moveRowInArray = function (rows, from, to, after) {\n\n\t\tvar fromIndex, toIndex, start, end;\n\n\t\tif (from !== to) {\n\n\t\t\tfromIndex = rows.indexOf(from);\n\n\t\t\tif (fromIndex > -1) {\n\n\t\t\t\trows.splice(fromIndex, 1);\n\n\t\t\t\ttoIndex = rows.indexOf(to);\n\n\t\t\t\tif (toIndex > -1) {\n\n\t\t\t\t\tif (after) {\n\n\t\t\t\t\t\trows.splice(toIndex + 1, 0, from);\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\trows.splice(toIndex, 0, from);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\trows.splice(fromIndex, 0, from);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//restyle rows\n\n\t\t\tif (rows === this.getDisplayRows()) {\n\n\t\t\t\tstart = fromIndex < toIndex ? fromIndex : toIndex;\n\n\t\t\t\tend = toIndex > fromIndex ? toIndex : fromIndex + 1;\n\n\t\t\t\tfor (var i = start; i <= end; i++) {\n\n\t\t\t\t\tif (rows[i]) {\n\n\t\t\t\t\t\tthis.styleRow(rows[i], i);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tRowManager.prototype.clearData = function () {\n\n\t\tthis.setData([]);\n\t};\n\n\tRowManager.prototype.getRowIndex = function (row) {\n\n\t\treturn this.findRowIndex(row, this.rows);\n\t};\n\n\tRowManager.prototype.getDisplayRowIndex = function (row) {\n\n\t\tvar index = this.getDisplayRows().indexOf(row);\n\n\t\treturn index > -1 ? index : false;\n\t};\n\n\tRowManager.prototype.nextDisplayRow = function (row, rowOnly) {\n\n\t\tvar index = this.getDisplayRowIndex(row),\n\t\t nextRow = false;\n\n\t\tif (index !== false && index < this.displayRowsCount - 1) {\n\n\t\t\tnextRow = this.getDisplayRows()[index + 1];\n\t\t}\n\n\t\tif (nextRow && (!(nextRow instanceof Row) || nextRow.type != \"row\")) {\n\n\t\t\treturn this.nextDisplayRow(nextRow, rowOnly);\n\t\t}\n\n\t\treturn nextRow;\n\t};\n\n\tRowManager.prototype.prevDisplayRow = function (row, rowOnly) {\n\n\t\tvar index = this.getDisplayRowIndex(row),\n\t\t prevRow = false;\n\n\t\tif (index) {\n\n\t\t\tprevRow = this.getDisplayRows()[index - 1];\n\t\t}\n\n\t\tif (prevRow && (!(prevRow instanceof Row) || prevRow.type != \"row\")) {\n\n\t\t\treturn this.prevDisplayRow(prevRow, rowOnly);\n\t\t}\n\n\t\treturn prevRow;\n\t};\n\n\tRowManager.prototype.findRowIndex = function (row, list) {\n\n\t\tvar rowIndex;\n\n\t\trow = this.findRow(row);\n\n\t\tif (row) {\n\n\t\t\trowIndex = list.indexOf(row);\n\n\t\t\tif (rowIndex > -1) {\n\n\t\t\t\treturn rowIndex;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t};\n\n\tRowManager.prototype.getData = function (active, transform) {\n\n\t\tvar self = this,\n\t\t output = [];\n\n\t\tvar rows = active ? self.activeRows : self.rows;\n\n\t\trows.forEach(function (row) {\n\n\t\t\toutput.push(row.getData(transform || \"data\"));\n\t\t});\n\n\t\treturn output;\n\t};\n\n\tRowManager.prototype.getComponents = function (active) {\n\n\t\tvar self = this,\n\t\t output = [];\n\n\t\tvar rows = active ? self.activeRows : self.rows;\n\n\t\trows.forEach(function (row) {\n\n\t\t\toutput.push(row.getComponent());\n\t\t});\n\n\t\treturn output;\n\t};\n\n\tRowManager.prototype.getDataCount = function (active) {\n\n\t\treturn active ? this.activeRows.length : this.rows.length;\n\t};\n\n\tRowManager.prototype._genRemoteRequest = function () {\n\n\t\tvar self = this,\n\t\t table = self.table,\n\t\t options = table.options,\n\t\t params = {};\n\n\t\tif (table.modExists(\"page\")) {\n\n\t\t\t//set sort data if defined\n\n\t\t\tif (options.ajaxSorting) {\n\n\t\t\t\tvar sorters = self.table.modules.sort.getSort();\n\n\t\t\t\tsorters.forEach(function (item) {\n\n\t\t\t\t\tdelete item.column;\n\t\t\t\t});\n\n\t\t\t\tparams[self.table.modules.page.paginationDataSentNames.sorters] = sorters;\n\t\t\t}\n\n\t\t\t//set filter data if defined\n\n\t\t\tif (options.ajaxFiltering) {\n\n\t\t\t\tvar filters = self.table.modules.filter.getFilters(true, true);\n\n\t\t\t\tparams[self.table.modules.page.paginationDataSentNames.filters] = filters;\n\t\t\t}\n\n\t\t\tself.table.modules.ajax.setParams(params, true);\n\t\t}\n\n\t\ttable.modules.ajax.sendRequest().then(function (data) {\n\n\t\t\tself.setData(data);\n\t\t}).catch(function (e) {});\n\t};\n\n\t//choose the path to refresh data after a filter update\n\n\tRowManager.prototype.filterRefresh = function () {\n\n\t\tvar table = this.table,\n\t\t options = table.options,\n\t\t left = this.scrollLeft;\n\n\t\tif (options.ajaxFiltering) {\n\n\t\t\tif (options.pagination == \"remote\" && table.modExists(\"page\")) {\n\n\t\t\t\ttable.modules.page.reset(true);\n\n\t\t\t\ttable.modules.page.setPage(1).then(function () {}).catch(function () {});\n\t\t\t} else if (options.ajaxProgressiveLoad) {\n\n\t\t\t\ttable.modules.ajax.loadData().then(function () {}).catch(function () {});\n\t\t\t} else {\n\n\t\t\t\t//assume data is url, make ajax call to url to get data\n\n\t\t\t\tthis._genRemoteRequest();\n\t\t\t}\n\t\t} else {\n\n\t\t\tthis.refreshActiveData(\"filter\");\n\t\t}\n\n\t\tthis.scrollHorizontal(left);\n\t};\n\n\t//choose the path to refresh data after a sorter update\n\n\tRowManager.prototype.sorterRefresh = function (loadOrignalData) {\n\n\t\tvar table = this.table,\n\t\t options = this.table.options,\n\t\t left = this.scrollLeft;\n\n\t\tif (options.ajaxSorting) {\n\n\t\t\tif ((options.pagination == \"remote\" || options.progressiveLoad) && table.modExists(\"page\")) {\n\n\t\t\t\ttable.modules.page.reset(true);\n\n\t\t\t\ttable.modules.page.setPage(1).then(function () {}).catch(function () {});\n\t\t\t} else if (options.ajaxProgressiveLoad) {\n\n\t\t\t\ttable.modules.ajax.loadData().then(function () {}).catch(function () {});\n\t\t\t} else {\n\n\t\t\t\t//assume data is url, make ajax call to url to get data\n\n\t\t\t\tthis._genRemoteRequest();\n\t\t\t}\n\t\t} else {\n\n\t\t\tthis.refreshActiveData(loadOrignalData ? \"filter\" : \"sort\");\n\t\t}\n\n\t\tthis.scrollHorizontal(left);\n\t};\n\n\tRowManager.prototype.scrollHorizontal = function (left) {\n\n\t\tthis.scrollLeft = left;\n\n\t\tthis.element.scrollLeft = left;\n\n\t\tif (this.table.options.groupBy) {\n\n\t\t\tthis.table.modules.groupRows.scrollHeaders(left);\n\t\t}\n\n\t\tif (this.table.modExists(\"columnCalcs\")) {\n\n\t\t\tthis.table.modules.columnCalcs.scrollHorizontal(left);\n\t\t}\n\t};\n\n\t//set active data set\n\n\tRowManager.prototype.refreshActiveData = function (stage, skipStage, renderInPosition) {\n\n\t\tvar self = this,\n\t\t table = this.table,\n\t\t displayIndex;\n\n\t\tif (self.table.modExists(\"edit\")) {\n\n\t\t\tself.table.modules.edit.cancelEdit();\n\t\t}\n\n\t\tif (!stage) {\n\n\t\t\tstage = \"all\";\n\t\t}\n\n\t\tif (table.options.selectable && !table.options.selectablePersistence && table.modExists(\"selectRow\")) {\n\n\t\t\ttable.modules.selectRow.deselectRows();\n\t\t}\n\n\t\t//cascade through data refresh stages\n\n\t\tswitch (stage) {\n\n\t\t\tcase \"all\":\n\n\t\t\tcase \"filter\":\n\n\t\t\t\tif (!skipStage) {\n\n\t\t\t\t\tif (table.modExists(\"filter\")) {\n\n\t\t\t\t\t\tself.setActiveRows(table.modules.filter.filter(self.rows));\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tself.setActiveRows(self.rows.slice(0));\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\tskipStage = false;\n\t\t\t\t}\n\n\t\t\tcase \"sort\":\n\n\t\t\t\tif (!skipStage) {\n\n\t\t\t\t\tif (table.modExists(\"sort\")) {\n\n\t\t\t\t\t\ttable.modules.sort.sort(this.activeRows);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\tskipStage = false;\n\t\t\t\t}\n\n\t\t\t//generic stage to allow for pipeline trigger after the data manipulation stage\n\n\t\t\tcase \"display\":\n\n\t\t\t\tthis.resetDisplayRows();\n\n\t\t\tcase \"freeze\":\n\n\t\t\t\tif (!skipStage) {\n\n\t\t\t\t\tif (this.table.modExists(\"frozenRows\")) {\n\n\t\t\t\t\t\tif (table.modules.frozenRows.isFrozen()) {\n\n\t\t\t\t\t\t\tif (!table.modules.frozenRows.getDisplayIndex()) {\n\n\t\t\t\t\t\t\t\ttable.modules.frozenRows.setDisplayIndex(this.getNextDisplayIndex());\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tdisplayIndex = table.modules.frozenRows.getDisplayIndex();\n\n\t\t\t\t\t\t\tdisplayIndex = self.setDisplayRows(table.modules.frozenRows.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);\n\n\t\t\t\t\t\t\tif (displayIndex !== true) {\n\n\t\t\t\t\t\t\t\ttable.modules.frozenRows.setDisplayIndex(displayIndex);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\tskipStage = false;\n\t\t\t\t}\n\n\t\t\tcase \"group\":\n\n\t\t\t\tif (!skipStage) {\n\n\t\t\t\t\tif (table.options.groupBy && table.modExists(\"groupRows\")) {\n\n\t\t\t\t\t\tif (!table.modules.groupRows.getDisplayIndex()) {\n\n\t\t\t\t\t\t\ttable.modules.groupRows.setDisplayIndex(this.getNextDisplayIndex());\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdisplayIndex = table.modules.groupRows.getDisplayIndex();\n\n\t\t\t\t\t\tdisplayIndex = self.setDisplayRows(table.modules.groupRows.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);\n\n\t\t\t\t\t\tif (displayIndex !== true) {\n\n\t\t\t\t\t\t\ttable.modules.groupRows.setDisplayIndex(displayIndex);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\tskipStage = false;\n\t\t\t\t}\n\n\t\t\tcase \"tree\":\n\n\t\t\t\tif (!skipStage) {\n\n\t\t\t\t\tif (table.options.dataTree && table.modExists(\"dataTree\")) {\n\n\t\t\t\t\t\tif (!table.modules.dataTree.getDisplayIndex()) {\n\n\t\t\t\t\t\t\ttable.modules.dataTree.setDisplayIndex(this.getNextDisplayIndex());\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdisplayIndex = table.modules.dataTree.getDisplayIndex();\n\n\t\t\t\t\t\tdisplayIndex = self.setDisplayRows(table.modules.dataTree.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);\n\n\t\t\t\t\t\tif (displayIndex !== true) {\n\n\t\t\t\t\t\t\ttable.modules.dataTree.setDisplayIndex(displayIndex);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\tskipStage = false;\n\t\t\t\t}\n\n\t\t\t\tif (table.options.pagination && table.modExists(\"page\") && !renderInPosition) {\n\n\t\t\t\t\tif (table.modules.page.getMode() == \"local\") {\n\n\t\t\t\t\t\ttable.modules.page.reset();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\tcase \"page\":\n\n\t\t\t\tif (!skipStage) {\n\n\t\t\t\t\tif (table.options.pagination && table.modExists(\"page\")) {\n\n\t\t\t\t\t\tif (!table.modules.page.getDisplayIndex()) {\n\n\t\t\t\t\t\t\ttable.modules.page.setDisplayIndex(this.getNextDisplayIndex());\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdisplayIndex = table.modules.page.getDisplayIndex();\n\n\t\t\t\t\t\tif (table.modules.page.getMode() == \"local\") {\n\n\t\t\t\t\t\t\ttable.modules.page.setMaxRows(this.getDisplayRows(displayIndex - 1).length);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdisplayIndex = self.setDisplayRows(table.modules.page.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);\n\n\t\t\t\t\t\tif (displayIndex !== true) {\n\n\t\t\t\t\t\t\ttable.modules.page.setDisplayIndex(displayIndex);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\tskipStage = false;\n\t\t\t\t}\n\n\t\t}\n\n\t\tif (Tabulator.prototype.helpers.elVisible(self.element)) {\n\n\t\t\tif (renderInPosition) {\n\n\t\t\t\tself.reRenderInPosition();\n\t\t\t} else {\n\n\t\t\t\tself.renderTable();\n\n\t\t\t\tif (table.options.layoutColumnsOnNewData) {\n\n\t\t\t\t\tself.table.columnManager.redraw(true);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (table.modExists(\"columnCalcs\")) {\n\n\t\t\ttable.modules.columnCalcs.recalc(this.activeRows);\n\t\t}\n\t};\n\n\tRowManager.prototype.setActiveRows = function (activeRows) {\n\n\t\tthis.activeRows = activeRows;\n\n\t\tthis.activeRowsCount = this.activeRows.length;\n\t};\n\n\t//reset display rows array\n\n\tRowManager.prototype.resetDisplayRows = function () {\n\n\t\tthis.displayRows = [];\n\n\t\tthis.displayRows.push(this.activeRows.slice(0));\n\n\t\tthis.displayRowsCount = this.displayRows[0].length;\n\n\t\tif (this.table.modExists(\"frozenRows\")) {\n\n\t\t\tthis.table.modules.frozenRows.setDisplayIndex(0);\n\t\t}\n\n\t\tif (this.table.options.groupBy && this.table.modExists(\"groupRows\")) {\n\n\t\t\tthis.table.modules.groupRows.setDisplayIndex(0);\n\t\t}\n\n\t\tif (this.table.options.pagination && this.table.modExists(\"page\")) {\n\n\t\t\tthis.table.modules.page.setDisplayIndex(0);\n\t\t}\n\t};\n\n\tRowManager.prototype.getNextDisplayIndex = function () {\n\n\t\treturn this.displayRows.length;\n\t};\n\n\t//set display row pipeline data\n\n\tRowManager.prototype.setDisplayRows = function (displayRows, index) {\n\n\t\tvar output = true;\n\n\t\tif (index && typeof this.displayRows[index] != \"undefined\") {\n\n\t\t\tthis.displayRows[index] = displayRows;\n\n\t\t\toutput = true;\n\t\t} else {\n\n\t\t\tthis.displayRows.push(displayRows);\n\n\t\t\toutput = index = this.displayRows.length - 1;\n\t\t}\n\n\t\tif (index == this.displayRows.length - 1) {\n\n\t\t\tthis.displayRowsCount = this.displayRows[this.displayRows.length - 1].length;\n\t\t}\n\n\t\treturn output;\n\t};\n\n\tRowManager.prototype.getDisplayRows = function (index) {\n\n\t\tif (typeof index == \"undefined\") {\n\n\t\t\treturn this.displayRows.length ? this.displayRows[this.displayRows.length - 1] : [];\n\t\t} else {\n\n\t\t\treturn this.displayRows[index] || [];\n\t\t}\n\t};\n\n\tRowManager.prototype.getVisibleRows = function (viewable) {\n\n\t\tvar topEdge = this.element.scrollTop,\n\t\t bottomEdge = this.element.clientHeight + topEdge,\n\t\t topFound = false,\n\t\t topRow = 0,\n\t\t bottomRow = 0,\n\t\t rows = this.getDisplayRows();\n\n\t\tif (viewable) {\n\n\t\t\tthis.getDisplayRows();\n\n\t\t\tfor (var i = this.vDomTop; i <= this.vDomBottom; i++) {\n\n\t\t\t\tif (rows[i]) {\n\n\t\t\t\t\tif (!topFound) {\n\n\t\t\t\t\t\tif (topEdge - rows[i].getElement().offsetTop >= 0) {\n\n\t\t\t\t\t\t\ttopRow = i;\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\ttopFound = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif (bottomEdge - rows[i].getElement().offsetTop >= 0) {\n\n\t\t\t\t\t\t\tbottomRow = i;\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\n\t\t\ttopRow = this.vDomTop;\n\n\t\t\tbottomRow = this.vDomBottom;\n\t\t}\n\n\t\treturn rows.slice(topRow, bottomRow + 1);\n\t};\n\n\t//repeat action accross display rows\n\n\tRowManager.prototype.displayRowIterator = function (callback) {\n\n\t\tthis.displayRows.forEach(callback);\n\n\t\tthis.displayRowsCount = this.displayRows[this.displayRows.length - 1].length;\n\t};\n\n\t//return only actual rows (not group headers etc)\n\n\tRowManager.prototype.getRows = function () {\n\n\t\treturn this.rows;\n\t};\n\n\t///////////////// Table Rendering /////////////////\n\n\n\t//trigger rerender of table in current position\n\n\tRowManager.prototype.reRenderInPosition = function (callback) {\n\n\t\tif (this.getRenderMode() == \"virtual\") {\n\n\t\t\tvar scrollTop = this.element.scrollTop;\n\n\t\t\tvar topRow = false;\n\n\t\t\tvar topOffset = false;\n\n\t\t\tvar left = this.scrollLeft;\n\n\t\t\tvar rows = this.getDisplayRows();\n\n\t\t\tfor (var i = this.vDomTop; i <= this.vDomBottom; i++) {\n\n\t\t\t\tif (rows[i]) {\n\n\t\t\t\t\tvar diff = scrollTop - rows[i].getElement().offsetTop;\n\n\t\t\t\t\tif (topOffset === false || Math.abs(diff) < topOffset) {\n\n\t\t\t\t\t\ttopOffset = diff;\n\n\t\t\t\t\t\ttopRow = i;\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (callback) {\n\n\t\t\t\tcallback();\n\t\t\t}\n\n\t\t\tthis._virtualRenderFill(topRow === false ? this.displayRowsCount - 1 : topRow, true, topOffset || 0);\n\n\t\t\tthis.scrollHorizontal(left);\n\t\t} else {\n\n\t\t\tthis.renderTable();\n\n\t\t\tif (callback) {\n\n\t\t\t\tcallback();\n\t\t\t}\n\t\t}\n\t};\n\n\tRowManager.prototype.setRenderMode = function () {\n\n\t\tif ((this.table.element.clientHeight || this.table.options.height) && this.table.options.virtualDom) {\n\n\t\t\tthis.renderMode = \"virtual\";\n\t\t} else {\n\n\t\t\tthis.renderMode = \"classic\";\n\t\t}\n\t};\n\n\tRowManager.prototype.getRenderMode = function () {\n\n\t\treturn this.renderMode;\n\t};\n\n\tRowManager.prototype.renderTable = function () {\n\n\t\tvar self = this;\n\n\t\tself.table.options.renderStarted.call(this.table);\n\n\t\tself.element.scrollTop = 0;\n\n\t\tswitch (self.renderMode) {\n\n\t\t\tcase \"classic\":\n\n\t\t\t\tself._simpleRender();\n\n\t\t\t\tbreak;\n\n\t\t\tcase \"virtual\":\n\n\t\t\t\tself._virtualRenderFill();\n\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tif (self.firstRender) {\n\n\t\t\tif (self.displayRowsCount) {\n\n\t\t\t\tself.firstRender = false;\n\n\t\t\t\tself.table.modules.layout.layout();\n\t\t\t} else {\n\n\t\t\t\tself.renderEmptyScroll();\n\t\t\t}\n\t\t}\n\n\t\tif (self.table.modExists(\"frozenColumns\")) {\n\n\t\t\tself.table.modules.frozenColumns.layout();\n\t\t}\n\n\t\tif (!self.displayRowsCount) {\n\n\t\t\tif (self.table.options.placeholder) {\n\n\t\t\t\tif (this.renderMode) {\n\n\t\t\t\t\tself.table.options.placeholder.setAttribute(\"tabulator-render-mode\", this.renderMode);\n\t\t\t\t}\n\n\t\t\t\tself.getElement().appendChild(self.table.options.placeholder);\n\t\t\t}\n\t\t}\n\n\t\tself.table.options.renderComplete.call(this.table);\n\t};\n\n\t//simple render on heightless table\n\n\tRowManager.prototype._simpleRender = function () {\n\n\t\tthis._clearVirtualDom();\n\n\t\tif (this.displayRowsCount) {\n\n\t\t\tthis.checkClassicModeGroupHeaderWidth();\n\t\t} else {\n\n\t\t\tthis.renderEmptyScroll();\n\t\t}\n\t};\n\n\tRowManager.prototype.checkClassicModeGroupHeaderWidth = function () {\n\n\t\tvar self = this,\n\t\t element = this.tableElement,\n\t\t onlyGroupHeaders = true;\n\n\t\tself.getDisplayRows().forEach(function (row, index) {\n\n\t\t\tself.styleRow(row, index);\n\n\t\t\telement.appendChild(row.getElement());\n\n\t\t\trow.initialize(true);\n\n\t\t\tif (row.type !== \"group\") {\n\n\t\t\t\tonlyGroupHeaders = false;\n\t\t\t}\n\t\t});\n\n\t\tif (onlyGroupHeaders) {\n\n\t\t\telement.style.minWidth = self.table.columnManager.getWidth() + \"px\";\n\t\t} else {\n\n\t\t\telement.style.minWidth = \"\";\n\t\t}\n\t};\n\n\t//show scrollbars on empty table div\n\n\tRowManager.prototype.renderEmptyScroll = function () {\n\n\t\tthis.tableElement.style.minWidth = this.table.columnManager.getWidth() + \"px\";\n\n\t\tthis.tableElement.style.minHeight = \"1px\";\n\n\t\tthis.tableElement.style.visibility = \"hidden\";\n\t};\n\n\tRowManager.prototype._clearVirtualDom = function () {\n\n\t\tvar element = this.tableElement;\n\n\t\tif (this.table.options.placeholder && this.table.options.placeholder.parentNode) {\n\n\t\t\tthis.table.options.placeholder.parentNode.removeChild(this.table.options.placeholder);\n\t\t}\n\n\t\t// element.children.detach();\n\n\t\twhile (element.firstChild) {\n\t\t\telement.removeChild(element.firstChild);\n\t\t}element.style.paddingTop = \"\";\n\n\t\telement.style.paddingBottom = \"\";\n\n\t\telement.style.minWidth = \"\";\n\n\t\telement.style.minHeight = \"\";\n\n\t\telement.style.visibility = \"\";\n\n\t\tthis.scrollTop = 0;\n\n\t\tthis.scrollLeft = 0;\n\n\t\tthis.vDomTop = 0;\n\n\t\tthis.vDomBottom = 0;\n\n\t\tthis.vDomTopPad = 0;\n\n\t\tthis.vDomBottomPad = 0;\n\t};\n\n\tRowManager.prototype.styleRow = function (row, index) {\n\n\t\tvar rowEl = row.getElement();\n\n\t\tif (index % 2) {\n\n\t\t\trowEl.classList.add(\"tabulator-row-even\");\n\n\t\t\trowEl.classList.remove(\"tabulator-row-odd\");\n\t\t} else {\n\n\t\t\trowEl.classList.add(\"tabulator-row-odd\");\n\n\t\t\trowEl.classList.remove(\"tabulator-row-even\");\n\t\t}\n\t};\n\n\t//full virtual render\n\n\tRowManager.prototype._virtualRenderFill = function (position, forceMove, offset) {\n\n\t\tvar self = this,\n\t\t element = self.tableElement,\n\t\t holder = self.element,\n\t\t topPad = 0,\n\t\t rowsHeight = 0,\n\t\t topPadHeight = 0,\n\t\t i = 0,\n\t\t onlyGroupHeaders = true,\n\t\t rows = self.getDisplayRows();\n\n\t\tposition = position || 0;\n\n\t\toffset = offset || 0;\n\n\t\tif (!position) {\n\n\t\t\tself._clearVirtualDom();\n\t\t} else {\n\n\t\t\twhile (element.firstChild) {\n\t\t\t\telement.removeChild(element.firstChild);\n\t\t\t} //check if position is too close to bottom of table\n\n\t\t\tvar heightOccupied = (self.displayRowsCount - position + 1) * self.vDomRowHeight;\n\n\t\t\tif (heightOccupied < self.height) {\n\n\t\t\t\tposition -= Math.ceil((self.height - heightOccupied) / self.vDomRowHeight);\n\n\t\t\t\tif (position < 0) {\n\n\t\t\t\t\tposition = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//calculate initial pad\n\n\t\t\ttopPad = Math.min(Math.max(Math.floor(self.vDomWindowBuffer / self.vDomRowHeight), self.vDomWindowMinMarginRows), position);\n\n\t\t\tposition -= topPad;\n\t\t}\n\n\t\tif (self.displayRowsCount && Tabulator.prototype.helpers.elVisible(self.element)) {\n\n\t\t\tself.vDomTop = position;\n\n\t\t\tself.vDomBottom = position - 1;\n\n\t\t\twhile ((rowsHeight <= self.height + self.vDomWindowBuffer || i < self.vDomWindowMinTotalRows) && self.vDomBottom < self.displayRowsCount - 1) {\n\n\t\t\t\tvar index = self.vDomBottom + 1,\n\t\t\t\t row = rows[index],\n\t\t\t\t rowHeight = 0;\n\n\t\t\t\tself.styleRow(row, index);\n\n\t\t\t\telement.appendChild(row.getElement());\n\n\t\t\t\tif (!row.initialized) {\n\n\t\t\t\t\trow.initialize(true);\n\t\t\t\t} else {\n\n\t\t\t\t\tif (!row.heightInitialized) {\n\n\t\t\t\t\t\trow.normalizeHeight(true);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\trowHeight = row.getHeight();\n\n\t\t\t\tif (i < topPad) {\n\n\t\t\t\t\ttopPadHeight += rowHeight;\n\t\t\t\t} else {\n\n\t\t\t\t\trowsHeight += rowHeight;\n\t\t\t\t}\n\n\t\t\t\tif (rowHeight > this.vDomWindowBuffer) {\n\n\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\n\t\t\t\t}\n\n\t\t\t\tif (row.type !== \"group\") {\n\n\t\t\t\t\tonlyGroupHeaders = false;\n\t\t\t\t}\n\n\t\t\t\tself.vDomBottom++;\n\n\t\t\t\ti++;\n\t\t\t}\n\n\t\t\tif (!position) {\n\n\t\t\t\tthis.vDomTopPad = 0;\n\n\t\t\t\t//adjust rowheight to match average of rendered elements\n\n\t\t\t\tself.vDomRowHeight = Math.floor((rowsHeight + topPadHeight) / i);\n\n\t\t\t\tself.vDomBottomPad = self.vDomRowHeight * (self.displayRowsCount - self.vDomBottom - 1);\n\n\t\t\t\tself.vDomScrollHeight = topPadHeight + rowsHeight + self.vDomBottomPad - self.height;\n\t\t\t} else {\n\n\t\t\t\tself.vDomTopPad = !forceMove ? self.scrollTop - topPadHeight : self.vDomRowHeight * this.vDomTop + offset;\n\n\t\t\t\tself.vDomBottomPad = self.vDomBottom == self.displayRowsCount - 1 ? 0 : Math.max(self.vDomScrollHeight - self.vDomTopPad - rowsHeight - topPadHeight, 0);\n\t\t\t}\n\n\t\t\telement.style.paddingTop = self.vDomTopPad + \"px\";\n\n\t\t\telement.style.paddingBottom = self.vDomBottomPad + \"px\";\n\n\t\t\tif (forceMove) {\n\n\t\t\t\tthis.scrollTop = self.vDomTopPad + topPadHeight + offset - (this.element.scrollWidth > this.element.clientWidth ? this.element.offsetHeight - this.element.clientHeight : 0);\n\t\t\t}\n\n\t\t\tthis.scrollTop = Math.min(this.scrollTop, this.element.scrollHeight - this.height);\n\n\t\t\t//adjust for horizontal scrollbar if present (and not at top of table)\n\n\t\t\tif (this.element.scrollWidth > this.element.offsetWidth && forceMove) {\n\n\t\t\t\tthis.scrollTop += this.element.offsetHeight - this.element.clientHeight;\n\t\t\t}\n\n\t\t\tthis.vDomScrollPosTop = this.scrollTop;\n\n\t\t\tthis.vDomScrollPosBottom = this.scrollTop;\n\n\t\t\tholder.scrollTop = this.scrollTop;\n\n\t\t\telement.style.minWidth = onlyGroupHeaders ? self.table.columnManager.getWidth() + \"px\" : \"\";\n\n\t\t\tif (self.table.options.groupBy) {\n\n\t\t\t\tif (self.table.modules.layout.getMode() != \"fitDataFill\" && self.displayRowsCount == self.table.modules.groupRows.countGroups()) {\n\n\t\t\t\t\tself.tableElement.style.minWidth = self.table.columnManager.getWidth();\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\n\t\t\tthis.renderEmptyScroll();\n\t\t}\n\t};\n\n\t//handle vertical scrolling\n\n\tRowManager.prototype.scrollVertical = function (dir) {\n\n\t\tvar topDiff = this.scrollTop - this.vDomScrollPosTop;\n\n\t\tvar bottomDiff = this.scrollTop - this.vDomScrollPosBottom;\n\n\t\tvar margin = this.vDomWindowBuffer * 2;\n\n\t\tif (-topDiff > margin || bottomDiff > margin) {\n\n\t\t\t//if big scroll redraw table;\n\n\t\t\tvar left = this.scrollLeft;\n\n\t\t\tthis._virtualRenderFill(Math.floor(this.element.scrollTop / this.element.scrollHeight * this.displayRowsCount));\n\n\t\t\tthis.scrollHorizontal(left);\n\t\t} else {\n\n\t\t\tif (dir) {\n\n\t\t\t\t//scrolling up\n\n\t\t\t\tif (topDiff < 0) {\n\n\t\t\t\t\tthis._addTopRow(-topDiff);\n\t\t\t\t}\n\n\t\t\t\tif (bottomDiff < 0) {\n\n\t\t\t\t\t//hide bottom row if needed\n\n\t\t\t\t\tif (this.vDomScrollHeight - this.scrollTop > this.vDomWindowBuffer) {\n\n\t\t\t\t\t\tthis._removeBottomRow(-bottomDiff);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t//scrolling down\n\n\t\t\t\tif (topDiff >= 0) {\n\n\t\t\t\t\t//hide top row if needed\n\n\t\t\t\t\tif (this.scrollTop > this.vDomWindowBuffer) {\n\n\t\t\t\t\t\tthis._removeTopRow(topDiff);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (bottomDiff >= 0) {\n\n\t\t\t\t\tthis._addBottomRow(bottomDiff);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tRowManager.prototype._addTopRow = function (topDiff) {\n\t\tvar i = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n\n\t\tvar table = this.tableElement,\n\t\t rows = this.getDisplayRows();\n\n\t\tif (this.vDomTop) {\n\n\t\t\tvar index = this.vDomTop - 1,\n\t\t\t topRow = rows[index],\n\t\t\t topRowHeight = topRow.getHeight() || this.vDomRowHeight;\n\n\t\t\t//hide top row if needed\n\n\t\t\tif (topDiff >= topRowHeight) {\n\n\t\t\t\tthis.styleRow(topRow, index);\n\n\t\t\t\ttable.insertBefore(topRow.getElement(), table.firstChild);\n\n\t\t\t\tif (!topRow.initialized || !topRow.heightInitialized) {\n\n\t\t\t\t\tthis.vDomTopNewRows.push(topRow);\n\n\t\t\t\t\tif (!topRow.heightInitialized) {\n\n\t\t\t\t\t\ttopRow.clearCellHeight();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\ttopRow.initialize();\n\n\t\t\t\tthis.vDomTopPad -= topRowHeight;\n\n\t\t\t\tif (this.vDomTopPad < 0) {\n\n\t\t\t\t\tthis.vDomTopPad = index * this.vDomRowHeight;\n\t\t\t\t}\n\n\t\t\t\tif (!index) {\n\n\t\t\t\t\tthis.vDomTopPad = 0;\n\t\t\t\t}\n\n\t\t\t\ttable.style.paddingTop = this.vDomTopPad + \"px\";\n\n\t\t\t\tthis.vDomScrollPosTop -= topRowHeight;\n\n\t\t\t\tthis.vDomTop--;\n\t\t\t}\n\n\t\t\ttopDiff = -(this.scrollTop - this.vDomScrollPosTop);\n\n\t\t\tif (topRow.getHeight() > this.vDomWindowBuffer) {\n\n\t\t\t\tthis.vDomWindowBuffer = topRow.getHeight() * 2;\n\t\t\t}\n\n\t\t\tif (i < this.vDomMaxRenderChain && this.vDomTop && topDiff >= (rows[this.vDomTop - 1].getHeight() || this.vDomRowHeight)) {\n\n\t\t\t\tthis._addTopRow(topDiff, i + 1);\n\t\t\t} else {\n\n\t\t\t\tthis._quickNormalizeRowHeight(this.vDomTopNewRows);\n\t\t\t}\n\t\t}\n\t};\n\n\tRowManager.prototype._removeTopRow = function (topDiff) {\n\n\t\tvar table = this.tableElement,\n\t\t topRow = this.getDisplayRows()[this.vDomTop],\n\t\t topRowHeight = topRow.getHeight() || this.vDomRowHeight;\n\n\t\tif (topDiff >= topRowHeight) {\n\n\t\t\tvar rowEl = topRow.getElement();\n\n\t\t\trowEl.parentNode.removeChild(rowEl);\n\n\t\t\tthis.vDomTopPad += topRowHeight;\n\n\t\t\ttable.style.paddingTop = this.vDomTopPad + \"px\";\n\n\t\t\tthis.vDomScrollPosTop += this.vDomTop ? topRowHeight : topRowHeight + this.vDomWindowBuffer;\n\n\t\t\tthis.vDomTop++;\n\n\t\t\ttopDiff = this.scrollTop - this.vDomScrollPosTop;\n\n\t\t\tthis._removeTopRow(topDiff);\n\t\t}\n\t};\n\n\tRowManager.prototype._addBottomRow = function (bottomDiff) {\n\t\tvar i = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n\n\t\tvar table = this.tableElement,\n\t\t rows = this.getDisplayRows();\n\n\t\tif (this.vDomBottom < this.displayRowsCount - 1) {\n\n\t\t\tvar index = this.vDomBottom + 1,\n\t\t\t bottomRow = rows[index],\n\t\t\t bottomRowHeight = bottomRow.getHeight() || this.vDomRowHeight;\n\n\t\t\t//hide bottom row if needed\n\n\t\t\tif (bottomDiff >= bottomRowHeight) {\n\n\t\t\t\tthis.styleRow(bottomRow, index);\n\n\t\t\t\ttable.appendChild(bottomRow.getElement());\n\n\t\t\t\tif (!bottomRow.initialized || !bottomRow.heightInitialized) {\n\n\t\t\t\t\tthis.vDomBottomNewRows.push(bottomRow);\n\n\t\t\t\t\tif (!bottomRow.heightInitialized) {\n\n\t\t\t\t\t\tbottomRow.clearCellHeight();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbottomRow.initialize();\n\n\t\t\t\tthis.vDomBottomPad -= bottomRowHeight;\n\n\t\t\t\tif (this.vDomBottomPad < 0 || index == this.displayRowsCount - 1) {\n\n\t\t\t\t\tthis.vDomBottomPad = 0;\n\t\t\t\t}\n\n\t\t\t\ttable.style.paddingBottom = this.vDomBottomPad + \"px\";\n\n\t\t\t\tthis.vDomScrollPosBottom += bottomRowHeight;\n\n\t\t\t\tthis.vDomBottom++;\n\t\t\t}\n\n\t\t\tbottomDiff = this.scrollTop - this.vDomScrollPosBottom;\n\n\t\t\tif (bottomRow.getHeight() > this.vDomWindowBuffer) {\n\n\t\t\t\tthis.vDomWindowBuffer = bottomRow.getHeight() * 2;\n\t\t\t}\n\n\t\t\tif (i < this.vDomMaxRenderChain && this.vDomBottom < this.displayRowsCount - 1 && bottomDiff >= (rows[this.vDomBottom + 1].getHeight() || this.vDomRowHeight)) {\n\n\t\t\t\tthis._addBottomRow(bottomDiff, i + 1);\n\t\t\t} else {\n\n\t\t\t\tthis._quickNormalizeRowHeight(this.vDomBottomNewRows);\n\t\t\t}\n\t\t}\n\t};\n\n\tRowManager.prototype._removeBottomRow = function (bottomDiff) {\n\n\t\tvar table = this.tableElement,\n\t\t bottomRow = this.getDisplayRows()[this.vDomBottom],\n\t\t bottomRowHeight = bottomRow.getHeight() || this.vDomRowHeight;\n\n\t\tif (bottomDiff >= bottomRowHeight) {\n\n\t\t\tvar rowEl = bottomRow.getElement();\n\n\t\t\tif (rowEl.parentNode) {\n\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\n\t\t\t}\n\n\t\t\tthis.vDomBottomPad += bottomRowHeight;\n\n\t\t\tif (this.vDomBottomPad < 0) {\n\n\t\t\t\tthis.vDomBottomPad = 0;\n\t\t\t}\n\n\t\t\ttable.style.paddingBottom = this.vDomBottomPad + \"px\";\n\n\t\t\tthis.vDomScrollPosBottom -= bottomRowHeight;\n\n\t\t\tthis.vDomBottom--;\n\n\t\t\tbottomDiff = -(this.scrollTop - this.vDomScrollPosBottom);\n\n\t\t\tthis._removeBottomRow(bottomDiff);\n\t\t}\n\t};\n\n\tRowManager.prototype._quickNormalizeRowHeight = function (rows) {\n\n\t\trows.forEach(function (row) {\n\n\t\t\trow.calcHeight();\n\t\t});\n\n\t\trows.forEach(function (row) {\n\n\t\t\trow.setCellHeight();\n\t\t});\n\n\t\trows.length = 0;\n\t};\n\n\t//normalize height of active rows\n\n\tRowManager.prototype.normalizeHeight = function () {\n\n\t\tthis.activeRows.forEach(function (row) {\n\n\t\t\trow.normalizeHeight();\n\t\t});\n\t};\n\n\t//adjust the height of the table holder to fit in the Tabulator element\n\n\tRowManager.prototype.adjustTableSize = function () {\n\n\t\tif (this.renderMode === \"virtual\") {\n\n\t\t\tthis.height = this.element.clientHeight;\n\n\t\t\tthis.vDomWindowBuffer = this.table.options.virtualDomBuffer || this.height;\n\n\t\t\tvar otherHeight = this.columnManager.getElement().offsetHeight + (this.table.footerManager && !this.table.footerManager.external ? this.table.footerManager.getElement().offsetHeight : 0);\n\n\t\t\tthis.element.style.minHeight = \"calc(100% - \" + otherHeight + \"px)\";\n\n\t\t\tthis.element.style.height = \"calc(100% - \" + otherHeight + \"px)\";\n\n\t\t\tthis.element.style.maxHeight = \"calc(100% - \" + otherHeight + \"px)\";\n\t\t}\n\t};\n\n\t//renitialize all rows\n\n\tRowManager.prototype.reinitialize = function () {\n\n\t\tthis.rows.forEach(function (row) {\n\n\t\t\trow.reinitialize();\n\t\t});\n\t};\n\n\t//redraw table\n\n\tRowManager.prototype.redraw = function (force) {\n\n\t\tvar pos = 0,\n\t\t left = this.scrollLeft;\n\n\t\tthis.adjustTableSize();\n\n\t\tthis.table.tableWidth = this.table.element.clientWidth;\n\n\t\tif (!force) {\n\n\t\t\tif (self.renderMode == \"classic\") {\n\n\t\t\t\tif (self.table.options.groupBy) {\n\n\t\t\t\t\tself.refreshActiveData(\"group\", false, false);\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._simpleRender();\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\tthis.reRenderInPosition();\n\n\t\t\t\tthis.scrollHorizontal(left);\n\t\t\t}\n\n\t\t\tif (!this.displayRowsCount) {\n\n\t\t\t\tif (this.table.options.placeholder) {\n\n\t\t\t\t\tthis.getElement().appendChild(this.table.options.placeholder);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\n\t\t\tthis.renderTable();\n\t\t}\n\t};\n\n\tRowManager.prototype.resetScroll = function () {\n\n\t\tthis.element.scrollLeft = 0;\n\n\t\tthis.element.scrollTop = 0;\n\n\t\tif (this.table.browser === \"ie\") {\n\n\t\t\tvar event = document.createEvent(\"Event\");\n\n\t\t\tevent.initEvent(\"scroll\", false, true);\n\n\t\t\tthis.element.dispatchEvent(event);\n\t\t} else {\n\n\t\t\tthis.element.dispatchEvent(new Event('scroll'));\n\t\t}\n\t};\n\n\t//public row object\n\n\tvar RowComponent = function RowComponent(row) {\n\n\t\tthis._row = row;\n\t};\n\n\tRowComponent.prototype.getData = function (transform) {\n\n\t\treturn this._row.getData(transform);\n\t};\n\n\tRowComponent.prototype.getElement = function () {\n\n\t\treturn this._row.getElement();\n\t};\n\n\tRowComponent.prototype.getCells = function () {\n\n\t\tvar cells = [];\n\n\t\tthis._row.getCells().forEach(function (cell) {\n\n\t\t\tcells.push(cell.getComponent());\n\t\t});\n\n\t\treturn cells;\n\t};\n\n\tRowComponent.prototype.getCell = function (column) {\n\n\t\tvar cell = this._row.getCell(column);\n\n\t\treturn cell ? cell.getComponent() : false;\n\t};\n\n\tRowComponent.prototype.getIndex = function () {\n\n\t\treturn this._row.getData(\"data\")[this._row.table.options.index];\n\t};\n\n\tRowComponent.prototype.getPosition = function (active) {\n\n\t\treturn this._row.table.rowManager.getRowPosition(this._row, active);\n\t};\n\n\tRowComponent.prototype.delete = function () {\n\n\t\treturn this._row.delete();\n\t};\n\n\tRowComponent.prototype.scrollTo = function () {\n\n\t\treturn this._row.table.rowManager.scrollToRow(this._row);\n\t};\n\n\tRowComponent.prototype.pageTo = function () {\n\n\t\tif (this._row.table.modExists(\"page\", true)) {\n\n\t\t\treturn this._row.table.modules.page.setPageToRow(this._row);\n\t\t}\n\t};\n\n\tRowComponent.prototype.move = function (to, after) {\n\n\t\tthis._row.moveToRow(to, after);\n\t};\n\n\tRowComponent.prototype.update = function (data) {\n\n\t\treturn this._row.updateData(data);\n\t};\n\n\tRowComponent.prototype.normalizeHeight = function () {\n\n\t\tthis._row.normalizeHeight(true);\n\t};\n\n\tRowComponent.prototype.select = function () {\n\n\t\tthis._row.table.modules.selectRow.selectRows(this._row);\n\t};\n\n\tRowComponent.prototype.deselect = function () {\n\n\t\tthis._row.table.modules.selectRow.deselectRows(this._row);\n\t};\n\n\tRowComponent.prototype.toggleSelect = function () {\n\n\t\tthis._row.table.modules.selectRow.toggleRow(this._row);\n\t};\n\n\tRowComponent.prototype.isSelected = function () {\n\n\t\treturn this._row.table.modules.selectRow.isRowSelected(this._row);\n\t};\n\n\tRowComponent.prototype._getSelf = function () {\n\n\t\treturn this._row;\n\t};\n\n\tRowComponent.prototype.freeze = function () {\n\n\t\tif (this._row.table.modExists(\"frozenRows\", true)) {\n\n\t\t\tthis._row.table.modules.frozenRows.freezeRow(this._row);\n\t\t}\n\t};\n\n\tRowComponent.prototype.unfreeze = function () {\n\n\t\tif (this._row.table.modExists(\"frozenRows\", true)) {\n\n\t\t\tthis._row.table.modules.frozenRows.unfreezeRow(this._row);\n\t\t}\n\t};\n\n\tRowComponent.prototype.treeCollapse = function () {\n\n\t\tif (this._row.table.modExists(\"dataTree\", true)) {\n\n\t\t\tthis._row.table.modules.dataTree.collapseRow(this._row);\n\t\t}\n\t};\n\n\tRowComponent.prototype.treeExpand = function () {\n\n\t\tif (this._row.table.modExists(\"dataTree\", true)) {\n\n\t\t\tthis._row.table.modules.dataTree.expandRow(this._row);\n\t\t}\n\t};\n\n\tRowComponent.prototype.treeToggle = function () {\n\n\t\tif (this._row.table.modExists(\"dataTree\", true)) {\n\n\t\t\tthis._row.table.modules.dataTree.toggleRow(this._row);\n\t\t}\n\t};\n\n\tRowComponent.prototype.getTreeParent = function () {\n\n\t\tif (this._row.table.modExists(\"dataTree\", true)) {\n\n\t\t\treturn this._row.table.modules.dataTree.getTreeParent(this._row);\n\t\t}\n\n\t\treturn false;\n\t};\n\n\tRowComponent.prototype.getTreeChildren = function () {\n\n\t\tif (this._row.table.modExists(\"dataTree\", true)) {\n\n\t\t\treturn this._row.table.modules.dataTree.getTreeChildren(this._row);\n\t\t}\n\n\t\treturn false;\n\t};\n\n\tRowComponent.prototype.reformat = function () {\n\n\t\treturn this._row.reinitialize();\n\t};\n\n\tRowComponent.prototype.getGroup = function () {\n\n\t\treturn this._row.getGroup().getComponent();\n\t};\n\n\tRowComponent.prototype.getTable = function () {\n\n\t\treturn this._row.table;\n\t};\n\n\tRowComponent.prototype.getNextRow = function () {\n\n\t\tvar row = this._row.nextRow();\n\n\t\treturn row ? row.getComponent() : row;\n\t};\n\n\tRowComponent.prototype.getPrevRow = function () {\n\n\t\tvar row = this._row.prevRow();\n\n\t\treturn row ? row.getComponent() : row;\n\t};\n\n\tvar Row = function Row(data, parent) {\n\n\t\tthis.table = parent.table;\n\n\t\tthis.parent = parent;\n\n\t\tthis.data = {};\n\n\t\tthis.type = \"row\"; //type of element\n\n\t\tthis.element = this.createElement();\n\n\t\tthis.modules = {}; //hold module variables;\n\n\t\tthis.cells = [];\n\n\t\tthis.height = 0; //hold element height\n\n\t\tthis.heightStyled = \"\"; //hold element height prestyled to improve render efficiency\n\n\t\tthis.manualHeight = false; //user has manually set row height\n\n\t\tthis.outerHeight = 0; //holde lements outer height\n\n\t\tthis.initialized = false; //element has been rendered\n\n\t\tthis.heightInitialized = false; //element has resized cells to fit\n\n\n\t\tthis.setData(data);\n\n\t\tthis.generateElement();\n\t};\n\n\tRow.prototype.createElement = function () {\n\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-row\");\n\n\t\tel.setAttribute(\"role\", \"row\");\n\n\t\treturn el;\n\t};\n\n\tRow.prototype.getElement = function () {\n\n\t\treturn this.element;\n\t};\n\n\tRow.prototype.detachElement = function () {\n\n\t\tif (this.element && this.element.parentNode) {\n\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t};\n\n\tRow.prototype.generateElement = function () {\n\n\t\tvar self = this,\n\t\t dblTap,\n\t\t tapHold,\n\t\t tap;\n\n\t\t//set row selection characteristics\n\n\t\tif (self.table.options.selectable !== false && self.table.modExists(\"selectRow\")) {\n\n\t\t\tself.table.modules.selectRow.initializeRow(this);\n\t\t}\n\n\t\t//setup movable rows\n\n\t\tif (self.table.options.movableRows !== false && self.table.modExists(\"moveRow\")) {\n\n\t\t\tself.table.modules.moveRow.initializeRow(this);\n\t\t}\n\n\t\t//setup data tree\n\n\t\tif (self.table.options.dataTree !== false && self.table.modExists(\"dataTree\")) {\n\n\t\t\tself.table.modules.dataTree.initializeRow(this);\n\t\t}\n\n\t\t//handle row click events\n\n\t\tif (self.table.options.rowClick) {\n\n\t\t\tself.element.addEventListener(\"click\", function (e) {\n\n\t\t\t\tself.table.options.rowClick(e, self.getComponent());\n\t\t\t});\n\t\t}\n\n\t\tif (self.table.options.rowDblClick) {\n\n\t\t\tself.element.addEventListener(\"dblclick\", function (e) {\n\n\t\t\t\tself.table.options.rowDblClick(e, self.getComponent());\n\t\t\t});\n\t\t}\n\n\t\tif (self.table.options.rowContext) {\n\n\t\t\tself.element.addEventListener(\"contextmenu\", function (e) {\n\n\t\t\t\tself.table.options.rowContext(e, self.getComponent());\n\t\t\t});\n\t\t}\n\n\t\t//handle mouse events\n\n\t\tif (self.table.options.rowMouseEnter) {\n\n\t\t\tself.element.addEventListener(\"mouseenter\", function (e) {\n\n\t\t\t\tself.table.options.rowMouseEnter(e, self.getComponent());\n\t\t\t});\n\t\t}\n\n\t\tif (self.table.options.rowMouseLeave) {\n\n\t\t\tself.element.addEventListener(\"mouseleave\", function (e) {\n\n\t\t\t\tself.table.options.rowMouseLeave(e, self.getComponent());\n\t\t\t});\n\t\t}\n\n\t\tif (self.table.options.rowMouseOver) {\n\n\t\t\tself.element.addEventListener(\"mouseover\", function (e) {\n\n\t\t\t\tself.table.options.rowMouseOver(e, self.getComponent());\n\t\t\t});\n\t\t}\n\n\t\tif (self.table.options.rowMouseOut) {\n\n\t\t\tself.element.addEventListener(\"mouseout\", function (e) {\n\n\t\t\t\tself.table.options.rowMouseOut(e, self.getComponent());\n\t\t\t});\n\t\t}\n\n\t\tif (self.table.options.rowMouseMove) {\n\n\t\t\tself.element.addEventListener(\"mousemove\", function (e) {\n\n\t\t\t\tself.table.options.rowMouseMove(e, self.getComponent());\n\t\t\t});\n\t\t}\n\n\t\tif (self.table.options.rowTap) {\n\n\t\t\ttap = false;\n\n\t\t\tself.element.addEventListener(\"touchstart\", function (e) {\n\n\t\t\t\ttap = true;\n\t\t\t}, { passive: true });\n\n\t\t\tself.element.addEventListener(\"touchend\", function (e) {\n\n\t\t\t\tif (tap) {\n\n\t\t\t\t\tself.table.options.rowTap(e, self.getComponent());\n\t\t\t\t}\n\n\t\t\t\ttap = false;\n\t\t\t});\n\t\t}\n\n\t\tif (self.table.options.rowDblTap) {\n\n\t\t\tdblTap = null;\n\n\t\t\tself.element.addEventListener(\"touchend\", function (e) {\n\n\t\t\t\tif (dblTap) {\n\n\t\t\t\t\tclearTimeout(dblTap);\n\n\t\t\t\t\tdblTap = null;\n\n\t\t\t\t\tself.table.options.rowDblTap(e, self.getComponent());\n\t\t\t\t} else {\n\n\t\t\t\t\tdblTap = setTimeout(function () {\n\n\t\t\t\t\t\tclearTimeout(dblTap);\n\n\t\t\t\t\t\tdblTap = null;\n\t\t\t\t\t}, 300);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (self.table.options.rowTapHold) {\n\n\t\t\ttapHold = null;\n\n\t\t\tself.element.addEventListener(\"touchstart\", function (e) {\n\n\t\t\t\tclearTimeout(tapHold);\n\n\t\t\t\ttapHold = setTimeout(function () {\n\n\t\t\t\t\tclearTimeout(tapHold);\n\n\t\t\t\t\ttapHold = null;\n\n\t\t\t\t\ttap = false;\n\n\t\t\t\t\tself.table.options.rowTapHold(e, self.getComponent());\n\t\t\t\t}, 1000);\n\t\t\t}, { passive: true });\n\n\t\t\tself.element.addEventListener(\"touchend\", function (e) {\n\n\t\t\t\tclearTimeout(tapHold);\n\n\t\t\t\ttapHold = null;\n\t\t\t});\n\t\t}\n\t};\n\n\tRow.prototype.generateCells = function () {\n\n\t\tthis.cells = this.table.columnManager.generateCells(this);\n\t};\n\n\t//functions to setup on first render\n\n\tRow.prototype.initialize = function (force) {\n\n\t\tvar self = this;\n\n\t\tif (!self.initialized || force) {\n\n\t\t\tself.deleteCells();\n\n\t\t\twhile (self.element.firstChild) {\n\t\t\t\tself.element.removeChild(self.element.firstChild);\n\t\t\t} //handle frozen cells\n\n\t\t\tif (this.table.modExists(\"frozenColumns\")) {\n\n\t\t\t\tthis.table.modules.frozenColumns.layoutRow(this);\n\t\t\t}\n\n\t\t\tthis.generateCells();\n\n\t\t\tself.cells.forEach(function (cell) {\n\n\t\t\t\tself.element.appendChild(cell.getElement());\n\n\t\t\t\tcell.cellRendered();\n\t\t\t});\n\n\t\t\tif (force) {\n\n\t\t\t\tself.normalizeHeight();\n\t\t\t}\n\n\t\t\t//setup movable rows\n\n\t\t\tif (self.table.options.dataTree && self.table.modExists(\"dataTree\")) {\n\n\t\t\t\tself.table.modules.dataTree.layoutRow(this);\n\t\t\t}\n\n\t\t\t//setup movable rows\n\n\t\t\tif (self.table.options.responsiveLayout === \"collapse\" && self.table.modExists(\"responsiveLayout\")) {\n\n\t\t\t\tself.table.modules.responsiveLayout.layoutRow(this);\n\t\t\t}\n\n\t\t\tif (self.table.options.rowFormatter) {\n\n\t\t\t\tself.table.options.rowFormatter(self.getComponent());\n\t\t\t}\n\n\t\t\t//set resizable handles\n\n\t\t\tif (self.table.options.resizableRows && self.table.modExists(\"resizeRows\")) {\n\n\t\t\t\tself.table.modules.resizeRows.initializeRow(self);\n\t\t\t}\n\n\t\t\tself.initialized = true;\n\t\t}\n\t};\n\n\tRow.prototype.reinitializeHeight = function () {\n\n\t\tthis.heightInitialized = false;\n\n\t\tif (this.element.offsetParent !== null) {\n\n\t\t\tthis.normalizeHeight(true);\n\t\t}\n\t};\n\n\tRow.prototype.reinitialize = function () {\n\n\t\tthis.initialized = false;\n\n\t\tthis.heightInitialized = false;\n\n\t\tif (!this.manualHeight) {\n\n\t\t\tthis.height = 0;\n\n\t\t\tthis.heightStyled = \"\";\n\t\t}\n\n\t\tif (this.element.offsetParent !== null) {\n\n\t\t\tthis.initialize(true);\n\t\t}\n\t};\n\n\t//get heights when doing bulk row style calcs in virtual DOM\n\n\tRow.prototype.calcHeight = function (force) {\n\n\t\tvar maxHeight = 0,\n\t\t minHeight = this.table.options.resizableRows ? this.element.clientHeight : 0;\n\n\t\tthis.cells.forEach(function (cell) {\n\n\t\t\tvar height = cell.getHeight();\n\n\t\t\tif (height > maxHeight) {\n\n\t\t\t\tmaxHeight = height;\n\t\t\t}\n\t\t});\n\n\t\tif (force) {\n\n\t\t\tthis.height = Math.max(maxHeight, minHeight);\n\t\t} else {\n\n\t\t\tthis.height = this.manualHeight ? this.height : Math.max(maxHeight, minHeight);\n\t\t}\n\n\t\tthis.heightStyled = this.height ? this.height + \"px\" : \"\";\n\n\t\tthis.outerHeight = this.element.offsetHeight;\n\t};\n\n\t//set of cells\n\n\tRow.prototype.setCellHeight = function () {\n\n\t\tthis.cells.forEach(function (cell) {\n\n\t\t\tcell.setHeight();\n\t\t});\n\n\t\tthis.heightInitialized = true;\n\t};\n\n\tRow.prototype.clearCellHeight = function () {\n\n\t\tthis.cells.forEach(function (cell) {\n\n\t\t\tcell.clearHeight();\n\t\t});\n\t};\n\n\t//normalize the height of elements in the row\n\n\tRow.prototype.normalizeHeight = function (force) {\n\n\t\tif (force) {\n\n\t\t\tthis.clearCellHeight();\n\t\t}\n\n\t\tthis.calcHeight(force);\n\n\t\tthis.setCellHeight();\n\t};\n\n\t// Row.prototype.setHeight = function(height){\n\n\t// \tthis.height = height;\n\n\n\t// \tthis.setCellHeight();\n\n\t// };\n\n\n\t//set height of rows\n\n\tRow.prototype.setHeight = function (height, force) {\n\n\t\tif (this.height != height || force) {\n\n\t\t\tthis.manualHeight = true;\n\n\t\t\tthis.height = height;\n\n\t\t\tthis.heightStyled = height ? height + \"px\" : \"\";\n\n\t\t\tthis.setCellHeight();\n\n\t\t\t// this.outerHeight = this.element.outerHeight();\n\n\t\t\tthis.outerHeight = this.element.offsetHeight;\n\t\t}\n\t};\n\n\t//return rows outer height\n\n\tRow.prototype.getHeight = function () {\n\n\t\treturn this.outerHeight;\n\t};\n\n\t//return rows outer Width\n\n\tRow.prototype.getWidth = function () {\n\n\t\treturn this.element.offsetWidth;\n\t};\n\n\t//////////////// Cell Management /////////////////\n\n\n\tRow.prototype.deleteCell = function (cell) {\n\n\t\tvar index = this.cells.indexOf(cell);\n\n\t\tif (index > -1) {\n\n\t\t\tthis.cells.splice(index, 1);\n\t\t}\n\t};\n\n\t//////////////// Data Management /////////////////\n\n\n\tRow.prototype.setData = function (data) {\n\n\t\tif (this.table.modExists(\"mutator\")) {\n\n\t\t\tdata = this.table.modules.mutator.transformRow(data, \"data\");\n\t\t}\n\n\t\tthis.data = data;\n\n\t\tif (this.table.options.reactiveData && this.table.modExists(\"reactiveData\", true)) {\n\n\t\t\tthis.table.modules.reactiveData.watchRow(this);\n\t\t}\n\t};\n\n\t//update the rows data\n\n\tRow.prototype.updateData = function (data) {\n\t\tvar _this6 = this;\n\n\t\tvar self = this,\n\t\t visible = Tabulator.prototype.helpers.elVisible(this.element);\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tif (typeof data === \"string\") {\n\n\t\t\t\tdata = JSON.parse(data);\n\t\t\t}\n\n\t\t\tif (_this6.table.options.reactiveData && _this6.table.modExists(\"reactiveData\", true)) {\n\n\t\t\t\t_this6.table.modules.reactiveData.block();\n\t\t\t}\n\n\t\t\t//mutate incomming data if needed\n\n\t\t\tif (self.table.modExists(\"mutator\")) {\n\n\t\t\t\tdata = self.table.modules.mutator.transformRow(data, \"data\", true);\n\t\t\t}\n\n\t\t\t//set data\n\n\t\t\tfor (var attrname in data) {\n\n\t\t\t\tself.data[attrname] = data[attrname];\n\t\t\t}\n\n\t\t\tif (_this6.table.options.reactiveData && _this6.table.modExists(\"reactiveData\", true)) {\n\n\t\t\t\t_this6.table.modules.reactiveData.unblock();\n\t\t\t}\n\n\t\t\t//update affected cells only\n\n\t\t\tfor (var attrname in data) {\n\n\t\t\t\tvar cell = _this6.getCell(attrname);\n\n\t\t\t\tif (cell) {\n\n\t\t\t\t\tif (cell.getValue() != data[attrname]) {\n\n\t\t\t\t\t\tcell.setValueProcessData(data[attrname]);\n\n\t\t\t\t\t\tif (visible) {\n\n\t\t\t\t\t\t\tcell.cellRendered();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//Partial reinitialization if visible\n\n\t\t\tif (visible) {\n\n\t\t\t\tself.normalizeHeight();\n\n\t\t\t\tif (self.table.options.rowFormatter) {\n\n\t\t\t\t\tself.table.options.rowFormatter(self.getComponent());\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t_this6.initialized = false;\n\n\t\t\t\t_this6.height = 0;\n\n\t\t\t\t_this6.heightStyled = \"\";\n\t\t\t}\n\n\t\t\tif (self.table.options.dataTree !== false && self.table.modExists(\"dataTree\") && typeof data[_this6.table.modules.dataTree.getChildField()] !== \"undefined\") {\n\n\t\t\t\t_this6.table.modules.dataTree.initializeRow(_this6);\n\n\t\t\t\t_this6.table.rowManager.refreshActiveData(\"tree\", false, true);\n\t\t\t}\n\n\t\t\t//self.reinitialize();\n\n\n\t\t\tself.table.options.rowUpdated.call(_this6.table, self.getComponent());\n\n\t\t\tresolve();\n\t\t});\n\t};\n\n\tRow.prototype.getData = function (transform) {\n\n\t\tvar self = this;\n\n\t\tif (transform) {\n\n\t\t\tif (self.table.modExists(\"accessor\")) {\n\n\t\t\t\treturn self.table.modules.accessor.transformRow(self.data, transform);\n\t\t\t}\n\t\t} else {\n\n\t\t\treturn this.data;\n\t\t}\n\t};\n\n\tRow.prototype.getCell = function (column) {\n\n\t\tvar match = false;\n\n\t\tcolumn = this.table.columnManager.findColumn(column);\n\n\t\tmatch = this.cells.find(function (cell) {\n\n\t\t\treturn cell.column === column;\n\t\t});\n\n\t\treturn match;\n\t};\n\n\tRow.prototype.getCellIndex = function (findCell) {\n\n\t\treturn this.cells.findIndex(function (cell) {\n\n\t\t\treturn cell === findCell;\n\t\t});\n\t};\n\n\tRow.prototype.findNextEditableCell = function (index) {\n\n\t\tvar nextCell = false;\n\n\t\tif (index < this.cells.length - 1) {\n\n\t\t\tfor (var i = index + 1; i < this.cells.length; i++) {\n\n\t\t\t\tvar cell = this.cells[i];\n\n\t\t\t\tif (cell.column.modules.edit && Tabulator.prototype.helpers.elVisible(cell.getElement())) {\n\n\t\t\t\t\tvar allowEdit = true;\n\n\t\t\t\t\tif (typeof cell.column.modules.edit.check == \"function\") {\n\n\t\t\t\t\t\tallowEdit = cell.column.modules.edit.check(cell.getComponent());\n\t\t\t\t\t}\n\n\t\t\t\t\tif (allowEdit) {\n\n\t\t\t\t\t\tnextCell = cell;\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn nextCell;\n\t};\n\n\tRow.prototype.findPrevEditableCell = function (index) {\n\n\t\tvar prevCell = false;\n\n\t\tif (index > 0) {\n\n\t\t\tfor (var i = index - 1; i >= 0; i--) {\n\n\t\t\t\tvar cell = this.cells[i],\n\t\t\t\t allowEdit = true;\n\n\t\t\t\tif (cell.column.modules.edit && Tabulator.prototype.helpers.elVisible(cell.getElement())) {\n\n\t\t\t\t\tif (typeof cell.column.modules.edit.check == \"function\") {\n\n\t\t\t\t\t\tallowEdit = cell.column.modules.edit.check(cell.getComponent());\n\t\t\t\t\t}\n\n\t\t\t\t\tif (allowEdit) {\n\n\t\t\t\t\t\tprevCell = cell;\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn prevCell;\n\t};\n\n\tRow.prototype.getCells = function () {\n\n\t\treturn this.cells;\n\t};\n\n\tRow.prototype.nextRow = function () {\n\n\t\tvar row = this.table.rowManager.nextDisplayRow(this, true);\n\n\t\treturn row || false;\n\t};\n\n\tRow.prototype.prevRow = function () {\n\n\t\tvar row = this.table.rowManager.prevDisplayRow(this, true);\n\n\t\treturn row || false;\n\t};\n\n\tRow.prototype.moveToRow = function (to, before) {\n\n\t\tvar toRow = this.table.rowManager.findRow(to);\n\n\t\tif (toRow) {\n\n\t\t\tthis.table.rowManager.moveRowActual(this, toRow, !before);\n\n\t\t\tthis.table.rowManager.refreshActiveData(\"display\", false, true);\n\t\t} else {\n\n\t\t\tconsole.warn(\"Move Error - No matching row found:\", to);\n\t\t}\n\t};\n\n\t///////////////////// Actions /////////////////////\n\n\n\tRow.prototype.delete = function () {\n\t\tvar _this7 = this;\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tvar index = _this7.table.rowManager.getRowIndex(_this7);\n\n\t\t\t_this7.deleteActual();\n\n\t\t\tif (_this7.table.options.history && _this7.table.modExists(\"history\")) {\n\n\t\t\t\tif (index) {\n\n\t\t\t\t\tindex = _this7.table.rowManager.rows[index - 1];\n\t\t\t\t}\n\n\t\t\t\t_this7.table.modules.history.action(\"rowDelete\", _this7, { data: _this7.getData(), pos: !index, index: index });\n\t\t\t}\n\n\t\t\tresolve();\n\t\t});\n\t};\n\n\tRow.prototype.deleteActual = function (blockRedraw) {\n\n\t\tvar index = this.table.rowManager.getRowIndex(this);\n\n\t\t//deselect row if it is selected\n\n\t\tif (this.table.modExists(\"selectRow\")) {\n\n\t\t\tthis.table.modules.selectRow._deselectRow(this, true);\n\t\t}\n\n\t\t// if(this.table.options.dataTree && this.table.modExists(\"dataTree\")){\n\n\t\t// \tthis.table.modules.dataTree.collapseRow(this, true);\n\n\t\t// }\n\n\n\t\t//remove any reactive data watchers from row object\n\n\t\tif (this.table.options.reactiveData && this.table.modExists(\"reactiveData\", true)) {}\n\n\t\t// this.table.modules.reactiveData.unwatchRow(this);\n\n\t\t//remove from group\n\n\t\tif (this.modules.group) {\n\n\t\t\tthis.modules.group.removeRow(this);\n\t\t}\n\n\t\tthis.table.rowManager.deleteRow(this, blockRedraw);\n\n\t\tthis.deleteCells();\n\n\t\tthis.initialized = false;\n\n\t\tthis.heightInitialized = false;\n\n\t\t//recalc column calculations if present\n\n\t\tif (this.table.modExists(\"columnCalcs\")) {\n\n\t\t\tif (this.table.options.groupBy && this.table.modExists(\"groupRows\")) {\n\n\t\t\t\tthis.table.modules.columnCalcs.recalcRowGroup(this);\n\t\t\t} else {\n\n\t\t\t\tthis.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);\n\t\t\t}\n\t\t}\n\t};\n\n\tRow.prototype.deleteCells = function () {\n\n\t\tvar cellCount = this.cells.length;\n\n\t\tfor (var i = 0; i < cellCount; i++) {\n\n\t\t\tthis.cells[0].delete();\n\t\t}\n\t};\n\n\tRow.prototype.wipe = function () {\n\n\t\tthis.deleteCells();\n\n\t\twhile (this.element.firstChild) {\n\t\t\tthis.element.removeChild(this.element.firstChild);\n\t\t}this.element = false;\n\n\t\tthis.modules = {};\n\n\t\tif (this.element.parentNode) {\n\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t};\n\n\tRow.prototype.getGroup = function () {\n\n\t\treturn this.modules.group || false;\n\t};\n\n\t//////////////// Object Generation /////////////////\n\n\tRow.prototype.getComponent = function () {\n\n\t\treturn new RowComponent(this);\n\t};\n\n\t//public row object\n\n\tvar CellComponent = function CellComponent(cell) {\n\n\t\tthis._cell = cell;\n\t};\n\n\tCellComponent.prototype.getValue = function () {\n\n\t\treturn this._cell.getValue();\n\t};\n\n\tCellComponent.prototype.getOldValue = function () {\n\n\t\treturn this._cell.getOldValue();\n\t};\n\n\tCellComponent.prototype.getElement = function () {\n\n\t\treturn this._cell.getElement();\n\t};\n\n\tCellComponent.prototype.getRow = function () {\n\n\t\treturn this._cell.row.getComponent();\n\t};\n\n\tCellComponent.prototype.getData = function () {\n\n\t\treturn this._cell.row.getData();\n\t};\n\n\tCellComponent.prototype.getField = function () {\n\n\t\treturn this._cell.column.getField();\n\t};\n\n\tCellComponent.prototype.getColumn = function () {\n\n\t\treturn this._cell.column.getComponent();\n\t};\n\n\tCellComponent.prototype.setValue = function (value, mutate) {\n\n\t\tif (typeof mutate == \"undefined\") {\n\n\t\t\tmutate = true;\n\t\t}\n\n\t\tthis._cell.setValue(value, mutate);\n\t};\n\n\tCellComponent.prototype.restoreOldValue = function () {\n\n\t\tthis._cell.setValueActual(this._cell.getOldValue());\n\t};\n\n\tCellComponent.prototype.edit = function (force) {\n\n\t\treturn this._cell.edit(force);\n\t};\n\n\tCellComponent.prototype.cancelEdit = function () {\n\n\t\tthis._cell.cancelEdit();\n\t};\n\n\tCellComponent.prototype.nav = function () {\n\n\t\treturn this._cell.nav();\n\t};\n\n\tCellComponent.prototype.checkHeight = function () {\n\n\t\tthis._cell.checkHeight();\n\t};\n\n\tCellComponent.prototype.getTable = function () {\n\n\t\treturn this._cell.table;\n\t};\n\n\tCellComponent.prototype._getSelf = function () {\n\n\t\treturn this._cell;\n\t};\n\n\tvar Cell = function Cell(column, row) {\n\n\t\tthis.table = column.table;\n\n\t\tthis.column = column;\n\n\t\tthis.row = row;\n\n\t\tthis.element = null;\n\n\t\tthis.value = null;\n\n\t\tthis.oldValue = null;\n\n\t\tthis.height = null;\n\n\t\tthis.width = null;\n\n\t\tthis.minWidth = null;\n\n\t\tthis.build();\n\t};\n\n\t//////////////// Setup Functions /////////////////\n\n\n\t//generate element\n\n\tCell.prototype.build = function () {\n\n\t\tthis.generateElement();\n\n\t\tthis.setWidth();\n\n\t\tthis._configureCell();\n\n\t\tthis.setValueActual(this.column.getFieldValue(this.row.data));\n\t};\n\n\tCell.prototype.generateElement = function () {\n\n\t\tthis.element = document.createElement('div');\n\n\t\tthis.element.className = \"tabulator-cell\";\n\n\t\tthis.element.setAttribute(\"role\", \"gridcell\");\n\n\t\tthis.element = this.element;\n\t};\n\n\tCell.prototype._configureCell = function () {\n\n\t\tvar self = this,\n\t\t cellEvents = self.column.cellEvents,\n\t\t element = self.element,\n\t\t field = this.column.getField();\n\n\t\t//set text alignment\n\n\t\telement.style.textAlign = self.column.hozAlign;\n\n\t\tif (field) {\n\n\t\t\telement.setAttribute(\"tabulator-field\", field);\n\t\t}\n\n\t\t//add class to cell if needed\n\n\t\tif (self.column.definition.cssClass) {\n\n\t\t\tvar classNames = self.column.definition.cssClass.split(\" \");\n\n\t\t\tclassNames.forEach(function (className) {\n\n\t\t\t\telement.classList.add(className);\n\t\t\t});\n\t\t}\n\n\t\t//update tooltip on mouse enter\n\n\t\tif (this.table.options.tooltipGenerationMode === \"hover\") {\n\n\t\t\telement.addEventListener(\"mouseenter\", function (e) {\n\n\t\t\t\tself._generateTooltip();\n\t\t\t});\n\t\t}\n\n\t\tself._bindClickEvents(cellEvents);\n\n\t\tself._bindTouchEvents(cellEvents);\n\n\t\tself._bindMouseEvents(cellEvents);\n\n\t\tif (self.column.modules.edit) {\n\n\t\t\tself.table.modules.edit.bindEditor(self);\n\t\t}\n\n\t\tif (self.column.definition.rowHandle && self.table.options.movableRows !== false && self.table.modExists(\"moveRow\")) {\n\n\t\t\tself.table.modules.moveRow.initializeCell(self);\n\t\t}\n\n\t\t//hide cell if not visible\n\n\t\tif (!self.column.visible) {\n\n\t\t\tself.hide();\n\t\t}\n\t};\n\n\tCell.prototype._bindClickEvents = function (cellEvents) {\n\n\t\tvar self = this,\n\t\t element = self.element;\n\n\t\t//set event bindings\n\n\t\tif (cellEvents.cellClick || self.table.options.cellClick) {\n\n\t\t\telement.addEventListener(\"click\", function (e) {\n\n\t\t\t\tvar component = self.getComponent();\n\n\t\t\t\tif (cellEvents.cellClick) {\n\n\t\t\t\t\tcellEvents.cellClick.call(self.table, e, component);\n\t\t\t\t}\n\n\t\t\t\tif (self.table.options.cellClick) {\n\n\t\t\t\t\tself.table.options.cellClick.call(self.table, e, component);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (cellEvents.cellDblClick || this.table.options.cellDblClick) {\n\n\t\t\telement.addEventListener(\"dblclick\", function (e) {\n\n\t\t\t\tvar component = self.getComponent();\n\n\t\t\t\tif (cellEvents.cellDblClick) {\n\n\t\t\t\t\tcellEvents.cellDblClick.call(self.table, e, component);\n\t\t\t\t}\n\n\t\t\t\tif (self.table.options.cellDblClick) {\n\n\t\t\t\t\tself.table.options.cellDblClick.call(self.table, e, component);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\n\t\t\telement.addEventListener(\"dblclick\", function (e) {\n\n\t\t\t\te.preventDefault();\n\n\t\t\t\tif (document.selection) {\n\t\t\t\t\t// IE\n\n\t\t\t\t\tvar range = document.body.createTextRange();\n\n\t\t\t\t\trange.moveToElementText(self.element);\n\n\t\t\t\t\trange.select();\n\t\t\t\t} else if (window.getSelection) {\n\n\t\t\t\t\tvar range = document.createRange();\n\n\t\t\t\t\trange.selectNode(self.element);\n\n\t\t\t\t\twindow.getSelection().removeAllRanges();\n\n\t\t\t\t\twindow.getSelection().addRange(range);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (cellEvents.cellContext || this.table.options.cellContext) {\n\n\t\t\telement.addEventListener(\"contextmenu\", function (e) {\n\n\t\t\t\tvar component = self.getComponent();\n\n\t\t\t\tif (cellEvents.cellContext) {\n\n\t\t\t\t\tcellEvents.cellContext.call(self.table, e, component);\n\t\t\t\t}\n\n\t\t\t\tif (self.table.options.cellContext) {\n\n\t\t\t\t\tself.table.options.cellContext.call(self.table, e, component);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t};\n\n\tCell.prototype._bindMouseEvents = function (cellEvents) {\n\n\t\tvar self = this,\n\t\t element = self.element;\n\n\t\tif (cellEvents.cellMouseEnter || self.table.options.cellMouseEnter) {\n\n\t\t\telement.addEventListener(\"mouseenter\", function (e) {\n\n\t\t\t\tvar component = self.getComponent();\n\n\t\t\t\tif (cellEvents.cellMouseEnter) {\n\n\t\t\t\t\tcellEvents.cellMouseEnter.call(self.table, e, component);\n\t\t\t\t}\n\n\t\t\t\tif (self.table.options.cellMouseEnter) {\n\n\t\t\t\t\tself.table.options.cellMouseEnter.call(self.table, e, component);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (cellEvents.cellMouseLeave || self.table.options.cellMouseLeave) {\n\n\t\t\telement.addEventListener(\"mouseleave\", function (e) {\n\n\t\t\t\tvar component = self.getComponent();\n\n\t\t\t\tif (cellEvents.cellMouseLeave) {\n\n\t\t\t\t\tcellEvents.cellMouseLeave.call(self.table, e, component);\n\t\t\t\t}\n\n\t\t\t\tif (self.table.options.cellMouseLeave) {\n\n\t\t\t\t\tself.table.options.cellMouseLeave.call(self.table, e, component);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (cellEvents.cellMouseOver || self.table.options.cellMouseOver) {\n\n\t\t\telement.addEventListener(\"mouseover\", function (e) {\n\n\t\t\t\tvar component = self.getComponent();\n\n\t\t\t\tif (cellEvents.cellMouseOver) {\n\n\t\t\t\t\tcellEvents.cellMouseOver.call(self.table, e, component);\n\t\t\t\t}\n\n\t\t\t\tif (self.table.options.cellMouseOver) {\n\n\t\t\t\t\tself.table.options.cellMouseOver.call(self.table, e, component);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (cellEvents.cellMouseOut || self.table.options.cellMouseOut) {\n\n\t\t\telement.addEventListener(\"mouseout\", function (e) {\n\n\t\t\t\tvar component = self.getComponent();\n\n\t\t\t\tif (cellEvents.cellMouseOut) {\n\n\t\t\t\t\tcellEvents.cellMouseOut.call(self.table, e, component);\n\t\t\t\t}\n\n\t\t\t\tif (self.table.options.cellMouseOut) {\n\n\t\t\t\t\tself.table.options.cellMouseOut.call(self.table, e, component);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (cellEvents.cellMouseMove || self.table.options.cellMouseMove) {\n\n\t\t\telement.addEventListener(\"mousemove\", function (e) {\n\n\t\t\t\tvar component = self.getComponent();\n\n\t\t\t\tif (cellEvents.cellMouseMove) {\n\n\t\t\t\t\tcellEvents.cellMouseMove.call(self.table, e, component);\n\t\t\t\t}\n\n\t\t\t\tif (self.table.options.cellMouseMove) {\n\n\t\t\t\t\tself.table.options.cellMouseMove.call(self.table, e, component);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t};\n\n\tCell.prototype._bindTouchEvents = function (cellEvents) {\n\n\t\tvar self = this,\n\t\t element = self.element,\n\t\t dblTap,\n\t\t tapHold,\n\t\t tap;\n\n\t\tif (cellEvents.cellTap || this.table.options.cellTap) {\n\n\t\t\ttap = false;\n\n\t\t\telement.addEventListener(\"touchstart\", function (e) {\n\n\t\t\t\ttap = true;\n\t\t\t}, { passive: true });\n\n\t\t\telement.addEventListener(\"touchend\", function (e) {\n\n\t\t\t\tif (tap) {\n\n\t\t\t\t\tvar component = self.getComponent();\n\n\t\t\t\t\tif (cellEvents.cellTap) {\n\n\t\t\t\t\t\tcellEvents.cellTap.call(self.table, e, component);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (self.table.options.cellTap) {\n\n\t\t\t\t\t\tself.table.options.cellTap.call(self.table, e, component);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\ttap = false;\n\t\t\t});\n\t\t}\n\n\t\tif (cellEvents.cellDblTap || this.table.options.cellDblTap) {\n\n\t\t\tdblTap = null;\n\n\t\t\telement.addEventListener(\"touchend\", function (e) {\n\n\t\t\t\tif (dblTap) {\n\n\t\t\t\t\tclearTimeout(dblTap);\n\n\t\t\t\t\tdblTap = null;\n\n\t\t\t\t\tvar component = self.getComponent();\n\n\t\t\t\t\tif (cellEvents.cellDblTap) {\n\n\t\t\t\t\t\tcellEvents.cellDblTap.call(self.table, e, component);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (self.table.options.cellDblTap) {\n\n\t\t\t\t\t\tself.table.options.cellDblTap.call(self.table, e, component);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\tdblTap = setTimeout(function () {\n\n\t\t\t\t\t\tclearTimeout(dblTap);\n\n\t\t\t\t\t\tdblTap = null;\n\t\t\t\t\t}, 300);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (cellEvents.cellTapHold || this.table.options.cellTapHold) {\n\n\t\t\ttapHold = null;\n\n\t\t\telement.addEventListener(\"touchstart\", function (e) {\n\n\t\t\t\tclearTimeout(tapHold);\n\n\t\t\t\ttapHold = setTimeout(function () {\n\n\t\t\t\t\tclearTimeout(tapHold);\n\n\t\t\t\t\ttapHold = null;\n\n\t\t\t\t\ttap = false;\n\n\t\t\t\t\tvar component = self.getComponent();\n\n\t\t\t\t\tif (cellEvents.cellTapHold) {\n\n\t\t\t\t\t\tcellEvents.cellTapHold.call(self.table, e, component);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (self.table.options.cellTapHold) {\n\n\t\t\t\t\t\tself.table.options.cellTapHold.call(self.table, e, component);\n\t\t\t\t\t}\n\t\t\t\t}, 1000);\n\t\t\t}, { passive: true });\n\n\t\t\telement.addEventListener(\"touchend\", function (e) {\n\n\t\t\t\tclearTimeout(tapHold);\n\n\t\t\t\ttapHold = null;\n\t\t\t});\n\t\t}\n\t};\n\n\t//generate cell contents\n\n\tCell.prototype._generateContents = function () {\n\n\t\tvar val;\n\n\t\tif (this.table.modExists(\"format\")) {\n\n\t\t\tval = this.table.modules.format.formatValue(this);\n\t\t} else {\n\n\t\t\tval = this.element.innerHTML = this.value;\n\t\t}\n\n\t\tswitch (typeof val === 'undefined' ? 'undefined' : _typeof(val)) {\n\n\t\t\tcase \"object\":\n\n\t\t\t\tif (val instanceof Node) {\n\n\t\t\t\t\t//clear previous cell contents\n\n\t\t\t\t\twhile (this.element.firstChild) {\n\t\t\t\t\t\tthis.element.removeChild(this.element.firstChild);\n\t\t\t\t\t}this.element.appendChild(val);\n\t\t\t\t} else {\n\n\t\t\t\t\tthis.element.innerHTML = \"\";\n\n\t\t\t\t\tif (val != null) {\n\n\t\t\t\t\t\tconsole.warn(\"Format Error - Formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:\", val);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase \"undefined\":\n\n\t\t\tcase \"null\":\n\n\t\t\t\tthis.element.innerHTML = \"\";\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tthis.element.innerHTML = val;\n\n\t\t}\n\t};\n\n\tCell.prototype.cellRendered = function () {\n\n\t\tif (this.table.modExists(\"format\") && this.table.modules.format.cellRendered) {\n\n\t\t\tthis.table.modules.format.cellRendered(this);\n\t\t}\n\t};\n\n\t//generate tooltip text\n\n\tCell.prototype._generateTooltip = function () {\n\n\t\tvar tooltip = this.column.tooltip;\n\n\t\tif (tooltip) {\n\n\t\t\tif (tooltip === true) {\n\n\t\t\t\ttooltip = this.value;\n\t\t\t} else if (typeof tooltip == \"function\") {\n\n\t\t\t\ttooltip = tooltip(this.getComponent());\n\n\t\t\t\tif (tooltip === false) {\n\n\t\t\t\t\ttooltip = \"\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (typeof tooltip === \"undefined\") {\n\n\t\t\t\ttooltip = \"\";\n\t\t\t}\n\n\t\t\tthis.element.setAttribute(\"title\", tooltip);\n\t\t} else {\n\n\t\t\tthis.element.setAttribute(\"title\", \"\");\n\t\t}\n\t};\n\n\t//////////////////// Getters ////////////////////\n\n\tCell.prototype.getElement = function () {\n\n\t\treturn this.element;\n\t};\n\n\tCell.prototype.getValue = function () {\n\n\t\treturn this.value;\n\t};\n\n\tCell.prototype.getOldValue = function () {\n\n\t\treturn this.oldValue;\n\t};\n\n\t//////////////////// Actions ////////////////////\n\n\n\tCell.prototype.setValue = function (value, mutate) {\n\n\t\tvar changed = this.setValueProcessData(value, mutate),\n\t\t component;\n\n\t\tif (changed) {\n\n\t\t\tif (this.table.options.history && this.table.modExists(\"history\")) {\n\n\t\t\t\tthis.table.modules.history.action(\"cellEdit\", this, { oldValue: this.oldValue, newValue: this.value });\n\t\t\t}\n\n\t\t\tcomponent = this.getComponent();\n\n\t\t\tif (this.column.cellEvents.cellEdited) {\n\n\t\t\t\tthis.column.cellEvents.cellEdited.call(this.table, component);\n\t\t\t}\n\n\t\t\tthis.table.options.cellEdited.call(this.table, component);\n\n\t\t\tthis.table.options.dataEdited.call(this.table, this.table.rowManager.getData());\n\t\t}\n\t};\n\n\tCell.prototype.setValueProcessData = function (value, mutate) {\n\n\t\tvar changed = false;\n\n\t\tif (this.value != value) {\n\n\t\t\tchanged = true;\n\n\t\t\tif (mutate) {\n\n\t\t\t\tif (this.column.modules.mutate) {\n\n\t\t\t\t\tvalue = this.table.modules.mutator.transformCell(this, value);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.setValueActual(value);\n\n\t\tif (changed && this.table.modExists(\"columnCalcs\")) {\n\n\t\t\tif (this.column.definition.topCalc || this.column.definition.bottomCalc) {\n\n\t\t\t\tif (this.table.options.groupBy && this.table.modExists(\"groupRows\")) {\n\n\t\t\t\t\tif (this.table.options.columnCalcs == \"table\" || this.table.options.columnCalcs == \"both\") {\n\n\t\t\t\t\t\tthis.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.table.options.columnCalcs != \"table\") {\n\n\t\t\t\t\t\tthis.table.modules.columnCalcs.recalcRowGroup(this.row);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\tthis.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn changed;\n\t};\n\n\tCell.prototype.setValueActual = function (value) {\n\n\t\tthis.oldValue = this.value;\n\n\t\tthis.value = value;\n\n\t\tif (this.table.options.reactiveData && this.table.modExists(\"reactiveData\")) {\n\n\t\t\tthis.table.modules.reactiveData.block();\n\t\t}\n\n\t\tthis.column.setFieldValue(this.row.data, value);\n\n\t\tif (this.table.options.reactiveData && this.table.modExists(\"reactiveData\")) {\n\n\t\t\tthis.table.modules.reactiveData.unblock();\n\t\t}\n\n\t\tthis._generateContents();\n\n\t\tthis._generateTooltip();\n\n\t\t//set resizable handles\n\n\t\tif (this.table.options.resizableColumns && this.table.modExists(\"resizeColumns\")) {\n\n\t\t\tthis.table.modules.resizeColumns.initializeColumn(\"cell\", this.column, this.element);\n\t\t}\n\n\t\t//handle frozen cells\n\n\t\tif (this.table.modExists(\"frozenColumns\")) {\n\n\t\t\tthis.table.modules.frozenColumns.layoutElement(this.element, this.column);\n\t\t}\n\t};\n\n\tCell.prototype.setWidth = function () {\n\n\t\tthis.width = this.column.width;\n\n\t\tthis.element.style.width = this.column.widthStyled;\n\t};\n\n\tCell.prototype.clearWidth = function () {\n\n\t\tthis.width = \"\";\n\n\t\tthis.element.style.width = \"\";\n\t};\n\n\tCell.prototype.getWidth = function () {\n\n\t\treturn this.width || this.element.offsetWidth;\n\t};\n\n\tCell.prototype.setMinWidth = function () {\n\n\t\tthis.minWidth = this.column.minWidth;\n\n\t\tthis.element.style.minWidth = this.column.minWidthStyled;\n\t};\n\n\tCell.prototype.checkHeight = function () {\n\n\t\t// var height = this.element.css(\"height\");\n\n\t\tthis.row.reinitializeHeight();\n\t};\n\n\tCell.prototype.clearHeight = function () {\n\n\t\tthis.element.style.height = \"\";\n\n\t\tthis.height = null;\n\t};\n\n\tCell.prototype.setHeight = function () {\n\n\t\tthis.height = this.row.height;\n\n\t\tthis.element.style.height = this.row.heightStyled;\n\t};\n\n\tCell.prototype.getHeight = function () {\n\n\t\treturn this.height || this.element.offsetHeight;\n\t};\n\n\tCell.prototype.show = function () {\n\n\t\tthis.element.style.display = \"\";\n\t};\n\n\tCell.prototype.hide = function () {\n\n\t\tthis.element.style.display = \"none\";\n\t};\n\n\tCell.prototype.edit = function (force) {\n\n\t\tif (this.table.modExists(\"edit\", true)) {\n\n\t\t\treturn this.table.modules.edit.editCell(this, force);\n\t\t}\n\t};\n\n\tCell.prototype.cancelEdit = function () {\n\n\t\tif (this.table.modExists(\"edit\", true)) {\n\n\t\t\tvar editing = this.table.modules.edit.getCurrentCell();\n\n\t\t\tif (editing && editing._getSelf() === this) {\n\n\t\t\t\tthis.table.modules.edit.cancelEdit();\n\t\t\t} else {\n\n\t\t\t\tconsole.warn(\"Cancel Editor Error - This cell is not currently being edited \");\n\t\t\t}\n\t\t}\n\t};\n\n\tCell.prototype.delete = function () {\n\n\t\tthis.element.parentNode.removeChild(this.element);\n\n\t\tthis.element = false;\n\n\t\tthis.column.deleteCell(this);\n\n\t\tthis.row.deleteCell(this);\n\n\t\tthis.calcs = {};\n\t};\n\n\t//////////////// Navigation /////////////////\n\n\n\tCell.prototype.nav = function () {\n\n\t\tvar self = this,\n\t\t nextCell = false,\n\t\t index = this.row.getCellIndex(this);\n\n\t\treturn {\n\n\t\t\tnext: function next() {\n\n\t\t\t\tvar nextCell = this.right(),\n\t\t\t\t nextRow;\n\n\t\t\t\tif (!nextCell) {\n\n\t\t\t\t\tnextRow = self.table.rowManager.nextDisplayRow(self.row, true);\n\n\t\t\t\t\tif (nextRow) {\n\n\t\t\t\t\t\tnextCell = nextRow.findNextEditableCell(-1);\n\n\t\t\t\t\t\tif (nextCell) {\n\n\t\t\t\t\t\t\tnextCell.edit();\n\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t},\n\n\t\t\tprev: function prev() {\n\n\t\t\t\tvar nextCell = this.left(),\n\t\t\t\t prevRow;\n\n\t\t\t\tif (!nextCell) {\n\n\t\t\t\t\tprevRow = self.table.rowManager.prevDisplayRow(self.row, true);\n\n\t\t\t\t\tif (prevRow) {\n\n\t\t\t\t\t\tnextCell = prevRow.findPrevEditableCell(prevRow.cells.length);\n\n\t\t\t\t\t\tif (nextCell) {\n\n\t\t\t\t\t\t\tnextCell.edit();\n\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t},\n\n\t\t\tleft: function left() {\n\n\t\t\t\tnextCell = self.row.findPrevEditableCell(index);\n\n\t\t\t\tif (nextCell) {\n\n\t\t\t\t\tnextCell.edit();\n\n\t\t\t\t\treturn true;\n\t\t\t\t} else {\n\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tright: function right() {\n\n\t\t\t\tnextCell = self.row.findNextEditableCell(index);\n\n\t\t\t\tif (nextCell) {\n\n\t\t\t\t\tnextCell.edit();\n\n\t\t\t\t\treturn true;\n\t\t\t\t} else {\n\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tup: function up() {\n\n\t\t\t\tvar nextRow = self.table.rowManager.prevDisplayRow(self.row, true);\n\n\t\t\t\tif (nextRow) {\n\n\t\t\t\t\tnextRow.cells[index].edit();\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tdown: function down() {\n\n\t\t\t\tvar nextRow = self.table.rowManager.nextDisplayRow(self.row, true);\n\n\t\t\t\tif (nextRow) {\n\n\t\t\t\t\tnextRow.cells[index].edit();\n\t\t\t\t}\n\t\t\t}\n\n\t\t};\n\t};\n\n\tCell.prototype.getIndex = function () {\n\n\t\tthis.row.getCellIndex(this);\n\t};\n\n\t//////////////// Object Generation /////////////////\n\n\tCell.prototype.getComponent = function () {\n\n\t\treturn new CellComponent(this);\n\t};\n\n\tvar FooterManager = function FooterManager(table) {\n\n\t\tthis.table = table;\n\n\t\tthis.active = false;\n\n\t\tthis.element = this.createElement(); //containing element\n\n\t\tthis.external = false;\n\n\t\tthis.links = [];\n\n\t\tthis._initialize();\n\t};\n\n\tFooterManager.prototype.createElement = function () {\n\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-footer\");\n\n\t\treturn el;\n\t};\n\n\tFooterManager.prototype._initialize = function (element) {\n\n\t\tif (this.table.options.footerElement) {\n\n\t\t\tswitch (_typeof(this.table.options.footerElement)) {\n\n\t\t\t\tcase \"string\":\n\n\t\t\t\t\tif (this.table.options.footerElement[0] === \"<\") {\n\n\t\t\t\t\t\tthis.element.innerHTML = this.table.options.footerElement;\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis.external = true;\n\n\t\t\t\t\t\tthis.element = document.querySelector(this.table.options.footerElement);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tthis.element = this.table.options.footerElement;\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\t\t}\n\t};\n\n\tFooterManager.prototype.getElement = function () {\n\n\t\treturn this.element;\n\t};\n\n\tFooterManager.prototype.append = function (element, parent) {\n\n\t\tthis.activate(parent);\n\n\t\tthis.element.appendChild(element);\n\n\t\tthis.table.rowManager.adjustTableSize();\n\t};\n\n\tFooterManager.prototype.prepend = function (element, parent) {\n\n\t\tthis.activate(parent);\n\n\t\tthis.element.insertBefore(element, this.element.firstChild);\n\n\t\tthis.table.rowManager.adjustTableSize();\n\t};\n\n\tFooterManager.prototype.remove = function (element) {\n\n\t\telement.parentNode.removeChild(element);\n\n\t\tthis.deactivate();\n\t};\n\n\tFooterManager.prototype.deactivate = function (force) {\n\n\t\tif (!this.element.firstChild || force) {\n\n\t\t\tif (!this.external) {\n\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t\t}\n\n\t\t\tthis.active = false;\n\t\t}\n\n\t\t// this.table.rowManager.adjustTableSize();\n\t};\n\n\tFooterManager.prototype.activate = function (parent) {\n\n\t\tif (!this.active) {\n\n\t\t\tthis.active = true;\n\n\t\t\tif (!this.external) {\n\n\t\t\t\tthis.table.element.appendChild(this.getElement());\n\n\t\t\t\tthis.table.element.style.display = '';\n\t\t\t}\n\t\t}\n\n\t\tif (parent) {\n\n\t\t\tthis.links.push(parent);\n\t\t}\n\t};\n\n\tFooterManager.prototype.redraw = function () {\n\n\t\tthis.links.forEach(function (link) {\n\n\t\t\tlink.footerRedraw();\n\t\t});\n\t};\n\n\tvar Tabulator = function Tabulator(element, options) {\n\n\t\tthis.options = {};\n\n\t\tthis.columnManager = null; // hold Column Manager\n\n\t\tthis.rowManager = null; //hold Row Manager\n\n\t\tthis.footerManager = null; //holder Footer Manager\n\n\t\tthis.browser = \"\"; //hold current browser type\n\n\t\tthis.browserSlow = false; //handle reduced functionality for slower browsers\n\n\n\t\tthis.modules = {}; //hold all modules bound to this table\n\n\n\t\tthis.initializeElement(element);\n\n\t\tthis.initializeOptions(options || {});\n\n\t\tthis._create();\n\n\t\tTabulator.prototype.comms.register(this); //register table for inderdevice communication\n\t};\n\n\t//default setup options\n\n\tTabulator.prototype.defaultOptions = {\n\n\t\theight: false, //height of tabulator\n\n\n\t\tlayout: \"fitData\", ///layout type \"fitColumns\" | \"fitData\"\n\n\t\tlayoutColumnsOnNewData: false, //update column widths on setData\n\n\n\t\tcolumnMinWidth: 40, //minimum global width for a column\n\n\t\tcolumnVertAlign: \"top\", //vertical alignment of column headers\n\n\n\t\tresizableColumns: true, //resizable columns\n\n\t\tresizableRows: false, //resizable rows\n\n\t\tautoResize: true, //auto resize table\n\n\n\t\tcolumns: [], //store for colum header info\n\n\n\t\tdata: [], //default starting data\n\n\n\t\tautoColumns: false, //build columns from data row structure\n\n\n\t\treactiveData: false, //enable data reactivity\n\n\n\t\tnestedFieldSeparator: \".\", //seperatpr for nested data\n\n\n\t\ttooltips: false, //Tool tip value\n\n\t\ttooltipsHeader: false, //Tool tip for headers\n\n\t\ttooltipGenerationMode: \"load\", //when to generate tooltips\n\n\n\t\tinitialSort: false, //initial sorting criteria\n\n\t\tinitialFilter: false, //initial filtering criteria\n\n\t\tinitialHeaderFilter: false, //initial header filtering criteria\n\n\n\t\tcolumnHeaderSortMulti: true, //multiple or single column sorting\n\n\n\t\tsortOrderReverse: false, //reverse internal sort ordering\n\n\n\t\tfooterElement: false, //hold footer element\n\n\n\t\tindex: \"id\", //filed for row index\n\n\n\t\tkeybindings: [], //array for keybindings\n\n\n\t\tclipboard: false, //enable clipboard\n\n\t\tclipboardCopyStyled: true, //formatted table data\n\n\t\tclipboardCopySelector: \"active\", //method of chosing which data is coppied to the clipboard\n\n\t\tclipboardCopyFormatter: \"table\", //convert data to a clipboard string\n\n\t\tclipboardPasteParser: \"table\", //convert pasted clipboard data to rows\n\n\t\tclipboardPasteAction: \"insert\", //how to insert pasted data into the table\n\n\t\tclipboardCopyConfig: false, //clipboard config\n\n\n\t\tclipboardCopied: function clipboardCopied() {}, //data has been copied to the clipboard\n\n\t\tclipboardPasted: function clipboardPasted() {}, //data has been pasted into the table\n\n\t\tclipboardPasteError: function clipboardPasteError() {}, //data has not successfully been pasted into the table\n\n\n\t\tdownloadDataFormatter: false, //function to manipulate table data before it is downloaded\n\n\t\tdownloadReady: function downloadReady(data, blob) {\n\t\t\treturn blob;\n\t\t}, //function to manipulate download data\n\n\t\tdownloadComplete: false, //function to manipulate download data\n\n\t\tdownloadConfig: false, //download config\n\n\n\t\tdataTree: false, //enable data tree\n\n\t\tdataTreeElementColumn: false,\n\n\t\tdataTreeBranchElement: true, //show data tree branch element\n\n\t\tdataTreeChildIndent: 9, //data tree child indent in px\n\n\t\tdataTreeChildField: \"_children\", //data tre column field to look for child rows\n\n\t\tdataTreeCollapseElement: false, //data tree row collapse element\n\n\t\tdataTreeExpandElement: false, //data tree row expand element\n\n\t\tdataTreeStartExpanded: false,\n\n\t\tdataTreeRowExpanded: function dataTreeRowExpanded() {}, //row has been expanded\n\n\t\tdataTreeRowCollapsed: function dataTreeRowCollapsed() {}, //row has been collapsed\n\n\n\t\tprintAsHtml: false, //enable print as html\n\n\t\tprintFormatter: false, //printing page formatter\n\n\t\tprintHeader: false, //page header contents\n\n\t\tprintFooter: false, //page footer contents\n\n\t\tprintCopyStyle: true, //enable print as html styling\n\n\t\tprintVisibleRows: true, //restrict print to visible rows only\n\n\t\tprintConfig: {}, //print config options\n\n\n\t\taddRowPos: \"bottom\", //position to insert blank rows, top|bottom\n\n\n\t\tselectable: \"highlight\", //highlight rows on hover\n\n\t\tselectableRangeMode: \"drag\", //highlight rows on hover\n\n\t\tselectableRollingSelection: true, //roll selection once maximum number of selectable rows is reached\n\n\t\tselectablePersistence: true, // maintain selection when table view is updated\n\n\t\tselectableCheck: function selectableCheck(data, row) {\n\t\t\treturn true;\n\t\t}, //check wheather row is selectable\n\n\n\t\theaderFilterPlaceholder: false, //placeholder text to display in header filters\n\n\n\t\theaderVisible: true, //hide header\n\n\n\t\thistory: false, //enable edit history\n\n\n\t\tlocale: false, //current system language\n\n\t\tlangs: {},\n\n\t\tvirtualDom: true, //enable DOM virtualization\n\n\t\tvirtualDomBuffer: 0, // set virtual DOM buffer size\n\n\n\t\tpersistentLayout: false, //store column layout in memory\n\n\t\tpersistentSort: false, //store sorting in memory\n\n\t\tpersistentFilter: false, //store filters in memory\n\n\t\tpersistenceID: \"\", //key for persistent storage\n\n\t\tpersistenceMode: true, //mode for storing persistence information\n\n\n\t\tresponsiveLayout: false, //responsive layout flags\n\n\t\tresponsiveLayoutCollapseStartOpen: true, //start showing collapsed data\n\n\t\tresponsiveLayoutCollapseUseFormatters: true, //responsive layout collapse formatter\n\n\t\tresponsiveLayoutCollapseFormatter: false, //responsive layout collapse formatter\n\n\n\t\tpagination: false, //set pagination type\n\n\t\tpaginationSize: false, //set number of rows to a page\n\n\t\tpaginationButtonCount: 5, // set count of page button\n\n\t\tpaginationSizeSelector: false, //add pagination size selector element\n\n\t\tpaginationElement: false, //element to hold pagination numbers\n\n\t\tpaginationDataSent: {}, //pagination data sent to the server\n\n\t\tpaginationDataReceived: {}, //pagination data received from the server\n\n\t\tpaginationAddRow: \"page\", //add rows on table or page\n\n\n\t\tajaxURL: false, //url for ajax loading\n\n\t\tajaxURLGenerator: false,\n\n\t\tajaxParams: {}, //params for ajax loading\n\n\t\tajaxConfig: \"get\", //ajax request type\n\n\t\tajaxContentType: \"form\", //ajax request type\n\n\t\tajaxRequestFunc: false, //promise function\n\n\t\tajaxLoader: true, //show loader\n\n\t\tajaxLoaderLoading: false, //loader element\n\n\t\tajaxLoaderError: false, //loader element\n\n\t\tajaxFiltering: false,\n\n\t\tajaxSorting: false,\n\n\t\tajaxProgressiveLoad: false, //progressive loading\n\n\t\tajaxProgressiveLoadDelay: 0, //delay between requests\n\n\t\tajaxProgressiveLoadScrollMargin: 0, //margin before scroll begins\n\n\n\t\tgroupBy: false, //enable table grouping and set field to group by\n\n\t\tgroupStartOpen: true, //starting state of group\n\n\t\tgroupValues: false,\n\n\t\tgroupHeader: false, //header generation function\n\n\n\t\thtmlOutputConfig: false, //html outypu config\n\n\n\t\tmovableColumns: false, //enable movable columns\n\n\n\t\tmovableRows: false, //enable movable rows\n\n\t\tmovableRowsConnectedTables: false, //tables for movable rows to be connected to\n\n\t\tmovableRowsSender: false,\n\n\t\tmovableRowsReceiver: \"insert\",\n\n\t\tmovableRowsSendingStart: function movableRowsSendingStart() {},\n\n\t\tmovableRowsSent: function movableRowsSent() {},\n\n\t\tmovableRowsSentFailed: function movableRowsSentFailed() {},\n\n\t\tmovableRowsSendingStop: function movableRowsSendingStop() {},\n\n\t\tmovableRowsReceivingStart: function movableRowsReceivingStart() {},\n\n\t\tmovableRowsReceived: function movableRowsReceived() {},\n\n\t\tmovableRowsReceivedFailed: function movableRowsReceivedFailed() {},\n\n\t\tmovableRowsReceivingStop: function movableRowsReceivingStop() {},\n\n\t\tscrollToRowPosition: \"top\",\n\n\t\tscrollToRowIfVisible: true,\n\n\t\tscrollToColumnPosition: \"left\",\n\n\t\tscrollToColumnIfVisible: true,\n\n\t\trowFormatter: false,\n\n\t\tplaceholder: false,\n\n\t\t//table building callbacks\n\n\t\ttableBuilding: function tableBuilding() {},\n\n\t\ttableBuilt: function tableBuilt() {},\n\n\t\t//render callbacks\n\n\t\trenderStarted: function renderStarted() {},\n\n\t\trenderComplete: function renderComplete() {},\n\n\t\t//row callbacks\n\n\t\trowClick: false,\n\n\t\trowDblClick: false,\n\n\t\trowContext: false,\n\n\t\trowTap: false,\n\n\t\trowDblTap: false,\n\n\t\trowTapHold: false,\n\n\t\trowMouseEnter: false,\n\n\t\trowMouseLeave: false,\n\n\t\trowMouseOver: false,\n\n\t\trowMouseOut: false,\n\n\t\trowMouseMove: false,\n\n\t\trowAdded: function rowAdded() {},\n\n\t\trowDeleted: function rowDeleted() {},\n\n\t\trowMoved: function rowMoved() {},\n\n\t\trowUpdated: function rowUpdated() {},\n\n\t\trowSelectionChanged: function rowSelectionChanged() {},\n\n\t\trowSelected: function rowSelected() {},\n\n\t\trowDeselected: function rowDeselected() {},\n\n\t\trowResized: function rowResized() {},\n\n\t\t//cell callbacks\n\n\t\t//row callbacks\n\n\t\tcellClick: false,\n\n\t\tcellDblClick: false,\n\n\t\tcellContext: false,\n\n\t\tcellTap: false,\n\n\t\tcellDblTap: false,\n\n\t\tcellTapHold: false,\n\n\t\tcellMouseEnter: false,\n\n\t\tcellMouseLeave: false,\n\n\t\tcellMouseOver: false,\n\n\t\tcellMouseOut: false,\n\n\t\tcellMouseMove: false,\n\n\t\tcellEditing: function cellEditing() {},\n\n\t\tcellEdited: function cellEdited() {},\n\n\t\tcellEditCancelled: function cellEditCancelled() {},\n\n\t\t//column callbacks\n\n\t\tcolumnMoved: false,\n\n\t\tcolumnResized: function columnResized() {},\n\n\t\tcolumnTitleChanged: function columnTitleChanged() {},\n\n\t\tcolumnVisibilityChanged: function columnVisibilityChanged() {},\n\n\t\t//HTML iport callbacks\n\n\t\thtmlImporting: function htmlImporting() {},\n\n\t\thtmlImported: function htmlImported() {},\n\n\t\t//data callbacks\n\n\t\tdataLoading: function dataLoading() {},\n\n\t\tdataLoaded: function dataLoaded() {},\n\n\t\tdataEdited: function dataEdited() {},\n\n\t\t//ajax callbacks\n\n\t\tajaxRequesting: function ajaxRequesting() {},\n\n\t\tajaxResponse: false,\n\n\t\tajaxError: function ajaxError() {},\n\n\t\t//filtering callbacks\n\n\t\tdataFiltering: false,\n\n\t\tdataFiltered: false,\n\n\t\t//sorting callbacks\n\n\t\tdataSorting: function dataSorting() {},\n\n\t\tdataSorted: function dataSorted() {},\n\n\t\t//grouping callbacks\n\n\t\tgroupToggleElement: \"arrow\",\n\n\t\tgroupClosedShowCalcs: false,\n\n\t\tdataGrouping: function dataGrouping() {},\n\n\t\tdataGrouped: false,\n\n\t\tgroupVisibilityChanged: function groupVisibilityChanged() {},\n\n\t\tgroupClick: false,\n\n\t\tgroupDblClick: false,\n\n\t\tgroupContext: false,\n\n\t\tgroupTap: false,\n\n\t\tgroupDblTap: false,\n\n\t\tgroupTapHold: false,\n\n\t\tcolumnCalcs: true,\n\n\t\t//pagination callbacks\n\n\t\tpageLoaded: function pageLoaded() {},\n\n\t\t//localization callbacks\n\n\t\tlocalized: function localized() {},\n\n\t\t//validation has failed\n\n\t\tvalidationFailed: function validationFailed() {},\n\n\t\t//history callbacks\n\n\t\thistoryUndo: function historyUndo() {},\n\n\t\thistoryRedo: function historyRedo() {}\n\n\t};\n\n\tTabulator.prototype.initializeOptions = function (options) {\n\n\t\t//warn user if option is not available\n\n\t\tfor (var key in options) {\n\n\t\t\tif (typeof this.defaultOptions[key] === \"undefined\") {\n\n\t\t\t\tconsole.warn(\"Invalid table constructor option:\", key);\n\t\t\t}\n\t\t}\n\n\t\t//assign options to table\n\n\t\tfor (var key in this.defaultOptions) {\n\n\t\t\tif (key in options) {\n\n\t\t\t\tthis.options[key] = options[key];\n\t\t\t} else {\n\n\t\t\t\tif (Array.isArray(this.defaultOptions[key])) {\n\n\t\t\t\t\tthis.options[key] = [];\n\t\t\t\t} else if (_typeof(this.defaultOptions[key]) === \"object\") {\n\n\t\t\t\t\tthis.options[key] = {};\n\t\t\t\t} else {\n\n\t\t\t\t\tthis.options[key] = this.defaultOptions[key];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tTabulator.prototype.initializeElement = function (element) {\n\n\t\tif (typeof HTMLElement !== \"undefined\" && element instanceof HTMLElement) {\n\n\t\t\tthis.element = element;\n\n\t\t\treturn true;\n\t\t} else if (typeof element === \"string\") {\n\n\t\t\tthis.element = document.querySelector(element);\n\n\t\t\tif (this.element) {\n\n\t\t\t\treturn true;\n\t\t\t} else {\n\n\t\t\t\tconsole.error(\"Tabulator Creation Error - no element found matching selector: \", element);\n\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} else {\n\n\t\t\tconsole.error(\"Tabulator Creation Error - Invalid element provided:\", element);\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\t//convert depricated functionality to new functions\n\n\tTabulator.prototype._mapDepricatedFunctionality = function () {};\n\n\tTabulator.prototype._clearSelection = function () {\n\n\t\tthis.element.classList.add(\"tabulator-block-select\");\n\n\t\tif (window.getSelection) {\n\n\t\t\tif (window.getSelection().empty) {\n\t\t\t\t// Chrome\n\n\t\t\t\twindow.getSelection().empty();\n\t\t\t} else if (window.getSelection().removeAllRanges) {\n\t\t\t\t// Firefox\n\n\t\t\t\twindow.getSelection().removeAllRanges();\n\t\t\t}\n\t\t} else if (document.selection) {\n\t\t\t// IE?\n\n\t\t\tdocument.selection.empty();\n\t\t}\n\n\t\tthis.element.classList.remove(\"tabulator-block-select\");\n\t};\n\n\t//concreate table\n\n\tTabulator.prototype._create = function () {\n\n\t\tthis._clearObjectPointers();\n\n\t\tthis._mapDepricatedFunctionality();\n\n\t\tthis.bindModules();\n\n\t\tif (this.element.tagName === \"TABLE\") {\n\n\t\t\tif (this.modExists(\"htmlTableImport\", true)) {\n\n\t\t\t\tthis.modules.htmlTableImport.parseTable();\n\t\t\t}\n\t\t}\n\n\t\tthis.columnManager = new ColumnManager(this);\n\n\t\tthis.rowManager = new RowManager(this);\n\n\t\tthis.footerManager = new FooterManager(this);\n\n\t\tthis.columnManager.setRowManager(this.rowManager);\n\n\t\tthis.rowManager.setColumnManager(this.columnManager);\n\n\t\tthis._buildElement();\n\n\t\tthis._loadInitialData();\n\t};\n\n\t//clear pointers to objects in default config object\n\n\tTabulator.prototype._clearObjectPointers = function () {\n\n\t\tthis.options.columns = this.options.columns.slice(0);\n\n\t\tif (!this.options.reactiveData) {\n\n\t\t\tthis.options.data = this.options.data.slice(0);\n\t\t}\n\t};\n\n\t//build tabulator element\n\n\tTabulator.prototype._buildElement = function () {\n\t\tvar _this8 = this;\n\n\t\tvar element = this.element,\n\t\t mod = this.modules,\n\t\t options = this.options;\n\n\t\toptions.tableBuilding.call(this);\n\n\t\telement.classList.add(\"tabulator\");\n\n\t\telement.setAttribute(\"role\", \"grid\");\n\n\t\t//empty element\n\n\t\twhile (element.firstChild) {\n\t\t\telement.removeChild(element.firstChild);\n\t\t} //set table height\n\n\t\tif (options.height) {\n\n\t\t\toptions.height = isNaN(options.height) ? options.height : options.height + \"px\";\n\n\t\t\telement.style.height = options.height;\n\t\t}\n\n\t\tthis.columnManager.initialize();\n\n\t\tthis.rowManager.initialize();\n\n\t\tthis._detectBrowser();\n\n\t\tif (this.modExists(\"layout\", true)) {\n\n\t\t\tmod.layout.initialize(options.layout);\n\t\t}\n\n\t\t//set localization\n\n\t\tif (options.headerFilterPlaceholder !== false) {\n\n\t\t\tmod.localize.setHeaderFilterPlaceholder(options.headerFilterPlaceholder);\n\t\t}\n\n\t\tfor (var locale in options.langs) {\n\n\t\t\tmod.localize.installLang(locale, options.langs[locale]);\n\t\t}\n\n\t\tmod.localize.setLocale(options.locale);\n\n\t\t//configure placeholder element\n\n\t\tif (typeof options.placeholder == \"string\") {\n\n\t\t\tvar el = document.createElement(\"div\");\n\n\t\t\tel.classList.add(\"tabulator-placeholder\");\n\n\t\t\tvar span = document.createElement(\"span\");\n\n\t\t\tspan.innerHTML = options.placeholder;\n\n\t\t\tel.appendChild(span);\n\n\t\t\toptions.placeholder = el;\n\t\t}\n\n\t\t//build table elements\n\n\t\telement.appendChild(this.columnManager.getElement());\n\n\t\telement.appendChild(this.rowManager.getElement());\n\n\t\tif (options.footerElement) {\n\n\t\t\tthis.footerManager.activate();\n\t\t}\n\n\t\tif ((options.persistentLayout || options.persistentSort || options.persistentFilter) && this.modExists(\"persistence\", true)) {\n\n\t\t\tmod.persistence.initialize(options.persistenceMode, options.persistenceID);\n\t\t}\n\n\t\tif (options.persistentLayout && this.modExists(\"persistence\", true)) {\n\n\t\t\toptions.columns = mod.persistence.load(\"columns\", options.columns);\n\t\t}\n\n\t\tif (options.movableRows && this.modExists(\"moveRow\")) {\n\n\t\t\tmod.moveRow.initialize();\n\t\t}\n\n\t\tif (options.autoColumns && this.options.data) {\n\n\t\t\tthis.columnManager.generateColumnsFromRowData(this.options.data);\n\t\t}\n\n\t\tif (this.modExists(\"columnCalcs\")) {\n\n\t\t\tmod.columnCalcs.initialize();\n\t\t}\n\n\t\tthis.columnManager.setColumns(options.columns);\n\n\t\tif (options.dataTree && this.modExists(\"dataTree\", true)) {\n\n\t\t\tmod.dataTree.initialize();\n\t\t}\n\n\t\tif (this.modExists(\"frozenRows\")) {\n\n\t\t\tthis.modules.frozenRows.initialize();\n\t\t}\n\n\t\tif ((options.persistentSort || options.initialSort) && this.modExists(\"sort\", true)) {\n\n\t\t\tvar sorters = [];\n\n\t\t\tif (options.persistentSort && this.modExists(\"persistence\", true)) {\n\n\t\t\t\tsorters = mod.persistence.load(\"sort\");\n\n\t\t\t\tif (sorters === false && options.initialSort) {\n\n\t\t\t\t\tsorters = options.initialSort;\n\t\t\t\t}\n\t\t\t} else if (options.initialSort) {\n\n\t\t\t\tsorters = options.initialSort;\n\t\t\t}\n\n\t\t\tmod.sort.setSort(sorters);\n\t\t}\n\n\t\tif ((options.persistentFilter || options.initialFilter) && this.modExists(\"filter\", true)) {\n\n\t\t\tvar filters = [];\n\n\t\t\tif (options.persistentFilter && this.modExists(\"persistence\", true)) {\n\n\t\t\t\tfilters = mod.persistence.load(\"filter\");\n\n\t\t\t\tif (filters === false && options.initialFilter) {\n\n\t\t\t\t\tfilters = options.initialFilter;\n\t\t\t\t}\n\t\t\t} else if (options.initialFilter) {\n\n\t\t\t\tfilters = options.initialFilter;\n\t\t\t}\n\n\t\t\tmod.filter.setFilter(filters);\n\t\t}\n\n\t\tif (options.initialHeaderFilter && this.modExists(\"filter\", true)) {\n\n\t\t\toptions.initialHeaderFilter.forEach(function (item) {\n\n\t\t\t\tvar column = _this8.columnManager.findColumn(item.field);\n\n\t\t\t\tif (column) {\n\n\t\t\t\t\tmod.filter.setHeaderFilterValue(column, item.value);\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", item.field);\n\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (this.modExists(\"ajax\")) {\n\n\t\t\tmod.ajax.initialize();\n\t\t}\n\n\t\tif (options.pagination && this.modExists(\"page\", true)) {\n\n\t\t\tmod.page.initialize();\n\t\t}\n\n\t\tif (options.groupBy && this.modExists(\"groupRows\", true)) {\n\n\t\t\tmod.groupRows.initialize();\n\t\t}\n\n\t\tif (this.modExists(\"keybindings\")) {\n\n\t\t\tmod.keybindings.initialize();\n\t\t}\n\n\t\tif (this.modExists(\"selectRow\")) {\n\n\t\t\tmod.selectRow.clearSelectionData(true);\n\t\t}\n\n\t\tif (options.autoResize && this.modExists(\"resizeTable\")) {\n\n\t\t\tmod.resizeTable.initialize();\n\t\t}\n\n\t\tif (this.modExists(\"clipboard\")) {\n\n\t\t\tmod.clipboard.initialize();\n\t\t}\n\n\t\tif (options.printAsHtml && this.modExists(\"print\")) {\n\n\t\t\tmod.print.initialize();\n\t\t}\n\n\t\toptions.tableBuilt.call(this);\n\t};\n\n\tTabulator.prototype._loadInitialData = function () {\n\n\t\tvar self = this;\n\n\t\tif (self.options.pagination && self.modExists(\"page\")) {\n\n\t\t\tself.modules.page.reset(true);\n\n\t\t\tif (self.options.pagination == \"local\") {\n\n\t\t\t\tif (self.options.data.length) {\n\n\t\t\t\t\tself.rowManager.setData(self.options.data);\n\t\t\t\t} else {\n\n\t\t\t\t\tif ((self.options.ajaxURL || self.options.ajaxURLGenerator) && self.modExists(\"ajax\")) {\n\n\t\t\t\t\t\tself.modules.ajax.loadData().then(function () {}).catch(function () {});\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tself.rowManager.setData(self.options.data);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\tif (self.options.ajaxURL) {\n\n\t\t\t\t\tself.modules.page.setPage(1).then(function () {}).catch(function () {});\n\t\t\t\t} else {\n\n\t\t\t\t\tself.rowManager.setData([]);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\n\t\t\tif (self.options.data.length) {\n\n\t\t\t\tself.rowManager.setData(self.options.data);\n\t\t\t} else {\n\n\t\t\t\tif ((self.options.ajaxURL || self.options.ajaxURLGenerator) && self.modExists(\"ajax\")) {\n\n\t\t\t\t\tself.modules.ajax.loadData().then(function () {}).catch(function () {});\n\t\t\t\t} else {\n\n\t\t\t\t\tself.rowManager.setData(self.options.data);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\t//deconstructor\n\n\tTabulator.prototype.destroy = function () {\n\n\t\tvar element = this.element;\n\n\t\tTabulator.prototype.comms.deregister(this); //deregister table from inderdevice communication\n\n\n\t\tif (this.options.reactiveData && this.modExists(\"reactiveData\", true)) {\n\n\t\t\tthis.modules.reactiveData.unwatchData();\n\t\t}\n\n\t\t//clear row data\n\n\t\tthis.rowManager.rows.forEach(function (row) {\n\n\t\t\trow.wipe();\n\t\t});\n\n\t\tthis.rowManager.rows = [];\n\n\t\tthis.rowManager.activeRows = [];\n\n\t\tthis.rowManager.displayRows = [];\n\n\t\t//clear event bindings\n\n\t\tif (this.options.autoResize && this.modExists(\"resizeTable\")) {\n\n\t\t\tthis.modules.resizeTable.clearBindings();\n\t\t}\n\n\t\tif (this.modExists(\"keybindings\")) {\n\n\t\t\tthis.modules.keybindings.clearBindings();\n\t\t}\n\n\t\t//clear DOM\n\n\t\twhile (element.firstChild) {\n\t\t\telement.removeChild(element.firstChild);\n\t\t}element.classList.remove(\"tabulator\");\n\t};\n\n\tTabulator.prototype._detectBrowser = function () {\n\n\t\tvar ua = navigator.userAgent;\n\n\t\tif (ua.indexOf(\"Trident\") > -1) {\n\n\t\t\tthis.browser = \"ie\";\n\n\t\t\tthis.browserSlow = true;\n\t\t} else if (ua.indexOf(\"Edge\") > -1) {\n\n\t\t\tthis.browser = \"edge\";\n\n\t\t\tthis.browserSlow = true;\n\t\t} else if (ua.indexOf(\"Firefox\") > -1) {\n\n\t\t\tthis.browser = \"firefox\";\n\n\t\t\tthis.browserSlow = false;\n\t\t} else {\n\n\t\t\tthis.browser = \"other\";\n\n\t\t\tthis.browserSlow = false;\n\t\t}\n\t};\n\n\t////////////////// Data Handling //////////////////\n\n\n\t//loca data from local file\n\n\tTabulator.prototype.setDataFromLocalFile = function (extensions) {\n\t\tvar _this9 = this;\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tvar input = document.createElement(\"input\");\n\n\t\t\tinput.type = \"file\";\n\n\t\t\tinput.accept = extensions || \".json,application/json\";\n\n\t\t\tinput.addEventListener(\"change\", function (e) {\n\n\t\t\t\tvar file = input.files[0],\n\t\t\t\t reader = new FileReader(),\n\t\t\t\t data;\n\n\t\t\t\treader.readAsText(file);\n\n\t\t\t\treader.onload = function (e) {\n\n\t\t\t\t\ttry {\n\n\t\t\t\t\t\tdata = JSON.parse(reader.result);\n\t\t\t\t\t} catch (e) {\n\n\t\t\t\t\t\tconsole.warn(\"File Load Error - File contents is invalid JSON\", e);\n\n\t\t\t\t\t\treject(e);\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t_this9._setData(data).then(function (data) {\n\n\t\t\t\t\t\tresolve(data);\n\t\t\t\t\t}).catch(function (err) {\n\n\t\t\t\t\t\tresolve(err);\n\t\t\t\t\t});\n\t\t\t\t};\n\n\t\t\t\treader.onerror = function (e) {\n\n\t\t\t\t\tconsole.warn(\"File Load Error - Unable to read file\");\n\n\t\t\t\t\treject();\n\t\t\t\t};\n\t\t\t});\n\n\t\t\tinput.click();\n\t\t});\n\t};\n\n\t//load data\n\n\tTabulator.prototype.setData = function (data, params, config) {\n\n\t\tif (this.modExists(\"ajax\")) {\n\n\t\t\tthis.modules.ajax.blockActiveRequest();\n\t\t}\n\n\t\treturn this._setData(data, params, config);\n\t};\n\n\tTabulator.prototype._setData = function (data, params, config, inPosition) {\n\n\t\tvar self = this;\n\n\t\tif (typeof data === \"string\") {\n\n\t\t\tif (data.indexOf(\"{\") == 0 || data.indexOf(\"[\") == 0) {\n\n\t\t\t\t//data is a json encoded string\n\n\t\t\t\treturn self.rowManager.setData(JSON.parse(data), inPosition);\n\t\t\t} else {\n\n\t\t\t\tif (self.modExists(\"ajax\", true)) {\n\n\t\t\t\t\tif (params) {\n\n\t\t\t\t\t\tself.modules.ajax.setParams(params);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (config) {\n\n\t\t\t\t\t\tself.modules.ajax.setConfig(config);\n\t\t\t\t\t}\n\n\t\t\t\t\tself.modules.ajax.setUrl(data);\n\n\t\t\t\t\tif (self.options.pagination == \"remote\" && self.modExists(\"page\", true)) {\n\n\t\t\t\t\t\tself.modules.page.reset(true);\n\n\t\t\t\t\t\treturn self.modules.page.setPage(1);\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t//assume data is url, make ajax call to url to get data\n\n\t\t\t\t\t\treturn self.modules.ajax.loadData(inPosition);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\n\t\t\tif (data) {\n\n\t\t\t\t//asume data is already an object\n\n\t\t\t\treturn self.rowManager.setData(data, inPosition);\n\t\t\t} else {\n\n\t\t\t\t//no data provided, check if ajaxURL is present;\n\n\t\t\t\tif (self.modExists(\"ajax\") && (self.modules.ajax.getUrl || self.options.ajaxURLGenerator)) {\n\n\t\t\t\t\tif (self.options.pagination == \"remote\" && self.modExists(\"page\", true)) {\n\n\t\t\t\t\t\tself.modules.page.reset(true);\n\n\t\t\t\t\t\treturn self.modules.page.setPage(1);\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\treturn self.modules.ajax.loadData(inPosition);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\t//empty data\n\n\t\t\t\t\treturn self.rowManager.setData([], inPosition);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\t//clear data\n\n\tTabulator.prototype.clearData = function () {\n\n\t\tif (this.modExists(\"ajax\")) {\n\n\t\t\tthis.modules.ajax.blockActiveRequest();\n\t\t}\n\n\t\tthis.rowManager.clearData();\n\t};\n\n\t//get table data array\n\n\tTabulator.prototype.getData = function (active) {\n\n\t\treturn this.rowManager.getData(active);\n\t};\n\n\t//get table data array count\n\n\tTabulator.prototype.getDataCount = function (active) {\n\n\t\treturn this.rowManager.getDataCount(active);\n\t};\n\n\t//search for specific row components\n\n\tTabulator.prototype.searchRows = function (field, type, value) {\n\n\t\tif (this.modExists(\"filter\", true)) {\n\n\t\t\treturn this.modules.filter.search(\"rows\", field, type, value);\n\t\t}\n\t};\n\n\t//search for specific data\n\n\tTabulator.prototype.searchData = function (field, type, value) {\n\n\t\tif (this.modExists(\"filter\", true)) {\n\n\t\t\treturn this.modules.filter.search(\"data\", field, type, value);\n\t\t}\n\t};\n\n\t//get table html\n\n\tTabulator.prototype.getHtml = function (visible, style, config) {\n\n\t\tif (this.modExists(\"htmlTableExport\", true)) {\n\n\t\t\treturn this.modules.htmlTableExport.getHtml(visible, style, config);\n\t\t}\n\t};\n\n\t//get print html\n\n\tTabulator.prototype.print = function (visible, style, config) {\n\n\t\tif (this.modExists(\"print\", true)) {\n\n\t\t\treturn this.modules.print.printFullscreen(visible, style, config);\n\t\t}\n\t};\n\n\t//retrieve Ajax URL\n\n\tTabulator.prototype.getAjaxUrl = function () {\n\n\t\tif (this.modExists(\"ajax\", true)) {\n\n\t\t\treturn this.modules.ajax.getUrl();\n\t\t}\n\t};\n\n\t//replace data, keeping table in position with same sort\n\n\tTabulator.prototype.replaceData = function (data, params, config) {\n\n\t\tif (this.modExists(\"ajax\")) {\n\n\t\t\tthis.modules.ajax.blockActiveRequest();\n\t\t}\n\n\t\treturn this._setData(data, params, config, true);\n\t};\n\n\t//update table data\n\n\tTabulator.prototype.updateData = function (data) {\n\t\tvar _this10 = this;\n\n\t\tvar self = this;\n\n\t\tvar responses = 0;\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tif (_this10.modExists(\"ajax\")) {\n\n\t\t\t\t_this10.modules.ajax.blockActiveRequest();\n\t\t\t}\n\n\t\t\tif (typeof data === \"string\") {\n\n\t\t\t\tdata = JSON.parse(data);\n\t\t\t}\n\n\t\t\tif (data) {\n\n\t\t\t\tdata.forEach(function (item) {\n\n\t\t\t\t\tvar row = self.rowManager.findRow(item[self.options.index]);\n\n\t\t\t\t\tif (row) {\n\n\t\t\t\t\t\tresponses++;\n\n\t\t\t\t\t\trow.updateData(item).then(function () {\n\n\t\t\t\t\t\t\tresponses--;\n\n\t\t\t\t\t\t\tif (!responses) {\n\n\t\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else {\n\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\n\n\t\t\t\treject(\"Update Error - No data provided\");\n\t\t\t}\n\t\t});\n\t};\n\n\tTabulator.prototype.addData = function (data, pos, index) {\n\t\tvar _this11 = this;\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tif (_this11.modExists(\"ajax\")) {\n\n\t\t\t\t_this11.modules.ajax.blockActiveRequest();\n\t\t\t}\n\n\t\t\tif (typeof data === \"string\") {\n\n\t\t\t\tdata = JSON.parse(data);\n\t\t\t}\n\n\t\t\tif (data) {\n\n\t\t\t\t_this11.rowManager.addRows(data, pos, index).then(function (rows) {\n\n\t\t\t\t\tvar output = [];\n\n\t\t\t\t\trows.forEach(function (row) {\n\n\t\t\t\t\t\toutput.push(row.getComponent());\n\t\t\t\t\t});\n\n\t\t\t\t\tresolve(output);\n\t\t\t\t});\n\t\t\t} else {\n\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\n\n\t\t\t\treject(\"Update Error - No data provided\");\n\t\t\t}\n\t\t});\n\t};\n\n\t//update table data\n\n\tTabulator.prototype.updateOrAddData = function (data) {\n\t\tvar _this12 = this;\n\n\t\tvar self = this,\n\t\t rows = [],\n\t\t responses = 0;\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tif (_this12.modExists(\"ajax\")) {\n\n\t\t\t\t_this12.modules.ajax.blockActiveRequest();\n\t\t\t}\n\n\t\t\tif (typeof data === \"string\") {\n\n\t\t\t\tdata = JSON.parse(data);\n\t\t\t}\n\n\t\t\tif (data) {\n\n\t\t\t\tdata.forEach(function (item) {\n\n\t\t\t\t\tvar row = self.rowManager.findRow(item[self.options.index]);\n\n\t\t\t\t\tresponses++;\n\n\t\t\t\t\tif (row) {\n\n\t\t\t\t\t\trow.updateData(item).then(function () {\n\n\t\t\t\t\t\t\tresponses--;\n\n\t\t\t\t\t\t\trows.push(row.getComponent());\n\n\t\t\t\t\t\t\tif (!responses) {\n\n\t\t\t\t\t\t\t\tresolve(rows);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tself.rowManager.addRows(item).then(function (newRows) {\n\n\t\t\t\t\t\t\tresponses--;\n\n\t\t\t\t\t\t\trows.push(newRows[0].getComponent());\n\n\t\t\t\t\t\t\tif (!responses) {\n\n\t\t\t\t\t\t\t\tresolve(rows);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else {\n\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\n\n\t\t\t\treject(\"Update Error - No data provided\");\n\t\t\t}\n\t\t});\n\t};\n\n\t//get row object\n\n\tTabulator.prototype.getRow = function (index) {\n\n\t\tvar row = this.rowManager.findRow(index);\n\n\t\tif (row) {\n\n\t\t\treturn row.getComponent();\n\t\t} else {\n\n\t\t\tconsole.warn(\"Find Error - No matching row found:\", index);\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\t//get row object\n\n\tTabulator.prototype.getRowFromPosition = function (position, active) {\n\n\t\tvar row = this.rowManager.getRowFromPosition(position, active);\n\n\t\tif (row) {\n\n\t\t\treturn row.getComponent();\n\t\t} else {\n\n\t\t\tconsole.warn(\"Find Error - No matching row found:\", position);\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\t//delete row from table\n\n\tTabulator.prototype.deleteRow = function (index) {\n\t\tvar _this13 = this;\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tvar row = _this13.rowManager.findRow(index);\n\n\t\t\tif (row) {\n\n\t\t\t\trow.delete().then(function () {\n\n\t\t\t\t\tresolve();\n\t\t\t\t}).catch(function (err) {\n\n\t\t\t\t\treject(err);\n\t\t\t\t});\n\t\t\t} else {\n\n\t\t\t\tconsole.warn(\"Delete Error - No matching row found:\", index);\n\n\t\t\t\treject(\"Delete Error - No matching row found\");\n\t\t\t}\n\t\t});\n\t};\n\n\t//add row to table\n\n\tTabulator.prototype.addRow = function (data, pos, index) {\n\t\tvar _this14 = this;\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tif (typeof data === \"string\") {\n\n\t\t\t\tdata = JSON.parse(data);\n\t\t\t}\n\n\t\t\t_this14.rowManager.addRows(data, pos, index).then(function (rows) {\n\n\t\t\t\t//recalc column calculations if present\n\n\t\t\t\tif (_this14.modExists(\"columnCalcs\")) {\n\n\t\t\t\t\t_this14.modules.columnCalcs.recalc(_this14.rowManager.activeRows);\n\t\t\t\t}\n\n\t\t\t\tresolve(rows[0].getComponent());\n\t\t\t});\n\t\t});\n\t};\n\n\t//update a row if it exitsts otherwise create it\n\n\tTabulator.prototype.updateOrAddRow = function (index, data) {\n\t\tvar _this15 = this;\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tvar row = _this15.rowManager.findRow(index);\n\n\t\t\tif (typeof data === \"string\") {\n\n\t\t\t\tdata = JSON.parse(data);\n\t\t\t}\n\n\t\t\tif (row) {\n\n\t\t\t\trow.updateData(data).then(function () {\n\n\t\t\t\t\t//recalc column calculations if present\n\n\t\t\t\t\tif (_this15.modExists(\"columnCalcs\")) {\n\n\t\t\t\t\t\t_this15.modules.columnCalcs.recalc(_this15.rowManager.activeRows);\n\t\t\t\t\t}\n\n\t\t\t\t\tresolve(row.getComponent());\n\t\t\t\t}).catch(function (err) {\n\n\t\t\t\t\treject(err);\n\t\t\t\t});\n\t\t\t} else {\n\n\t\t\t\trow = _this15.rowManager.addRows(data).then(function (rows) {\n\n\t\t\t\t\t//recalc column calculations if present\n\n\t\t\t\t\tif (_this15.modExists(\"columnCalcs\")) {\n\n\t\t\t\t\t\t_this15.modules.columnCalcs.recalc(_this15.rowManager.activeRows);\n\t\t\t\t\t}\n\n\t\t\t\t\tresolve(rows[0].getComponent());\n\t\t\t\t}).catch(function (err) {\n\n\t\t\t\t\treject(err);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t};\n\n\t//update row data\n\n\tTabulator.prototype.updateRow = function (index, data) {\n\t\tvar _this16 = this;\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tvar row = _this16.rowManager.findRow(index);\n\n\t\t\tif (typeof data === \"string\") {\n\n\t\t\t\tdata = JSON.parse(data);\n\t\t\t}\n\n\t\t\tif (row) {\n\n\t\t\t\trow.updateData(data).then(function () {\n\n\t\t\t\t\tresolve(row.getComponent());\n\t\t\t\t}).catch(function (err) {\n\n\t\t\t\t\treject(err);\n\t\t\t\t});\n\t\t\t} else {\n\n\t\t\t\tconsole.warn(\"Update Error - No matching row found:\", index);\n\n\t\t\t\treject(\"Update Error - No matching row found\");\n\t\t\t}\n\t\t});\n\t};\n\n\t//scroll to row in DOM\n\n\tTabulator.prototype.scrollToRow = function (index, position, ifVisible) {\n\t\tvar _this17 = this;\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tvar row = _this17.rowManager.findRow(index);\n\n\t\t\tif (row) {\n\n\t\t\t\t_this17.rowManager.scrollToRow(row, position, ifVisible).then(function () {\n\n\t\t\t\t\tresolve();\n\t\t\t\t}).catch(function (err) {\n\n\t\t\t\t\treject(err);\n\t\t\t\t});\n\t\t\t} else {\n\n\t\t\t\tconsole.warn(\"Scroll Error - No matching row found:\", index);\n\n\t\t\t\treject(\"Scroll Error - No matching row found\");\n\t\t\t}\n\t\t});\n\t};\n\n\tTabulator.prototype.moveRow = function (from, to, after) {\n\n\t\tvar fromRow = this.rowManager.findRow(from);\n\n\t\tif (fromRow) {\n\n\t\t\tfromRow.moveToRow(to, after);\n\t\t} else {\n\n\t\t\tconsole.warn(\"Move Error - No matching row found:\", from);\n\t\t}\n\t};\n\n\tTabulator.prototype.getRows = function (active) {\n\n\t\treturn this.rowManager.getComponents(active);\n\t};\n\n\t//get position of row in table\n\n\tTabulator.prototype.getRowPosition = function (index, active) {\n\n\t\tvar row = this.rowManager.findRow(index);\n\n\t\tif (row) {\n\n\t\t\treturn this.rowManager.getRowPosition(row, active);\n\t\t} else {\n\n\t\t\tconsole.warn(\"Position Error - No matching row found:\", index);\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\t//copy table data to clipboard\n\n\tTabulator.prototype.copyToClipboard = function (selector, selectorParams, formatter, formatterParams) {\n\n\t\tif (this.modExists(\"clipboard\", true)) {\n\n\t\t\tthis.modules.clipboard.copy(selector, selectorParams, formatter, formatterParams);\n\t\t}\n\t};\n\n\t/////////////// Column Functions ///////////////\n\n\n\tTabulator.prototype.setColumns = function (definition) {\n\n\t\tthis.columnManager.setColumns(definition);\n\t};\n\n\tTabulator.prototype.getColumns = function (structured) {\n\n\t\treturn this.columnManager.getComponents(structured);\n\t};\n\n\tTabulator.prototype.getColumn = function (field) {\n\n\t\tvar col = this.columnManager.findColumn(field);\n\n\t\tif (col) {\n\n\t\t\treturn col.getComponent();\n\t\t} else {\n\n\t\t\tconsole.warn(\"Find Error - No matching column found:\", field);\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tTabulator.prototype.getColumnDefinitions = function () {\n\n\t\treturn this.columnManager.getDefinitionTree();\n\t};\n\n\tTabulator.prototype.getColumnLayout = function () {\n\n\t\tif (this.modExists(\"persistence\", true)) {\n\n\t\t\treturn this.modules.persistence.parseColumns(this.columnManager.getColumns());\n\t\t}\n\t};\n\n\tTabulator.prototype.setColumnLayout = function (layout) {\n\n\t\tif (this.modExists(\"persistence\", true)) {\n\n\t\t\tthis.columnManager.setColumns(this.modules.persistence.mergeDefinition(this.options.columns, layout));\n\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t};\n\n\tTabulator.prototype.showColumn = function (field) {\n\n\t\tvar column = this.columnManager.findColumn(field);\n\n\t\tif (column) {\n\n\t\t\tcolumn.show();\n\n\t\t\tif (this.options.responsiveLayout && this.modExists(\"responsiveLayout\", true)) {\n\n\t\t\t\tthis.modules.responsiveLayout.update();\n\t\t\t}\n\t\t} else {\n\n\t\t\tconsole.warn(\"Column Show Error - No matching column found:\", field);\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tTabulator.prototype.hideColumn = function (field) {\n\n\t\tvar column = this.columnManager.findColumn(field);\n\n\t\tif (column) {\n\n\t\t\tcolumn.hide();\n\n\t\t\tif (this.options.responsiveLayout && this.modExists(\"responsiveLayout\", true)) {\n\n\t\t\t\tthis.modules.responsiveLayout.update();\n\t\t\t}\n\t\t} else {\n\n\t\t\tconsole.warn(\"Column Hide Error - No matching column found:\", field);\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tTabulator.prototype.toggleColumn = function (field) {\n\n\t\tvar column = this.columnManager.findColumn(field);\n\n\t\tif (column) {\n\n\t\t\tif (column.visible) {\n\n\t\t\t\tcolumn.hide();\n\t\t\t} else {\n\n\t\t\t\tcolumn.show();\n\t\t\t}\n\t\t} else {\n\n\t\t\tconsole.warn(\"Column Visibility Toggle Error - No matching column found:\", field);\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tTabulator.prototype.addColumn = function (definition, before, field) {\n\n\t\tvar column = this.columnManager.findColumn(field);\n\n\t\tthis.columnManager.addColumn(definition, before, column);\n\t};\n\n\tTabulator.prototype.deleteColumn = function (field) {\n\n\t\tvar column = this.columnManager.findColumn(field);\n\n\t\tif (column) {\n\n\t\t\tcolumn.delete();\n\t\t} else {\n\n\t\t\tconsole.warn(\"Column Delete Error - No matching column found:\", field);\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\t//scroll to column in DOM\n\n\tTabulator.prototype.scrollToColumn = function (field, position, ifVisible) {\n\t\tvar _this18 = this;\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tvar column = _this18.columnManager.findColumn(field);\n\n\t\t\tif (column) {\n\n\t\t\t\t_this18.columnManager.scrollToColumn(column, position, ifVisible).then(function () {\n\n\t\t\t\t\tresolve();\n\t\t\t\t}).catch(function (err) {\n\n\t\t\t\t\treject(err);\n\t\t\t\t});\n\t\t\t} else {\n\n\t\t\t\tconsole.warn(\"Scroll Error - No matching column found:\", field);\n\n\t\t\t\treject(\"Scroll Error - No matching column found\");\n\t\t\t}\n\t\t});\n\t};\n\n\t//////////// Localization Functions ////////////\n\n\tTabulator.prototype.setLocale = function (locale) {\n\n\t\tthis.modules.localize.setLocale(locale);\n\t};\n\n\tTabulator.prototype.getLocale = function () {\n\n\t\treturn this.modules.localize.getLocale();\n\t};\n\n\tTabulator.prototype.getLang = function (locale) {\n\n\t\treturn this.modules.localize.getLang(locale);\n\t};\n\n\t//////////// General Public Functions ////////////\n\n\n\t//redraw list without updating data\n\n\tTabulator.prototype.redraw = function (force) {\n\n\t\tthis.columnManager.redraw(force);\n\n\t\tthis.rowManager.redraw(force);\n\t};\n\n\tTabulator.prototype.setHeight = function (height) {\n\n\t\tthis.options.height = isNaN(height) ? height : height + \"px\";\n\n\t\tthis.element.style.height = this.options.height;\n\n\t\tthis.rowManager.redraw();\n\t};\n\n\t///////////////////// Sorting ////////////////////\n\n\n\t//trigger sort\n\n\tTabulator.prototype.setSort = function (sortList, dir) {\n\n\t\tif (this.modExists(\"sort\", true)) {\n\n\t\t\tthis.modules.sort.setSort(sortList, dir);\n\n\t\t\tthis.rowManager.sorterRefresh();\n\t\t}\n\t};\n\n\tTabulator.prototype.getSorters = function () {\n\n\t\tif (this.modExists(\"sort\", true)) {\n\n\t\t\treturn this.modules.sort.getSort();\n\t\t}\n\t};\n\n\tTabulator.prototype.clearSort = function () {\n\n\t\tif (this.modExists(\"sort\", true)) {\n\n\t\t\tthis.modules.sort.clear();\n\n\t\t\tthis.rowManager.sorterRefresh();\n\t\t}\n\t};\n\n\t///////////////////// Filtering ////////////////////\n\n\n\t//set standard filters\n\n\tTabulator.prototype.setFilter = function (field, type, value) {\n\n\t\tif (this.modExists(\"filter\", true)) {\n\n\t\t\tthis.modules.filter.setFilter(field, type, value);\n\n\t\t\tthis.rowManager.filterRefresh();\n\t\t}\n\t};\n\n\t//add filter to array\n\n\tTabulator.prototype.addFilter = function (field, type, value) {\n\n\t\tif (this.modExists(\"filter\", true)) {\n\n\t\t\tthis.modules.filter.addFilter(field, type, value);\n\n\t\t\tthis.rowManager.filterRefresh();\n\t\t}\n\t};\n\n\t//get all filters\n\n\tTabulator.prototype.getFilters = function (all) {\n\n\t\tif (this.modExists(\"filter\", true)) {\n\n\t\t\treturn this.modules.filter.getFilters(all);\n\t\t}\n\t};\n\n\tTabulator.prototype.setHeaderFilterFocus = function (field) {\n\n\t\tif (this.modExists(\"filter\", true)) {\n\n\t\t\tvar column = this.columnManager.findColumn(field);\n\n\t\t\tif (column) {\n\n\t\t\t\tthis.modules.filter.setHeaderFilterFocus(column);\n\t\t\t} else {\n\n\t\t\t\tconsole.warn(\"Column Filter Focus Error - No matching column found:\", field);\n\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t};\n\n\tTabulator.prototype.setHeaderFilterValue = function (field, value) {\n\n\t\tif (this.modExists(\"filter\", true)) {\n\n\t\t\tvar column = this.columnManager.findColumn(field);\n\n\t\t\tif (column) {\n\n\t\t\t\tthis.modules.filter.setHeaderFilterValue(column, value);\n\t\t\t} else {\n\n\t\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", field);\n\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t};\n\n\tTabulator.prototype.getHeaderFilters = function () {\n\n\t\tif (this.modExists(\"filter\", true)) {\n\n\t\t\treturn this.modules.filter.getHeaderFilters();\n\t\t}\n\t};\n\n\t//remove filter from array\n\n\tTabulator.prototype.removeFilter = function (field, type, value) {\n\n\t\tif (this.modExists(\"filter\", true)) {\n\n\t\t\tthis.modules.filter.removeFilter(field, type, value);\n\n\t\t\tthis.rowManager.filterRefresh();\n\t\t}\n\t};\n\n\t//clear filters\n\n\tTabulator.prototype.clearFilter = function (all) {\n\n\t\tif (this.modExists(\"filter\", true)) {\n\n\t\t\tthis.modules.filter.clearFilter(all);\n\n\t\t\tthis.rowManager.filterRefresh();\n\t\t}\n\t};\n\n\t//clear header filters\n\n\tTabulator.prototype.clearHeaderFilter = function () {\n\n\t\tif (this.modExists(\"filter\", true)) {\n\n\t\t\tthis.modules.filter.clearHeaderFilter();\n\n\t\t\tthis.rowManager.filterRefresh();\n\t\t}\n\t};\n\n\t///////////////////// Filtering ////////////////////\n\n\tTabulator.prototype.selectRow = function (rows) {\n\n\t\tif (this.modExists(\"selectRow\", true)) {\n\n\t\t\tthis.modules.selectRow.selectRows(rows);\n\t\t}\n\t};\n\n\tTabulator.prototype.deselectRow = function (rows) {\n\n\t\tif (this.modExists(\"selectRow\", true)) {\n\n\t\t\tthis.modules.selectRow.deselectRows(rows);\n\t\t}\n\t};\n\n\tTabulator.prototype.toggleSelectRow = function (row) {\n\n\t\tif (this.modExists(\"selectRow\", true)) {\n\n\t\t\tthis.modules.selectRow.toggleRow(row);\n\t\t}\n\t};\n\n\tTabulator.prototype.getSelectedRows = function () {\n\n\t\tif (this.modExists(\"selectRow\", true)) {\n\n\t\t\treturn this.modules.selectRow.getSelectedRows();\n\t\t}\n\t};\n\n\tTabulator.prototype.getSelectedData = function () {\n\n\t\tif (this.modExists(\"selectRow\", true)) {\n\n\t\t\treturn this.modules.selectRow.getSelectedData();\n\t\t}\n\t};\n\n\t//////////// Pagination Functions ////////////\n\n\n\tTabulator.prototype.setMaxPage = function (max) {\n\n\t\tif (this.options.pagination && this.modExists(\"page\")) {\n\n\t\t\tthis.modules.page.setMaxPage(max);\n\t\t} else {\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tTabulator.prototype.setPage = function (page) {\n\n\t\tif (this.options.pagination && this.modExists(\"page\")) {\n\n\t\t\treturn this.modules.page.setPage(page);\n\t\t} else {\n\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\treject();\n\t\t\t});\n\t\t}\n\t};\n\n\tTabulator.prototype.setPageToRow = function (row) {\n\t\tvar _this19 = this;\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tif (_this19.options.pagination && _this19.modExists(\"page\")) {\n\n\t\t\t\trow = _this19.rowManager.findRow(row);\n\n\t\t\t\tif (row) {\n\n\t\t\t\t\t_this19.modules.page.setPageToRow(row).then(function () {\n\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t}).catch(function () {\n\n\t\t\t\t\t\treject();\n\t\t\t\t\t});\n\t\t\t\t} else {\n\n\t\t\t\t\treject();\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\treject();\n\t\t\t}\n\t\t});\n\t};\n\n\tTabulator.prototype.setPageSize = function (size) {\n\n\t\tif (this.options.pagination && this.modExists(\"page\")) {\n\n\t\t\tthis.modules.page.setPageSize(size);\n\n\t\t\tthis.modules.page.setPage(1).then(function () {}).catch(function () {});\n\t\t} else {\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tTabulator.prototype.getPageSize = function () {\n\n\t\tif (this.options.pagination && this.modExists(\"page\", true)) {\n\n\t\t\treturn this.modules.page.getPageSize();\n\t\t}\n\t};\n\n\tTabulator.prototype.previousPage = function () {\n\n\t\tif (this.options.pagination && this.modExists(\"page\")) {\n\n\t\t\tthis.modules.page.previousPage();\n\t\t} else {\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tTabulator.prototype.nextPage = function () {\n\n\t\tif (this.options.pagination && this.modExists(\"page\")) {\n\n\t\t\tthis.modules.page.nextPage();\n\t\t} else {\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tTabulator.prototype.getPage = function () {\n\n\t\tif (this.options.pagination && this.modExists(\"page\")) {\n\n\t\t\treturn this.modules.page.getPage();\n\t\t} else {\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tTabulator.prototype.getPageMax = function () {\n\n\t\tif (this.options.pagination && this.modExists(\"page\")) {\n\n\t\t\treturn this.modules.page.getPageMax();\n\t\t} else {\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\t///////////////// Grouping Functions ///////////////\n\n\n\tTabulator.prototype.setGroupBy = function (groups) {\n\n\t\tif (this.modExists(\"groupRows\", true)) {\n\n\t\t\tthis.options.groupBy = groups;\n\n\t\t\tthis.modules.groupRows.initialize();\n\n\t\t\tthis.rowManager.refreshActiveData(\"display\");\n\t\t} else {\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tTabulator.prototype.setGroupStartOpen = function (values) {\n\n\t\tif (this.modExists(\"groupRows\", true)) {\n\n\t\t\tthis.options.groupStartOpen = values;\n\n\t\t\tthis.modules.groupRows.initialize();\n\n\t\t\tif (this.options.groupBy) {\n\n\t\t\t\tthis.rowManager.refreshActiveData(\"group\");\n\t\t\t} else {\n\n\t\t\t\tconsole.warn(\"Grouping Update - cant refresh view, no groups have been set\");\n\t\t\t}\n\t\t} else {\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tTabulator.prototype.setGroupHeader = function (values) {\n\n\t\tif (this.modExists(\"groupRows\", true)) {\n\n\t\t\tthis.options.groupHeader = values;\n\n\t\t\tthis.modules.groupRows.initialize();\n\n\t\t\tif (this.options.groupBy) {\n\n\t\t\t\tthis.rowManager.refreshActiveData(\"group\");\n\t\t\t} else {\n\n\t\t\t\tconsole.warn(\"Grouping Update - cant refresh view, no groups have been set\");\n\t\t\t}\n\t\t} else {\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tTabulator.prototype.getGroups = function (values) {\n\n\t\tif (this.modExists(\"groupRows\", true)) {\n\n\t\t\treturn this.modules.groupRows.getGroups(true);\n\t\t} else {\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\t// get grouped table data in the same format as getData()\n\n\tTabulator.prototype.getGroupedData = function () {\n\n\t\tif (this.modExists(\"groupRows\", true)) {\n\n\t\t\treturn this.options.groupBy ? this.modules.groupRows.getGroupedData() : this.getData();\n\t\t}\n\t};\n\n\t///////////////// Column Calculation Functions ///////////////\n\n\tTabulator.prototype.getCalcResults = function () {\n\n\t\tif (this.modExists(\"columnCalcs\", true)) {\n\n\t\t\treturn this.modules.columnCalcs.getResults();\n\t\t} else {\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\t/////////////// Navigation Management //////////////\n\n\n\tTabulator.prototype.navigatePrev = function () {\n\n\t\tvar cell = false;\n\n\t\tif (this.modExists(\"edit\", true)) {\n\n\t\t\tcell = this.modules.edit.currentCell;\n\n\t\t\tif (cell) {\n\n\t\t\t\treturn cell.nav().prev();\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t};\n\n\tTabulator.prototype.navigateNext = function () {\n\n\t\tvar cell = false;\n\n\t\tif (this.modExists(\"edit\", true)) {\n\n\t\t\tcell = this.modules.edit.currentCell;\n\n\t\t\tif (cell) {\n\n\t\t\t\treturn cell.nav().next();\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t};\n\n\tTabulator.prototype.navigateLeft = function () {\n\n\t\tvar cell = false;\n\n\t\tif (this.modExists(\"edit\", true)) {\n\n\t\t\tcell = this.modules.edit.currentCell;\n\n\t\t\tif (cell) {\n\n\t\t\t\te.preventDefault();\n\n\t\t\t\treturn cell.nav().left();\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t};\n\n\tTabulator.prototype.navigateRight = function () {\n\n\t\tvar cell = false;\n\n\t\tif (this.modExists(\"edit\", true)) {\n\n\t\t\tcell = this.modules.edit.currentCell;\n\n\t\t\tif (cell) {\n\n\t\t\t\te.preventDefault();\n\n\t\t\t\treturn cell.nav().right();\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t};\n\n\tTabulator.prototype.navigateUp = function () {\n\n\t\tvar cell = false;\n\n\t\tif (this.modExists(\"edit\", true)) {\n\n\t\t\tcell = this.modules.edit.currentCell;\n\n\t\t\tif (cell) {\n\n\t\t\t\te.preventDefault();\n\n\t\t\t\treturn cell.nav().up();\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t};\n\n\tTabulator.prototype.navigateDown = function () {\n\n\t\tvar cell = false;\n\n\t\tif (this.modExists(\"edit\", true)) {\n\n\t\t\tcell = this.modules.edit.currentCell;\n\n\t\t\tif (cell) {\n\n\t\t\t\te.preventDefault();\n\n\t\t\t\treturn cell.nav().down();\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t};\n\n\t/////////////// History Management //////////////\n\n\tTabulator.prototype.undo = function () {\n\n\t\tif (this.options.history && this.modExists(\"history\", true)) {\n\n\t\t\treturn this.modules.history.undo();\n\t\t} else {\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tTabulator.prototype.redo = function () {\n\n\t\tif (this.options.history && this.modExists(\"history\", true)) {\n\n\t\t\treturn this.modules.history.redo();\n\t\t} else {\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tTabulator.prototype.getHistoryUndoSize = function () {\n\n\t\tif (this.options.history && this.modExists(\"history\", true)) {\n\n\t\t\treturn this.modules.history.getHistoryUndoSize();\n\t\t} else {\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tTabulator.prototype.getHistoryRedoSize = function () {\n\n\t\tif (this.options.history && this.modExists(\"history\", true)) {\n\n\t\t\treturn this.modules.history.getHistoryRedoSize();\n\t\t} else {\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\t/////////////// Download Management //////////////\n\n\n\tTabulator.prototype.download = function (type, filename, options) {\n\n\t\tif (this.modExists(\"download\", true)) {\n\n\t\t\tthis.modules.download.download(type, filename, options);\n\t\t}\n\t};\n\n\tTabulator.prototype.downloadToTab = function (type, filename, options) {\n\n\t\tif (this.modExists(\"download\", true)) {\n\n\t\t\tthis.modules.download.download(type, filename, options, true);\n\t\t}\n\t};\n\n\t/////////// Inter Table Communications ///////////\n\n\n\tTabulator.prototype.tableComms = function (table, module, action, data) {\n\n\t\tthis.modules.comms.receive(table, module, action, data);\n\t};\n\n\t////////////// Extension Management //////////////\n\n\n\t//object to hold module\n\n\tTabulator.prototype.moduleBindings = {};\n\n\t//extend module\n\n\tTabulator.prototype.extendModule = function (name, property, values) {\n\n\t\tif (Tabulator.prototype.moduleBindings[name]) {\n\n\t\t\tvar source = Tabulator.prototype.moduleBindings[name].prototype[property];\n\n\t\t\tif (source) {\n\n\t\t\t\tif ((typeof values === 'undefined' ? 'undefined' : _typeof(values)) == \"object\") {\n\n\t\t\t\t\tfor (var key in values) {\n\n\t\t\t\t\t\tsource[key] = values[key];\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn(\"Module Error - Invalid value type, it must be an object\");\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\tconsole.warn(\"Module Error - property does not exist:\", property);\n\t\t\t}\n\t\t} else {\n\n\t\t\tconsole.warn(\"Module Error - module does not exist:\", name);\n\t\t}\n\t};\n\n\t//add module to tabulator\n\n\tTabulator.prototype.registerModule = function (name, module) {\n\n\t\tvar self = this;\n\n\t\tTabulator.prototype.moduleBindings[name] = module;\n\t};\n\n\t//ensure that module are bound to instantiated function\n\n\tTabulator.prototype.bindModules = function () {\n\n\t\tthis.modules = {};\n\n\t\tfor (var name in Tabulator.prototype.moduleBindings) {\n\n\t\t\tthis.modules[name] = new Tabulator.prototype.moduleBindings[name](this);\n\t\t}\n\t};\n\n\t//Check for module\n\n\tTabulator.prototype.modExists = function (plugin, required) {\n\n\t\tif (this.modules[plugin]) {\n\n\t\t\treturn true;\n\t\t} else {\n\n\t\t\tif (required) {\n\n\t\t\t\tconsole.error(\"Tabulator Module Not Installed: \" + plugin);\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tTabulator.prototype.helpers = {\n\n\t\telVisible: function elVisible(el) {\n\n\t\t\treturn !(el.offsetWidth <= 0 && el.offsetHeight <= 0);\n\t\t},\n\n\t\telOffset: function elOffset(el) {\n\n\t\t\tvar box = el.getBoundingClientRect();\n\n\t\t\treturn {\n\n\t\t\t\ttop: box.top + window.pageYOffset - document.documentElement.clientTop,\n\n\t\t\t\tleft: box.left + window.pageXOffset - document.documentElement.clientLeft\n\n\t\t\t};\n\t\t},\n\n\t\tdeepClone: function deepClone(obj) {\n\n\t\t\tvar clone = Array.isArray(obj) ? [] : {};\n\n\t\t\tfor (var i in obj) {\n\n\t\t\t\tif (obj[i] != null && _typeof(obj[i]) === \"object\") {\n\n\t\t\t\t\tif (obj[i] instanceof Date) {\n\n\t\t\t\t\t\tclone[i] = new Date(obj[i]);\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tclone[i] = this.deepClone(obj[i]);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\tclone[i] = obj[i];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn clone;\n\t\t}\n\n\t};\n\n\tTabulator.prototype.comms = {\n\n\t\ttables: [],\n\n\t\tregister: function register(table) {\n\n\t\t\tTabulator.prototype.comms.tables.push(table);\n\t\t},\n\n\t\tderegister: function deregister(table) {\n\n\t\t\tvar index = Tabulator.prototype.comms.tables.indexOf(table);\n\n\t\t\tif (index > -1) {\n\n\t\t\t\tTabulator.prototype.comms.tables.splice(index, 1);\n\t\t\t}\n\t\t},\n\n\t\tlookupTable: function lookupTable(query) {\n\n\t\t\tvar results = [],\n\t\t\t matches,\n\t\t\t match;\n\n\t\t\tif (typeof query === \"string\") {\n\n\t\t\t\tmatches = document.querySelectorAll(query);\n\n\t\t\t\tif (matches.length) {\n\n\t\t\t\t\tfor (var i = 0; i < matches.length; i++) {\n\n\t\t\t\t\t\tmatch = Tabulator.prototype.comms.matchElement(matches[i]);\n\n\t\t\t\t\t\tif (match) {\n\n\t\t\t\t\t\t\tresults.push(match);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (typeof HTMLElement !== \"undefined\" && query instanceof HTMLElement || query instanceof Tabulator) {\n\n\t\t\t\tmatch = Tabulator.prototype.comms.matchElement(query);\n\n\t\t\t\tif (match) {\n\n\t\t\t\t\tresults.push(match);\n\t\t\t\t}\n\t\t\t} else if (Array.isArray(query)) {\n\n\t\t\t\tquery.forEach(function (item) {\n\n\t\t\t\t\tresults = results.concat(Tabulator.prototype.comms.lookupTable(item));\n\t\t\t\t});\n\t\t\t} else {\n\n\t\t\t\tconsole.warn(\"Table Connection Error - Invalid Selector\", query);\n\t\t\t}\n\n\t\t\treturn results;\n\t\t},\n\n\t\tmatchElement: function matchElement(element) {\n\n\t\t\treturn Tabulator.prototype.comms.tables.find(function (table) {\n\n\t\t\t\treturn element instanceof Tabulator ? table === element : table.element === element;\n\t\t\t});\n\t\t}\n\n\t};\n\n\tvar Layout = function Layout(table) {\n\n\t\tthis.table = table;\n\n\t\tthis.mode = null;\n\t};\n\n\t//initialize layout system\n\n\n\tLayout.prototype.initialize = function (layout) {\n\n\t\tif (this.modes[layout]) {\n\n\t\t\tthis.mode = layout;\n\t\t} else {\n\n\t\t\tconsole.warn(\"Layout Error - invalid mode set, defaulting to 'fitData' : \" + layout);\n\n\t\t\tthis.mode = 'fitData';\n\t\t}\n\n\t\tthis.table.element.setAttribute(\"tabulator-layout\", this.mode);\n\t};\n\n\tLayout.prototype.getMode = function () {\n\n\t\treturn this.mode;\n\t};\n\n\t//trigger table layout\n\n\n\tLayout.prototype.layout = function () {\n\n\t\tthis.modes[this.mode].call(this, this.table.columnManager.columnsByIndex);\n\t};\n\n\t//layout render functions\n\n\n\tLayout.prototype.modes = {\n\n\t\t//resize columns to fit data the contain\n\n\n\t\t\"fitData\": function fitData(columns) {\n\n\t\t\tcolumns.forEach(function (column) {\n\n\t\t\t\tcolumn.reinitializeWidth();\n\t\t\t});\n\n\t\t\tif (this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)) {\n\n\t\t\t\tthis.table.modules.responsiveLayout.update();\n\t\t\t}\n\t\t},\n\n\t\t//resize columns to fit data the contain\n\n\n\t\t\"fitDataFill\": function fitDataFill(columns) {\n\n\t\t\tcolumns.forEach(function (column) {\n\n\t\t\t\tcolumn.reinitializeWidth();\n\t\t\t});\n\n\t\t\tif (this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)) {\n\n\t\t\t\tthis.table.modules.responsiveLayout.update();\n\t\t\t}\n\t\t},\n\n\t\t//resize columns to fit\n\n\n\t\t\"fitColumns\": function fitColumns(columns) {\n\n\t\t\tvar self = this;\n\n\t\t\tvar totalWidth = self.table.element.clientWidth; //table element width\n\n\n\t\t\tvar fixedWidth = 0; //total width of columns with a defined width\n\n\n\t\t\tvar flexWidth = 0; //total width available to flexible columns\n\n\n\t\t\tvar flexGrowUnits = 0; //total number of widthGrow blocks accross all columns\n\n\n\t\t\tvar flexColWidth = 0; //desired width of flexible columns\n\n\n\t\t\tvar flexColumns = []; //array of flexible width columns\n\n\n\t\t\tvar fixedShrinkColumns = []; //array of fixed width columns that can shrink\n\n\n\t\t\tvar flexShrinkUnits = 0; //total number of widthShrink blocks accross all columns\n\n\n\t\t\tvar overflowWidth = 0; //horizontal overflow width\n\n\n\t\t\tvar gapFill = 0; //number of pixels to be added to final column to close and half pixel gaps\n\n\n\t\t\tfunction calcWidth(width) {\n\n\t\t\t\tvar colWidth;\n\n\t\t\t\tif (typeof width == \"string\") {\n\n\t\t\t\t\tif (width.indexOf(\"%\") > -1) {\n\n\t\t\t\t\t\tcolWidth = totalWidth / 100 * parseInt(width);\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tcolWidth = parseInt(width);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\tcolWidth = width;\n\t\t\t\t}\n\n\t\t\t\treturn colWidth;\n\t\t\t}\n\n\t\t\t//ensure columns resize to take up the correct amount of space\n\n\n\t\t\tfunction scaleColumns(columns, freeSpace, colWidth, shrinkCols) {\n\n\t\t\t\tvar oversizeCols = [],\n\t\t\t\t oversizeSpace = 0,\n\t\t\t\t remainingSpace = 0,\n\t\t\t\t nextColWidth = 0,\n\t\t\t\t gap = 0,\n\t\t\t\t changeUnits = 0,\n\t\t\t\t undersizeCols = [];\n\n\t\t\t\tfunction calcGrow(col) {\n\n\t\t\t\t\treturn colWidth * (col.column.definition.widthGrow || 1);\n\t\t\t\t}\n\n\t\t\t\tfunction calcShrink(col) {\n\n\t\t\t\t\treturn calcWidth(col.width) - colWidth * (col.column.definition.widthShrink || 0);\n\t\t\t\t}\n\n\t\t\t\tcolumns.forEach(function (col, i) {\n\n\t\t\t\t\tvar width = shrinkCols ? calcShrink(col) : calcGrow(col);\n\n\t\t\t\t\tif (col.column.minWidth >= width) {\n\n\t\t\t\t\t\toversizeCols.push(col);\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tundersizeCols.push(col);\n\n\t\t\t\t\t\tchangeUnits += shrinkCols ? col.column.definition.widthShrink || 1 : col.column.definition.widthGrow || 1;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif (oversizeCols.length) {\n\n\t\t\t\t\toversizeCols.forEach(function (col) {\n\n\t\t\t\t\t\toversizeSpace += shrinkCols ? col.width - col.column.minWidth : col.column.minWidth;\n\n\t\t\t\t\t\tcol.width = col.column.minWidth;\n\t\t\t\t\t});\n\n\t\t\t\t\tremainingSpace = freeSpace - oversizeSpace;\n\n\t\t\t\t\tnextColWidth = changeUnits ? Math.floor(remainingSpace / changeUnits) : remainingSpace;\n\n\t\t\t\t\tgap = remainingSpace - nextColWidth * changeUnits;\n\n\t\t\t\t\tgap += scaleColumns(undersizeCols, remainingSpace, nextColWidth, shrinkCols);\n\t\t\t\t} else {\n\n\t\t\t\t\tgap = changeUnits ? freeSpace - Math.floor(freeSpace / changeUnits) * changeUnits : freeSpace;\n\n\t\t\t\t\tundersizeCols.forEach(function (column) {\n\n\t\t\t\t\t\tcolumn.width = shrinkCols ? calcShrink(column) : calcGrow(column);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn gap;\n\t\t\t}\n\n\t\t\tif (this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)) {\n\n\t\t\t\tthis.table.modules.responsiveLayout.update();\n\t\t\t}\n\n\t\t\t//adjust for vertical scrollbar if present\n\n\n\t\t\tif (this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight) {\n\n\t\t\t\ttotalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;\n\t\t\t}\n\n\t\t\tcolumns.forEach(function (column) {\n\n\t\t\t\tvar width, minWidth, colWidth;\n\n\t\t\t\tif (column.visible) {\n\n\t\t\t\t\twidth = column.definition.width;\n\n\t\t\t\t\tminWidth = parseInt(column.minWidth);\n\n\t\t\t\t\tif (width) {\n\n\t\t\t\t\t\tcolWidth = calcWidth(width);\n\n\t\t\t\t\t\tfixedWidth += colWidth > minWidth ? colWidth : minWidth;\n\n\t\t\t\t\t\tif (column.definition.widthShrink) {\n\n\t\t\t\t\t\t\tfixedShrinkColumns.push({\n\n\t\t\t\t\t\t\t\tcolumn: column,\n\n\t\t\t\t\t\t\t\twidth: colWidth > minWidth ? colWidth : minWidth\n\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tflexShrinkUnits += column.definition.widthShrink;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tflexColumns.push({\n\n\t\t\t\t\t\t\tcolumn: column,\n\n\t\t\t\t\t\t\twidth: 0\n\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tflexGrowUnits += column.definition.widthGrow || 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t//calculate available space\n\n\n\t\t\tflexWidth = totalWidth - fixedWidth;\n\n\t\t\t//calculate correct column size\n\n\n\t\t\tflexColWidth = Math.floor(flexWidth / flexGrowUnits);\n\n\t\t\t//generate column widths\n\n\n\t\t\tvar gapFill = scaleColumns(flexColumns, flexWidth, flexColWidth, false);\n\n\t\t\t//increase width of last column to account for rounding errors\n\n\n\t\t\tif (flexColumns.length && gapFill > 0) {\n\n\t\t\t\tflexColumns[flexColumns.length - 1].width += +gapFill;\n\t\t\t}\n\n\t\t\t//caculate space for columns to be shrunk into\n\n\n\t\t\tflexColumns.forEach(function (col) {\n\n\t\t\t\tflexWidth -= col.width;\n\t\t\t});\n\n\t\t\toverflowWidth = Math.abs(gapFill) + flexWidth;\n\n\t\t\t//shrink oversize columns if there is no available space\n\n\n\t\t\tif (overflowWidth > 0 && flexShrinkUnits) {\n\n\t\t\t\tgapFill = scaleColumns(fixedShrinkColumns, overflowWidth, Math.floor(overflowWidth / flexShrinkUnits), true);\n\t\t\t}\n\n\t\t\t//decrease width of last column to account for rounding errors\n\n\n\t\t\tif (fixedShrinkColumns.length) {\n\n\t\t\t\tfixedShrinkColumns[fixedShrinkColumns.length - 1].width -= gapFill;\n\t\t\t}\n\n\t\t\tflexColumns.forEach(function (col) {\n\n\t\t\t\tcol.column.setWidth(col.width);\n\t\t\t});\n\n\t\t\tfixedShrinkColumns.forEach(function (col) {\n\n\t\t\t\tcol.column.setWidth(col.width);\n\t\t\t});\n\t\t}\n\n\t};\n\n\tTabulator.prototype.registerModule(\"layout\", Layout);\n\n\tvar Localize = function Localize(table) {\n\n\t\tthis.table = table; //hold Tabulator object\n\n\t\tthis.locale = \"default\"; //current locale\n\n\t\tthis.lang = false; //current language\n\n\t\tthis.bindings = {}; //update events to call when locale is changed\n\t};\n\n\t//set header placehoder\n\n\tLocalize.prototype.setHeaderFilterPlaceholder = function (placeholder) {\n\n\t\tthis.langs.default.headerFilters.default = placeholder;\n\t};\n\n\t//set header filter placeholder by column\n\n\tLocalize.prototype.setHeaderFilterColumnPlaceholder = function (column, placeholder) {\n\n\t\tthis.langs.default.headerFilters.columns[column] = placeholder;\n\n\t\tif (this.lang && !this.lang.headerFilters.columns[column]) {\n\n\t\t\tthis.lang.headerFilters.columns[column] = placeholder;\n\t\t}\n\t};\n\n\t//setup a lang description object\n\n\tLocalize.prototype.installLang = function (locale, lang) {\n\n\t\tif (this.langs[locale]) {\n\n\t\t\tthis._setLangProp(this.langs[locale], lang);\n\t\t} else {\n\n\t\t\tthis.langs[locale] = lang;\n\t\t}\n\t};\n\n\tLocalize.prototype._setLangProp = function (lang, values) {\n\n\t\tfor (var key in values) {\n\n\t\t\tif (lang[key] && _typeof(lang[key]) == \"object\") {\n\n\t\t\t\tthis._setLangProp(lang[key], values[key]);\n\t\t\t} else {\n\n\t\t\t\tlang[key] = values[key];\n\t\t\t}\n\t\t}\n\t};\n\n\t//set current locale\n\n\tLocalize.prototype.setLocale = function (desiredLocale) {\n\n\t\tvar self = this;\n\n\t\tdesiredLocale = desiredLocale || \"default\";\n\n\t\t//fill in any matching languge values\n\n\t\tfunction traverseLang(trans, path) {\n\n\t\t\tfor (var prop in trans) {\n\n\t\t\t\tif (_typeof(trans[prop]) == \"object\") {\n\n\t\t\t\t\tif (!path[prop]) {\n\n\t\t\t\t\t\tpath[prop] = {};\n\t\t\t\t\t}\n\n\t\t\t\t\ttraverseLang(trans[prop], path[prop]);\n\t\t\t\t} else {\n\n\t\t\t\t\tpath[prop] = trans[prop];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t//determing correct locale to load\n\n\t\tif (desiredLocale === true && navigator.language) {\n\n\t\t\t//get local from system\n\n\t\t\tdesiredLocale = navigator.language.toLowerCase();\n\t\t}\n\n\t\tif (desiredLocale) {\n\n\t\t\t//if locale is not set, check for matching top level locale else use default\n\n\t\t\tif (!self.langs[desiredLocale]) {\n\n\t\t\t\tvar prefix = desiredLocale.split(\"-\")[0];\n\n\t\t\t\tif (self.langs[prefix]) {\n\n\t\t\t\t\tconsole.warn(\"Localization Error - Exact matching locale not found, using closest match: \", desiredLocale, prefix);\n\n\t\t\t\t\tdesiredLocale = prefix;\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn(\"Localization Error - Matching locale not found, using default: \", desiredLocale);\n\n\t\t\t\t\tdesiredLocale = \"default\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tself.locale = desiredLocale;\n\n\t\t//load default lang template\n\n\t\tself.lang = Tabulator.prototype.helpers.deepClone(self.langs.default || {});\n\n\t\tif (desiredLocale != \"default\") {\n\n\t\t\ttraverseLang(self.langs[desiredLocale], self.lang);\n\t\t}\n\n\t\tself.table.options.localized.call(self.table, self.locale, self.lang);\n\n\t\tself._executeBindings();\n\t};\n\n\t//get current locale\n\n\tLocalize.prototype.getLocale = function (locale) {\n\n\t\treturn self.locale;\n\t};\n\n\t//get lang object for given local or current if none provided\n\n\tLocalize.prototype.getLang = function (locale) {\n\n\t\treturn locale ? this.langs[locale] : this.lang;\n\t};\n\n\t//get text for current locale\n\n\tLocalize.prototype.getText = function (path, value) {\n\n\t\tvar path = value ? path + \"|\" + value : path,\n\t\t pathArray = path.split(\"|\"),\n\t\t text = this._getLangElement(pathArray, this.locale);\n\n\t\t// if(text === false){\n\n\t\t// \tconsole.warn(\"Localization Error - Matching localized text not found for given path: \", path);\n\n\t\t// }\n\n\n\t\treturn text || \"\";\n\t};\n\n\t//traverse langs object and find localized copy\n\n\tLocalize.prototype._getLangElement = function (path, locale) {\n\n\t\tvar self = this;\n\n\t\tvar root = self.lang;\n\n\t\tpath.forEach(function (level) {\n\n\t\t\tvar rootPath;\n\n\t\t\tif (root) {\n\n\t\t\t\trootPath = root[level];\n\n\t\t\t\tif (typeof rootPath != \"undefined\") {\n\n\t\t\t\t\troot = rootPath;\n\t\t\t\t} else {\n\n\t\t\t\t\troot = false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn root;\n\t};\n\n\t//set update binding\n\n\tLocalize.prototype.bind = function (path, callback) {\n\n\t\tif (!this.bindings[path]) {\n\n\t\t\tthis.bindings[path] = [];\n\t\t}\n\n\t\tthis.bindings[path].push(callback);\n\n\t\tcallback(this.getText(path), this.lang);\n\t};\n\n\t//itterate through bindings and trigger updates\n\n\tLocalize.prototype._executeBindings = function () {\n\n\t\tvar self = this;\n\n\t\tvar _loop = function _loop(path) {\n\n\t\t\tself.bindings[path].forEach(function (binding) {\n\n\t\t\t\tbinding(self.getText(path), self.lang);\n\t\t\t});\n\t\t};\n\n\t\tfor (var path in self.bindings) {\n\t\t\t_loop(path);\n\t\t}\n\t};\n\n\t//Localized text listings\n\n\tLocalize.prototype.langs = {\n\n\t\t\"default\": { //hold default locale text\n\n\t\t\t\"groups\": {\n\n\t\t\t\t\"item\": \"item\",\n\n\t\t\t\t\"items\": \"items\"\n\n\t\t\t},\n\n\t\t\t\"columns\": {},\n\n\t\t\t\"ajax\": {\n\n\t\t\t\t\"loading\": \"Loading\",\n\n\t\t\t\t\"error\": \"Error\"\n\n\t\t\t},\n\n\t\t\t\"pagination\": {\n\n\t\t\t\t\"page_size\": \"Page Size\",\n\n\t\t\t\t\"first\": \"First\",\n\n\t\t\t\t\"first_title\": \"First Page\",\n\n\t\t\t\t\"last\": \"Last\",\n\n\t\t\t\t\"last_title\": \"Last Page\",\n\n\t\t\t\t\"prev\": \"Prev\",\n\n\t\t\t\t\"prev_title\": \"Prev Page\",\n\n\t\t\t\t\"next\": \"Next\",\n\n\t\t\t\t\"next_title\": \"Next Page\"\n\n\t\t\t},\n\n\t\t\t\"headerFilters\": {\n\n\t\t\t\t\"default\": \"filter column...\",\n\n\t\t\t\t\"columns\": {}\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tTabulator.prototype.registerModule(\"localize\", Localize);\n\n\tvar Comms = function Comms(table) {\n\n\t\tthis.table = table;\n\t};\n\n\tComms.prototype.getConnections = function (selectors) {\n\n\t\tvar self = this,\n\t\t connections = [],\n\t\t connection;\n\n\t\tconnection = Tabulator.prototype.comms.lookupTable(selectors);\n\n\t\tconnection.forEach(function (con) {\n\n\t\t\tif (self.table !== con) {\n\n\t\t\t\tconnections.push(con);\n\t\t\t}\n\t\t});\n\n\t\treturn connections;\n\t};\n\n\tComms.prototype.send = function (selectors, module, action, data) {\n\n\t\tvar self = this,\n\t\t connections = this.getConnections(selectors);\n\n\t\tconnections.forEach(function (connection) {\n\n\t\t\tconnection.tableComms(self.table.element, module, action, data);\n\t\t});\n\n\t\tif (!connections.length && selectors) {\n\n\t\t\tconsole.warn(\"Table Connection Error - No tables matching selector found\", selectors);\n\t\t}\n\t};\n\n\tComms.prototype.receive = function (table, module, action, data) {\n\n\t\tif (this.table.modExists(module)) {\n\n\t\t\treturn this.table.modules[module].commsReceived(table, action, data);\n\t\t} else {\n\n\t\t\tconsole.warn(\"Inter-table Comms Error - no such module:\", module);\n\t\t}\n\t};\n\n\tTabulator.prototype.registerModule(\"comms\", Comms);\n\n\tvar Accessor = function Accessor(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.allowedTypes = [\"\", \"data\", \"download\", \"clipboard\"]; //list of accessor types\n\t};\n\n\t//initialize column accessor\n\tAccessor.prototype.initializeColumn = function (column) {\n\t\tvar self = this,\n\t\t match = false,\n\t\t config = {};\n\n\t\tthis.allowedTypes.forEach(function (type) {\n\t\t\tvar key = \"accessor\" + (type.charAt(0).toUpperCase() + type.slice(1)),\n\t\t\t accessor;\n\n\t\t\tif (column.definition[key]) {\n\t\t\t\taccessor = self.lookupAccessor(column.definition[key]);\n\n\t\t\t\tif (accessor) {\n\t\t\t\t\tmatch = true;\n\n\t\t\t\t\tconfig[key] = {\n\t\t\t\t\t\taccessor: accessor,\n\t\t\t\t\t\tparams: column.definition[key + \"Params\"] || {}\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif (match) {\n\t\t\tcolumn.modules.accessor = config;\n\t\t}\n\t}, Accessor.prototype.lookupAccessor = function (value) {\n\t\tvar accessor = false;\n\n\t\t//set column accessor\n\t\tswitch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {\n\t\t\tcase \"string\":\n\t\t\t\tif (this.accessors[value]) {\n\t\t\t\t\taccessor = this.accessors[value];\n\t\t\t\t} else {\n\t\t\t\t\tconsole.warn(\"Accessor Error - No such accessor found, ignoring: \", value);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\taccessor = value;\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn accessor;\n\t};\n\n\t//apply accessor to row\n\tAccessor.prototype.transformRow = function (dataIn, type) {\n\t\tvar self = this,\n\t\t key = \"accessor\" + (type.charAt(0).toUpperCase() + type.slice(1));\n\n\t\t//clone data object with deep copy to isolate internal data from returned result\n\t\tvar data = Tabulator.prototype.helpers.deepClone(dataIn || {});\n\n\t\tself.table.columnManager.traverse(function (column) {\n\t\t\tvar value, accessor, params, component;\n\n\t\t\tif (column.modules.accessor) {\n\n\t\t\t\taccessor = column.modules.accessor[key] || column.modules.accessor.accessor || false;\n\n\t\t\t\tif (accessor) {\n\t\t\t\t\tvalue = column.getFieldValue(data);\n\n\t\t\t\t\tif (value != \"undefined\") {\n\t\t\t\t\t\tcomponent = column.getComponent();\n\t\t\t\t\t\tparams = typeof accessor.params === \"function\" ? accessor.params(value, data, type, component) : accessor.params;\n\t\t\t\t\t\tcolumn.setFieldValue(data, accessor.accessor(value, data, type, params, component));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn data;\n\t},\n\n\t//default accessors\n\tAccessor.prototype.accessors = {};\n\n\tTabulator.prototype.registerModule(\"accessor\", Accessor);\n\tvar Ajax = function Ajax(table) {\n\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.config = false; //hold config object for ajax request\n\t\tthis.url = \"\"; //request URL\n\t\tthis.urlGenerator = false;\n\t\tthis.params = false; //request parameters\n\n\t\tthis.loaderElement = this.createLoaderElement(); //loader message div\n\t\tthis.msgElement = this.createMsgElement(); //message element\n\t\tthis.loadingElement = false;\n\t\tthis.errorElement = false;\n\t\tthis.loaderPromise = false;\n\n\t\tthis.progressiveLoad = false;\n\t\tthis.loading = false;\n\n\t\tthis.requestOrder = 0; //prevent requests comming out of sequence if overridden by another load request\n\t};\n\n\t//initialize setup options\n\tAjax.prototype.initialize = function () {\n\t\tvar template;\n\n\t\tthis.loaderElement.appendChild(this.msgElement);\n\n\t\tif (this.table.options.ajaxLoaderLoading) {\n\t\t\tif (typeof this.table.options.ajaxLoaderLoading == \"string\") {\n\t\t\t\ttemplate = document.createElement('template');\n\t\t\t\ttemplate.innerHTML = this.table.options.ajaxLoaderLoading.trim();\n\t\t\t\tthis.loadingElement = template.content.firstChild;\n\t\t\t} else {\n\t\t\t\tthis.loadingElement = this.table.options.ajaxLoaderLoading;\n\t\t\t}\n\t\t}\n\n\t\tthis.loaderPromise = this.table.options.ajaxRequestFunc || this.defaultLoaderPromise;\n\n\t\tthis.urlGenerator = this.table.options.ajaxURLGenerator || this.defaultURLGenerator;\n\n\t\tif (this.table.options.ajaxLoaderError) {\n\t\t\tif (typeof this.table.options.ajaxLoaderError == \"string\") {\n\t\t\t\ttemplate = document.createElement('template');\n\t\t\t\ttemplate.innerHTML = this.table.options.ajaxLoaderError.trim();\n\t\t\t\tthis.errorElement = template.content.firstChild;\n\t\t\t} else {\n\t\t\t\tthis.errorElement = this.table.options.ajaxLoaderError;\n\t\t\t}\n\t\t}\n\n\t\tif (this.table.options.ajaxParams) {\n\t\t\tthis.setParams(this.table.options.ajaxParams);\n\t\t}\n\n\t\tif (this.table.options.ajaxConfig) {\n\t\t\tthis.setConfig(this.table.options.ajaxConfig);\n\t\t}\n\n\t\tif (this.table.options.ajaxURL) {\n\t\t\tthis.setUrl(this.table.options.ajaxURL);\n\t\t}\n\n\t\tif (this.table.options.ajaxProgressiveLoad) {\n\t\t\tif (this.table.options.pagination) {\n\t\t\t\tthis.progressiveLoad = false;\n\t\t\t\tconsole.error(\"Progressive Load Error - Pagination and progressive load cannot be used at the same time\");\n\t\t\t} else {\n\t\t\t\tif (this.table.modExists(\"page\")) {\n\t\t\t\t\tthis.progressiveLoad = this.table.options.ajaxProgressiveLoad;\n\t\t\t\t\tthis.table.modules.page.initializeProgressive(this.progressiveLoad);\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error(\"Pagination plugin is required for progressive ajax loading\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tAjax.prototype.createLoaderElement = function () {\n\t\tvar el = document.createElement(\"div\");\n\t\tel.classList.add(\"tabulator-loader\");\n\t\treturn el;\n\t};\n\n\tAjax.prototype.createMsgElement = function () {\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-loader-msg\");\n\t\tel.setAttribute(\"role\", \"alert\");\n\n\t\treturn el;\n\t};\n\n\t//set ajax params\n\tAjax.prototype.setParams = function (params, update) {\n\t\tif (update) {\n\t\t\tthis.params = this.params || {};\n\n\t\t\tfor (var key in params) {\n\t\t\t\tthis.params[key] = params[key];\n\t\t\t}\n\t\t} else {\n\t\t\tthis.params = params;\n\t\t}\n\t};\n\n\tAjax.prototype.getParams = function () {\n\t\treturn this.params || {};\n\t};\n\n\t//load config object\n\tAjax.prototype.setConfig = function (config) {\n\t\tthis._loadDefaultConfig();\n\n\t\tif (typeof config == \"string\") {\n\t\t\tthis.config.method = config;\n\t\t} else {\n\t\t\tfor (var key in config) {\n\t\t\t\tthis.config[key] = config[key];\n\t\t\t}\n\t\t}\n\t};\n\n\t//create config object from default\n\tAjax.prototype._loadDefaultConfig = function (force) {\n\t\tvar self = this;\n\t\tif (!self.config || force) {\n\n\t\t\tself.config = {};\n\n\t\t\t//load base config from defaults\n\t\t\tfor (var key in self.defaultConfig) {\n\t\t\t\tself.config[key] = self.defaultConfig[key];\n\t\t\t}\n\t\t}\n\t};\n\n\t//set request url\n\tAjax.prototype.setUrl = function (url) {\n\t\tthis.url = url;\n\t};\n\n\t//get request url\n\tAjax.prototype.getUrl = function () {\n\t\treturn this.url;\n\t};\n\n\t//lstandard loading function\n\tAjax.prototype.loadData = function (inPosition) {\n\t\tvar self = this;\n\n\t\tif (this.progressiveLoad) {\n\t\t\treturn this._loadDataProgressive();\n\t\t} else {\n\t\t\treturn this._loadDataStandard(inPosition);\n\t\t}\n\t};\n\n\tAjax.prototype.nextPage = function (diff) {\n\t\tvar margin;\n\n\t\tif (!this.loading) {\n\n\t\t\tmargin = this.table.options.ajaxProgressiveLoadScrollMargin || this.table.rowManager.getElement().clientHeight * 2;\n\n\t\t\tif (diff < margin) {\n\t\t\t\tthis.table.modules.page.nextPage().then(function () {}).catch(function () {});\n\t\t\t}\n\t\t}\n\t};\n\n\tAjax.prototype.blockActiveRequest = function () {\n\t\tthis.requestOrder++;\n\t};\n\n\tAjax.prototype._loadDataProgressive = function () {\n\t\tthis.table.rowManager.setData([]);\n\t\treturn this.table.modules.page.setPage(1);\n\t};\n\n\tAjax.prototype._loadDataStandard = function (inPosition) {\n\t\tvar _this20 = this;\n\n\t\treturn new Promise(function (resolve, reject) {\n\t\t\t_this20.sendRequest(inPosition).then(function (data) {\n\t\t\t\t_this20.table.rowManager.setData(data, inPosition).then(function () {\n\t\t\t\t\tresolve();\n\t\t\t\t}).catch(function (e) {\n\t\t\t\t\treject(e);\n\t\t\t\t});\n\t\t\t}).catch(function (e) {\n\t\t\t\treject(e);\n\t\t\t});\n\t\t});\n\t};\n\n\tAjax.prototype.generateParamsList = function (data, prefix) {\n\t\tvar self = this,\n\t\t output = [];\n\n\t\tprefix = prefix || \"\";\n\n\t\tif (Array.isArray(data)) {\n\t\t\tdata.forEach(function (item, i) {\n\t\t\t\toutput = output.concat(self.generateParamsList(item, prefix ? prefix + \"[\" + i + \"]\" : i));\n\t\t\t});\n\t\t} else if ((typeof data === 'undefined' ? 'undefined' : _typeof(data)) === \"object\") {\n\t\t\tfor (var key in data) {\n\t\t\t\toutput = output.concat(self.generateParamsList(data[key], prefix ? prefix + \"[\" + key + \"]\" : key));\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push({ key: prefix, value: data });\n\t\t}\n\n\t\treturn output;\n\t};\n\n\tAjax.prototype.serializeParams = function (params) {\n\t\tvar output = this.generateParamsList(params),\n\t\t encoded = [];\n\n\t\toutput.forEach(function (item) {\n\t\t\tencoded.push(encodeURIComponent(item.key) + \"=\" + encodeURIComponent(item.value));\n\t\t});\n\n\t\treturn encoded.join(\"&\");\n\t};\n\n\t//send ajax request\n\tAjax.prototype.sendRequest = function (silent) {\n\t\tvar _this21 = this;\n\n\t\tvar self = this,\n\t\t url = self.url,\n\t\t requestNo,\n\t\t esc,\n\t\t query;\n\n\t\tself.requestOrder++;\n\t\trequestNo = self.requestOrder;\n\n\t\tself._loadDefaultConfig();\n\n\t\treturn new Promise(function (resolve, reject) {\n\t\t\tif (self.table.options.ajaxRequesting.call(_this21.table, self.url, self.params) !== false) {\n\n\t\t\t\tself.loading = true;\n\n\t\t\t\tif (!silent) {\n\t\t\t\t\tself.showLoader();\n\t\t\t\t}\n\n\t\t\t\t_this21.loaderPromise(url, self.config, self.params).then(function (data) {\n\t\t\t\t\tif (requestNo === self.requestOrder) {\n\t\t\t\t\t\tif (self.table.options.ajaxResponse) {\n\t\t\t\t\t\t\tdata = self.table.options.ajaxResponse.call(self.table, self.url, self.params, data);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tresolve(data);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.warn(\"Ajax Response Blocked - An active ajax request was blocked by an attempt to change table data while the request was being made\");\n\t\t\t\t\t}\n\n\t\t\t\t\tself.hideLoader();\n\n\t\t\t\t\tself.loading = false;\n\t\t\t\t}).catch(function (error) {\n\t\t\t\t\tconsole.error(\"Ajax Load Error: \", error);\n\t\t\t\t\tself.table.options.ajaxError.call(self.table, error);\n\n\t\t\t\t\tself.showError();\n\n\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\tself.hideLoader();\n\t\t\t\t\t}, 3000);\n\n\t\t\t\t\tself.loading = false;\n\n\t\t\t\t\treject();\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treject();\n\t\t\t}\n\t\t});\n\t};\n\n\tAjax.prototype.showLoader = function () {\n\t\tvar shouldLoad = typeof this.table.options.ajaxLoader === \"function\" ? this.table.options.ajaxLoader() : this.table.options.ajaxLoader;\n\n\t\tif (shouldLoad) {\n\n\t\t\tthis.hideLoader();\n\n\t\t\twhile (this.msgElement.firstChild) {\n\t\t\t\tthis.msgElement.removeChild(this.msgElement.firstChild);\n\t\t\t}this.msgElement.classList.remove(\"tabulator-error\");\n\t\t\tthis.msgElement.classList.add(\"tabulator-loading\");\n\n\t\t\tif (this.loadingElement) {\n\t\t\t\tthis.msgElement.appendChild(this.loadingElement);\n\t\t\t} else {\n\t\t\t\tthis.msgElement.innerHTML = this.table.modules.localize.getText(\"ajax|loading\");\n\t\t\t}\n\n\t\t\tthis.table.element.appendChild(this.loaderElement);\n\t\t}\n\t};\n\n\tAjax.prototype.showError = function () {\n\t\tthis.hideLoader();\n\n\t\twhile (this.msgElement.firstChild) {\n\t\t\tthis.msgElement.removeChild(this.msgElement.firstChild);\n\t\t}this.msgElement.classList.remove(\"tabulator-loading\");\n\t\tthis.msgElement.classList.add(\"tabulator-error\");\n\n\t\tif (this.errorElement) {\n\t\t\tthis.msgElement.appendChild(this.errorElement);\n\t\t} else {\n\t\t\tthis.msgElement.innerHTML = this.table.modules.localize.getText(\"ajax|error\");\n\t\t}\n\n\t\tthis.table.element.appendChild(this.loaderElement);\n\t};\n\n\tAjax.prototype.hideLoader = function () {\n\t\tif (this.loaderElement.parentNode) {\n\t\t\tthis.loaderElement.parentNode.removeChild(this.loaderElement);\n\t\t}\n\t};\n\n\t//default ajax config object\n\tAjax.prototype.defaultConfig = {\n\t\tmethod: \"GET\"\n\t};\n\n\tAjax.prototype.defaultURLGenerator = function (url, config, params) {\n\n\t\tif (url) {\n\t\t\tif (params && Object.keys(params).length) {\n\t\t\t\tif (!config.method || config.method.toLowerCase() == \"get\") {\n\t\t\t\t\tconfig.method = \"get\";\n\t\t\t\t\turl += \"?\" + this.serializeParams(params);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn url;\n\t};\n\n\tAjax.prototype.defaultLoaderPromise = function (url, config, params) {\n\t\tvar self = this,\n\t\t contentType;\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\t//set url\n\t\t\turl = self.urlGenerator(url, config, params);\n\n\t\t\t//set body content if not GET request\n\t\t\tif (config.method.toUpperCase() != \"GET\") {\n\t\t\t\tcontentType = _typeof(self.table.options.ajaxContentType) === \"object\" ? self.table.options.ajaxContentType : self.contentTypeFormatters[self.table.options.ajaxContentType];\n\t\t\t\tif (contentType) {\n\n\t\t\t\t\tfor (var key in contentType.headers) {\n\t\t\t\t\t\tif (!config.headers) {\n\t\t\t\t\t\t\tconfig.headers = {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (typeof config.headers[key] === \"undefined\") {\n\t\t\t\t\t\t\tconfig.headers[key] = contentType.headers[key];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tconfig.body = contentType.body.call(self, url, config, params);\n\t\t\t\t} else {\n\t\t\t\t\tconsole.warn(\"Ajax Error - Invalid ajaxContentType value:\", self.table.options.ajaxContentType);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (url) {\n\n\t\t\t\t//configure headers\n\t\t\t\tif (typeof config.headers === \"undefined\") {\n\t\t\t\t\tconfig.headers = {};\n\t\t\t\t}\n\n\t\t\t\tif (typeof config.headers.Accept === \"undefined\") {\n\t\t\t\t\tconfig.headers.Accept = \"application/json\";\n\t\t\t\t}\n\n\t\t\t\tif (typeof config.headers[\"X-Requested-With\"] === \"undefined\") {\n\t\t\t\t\tconfig.headers[\"X-Requested-With\"] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\tif (typeof config.mode === \"undefined\") {\n\t\t\t\t\tconfig.mode = \"cors\";\n\t\t\t\t}\n\n\t\t\t\tif (config.mode == \"cors\") {\n\n\t\t\t\t\tif (typeof config.headers[\"Access-Control-Allow-Origin\"] === \"undefined\") {\n\t\t\t\t\t\tconfig.headers[\"Access-Control-Allow-Origin\"] = window.location.origin;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (typeof config.credentials === \"undefined\") {\n\t\t\t\t\t\tconfig.credentials = 'same-origin';\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (typeof config.credentials === \"undefined\") {\n\t\t\t\t\t\tconfig.credentials = 'include';\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t//send request\n\t\t\t\tfetch(url, config).then(function (response) {\n\t\t\t\t\tif (response.ok) {\n\t\t\t\t\t\tresponse.json().then(function (data) {\n\t\t\t\t\t\t\tresolve(data);\n\t\t\t\t\t\t}).catch(function (error) {\n\t\t\t\t\t\t\treject(error);\n\t\t\t\t\t\t\tconsole.warn(\"Ajax Load Error - Invalid JSON returned\", error);\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.error(\"Ajax Load Error - Connection Error: \" + response.status, response.statusText);\n\t\t\t\t\t\treject(response);\n\t\t\t\t\t}\n\t\t\t\t}).catch(function (error) {\n\t\t\t\t\tconsole.error(\"Ajax Load Error - Connection Error: \", error);\n\t\t\t\t\treject(error);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconsole.warn(\"Ajax Load Error - No URL Set\");\n\t\t\t\tresolve([]);\n\t\t\t}\n\t\t});\n\t};\n\n\tAjax.prototype.contentTypeFormatters = {\n\t\t\"json\": {\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/json'\n\t\t\t},\n\t\t\tbody: function body(url, config, params) {\n\t\t\t\treturn JSON.stringify(params);\n\t\t\t}\n\t\t},\n\t\t\"form\": {\n\t\t\theaders: {},\n\t\t\tbody: function body(url, config, params) {\n\t\t\t\tvar output = this.generateParamsList(params),\n\t\t\t\t form = new FormData();\n\n\t\t\t\toutput.forEach(function (item) {\n\t\t\t\t\tform.append(item.key, item.value);\n\t\t\t\t});\n\n\t\t\t\treturn form;\n\t\t\t}\n\t\t}\n\t};\n\n\tTabulator.prototype.registerModule(\"ajax\", Ajax);\n\n\tvar ColumnCalcs = function ColumnCalcs(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.topCalcs = [];\n\t\tthis.botCalcs = [];\n\t\tthis.genColumn = false;\n\t\tthis.topElement = this.createElement();\n\t\tthis.botElement = this.createElement();\n\t\tthis.topRow = false;\n\t\tthis.botRow = false;\n\t\tthis.topInitialized = false;\n\t\tthis.botInitialized = false;\n\n\t\tthis.initialize();\n\t};\n\n\tColumnCalcs.prototype.createElement = function () {\n\t\tvar el = document.createElement(\"div\");\n\t\tel.classList.add(\"tabulator-calcs-holder\");\n\t\treturn el;\n\t};\n\n\tColumnCalcs.prototype.initialize = function () {\n\t\tthis.genColumn = new Column({ field: \"value\" }, this);\n\t};\n\n\t//dummy functions to handle being mock column manager\n\tColumnCalcs.prototype.registerColumnField = function () {};\n\n\t//initialize column calcs\n\tColumnCalcs.prototype.initializeColumn = function (column) {\n\t\tvar def = column.definition;\n\n\t\tvar config = {\n\t\t\ttopCalcParams: def.topCalcParams || {},\n\t\t\tbotCalcParams: def.bottomCalcParams || {}\n\t\t};\n\n\t\tif (def.topCalc) {\n\n\t\t\tswitch (_typeof(def.topCalc)) {\n\t\t\t\tcase \"string\":\n\t\t\t\t\tif (this.calculations[def.topCalc]) {\n\t\t\t\t\t\tconfig.topCalc = this.calculations[def.topCalc];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.warn(\"Column Calc Error - No such calculation found, ignoring: \", def.topCalc);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"function\":\n\t\t\t\t\tconfig.topCalc = def.topCalc;\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif (config.topCalc) {\n\t\t\t\tcolumn.modules.columnCalcs = config;\n\t\t\t\tthis.topCalcs.push(column);\n\n\t\t\t\tif (this.table.options.columnCalcs != \"group\") {\n\t\t\t\t\tthis.initializeTopRow();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (def.bottomCalc) {\n\t\t\tswitch (_typeof(def.bottomCalc)) {\n\t\t\t\tcase \"string\":\n\t\t\t\t\tif (this.calculations[def.bottomCalc]) {\n\t\t\t\t\t\tconfig.botCalc = this.calculations[def.bottomCalc];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.warn(\"Column Calc Error - No such calculation found, ignoring: \", def.bottomCalc);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"function\":\n\t\t\t\t\tconfig.botCalc = def.bottomCalc;\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif (config.botCalc) {\n\t\t\t\tcolumn.modules.columnCalcs = config;\n\t\t\t\tthis.botCalcs.push(column);\n\n\t\t\t\tif (this.table.options.columnCalcs != \"group\") {\n\t\t\t\t\tthis.initializeBottomRow();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tColumnCalcs.prototype.removeCalcs = function () {\n\t\tvar changed = false;\n\n\t\tif (this.topInitialized) {\n\t\t\tthis.topInitialized = false;\n\t\t\tthis.topElement.parentNode.removeChild(this.topElement);\n\t\t\tchanged = true;\n\t\t}\n\n\t\tif (this.botInitialized) {\n\t\t\tthis.botInitialized = false;\n\t\t\tthis.table.footerManager.remove(this.botElement);\n\t\t\tchanged = true;\n\t\t}\n\n\t\tif (changed) {\n\t\t\tthis.table.rowManager.adjustTableSize();\n\t\t}\n\t};\n\n\tColumnCalcs.prototype.initializeTopRow = function () {\n\t\tif (!this.topInitialized) {\n\t\t\t// this.table.columnManager.headersElement.after(this.topElement);\n\t\t\tthis.table.columnManager.getElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);\n\t\t\tthis.topInitialized = true;\n\t\t}\n\t};\n\n\tColumnCalcs.prototype.initializeBottomRow = function () {\n\t\tif (!this.botInitialized) {\n\t\t\tthis.table.footerManager.prepend(this.botElement);\n\t\t\tthis.botInitialized = true;\n\t\t}\n\t};\n\n\tColumnCalcs.prototype.scrollHorizontal = function (left) {\n\t\tvar hozAdjust = 0,\n\t\t scrollWidth = this.table.columnManager.getElement().scrollWidth - this.table.element.clientWidth;\n\n\t\tif (this.botInitialized) {\n\t\t\tthis.botRow.getElement().style.marginLeft = -left + \"px\";\n\t\t}\n\t};\n\n\tColumnCalcs.prototype.recalc = function (rows) {\n\t\tvar data, row;\n\n\t\tif (this.topInitialized || this.botInitialized) {\n\t\t\tdata = this.rowsToData(rows);\n\n\t\t\tif (this.topInitialized) {\n\t\t\t\tif (this.topRow) {\n\t\t\t\t\tthis.topRow.deleteCells();\n\t\t\t\t}\n\n\t\t\t\trow = this.generateRow(\"top\", this.rowsToData(rows));\n\t\t\t\tthis.topRow = row;\n\t\t\t\twhile (this.topElement.firstChild) {\n\t\t\t\t\tthis.topElement.removeChild(this.topElement.firstChild);\n\t\t\t\t}this.topElement.appendChild(row.getElement());\n\t\t\t\trow.initialize(true);\n\t\t\t}\n\n\t\t\tif (this.botInitialized) {\n\t\t\t\tif (this.botRow) {\n\t\t\t\t\tthis.botRow.deleteCells();\n\t\t\t\t}\n\n\t\t\t\trow = this.generateRow(\"bottom\", this.rowsToData(rows));\n\t\t\t\tthis.botRow = row;\n\t\t\t\twhile (this.botElement.firstChild) {\n\t\t\t\t\tthis.botElement.removeChild(this.botElement.firstChild);\n\t\t\t\t}this.botElement.appendChild(row.getElement());\n\t\t\t\trow.initialize(true);\n\t\t\t}\n\n\t\t\tthis.table.rowManager.adjustTableSize();\n\n\t\t\t//set resizable handles\n\t\t\tif (this.table.modExists(\"frozenColumns\")) {\n\t\t\t\tthis.table.modules.frozenColumns.layout();\n\t\t\t}\n\t\t}\n\t};\n\n\tColumnCalcs.prototype.recalcRowGroup = function (row) {\n\t\tthis.recalcGroup(this.table.modules.groupRows.getRowGroup(row));\n\t};\n\n\tColumnCalcs.prototype.recalcGroup = function (group) {\n\t\tvar data, rowData;\n\n\t\tif (group) {\n\t\t\tif (group.calcs) {\n\t\t\t\tif (group.calcs.bottom) {\n\t\t\t\t\tdata = this.rowsToData(group.rows);\n\t\t\t\t\trowData = this.generateRowData(\"bottom\", data);\n\n\t\t\t\t\tgroup.calcs.bottom.updateData(rowData);\n\t\t\t\t\tgroup.calcs.bottom.reinitialize();\n\t\t\t\t}\n\n\t\t\t\tif (group.calcs.top) {\n\t\t\t\t\tdata = this.rowsToData(group.rows);\n\t\t\t\t\trowData = this.generateRowData(\"top\", data);\n\n\t\t\t\t\tgroup.calcs.top.updateData(rowData);\n\t\t\t\t\tgroup.calcs.top.reinitialize();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\t//generate top stats row\n\tColumnCalcs.prototype.generateTopRow = function (rows) {\n\t\treturn this.generateRow(\"top\", this.rowsToData(rows));\n\t};\n\t//generate bottom stats row\n\tColumnCalcs.prototype.generateBottomRow = function (rows) {\n\t\treturn this.generateRow(\"bottom\", this.rowsToData(rows));\n\t};\n\n\tColumnCalcs.prototype.rowsToData = function (rows) {\n\t\tvar data = [];\n\n\t\trows.forEach(function (row) {\n\t\t\tdata.push(row.getData());\n\t\t});\n\n\t\treturn data;\n\t};\n\n\t//generate stats row\n\tColumnCalcs.prototype.generateRow = function (pos, data) {\n\t\tvar self = this,\n\t\t rowData = this.generateRowData(pos, data),\n\t\t row;\n\n\t\tif (self.table.modExists(\"mutator\")) {\n\t\t\tself.table.modules.mutator.disable();\n\t\t}\n\n\t\trow = new Row(rowData, this);\n\n\t\tif (self.table.modExists(\"mutator\")) {\n\t\t\tself.table.modules.mutator.enable();\n\t\t}\n\n\t\trow.getElement().classList.add(\"tabulator-calcs\", \"tabulator-calcs-\" + pos);\n\t\trow.type = \"calc\";\n\n\t\trow.generateCells = function () {\n\n\t\t\tvar cells = [];\n\n\t\t\tself.table.columnManager.columnsByIndex.forEach(function (column) {\n\n\t\t\t\t//set field name of mock column\n\t\t\t\tself.genColumn.setField(column.getField());\n\t\t\t\tself.genColumn.hozAlign = column.hozAlign;\n\n\t\t\t\tif (column.definition[pos + \"CalcFormatter\"] && self.table.modExists(\"format\")) {\n\n\t\t\t\t\tself.genColumn.modules.format = {\n\t\t\t\t\t\tformatter: self.table.modules.format.getFormatter(column.definition[pos + \"CalcFormatter\"]),\n\t\t\t\t\t\tparams: column.definition[pos + \"CalcFormatterParams\"]\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\tself.genColumn.modules.format = {\n\t\t\t\t\t\tformatter: self.table.modules.format.getFormatter(\"plaintext\"),\n\t\t\t\t\t\tparams: {}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t//ensure css class defintion is replicated to calculation cell\n\t\t\t\tself.genColumn.definition.cssClass = column.definition.cssClass;\n\n\t\t\t\t//generate cell and assign to correct column\n\t\t\t\tvar cell = new Cell(self.genColumn, row);\n\t\t\t\tcell.column = column;\n\t\t\t\tcell.setWidth();\n\n\t\t\t\tcolumn.cells.push(cell);\n\t\t\t\tcells.push(cell);\n\n\t\t\t\tif (!column.visible) {\n\t\t\t\t\tcell.hide();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.cells = cells;\n\t\t};\n\n\t\treturn row;\n\t};\n\n\t//generate stats row\n\tColumnCalcs.prototype.generateRowData = function (pos, data) {\n\t\tvar rowData = {},\n\t\t calcs = pos == \"top\" ? this.topCalcs : this.botCalcs,\n\t\t type = pos == \"top\" ? \"topCalc\" : \"botCalc\",\n\t\t params,\n\t\t paramKey;\n\n\t\tcalcs.forEach(function (column) {\n\t\t\tvar values = [];\n\n\t\t\tif (column.modules.columnCalcs && column.modules.columnCalcs[type]) {\n\t\t\t\tdata.forEach(function (item) {\n\t\t\t\t\tvalues.push(column.getFieldValue(item));\n\t\t\t\t});\n\n\t\t\t\tparamKey = type + \"Params\";\n\t\t\t\tparams = typeof column.modules.columnCalcs[paramKey] === \"function\" ? column.modules.columnCalcs[paramKey](values, data) : column.modules.columnCalcs[paramKey];\n\n\t\t\t\tcolumn.setFieldValue(rowData, column.modules.columnCalcs[type](values, data, params));\n\t\t\t}\n\t\t});\n\n\t\treturn rowData;\n\t};\n\n\tColumnCalcs.prototype.hasTopCalcs = function () {\n\t\treturn !!this.topCalcs.length;\n\t}, ColumnCalcs.prototype.hasBottomCalcs = function () {\n\t\treturn !!this.botCalcs.length;\n\t},\n\n\t//handle table redraw\n\tColumnCalcs.prototype.redraw = function () {\n\t\tif (this.topRow) {\n\t\t\tthis.topRow.normalizeHeight(true);\n\t\t}\n\t\tif (this.botRow) {\n\t\t\tthis.botRow.normalizeHeight(true);\n\t\t}\n\t};\n\n\t//return the calculated\n\tColumnCalcs.prototype.getResults = function () {\n\t\tvar self = this,\n\t\t results = {},\n\t\t groups;\n\n\t\tif (this.table.options.groupBy && this.table.modExists(\"groupRows\")) {\n\t\t\tgroups = this.table.modules.groupRows.getGroups(true);\n\n\t\t\tgroups.forEach(function (group) {\n\t\t\t\tresults[group.getKey()] = self.getGroupResults(group);\n\t\t\t});\n\t\t} else {\n\t\t\tresults = {\n\t\t\t\ttop: this.topRow ? this.topRow.getData() : {},\n\t\t\t\tbottom: this.botRow ? this.botRow.getData() : {}\n\t\t\t};\n\t\t}\n\n\t\treturn results;\n\t};\n\n\t//get results from a group\n\tColumnCalcs.prototype.getGroupResults = function (group) {\n\t\tvar self = this,\n\t\t groupObj = group._getSelf(),\n\t\t subGroups = group.getSubGroups(),\n\t\t subGroupResults = {},\n\t\t results = {};\n\n\t\tsubGroups.forEach(function (subgroup) {\n\t\t\tsubGroupResults[subgroup.getKey()] = self.getGroupResults(subgroup);\n\t\t});\n\n\t\tresults = {\n\t\t\ttop: groupObj.calcs.top ? groupObj.calcs.top.getData() : {},\n\t\t\tbottom: groupObj.calcs.bottom ? groupObj.calcs.bottom.getData() : {},\n\t\t\tgroups: subGroupResults\n\t\t};\n\n\t\treturn results;\n\t};\n\n\t//default calculations\n\tColumnCalcs.prototype.calculations = {\n\t\t\"avg\": function avg(values, data, calcParams) {\n\t\t\tvar output = 0,\n\t\t\t precision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : 2;\n\n\t\t\tif (values.length) {\n\t\t\t\toutput = values.reduce(function (sum, value) {\n\t\t\t\t\tvalue = Number(value);\n\t\t\t\t\treturn sum + value;\n\t\t\t\t});\n\n\t\t\t\toutput = output / values.length;\n\n\t\t\t\toutput = precision !== false ? output.toFixed(precision) : output;\n\t\t\t}\n\n\t\t\treturn parseFloat(output).toString();\n\t\t},\n\t\t\"max\": function max(values, data, calcParams) {\n\t\t\tvar output = null,\n\t\t\t precision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\n\n\t\t\tvalues.forEach(function (value) {\n\n\t\t\t\tvalue = Number(value);\n\n\t\t\t\tif (value > output || output === null) {\n\t\t\t\t\toutput = value;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn output !== null ? precision !== false ? output.toFixed(precision) : output : \"\";\n\t\t},\n\t\t\"min\": function min(values, data, calcParams) {\n\t\t\tvar output = null,\n\t\t\t precision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\n\n\t\t\tvalues.forEach(function (value) {\n\n\t\t\t\tvalue = Number(value);\n\n\t\t\t\tif (value < output || output === null) {\n\t\t\t\t\toutput = value;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn output !== null ? precision !== false ? output.toFixed(precision) : output : \"\";\n\t\t},\n\t\t\"sum\": function sum(values, data, calcParams) {\n\t\t\tvar output = 0,\n\t\t\t precision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\n\n\t\t\tif (values.length) {\n\t\t\t\tvalues.forEach(function (value) {\n\t\t\t\t\tvalue = Number(value);\n\n\t\t\t\t\toutput += !isNaN(value) ? Number(value) : 0;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn precision !== false ? output.toFixed(precision) : output;\n\t\t},\n\t\t\"concat\": function concat(values, data, calcParams) {\n\t\t\tvar output = 0;\n\n\t\t\tif (values.length) {\n\t\t\t\toutput = values.reduce(function (sum, value) {\n\t\t\t\t\treturn String(sum) + String(value);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn output;\n\t\t},\n\t\t\"count\": function count(values, data, calcParams) {\n\t\t\tvar output = 0;\n\n\t\t\tif (values.length) {\n\t\t\t\tvalues.forEach(function (value) {\n\t\t\t\t\tif (value) {\n\t\t\t\t\t\toutput++;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn output;\n\t\t}\n\t};\n\n\tTabulator.prototype.registerModule(\"columnCalcs\", ColumnCalcs);\n\n\tvar Clipboard = function Clipboard(table) {\n\t\tthis.table = table;\n\t\tthis.mode = true;\n\t\tthis.copySelector = false;\n\t\tthis.copySelectorParams = {};\n\t\tthis.copyFormatter = false;\n\t\tthis.copyFormatterParams = {};\n\t\tthis.pasteParser = function () {};\n\t\tthis.pasteAction = function () {};\n\t\tthis.htmlElement = false;\n\t\tthis.config = {};\n\n\t\tthis.blocked = true; //block copy actions not originating from this command\n\t};\n\n\tClipboard.prototype.initialize = function () {\n\t\tvar self = this;\n\n\t\tthis.mode = this.table.options.clipboard;\n\n\t\tif (this.mode === true || this.mode === \"copy\") {\n\t\t\tthis.table.element.addEventListener(\"copy\", function (e) {\n\t\t\t\tvar data;\n\n\t\t\t\tself.processConfig();\n\n\t\t\t\tif (!self.blocked) {\n\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\tdata = self.generateContent();\n\n\t\t\t\t\tif (window.clipboardData && window.clipboardData.setData) {\n\t\t\t\t\t\twindow.clipboardData.setData('Text', data);\n\t\t\t\t\t} else if (e.clipboardData && e.clipboardData.setData) {\n\t\t\t\t\t\te.clipboardData.setData('text/plain', data);\n\t\t\t\t\t\tif (self.htmlElement) {\n\t\t\t\t\t\t\te.clipboardData.setData('text/html', self.htmlElement.outerHTML);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (e.originalEvent && e.originalEvent.clipboardData.setData) {\n\t\t\t\t\t\te.originalEvent.clipboardData.setData('text/plain', data);\n\t\t\t\t\t\tif (self.htmlElement) {\n\t\t\t\t\t\t\te.originalEvent.clipboardData.setData('text/html', self.htmlElement.outerHTML);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tself.table.options.clipboardCopied.call(this.table, data);\n\n\t\t\t\t\tself.reset();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (this.mode === true || this.mode === \"paste\") {\n\t\t\tthis.table.element.addEventListener(\"paste\", function (e) {\n\t\t\t\tself.paste(e);\n\t\t\t});\n\t\t}\n\n\t\tthis.setPasteParser(this.table.options.clipboardPasteParser);\n\t\tthis.setPasteAction(this.table.options.clipboardPasteAction);\n\t};\n\n\tClipboard.prototype.processConfig = function () {\n\t\tvar config = {\n\t\t\tcolumnHeaders: \"groups\",\n\t\t\trowGroups: true,\n\t\t\tcolumnCalcs: true\n\t\t};\n\n\t\tif (typeof this.table.options.clipboardCopyHeader !== \"undefined\") {\n\t\t\tconfig.columnHeaders = this.table.options.clipboardCopyHeader;\n\t\t\tconsole.warn(\"DEPRECATION WANRING - clipboardCopyHeader option has been depricated, please use the columnHeaders property on the clipboardCopyConfig option\");\n\t\t}\n\n\t\tif (this.table.options.clipboardCopyConfig) {\n\t\t\tfor (var key in this.table.options.clipboardCopyConfig) {\n\t\t\t\tconfig[key] = this.table.options.clipboardCopyConfig[key];\n\t\t\t}\n\t\t}\n\n\t\tif (config.rowGroups && this.table.options.groupBy && this.table.modExists(\"groupRows\")) {\n\t\t\tthis.config.rowGroups = true;\n\t\t}\n\n\t\tif (config.columnHeaders) {\n\t\t\tif ((config.columnHeaders === \"groups\" || config === true) && this.table.columnManager.columns.length != this.table.columnManager.columnsByIndex.length) {\n\t\t\t\tthis.config.columnHeaders = \"groups\";\n\t\t\t} else {\n\t\t\t\tthis.config.columnHeaders = \"columns\";\n\t\t\t}\n\t\t} else {\n\t\t\tthis.config.columnHeaders = false;\n\t\t}\n\n\t\tif (config.columnCalcs && this.table.modExists(\"columnCalcs\")) {\n\t\t\tthis.config.columnCalcs = true;\n\t\t}\n\t};\n\n\tClipboard.prototype.reset = function () {\n\t\tthis.blocked = false;\n\t\tthis.originalSelectionText = \"\";\n\t};\n\n\tClipboard.prototype.setPasteAction = function (action) {\n\n\t\tswitch (typeof action === 'undefined' ? 'undefined' : _typeof(action)) {\n\t\t\tcase \"string\":\n\t\t\t\tthis.pasteAction = this.pasteActions[action];\n\n\t\t\t\tif (!this.pasteAction) {\n\t\t\t\t\tconsole.warn(\"Clipboard Error - No such paste action found:\", action);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tthis.pasteAction = action;\n\t\t\t\tbreak;\n\t\t}\n\t};\n\n\tClipboard.prototype.setPasteParser = function (parser) {\n\t\tswitch (typeof parser === 'undefined' ? 'undefined' : _typeof(parser)) {\n\t\t\tcase \"string\":\n\t\t\t\tthis.pasteParser = this.pasteParsers[parser];\n\n\t\t\t\tif (!this.pasteParser) {\n\t\t\t\t\tconsole.warn(\"Clipboard Error - No such paste parser found:\", parser);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tthis.pasteParser = parser;\n\t\t\t\tbreak;\n\t\t}\n\t};\n\n\tClipboard.prototype.paste = function (e) {\n\t\tvar data, rowData, rows;\n\n\t\tif (this.checkPaseOrigin(e)) {\n\n\t\t\tdata = this.getPasteData(e);\n\n\t\t\trowData = this.pasteParser.call(this, data);\n\n\t\t\tif (rowData) {\n\t\t\t\te.preventDefault();\n\n\t\t\t\tif (this.table.modExists(\"mutator\")) {\n\t\t\t\t\trowData = this.mutateData(rowData);\n\t\t\t\t}\n\n\t\t\t\trows = this.pasteAction.call(this, rowData);\n\t\t\t\tthis.table.options.clipboardPasted.call(this.table, data, rowData, rows);\n\t\t\t} else {\n\t\t\t\tthis.table.options.clipboardPasteError.call(this.table, data);\n\t\t\t}\n\t\t}\n\t};\n\n\tClipboard.prototype.mutateData = function (data) {\n\t\tvar self = this,\n\t\t output = [];\n\n\t\tif (Array.isArray(data)) {\n\t\t\tdata.forEach(function (row) {\n\t\t\t\toutput.push(self.table.modules.mutator.transformRow(row, \"clipboard\"));\n\t\t\t});\n\t\t} else {\n\t\t\toutput = data;\n\t\t}\n\n\t\treturn output;\n\t};\n\n\tClipboard.prototype.checkPaseOrigin = function (e) {\n\t\tvar valid = true;\n\n\t\tif (e.target.tagName != \"DIV\" || this.table.modules.edit.currentCell) {\n\t\t\tvalid = false;\n\t\t}\n\n\t\treturn valid;\n\t};\n\n\tClipboard.prototype.getPasteData = function (e) {\n\t\tvar data;\n\n\t\tif (window.clipboardData && window.clipboardData.getData) {\n\t\t\tdata = window.clipboardData.getData('Text');\n\t\t} else if (e.clipboardData && e.clipboardData.getData) {\n\t\t\tdata = e.clipboardData.getData('text/plain');\n\t\t} else if (e.originalEvent && e.originalEvent.clipboardData.getData) {\n\t\t\tdata = e.originalEvent.clipboardData.getData('text/plain');\n\t\t}\n\n\t\treturn data;\n\t};\n\n\tClipboard.prototype.copy = function (selector, selectorParams, formatter, formatterParams, internal) {\n\t\tvar range, sel, textRange;\n\t\tthis.blocked = false;\n\n\t\tif (this.mode === true || this.mode === \"copy\") {\n\n\t\t\tif (typeof window.getSelection != \"undefined\" && typeof document.createRange != \"undefined\") {\n\t\t\t\trange = document.createRange();\n\t\t\t\trange.selectNodeContents(this.table.element);\n\t\t\t\tsel = window.getSelection();\n\n\t\t\t\tif (sel.toString() && internal) {\n\t\t\t\t\tselector = \"userSelection\";\n\t\t\t\t\tformatter = \"raw\";\n\t\t\t\t\tselectorParams = sel.toString();\n\t\t\t\t}\n\n\t\t\t\tsel.removeAllRanges();\n\t\t\t\tsel.addRange(range);\n\t\t\t} else if (typeof document.selection != \"undefined\" && typeof document.body.createTextRange != \"undefined\") {\n\t\t\t\ttextRange = document.body.createTextRange();\n\t\t\t\ttextRange.moveToElementText(this.table.element);\n\t\t\t\ttextRange.select();\n\t\t\t}\n\n\t\t\tthis.setSelector(selector);\n\t\t\tthis.copySelectorParams = typeof selectorParams != \"undefined\" && selectorParams != null ? selectorParams : this.config.columnHeaders;\n\t\t\tthis.setFormatter(formatter);\n\t\t\tthis.copyFormatterParams = typeof formatterParams != \"undefined\" && formatterParams != null ? formatterParams : {};\n\n\t\t\tdocument.execCommand('copy');\n\n\t\t\tif (sel) {\n\t\t\t\tsel.removeAllRanges();\n\t\t\t}\n\t\t}\n\t};\n\n\tClipboard.prototype.setSelector = function (selector) {\n\t\tselector = selector || this.table.options.clipboardCopySelector;\n\n\t\tswitch (typeof selector === 'undefined' ? 'undefined' : _typeof(selector)) {\n\t\t\tcase \"string\":\n\t\t\t\tif (this.copySelectors[selector]) {\n\t\t\t\t\tthis.copySelector = this.copySelectors[selector];\n\t\t\t\t} else {\n\t\t\t\t\tconsole.warn(\"Clipboard Error - No such selector found:\", selector);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tthis.copySelector = selector;\n\t\t\t\tbreak;\n\t\t}\n\t};\n\n\tClipboard.prototype.setFormatter = function (formatter) {\n\n\t\tformatter = formatter || this.table.options.clipboardCopyFormatter;\n\n\t\tswitch (typeof formatter === 'undefined' ? 'undefined' : _typeof(formatter)) {\n\t\t\tcase \"string\":\n\t\t\t\tif (this.copyFormatters[formatter]) {\n\t\t\t\t\tthis.copyFormatter = this.copyFormatters[formatter];\n\t\t\t\t} else {\n\t\t\t\t\tconsole.warn(\"Clipboard Error - No such formatter found:\", formatter);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tthis.copyFormatter = formatter;\n\t\t\t\tbreak;\n\t\t}\n\t};\n\n\tClipboard.prototype.generateContent = function () {\n\t\tvar data;\n\n\t\tthis.htmlElement = false;\n\t\tdata = this.copySelector.call(this, this.config, this.copySelectorParams);\n\n\t\treturn this.copyFormatter.call(this, data, this.config, this.copyFormatterParams);\n\t};\n\n\tClipboard.prototype.generateSimpleHeaders = function (columns) {\n\t\tvar headers = [];\n\n\t\tcolumns.forEach(function (column) {\n\t\t\theaders.push(column.definition.title);\n\t\t});\n\n\t\treturn headers;\n\t};\n\n\tClipboard.prototype.generateColumnGroupHeaders = function (columns) {\n\t\tvar _this22 = this;\n\n\t\tvar output = [];\n\n\t\tthis.table.columnManager.columns.forEach(function (column) {\n\t\t\tvar colData = _this22.processColumnGroup(column);\n\n\t\t\tif (colData) {\n\t\t\t\toutput.push(colData);\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t};\n\n\tClipboard.prototype.processColumnGroup = function (column) {\n\t\tvar _this23 = this;\n\n\t\tvar subGroups = column.columns;\n\n\t\tvar groupData = {\n\t\t\ttype: \"group\",\n\t\t\ttitle: column.definition.title,\n\t\t\tcolumn: column\n\t\t};\n\n\t\tif (subGroups.length) {\n\t\t\tgroupData.subGroups = [];\n\t\t\tgroupData.width = 0;\n\n\t\t\tsubGroups.forEach(function (subGroup) {\n\t\t\t\tvar subGroupData = _this23.processColumnGroup(subGroup);\n\n\t\t\t\tif (subGroupData) {\n\t\t\t\t\tgroupData.width += subGroupData.width;\n\t\t\t\t\tgroupData.subGroups.push(subGroupData);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (!groupData.width) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} else {\n\t\t\tif (column.field && column.visible) {\n\t\t\t\tgroupData.width = 1;\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn groupData;\n\t};\n\n\tClipboard.prototype.groupHeadersToRows = function (columns) {\n\n\t\tvar headers = [];\n\n\t\tfunction parseColumnGroup(column, level) {\n\n\t\t\tif (typeof headers[level] === \"undefined\") {\n\t\t\t\theaders[level] = [];\n\t\t\t}\n\n\t\t\theaders[level].push(column.title);\n\n\t\t\tif (column.subGroups) {\n\t\t\t\tcolumn.subGroups.forEach(function (subGroup) {\n\t\t\t\t\tparseColumnGroup(subGroup, level + 1);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tpadColumnheaders();\n\t\t\t}\n\t\t}\n\n\t\tfunction padColumnheaders() {\n\t\t\tvar max = 0;\n\n\t\t\theaders.forEach(function (title) {\n\t\t\t\tvar len = title.length;\n\t\t\t\tif (len > max) {\n\t\t\t\t\tmax = len;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\theaders.forEach(function (title) {\n\t\t\t\tvar len = title.length;\n\t\t\t\tif (len < max) {\n\t\t\t\t\tfor (var i = len; i < max; i++) {\n\t\t\t\t\t\ttitle.push(\"\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tcolumns.forEach(function (column) {\n\t\t\tparseColumnGroup(column, 0);\n\t\t});\n\n\t\treturn headers;\n\t};\n\n\tClipboard.prototype.rowsToData = function (rows, config, params) {\n\t\tvar columns = this.table.columnManager.columnsByIndex,\n\t\t data = [];\n\n\t\trows.forEach(function (row) {\n\t\t\tvar rowArray = [],\n\t\t\t rowData = row instanceof RowComponent ? row.getData(\"clipboard\") : row;\n\n\t\t\tcolumns.forEach(function (column) {\n\t\t\t\tvar value = column.getFieldValue(rowData);\n\n\t\t\t\tswitch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {\n\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\tvalue = JSON.stringify(value);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\tcase \"null\":\n\t\t\t\t\t\tvalue = \"\";\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvalue = value;\n\t\t\t\t}\n\n\t\t\t\trowArray.push(value);\n\t\t\t});\n\n\t\t\tdata.push(rowArray);\n\t\t});\n\n\t\treturn data;\n\t};\n\n\tClipboard.prototype.buildComplexRows = function (config) {\n\t\tvar _this24 = this;\n\n\t\tvar output = [],\n\t\t groups = this.table.modules.groupRows.getGroups();\n\n\t\tgroups.forEach(function (group) {\n\t\t\toutput.push(_this24.processGroupData(group));\n\t\t});\n\n\t\treturn output;\n\t};\n\n\tClipboard.prototype.processGroupData = function (group) {\n\t\tvar _this25 = this;\n\n\t\tvar subGroups = group.getSubGroups();\n\n\t\tvar groupData = {\n\t\t\ttype: \"group\",\n\t\t\tkey: group.key\n\t\t};\n\n\t\tif (subGroups.length) {\n\t\t\tgroupData.subGroups = [];\n\n\t\t\tsubGroups.forEach(function (subGroup) {\n\t\t\t\tgroupData.subGroups.push(_this25.processGroupData(subGroup));\n\t\t\t});\n\t\t} else {\n\t\t\tgroupData.rows = group.getRows(true);\n\t\t}\n\n\t\treturn groupData;\n\t};\n\n\tClipboard.prototype.getCalcRow = function (calcs, selector, pos) {\n\t\tvar calcData = calcs[selector];\n\n\t\tif (calcData) {\n\t\t\tif (pos) {\n\t\t\t\tcalcData = calcData[pos];\n\t\t\t}\n\n\t\t\tif (Object.keys(calcData).length) {\n\t\t\t\treturn this.rowsToData([calcData]);\n\t\t\t}\n\t\t}\n\n\t\treturn [];\n\t};\n\n\tClipboard.prototype.buildOutput = function (rows, config, params) {\n\t\tvar _this26 = this;\n\n\t\tvar output = [],\n\t\t calcs,\n\t\t columns = this.table.columnManager.columnsByIndex;\n\n\t\tif (config.columnHeaders) {\n\n\t\t\tif (config.columnHeaders == \"groups\") {\n\t\t\t\tcolumns = this.generateColumnGroupHeaders(this.table.columnManager.columns);\n\n\t\t\t\toutput = output.concat(this.groupHeadersToRows(columns));\n\t\t\t} else {\n\t\t\t\toutput.push(this.generateSimpleHeaders(columns));\n\t\t\t}\n\t\t}\n\n\t\tif (this.config.columnCalcs) {\n\t\t\tcalcs = this.table.getCalcResults();\n\t\t}\n\n\t\t//generate styled content\n\t\tif (this.table.options.clipboardCopyStyled) {\n\t\t\tthis.generateHTML(rows, columns, calcs, config, params);\n\t\t}\n\n\t\t//generate unstyled content\n\t\tif (config.rowGroups) {\n\t\t\trows.forEach(function (row) {\n\t\t\t\toutput = output.concat(_this26.parseRowGroupData(row, config, params, calcs || {}));\n\t\t\t});\n\t\t} else {\n\t\t\tif (config.columnCalcs) {\n\t\t\t\toutput = output.concat(this.getCalcRow(calcs, \"top\"));\n\t\t\t}\n\n\t\t\toutput = output.concat(this.rowsToData(rows, config, params));\n\n\t\t\tif (config.columnCalcs) {\n\t\t\t\toutput = output.concat(this.getCalcRow(calcs, \"bottom\"));\n\t\t\t}\n\t\t}\n\n\t\treturn output;\n\t};\n\n\tClipboard.prototype.parseRowGroupData = function (group, config, params, calcObj) {\n\t\tvar _this27 = this;\n\n\t\tvar groupData = [];\n\n\t\tgroupData.push([group.key]);\n\n\t\tif (group.subGroups) {\n\t\t\tgroup.subGroups.forEach(function (subGroup) {\n\t\t\t\tgroupData = groupData.concat(_this27.parseRowGroupData(subGroup, config, params, calcObj[group.key] ? calcObj[group.key].groups || {} : {}));\n\t\t\t});\n\t\t} else {\n\t\t\tif (config.columnCalcs) {\n\t\t\t\tgroupData = groupData.concat(this.getCalcRow(calcObj, group.key, \"top\"));\n\t\t\t}\n\n\t\t\tgroupData = groupData.concat(this.rowsToData(group.rows, config, params));\n\n\t\t\tif (config.columnCalcs) {\n\t\t\t\tgroupData = groupData.concat(this.getCalcRow(calcObj, group.key, \"bottom\"));\n\t\t\t}\n\t\t}\n\n\t\treturn groupData;\n\t};\n\n\tClipboard.prototype.generateHTML = function (rows, columns, calcs, config, params) {\n\t\tvar self = this,\n\t\t data = [],\n\t\t headers = [],\n\t\t body,\n\t\t oddRow,\n\t\t evenRow,\n\t\t calcRow,\n\t\t firstRow,\n\t\t firstCell,\n\t\t firstGroup,\n\t\t lastCell,\n\t\t styleCells;\n\n\t\t//create table element\n\t\tthis.htmlElement = document.createElement(\"table\");\n\t\tself.mapElementStyles(this.table.element, this.htmlElement, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\"]);\n\n\t\tfunction generateSimpleHeaders() {\n\t\t\tvar headerEl = document.createElement(\"tr\");\n\n\t\t\tcolumns.forEach(function (column) {\n\t\t\t\tvar columnEl = document.createElement(\"th\");\n\t\t\t\tcolumnEl.innerHTML = column.definition.title;\n\n\t\t\t\tself.mapElementStyles(column.getElement(), columnEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"background-color\", \"color\", \"font-weight\", \"font-family\", \"font-size\"]);\n\n\t\t\t\theaderEl.appendChild(columnEl);\n\t\t\t});\n\n\t\t\tself.mapElementStyles(self.table.columnManager.getHeadersElement(), headerEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"background-color\", \"color\", \"font-weight\", \"font-family\", \"font-size\"]);\n\n\t\t\tself.htmlElement.appendChild(document.createElement(\"thead\").appendChild(headerEl));\n\t\t}\n\n\t\tfunction generateHeaders(headers) {\n\n\t\t\tvar headerHolderEl = document.createElement(\"thead\");\n\n\t\t\theaders.forEach(function (columns) {\n\t\t\t\tvar headerEl = document.createElement(\"tr\");\n\n\t\t\t\tcolumns.forEach(function (column) {\n\t\t\t\t\tvar columnEl = document.createElement(\"th\");\n\n\t\t\t\t\tif (column.width > 1) {\n\t\t\t\t\t\tcolumnEl.colSpan = column.width;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (column.height > 1) {\n\t\t\t\t\t\tcolumnEl.rowSpan = column.height;\n\t\t\t\t\t}\n\n\t\t\t\t\tcolumnEl.innerHTML = column.title;\n\n\t\t\t\t\tself.mapElementStyles(column.element, columnEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"background-color\", \"color\", \"font-weight\", \"font-family\", \"font-size\"]);\n\n\t\t\t\t\theaderEl.appendChild(columnEl);\n\t\t\t\t});\n\n\t\t\t\tself.mapElementStyles(self.table.columnManager.getHeadersElement(), headerEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"background-color\", \"color\", \"font-weight\", \"font-family\", \"font-size\"]);\n\n\t\t\t\theaderHolderEl.appendChild(headerEl);\n\t\t\t});\n\n\t\t\tself.htmlElement.appendChild(headerHolderEl);\n\t\t}\n\n\t\tfunction parseColumnGroup(column, level) {\n\n\t\t\tif (typeof headers[level] === \"undefined\") {\n\t\t\t\theaders[level] = [];\n\t\t\t}\n\n\t\t\theaders[level].push({\n\t\t\t\ttitle: column.title,\n\t\t\t\twidth: column.width,\n\t\t\t\theight: 1,\n\t\t\t\tchildren: !!column.subGroups,\n\t\t\t\telement: column.column.getElement()\n\t\t\t});\n\n\t\t\tif (column.subGroups) {\n\t\t\t\tcolumn.subGroups.forEach(function (subGroup) {\n\t\t\t\t\tparseColumnGroup(subGroup, level + 1);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tfunction padVerticalColumnheaders() {\n\t\t\theaders.forEach(function (row, index) {\n\t\t\t\trow.forEach(function (header) {\n\t\t\t\t\tif (!header.children) {\n\t\t\t\t\t\theader.height = headers.length - index;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\tfunction addCalcRow(calcs, selector, pos) {\n\t\t\tvar calcData = calcs[selector];\n\n\t\t\tif (calcData) {\n\t\t\t\tif (pos) {\n\t\t\t\t\tcalcData = calcData[pos];\n\t\t\t\t}\n\n\t\t\t\tif (Object.keys(calcData).length) {\n\t\t\t\t\t// calcRowIndexs.push(body.length);\n\t\t\t\t\tprocessRows([calcData]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t//create headers if needed\n\t\tif (config.columnHeaders) {\n\t\t\tif (config.columnHeaders == \"groups\") {\n\t\t\t\tcolumns.forEach(function (column) {\n\t\t\t\t\tparseColumnGroup(column, 0);\n\t\t\t\t});\n\n\t\t\t\tpadVerticalColumnheaders();\n\t\t\t\tgenerateHeaders(headers);\n\t\t\t} else {\n\t\t\t\tgenerateSimpleHeaders();\n\t\t\t}\n\t\t}\n\n\t\tcolumns = this.table.columnManager.columnsByIndex;\n\n\t\t//create table body\n\t\tbody = document.createElement(\"tbody\");\n\n\t\t//lookup row styles\n\t\tif (window.getComputedStyle) {\n\t\t\toddRow = this.table.element.querySelector(\".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)\");\n\t\t\tevenRow = this.table.element.querySelector(\".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)\");\n\t\t\tcalcRow = this.table.element.querySelector(\".tabulator-row.tabulator-calcs\");\n\t\t\tfirstRow = this.table.element.querySelector(\".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)\");\n\t\t\tfirstGroup = this.table.element.getElementsByClassName(\"tabulator-group\")[0];\n\n\t\t\tif (firstRow) {\n\t\t\t\tstyleCells = firstRow.getElementsByClassName(\"tabulator-cell\");\n\t\t\t\tfirstCell = styleCells[0];\n\t\t\t\tlastCell = styleCells[styleCells.length - 1];\n\t\t\t}\n\t\t}\n\n\t\tfunction processRows(rowArray) {\n\t\t\t//add rows to table\n\t\t\trowArray.forEach(function (row, i) {\n\t\t\t\tvar rowEl = document.createElement(\"tr\"),\n\t\t\t\t styleRow = firstRow,\n\t\t\t\t isCalc = false,\n\t\t\t\t rowData;\n\n\t\t\t\tif (row instanceof RowComponent) {\n\t\t\t\t\trowData = row.getData(\"clipboard\");\n\t\t\t\t} else {\n\t\t\t\t\trowData = row;\n\t\t\t\t\tisCalc = true;\n\t\t\t\t}\n\n\t\t\t\tcolumns.forEach(function (column, j) {\n\t\t\t\t\tvar cellEl = document.createElement(\"td\"),\n\t\t\t\t\t value = column.getFieldValue(rowData);\n\n\t\t\t\t\tswitch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {\n\t\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\t\tvalue = JSON.stringify(value);\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\tcase \"null\":\n\t\t\t\t\t\t\tvalue = \"\";\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tvalue = value;\n\t\t\t\t\t}\n\n\t\t\t\t\tcellEl.innerHTML = value;\n\n\t\t\t\t\tif (column.definition.align) {\n\t\t\t\t\t\tcellEl.style.textAlign = column.definition.align;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (j < columns.length - 1) {\n\t\t\t\t\t\tif (firstCell) {\n\t\t\t\t\t\t\tself.mapElementStyles(firstCell, cellEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\"]);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (firstCell) {\n\t\t\t\t\t\t\tself.mapElementStyles(firstCell, cellEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\"]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\trowEl.appendChild(cellEl);\n\t\t\t\t});\n\n\t\t\t\tif (isCalc) {\n\t\t\t\t\tstyleRow = calcRow;\n\t\t\t\t} else {\n\t\t\t\t\tif (!(i % 2) && oddRow) {\n\t\t\t\t\t\tstyleRow = oddRow;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (i % 2 && evenRow) {\n\t\t\t\t\t\tstyleRow = evenRow;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (styleRow) {\n\t\t\t\t\tself.mapElementStyles(styleRow, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\n\t\t\t\t}\n\n\t\t\t\tbody.appendChild(rowEl);\n\t\t\t});\n\t\t}\n\n\t\tfunction processGroup(group, calcObj) {\n\t\t\tvar groupEl = document.createElement(\"tr\"),\n\t\t\t groupCellEl = document.createElement(\"td\");\n\n\t\t\tgroupCellEl.colSpan = columns.length;\n\n\t\t\tgroupCellEl.innerHTML = group.key;\n\n\t\t\tgroupEl.appendChild(groupCellEl);\n\t\t\tbody.appendChild(groupEl);\n\n\t\t\tself.mapElementStyles(firstGroup, groupEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\n\n\t\t\tif (group.subGroups) {\n\t\t\t\tgroup.subGroups.forEach(function (subGroup) {\n\t\t\t\t\tprocessGroup(subGroup, calcObj[group.key] ? calcObj[group.key].groups || {} : {});\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tif (config.columnCalcs) {\n\t\t\t\t\taddCalcRow(calcObj, group.key, \"top\");\n\t\t\t\t}\n\n\t\t\t\tprocessRows(group.rows);\n\n\t\t\t\tif (config.columnCalcs) {\n\t\t\t\t\taddCalcRow(calcObj, group.key, \"bottom\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (config.rowGroups) {\n\t\t\trows.forEach(function (group) {\n\t\t\t\tprocessGroup(group, calcs || {});\n\t\t\t});\n\t\t} else {\n\t\t\tif (config.columnCalcs) {\n\t\t\t\taddCalcRow(calcs, \"top\");\n\t\t\t}\n\n\t\t\tprocessRows(rows);\n\n\t\t\tif (config.columnCalcs) {\n\t\t\t\taddCalcRow(calcs, \"bottom\");\n\t\t\t}\n\t\t}\n\n\t\tthis.htmlElement.appendChild(body);\n\t};\n\n\tClipboard.prototype.mapElementStyles = function (from, to, props) {\n\n\t\tvar lookup = {\n\t\t\t\"background-color\": \"backgroundColor\",\n\t\t\t\"color\": \"fontColor\",\n\t\t\t\"font-weight\": \"fontWeight\",\n\t\t\t\"font-family\": \"fontFamily\",\n\t\t\t\"font-size\": \"fontSize\",\n\t\t\t\"border-top\": \"borderTop\",\n\t\t\t\"border-left\": \"borderLeft\",\n\t\t\t\"border-right\": \"borderRight\",\n\t\t\t\"border-bottom\": \"borderBottom\"\n\t\t};\n\n\t\tif (window.getComputedStyle) {\n\t\t\tvar fromStyle = window.getComputedStyle(from);\n\n\t\t\tprops.forEach(function (prop) {\n\t\t\t\tto.style[lookup[prop]] = fromStyle.getPropertyValue(prop);\n\t\t\t});\n\t\t}\n\n\t\t// return window.getComputedStyle ? window.getComputedStyle(element, null).getPropertyValue(property) : element.style[property.replace(/-([a-z])/g, function (g) { return g[1].toUpperCase(); })];\n\t};\n\n\tClipboard.prototype.copySelectors = {\n\t\tuserSelection: function userSelection(config, params) {\n\t\t\treturn params;\n\t\t},\n\t\tselected: function selected(config, params) {\n\t\t\tvar rows = [];\n\n\t\t\tif (this.table.modExists(\"selectRow\", true)) {\n\t\t\t\trows = this.table.modules.selectRow.getSelectedRows();\n\t\t\t}\n\n\t\t\tif (config.rowGroups) {\n\t\t\t\tconsole.warn(\"Clipboard Warning - select coptSelector does not support row groups\");\n\t\t\t}\n\n\t\t\treturn this.buildOutput(rows, config, params);\n\t\t},\n\t\ttable: function table(config, params) {\n\t\t\tif (config.rowGroups) {\n\t\t\t\tconsole.warn(\"Clipboard Warning - table coptSelector does not support row groups\");\n\t\t\t}\n\n\t\t\treturn this.buildOutput(this.table.rowManager.getComponents(), config, params);\n\t\t},\n\t\tactive: function active(config, params) {\n\t\t\tvar rows;\n\n\t\t\tif (config.rowGroups) {\n\t\t\t\trows = this.buildComplexRows(config);\n\t\t\t} else {\n\t\t\t\trows = this.table.rowManager.getComponents(true);\n\t\t\t}\n\n\t\t\treturn this.buildOutput(rows, config, params);\n\t\t}\n\t};\n\n\tClipboard.prototype.copyFormatters = {\n\t\traw: function raw(data, params) {\n\t\t\treturn data;\n\t\t},\n\t\ttable: function table(data, params) {\n\t\t\tvar output = [];\n\n\t\t\tdata.forEach(function (row) {\n\t\t\t\trow.forEach(function (value) {\n\t\t\t\t\tif (typeof value == \"undefined\") {\n\t\t\t\t\t\tvalue = \"\";\n\t\t\t\t\t}\n\n\t\t\t\t\tvalue = typeof value == \"undefined\" || value === null ? \"\" : value.toString();\n\n\t\t\t\t\tif (value.match(/\\r|\\n/)) {\n\t\t\t\t\t\tvalue = value.split('\"').join('\"\"');\n\t\t\t\t\t\tvalue = '\"' + value + '\"';\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\toutput.push(row.join(\"\\t\"));\n\t\t\t});\n\n\t\t\treturn output.join(\"\\n\");\n\t\t}\n\t};\n\n\tClipboard.prototype.pasteParsers = {\n\t\ttable: function table(clipboard) {\n\t\t\tvar data = [],\n\t\t\t success = false,\n\t\t\t headerFindSuccess = true,\n\t\t\t columns = this.table.columnManager.columns,\n\t\t\t columnMap = [],\n\t\t\t rows = [];\n\n\t\t\t//get data from clipboard into array of columns and rows.\n\t\t\tclipboard = clipboard.split(\"\\n\");\n\n\t\t\tclipboard.forEach(function (row) {\n\t\t\t\tdata.push(row.split(\"\\t\"));\n\t\t\t});\n\n\t\t\tif (data.length && !(data.length === 1 && data[0].length < 2)) {\n\t\t\t\tsuccess = true;\n\n\t\t\t\t//check if headers are present by title\n\t\t\t\tdata[0].forEach(function (value) {\n\t\t\t\t\tvar column = columns.find(function (column) {\n\t\t\t\t\t\treturn value && column.definition.title && value.trim() && column.definition.title.trim() === value.trim();\n\t\t\t\t\t});\n\n\t\t\t\t\tif (column) {\n\t\t\t\t\t\tcolumnMap.push(column);\n\t\t\t\t\t} else {\n\t\t\t\t\t\theaderFindSuccess = false;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t//check if column headers are present by field\n\t\t\t\tif (!headerFindSuccess) {\n\t\t\t\t\theaderFindSuccess = true;\n\t\t\t\t\tcolumnMap = [];\n\n\t\t\t\t\tdata[0].forEach(function (value) {\n\t\t\t\t\t\tvar column = columns.find(function (column) {\n\t\t\t\t\t\t\treturn value && column.field && value.trim() && column.field.trim() === value.trim();\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (column) {\n\t\t\t\t\t\t\tcolumnMap.push(column);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\theaderFindSuccess = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tif (!headerFindSuccess) {\n\t\t\t\t\t\tcolumnMap = this.table.columnManager.columnsByIndex;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t//remove header row if found\n\t\t\t\tif (headerFindSuccess) {\n\t\t\t\t\tdata.shift();\n\t\t\t\t}\n\n\t\t\t\tdata.forEach(function (item) {\n\t\t\t\t\tvar row = {};\n\n\t\t\t\t\titem.forEach(function (value, i) {\n\t\t\t\t\t\tif (columnMap[i]) {\n\t\t\t\t\t\t\trow[columnMap[i].field] = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\trows.push(row);\n\t\t\t\t});\n\n\t\t\t\treturn rows;\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t};\n\n\tClipboard.prototype.pasteActions = {\n\t\treplace: function replace(rows) {\n\t\t\treturn this.table.setData(rows);\n\t\t},\n\t\tupdate: function update(rows) {\n\t\t\treturn this.table.updateOrAddData(rows);\n\t\t},\n\t\tinsert: function insert(rows) {\n\t\t\treturn this.table.addData(rows);\n\t\t}\n\t};\n\n\tTabulator.prototype.registerModule(\"clipboard\", Clipboard);\n\n\tvar DataTree = function DataTree(table) {\n\t\tthis.table = table;\n\t\tthis.indent = 10;\n\t\tthis.field = \"\";\n\t\tthis.collapseEl = null;\n\t\tthis.expandEl = null;\n\t\tthis.branchEl = null;\n\t\tthis.elementField = false;\n\n\t\tthis.startOpen = function () {};\n\n\t\tthis.displayIndex = 0;\n\t};\n\n\tDataTree.prototype.initialize = function () {\n\t\tvar dummyEl = null,\n\t\t firstCol = this.table.columnManager.getFirstVisibileColumn(),\n\t\t options = this.table.options;\n\n\t\tthis.field = options.dataTreeChildField;\n\t\tthis.indent = options.dataTreeChildIndent;\n\t\tthis.elementField = options.dataTreeElementColumn || (firstCol ? firstCol.field : false);\n\n\t\tif (options.dataTreeBranchElement) {\n\n\t\t\tif (options.dataTreeBranchElement === true) {\n\t\t\t\tthis.branchEl = document.createElement(\"div\");\n\t\t\t\tthis.branchEl.classList.add(\"tabulator-data-tree-branch\");\n\t\t\t} else {\n\t\t\t\tif (typeof options.dataTreeBranchElement === \"string\") {\n\t\t\t\t\tdummyEl = document.createElement(\"div\");\n\t\t\t\t\tdummyEl.innerHTML = options.dataTreeBranchElement;\n\t\t\t\t\tthis.branchEl = dummyEl.firstChild;\n\t\t\t\t} else {\n\t\t\t\t\tthis.branchEl = options.dataTreeBranchElement;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (options.dataTreeCollapseElement) {\n\t\t\tif (typeof options.dataTreeCollapseElement === \"string\") {\n\t\t\t\tdummyEl = document.createElement(\"div\");\n\t\t\t\tdummyEl.innerHTML = options.dataTreeCollapseElement;\n\t\t\t\tthis.collapseEl = dummyEl.firstChild;\n\t\t\t} else {\n\t\t\t\tthis.collapseEl = options.dataTreeCollapseElement;\n\t\t\t}\n\t\t} else {\n\t\t\tthis.collapseEl = document.createElement(\"div\");\n\t\t\tthis.collapseEl.classList.add(\"tabulator-data-tree-control\");\n\t\t\tthis.collapseEl.innerHTML = \"<div class='tabulator-data-tree-control-collapse'></div>\";\n\t\t}\n\n\t\tif (options.dataTreeExpandElement) {\n\t\t\tif (typeof options.dataTreeExpandElement === \"string\") {\n\t\t\t\tdummyEl = document.createElement(\"div\");\n\t\t\t\tdummyEl.innerHTML = options.dataTreeExpandElement;\n\t\t\t\tthis.expandEl = dummyEl.firstChild;\n\t\t\t} else {\n\t\t\t\tthis.expandEl = options.dataTreeExpandElement;\n\t\t\t}\n\t\t} else {\n\t\t\tthis.expandEl = document.createElement(\"div\");\n\t\t\tthis.expandEl.classList.add(\"tabulator-data-tree-control\");\n\t\t\tthis.expandEl.innerHTML = \"<div class='tabulator-data-tree-control-expand'></div>\";\n\t\t}\n\n\t\tswitch (_typeof(options.dataTreeStartExpanded)) {\n\t\t\tcase \"boolean\":\n\t\t\t\tthis.startOpen = function (row, index) {\n\t\t\t\t\treturn options.dataTreeStartExpanded;\n\t\t\t\t};\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tthis.startOpen = options.dataTreeStartExpanded;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tthis.startOpen = function (row, index) {\n\t\t\t\t\treturn options.dataTreeStartExpanded[index];\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t}\n\t};\n\n\tDataTree.prototype.initializeRow = function (row) {\n\t\tvar childArray = row.getData()[this.field];\n\t\tvar isArray = Array.isArray(childArray);\n\n\t\tvar children = isArray || !isArray && (typeof childArray === 'undefined' ? 'undefined' : _typeof(childArray)) === \"object\" && childArray !== null;\n\n\t\trow.modules.dataTree = {\n\t\t\tindex: 0,\n\t\t\topen: children ? this.startOpen(row.getComponent(), 0) : false,\n\t\t\tcontrolEl: false,\n\t\t\tbranchEl: false,\n\t\t\tparent: false,\n\t\t\tchildren: children\n\t\t};\n\t};\n\n\tDataTree.prototype.layoutRow = function (row) {\n\t\tvar cell = this.elementField ? row.getCell(this.elementField) : row.getCells()[0],\n\t\t el = cell.getElement(),\n\t\t config = row.modules.dataTree;\n\n\t\tif (config.branchEl) {\n\t\t\tconfig.branchEl.parentNode.removeChild(config.branchEl);\n\t\t}\n\n\t\tthis.generateControlElement(row, el);\n\n\t\tif (config.index) {\n\t\t\tif (this.branchEl) {\n\t\t\t\tconfig.branchEl = this.branchEl.cloneNode(true);\n\t\t\t\tel.insertBefore(config.branchEl, el.firstChild);\n\t\t\t\tconfig.branchEl.style.marginLeft = (config.branchEl.offsetWidth + config.branchEl.style.marginRight) * (config.index - 1) + config.index * this.indent + \"px\";\n\t\t\t} else {\n\t\t\t\tel.style.paddingLeft = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-left')) + config.index * this.indent + \"px\";\n\t\t\t}\n\t\t}\n\t};\n\n\tDataTree.prototype.generateControlElement = function (row, el) {\n\t\tvar _this28 = this;\n\n\t\tvar config = row.modules.dataTree,\n\t\t el = el || row.getCells()[0].getElement(),\n\t\t oldControl = config.controlEl;\n\n\t\tif (config.children !== false) {\n\n\t\t\tif (config.open) {\n\t\t\t\tconfig.controlEl = this.collapseEl.cloneNode(true);\n\t\t\t\tconfig.controlEl.addEventListener(\"click\", function (e) {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t_this28.collapseRow(row);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconfig.controlEl = this.expandEl.cloneNode(true);\n\t\t\t\tconfig.controlEl.addEventListener(\"click\", function (e) {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t_this28.expandRow(row);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconfig.controlEl.addEventListener(\"mousedown\", function (e) {\n\t\t\t\te.stopPropagation();\n\t\t\t});\n\n\t\t\tif (oldControl && oldControl.parentNode === el) {\n\t\t\t\toldControl.parentNode.replaceChild(config.controlEl, oldControl);\n\t\t\t} else {\n\t\t\t\tel.insertBefore(config.controlEl, el.firstChild);\n\t\t\t}\n\t\t}\n\t};\n\n\tDataTree.prototype.setDisplayIndex = function (index) {\n\t\tthis.displayIndex = index;\n\t};\n\n\tDataTree.prototype.getDisplayIndex = function () {\n\t\treturn this.displayIndex;\n\t};\n\n\tDataTree.prototype.getRows = function (rows) {\n\t\tvar _this29 = this;\n\n\t\tvar output = [];\n\n\t\trows.forEach(function (row, i) {\n\t\t\tvar config, children;\n\n\t\t\toutput.push(row);\n\n\t\t\tif (row instanceof Row) {\n\n\t\t\t\tconfig = row.modules.dataTree.children;\n\n\t\t\t\tif (!config.index && config.children !== false) {\n\t\t\t\t\tchildren = _this29.getChildren(row);\n\n\t\t\t\t\tchildren.forEach(function (child) {\n\t\t\t\t\t\toutput.push(child);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t};\n\n\tDataTree.prototype.getChildren = function (row) {\n\t\tvar _this30 = this;\n\n\t\tvar config = row.modules.dataTree,\n\t\t children = [],\n\t\t output = [];\n\n\t\tif (config.children !== false && config.open) {\n\t\t\tif (!Array.isArray(config.children)) {\n\t\t\t\tconfig.children = this.generateChildren(row);\n\t\t\t}\n\n\t\t\tif (this.table.modExists(\"filter\")) {\n\t\t\t\tchildren = this.table.modules.filter.filter(config.children);\n\t\t\t} else {\n\t\t\t\tchildren = config.children;\n\t\t\t}\n\n\t\t\tif (this.table.modExists(\"sort\")) {\n\t\t\t\tthis.table.modules.sort.sort(children);\n\t\t\t}\n\n\t\t\tchildren.forEach(function (child) {\n\t\t\t\toutput.push(child);\n\n\t\t\t\tvar subChildren = _this30.getChildren(child);\n\n\t\t\t\tsubChildren.forEach(function (sub) {\n\t\t\t\t\toutput.push(sub);\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\treturn output;\n\t};\n\n\tDataTree.prototype.generateChildren = function (row) {\n\t\tvar _this31 = this;\n\n\t\tvar children = [];\n\n\t\tvar childArray = row.getData()[this.field];\n\n\t\tif (!Array.isArray(childArray)) {\n\t\t\tchildArray = [childArray];\n\t\t}\n\n\t\tchildArray.forEach(function (childData) {\n\t\t\tvar childRow = new Row(childData || {}, _this31.table.rowManager);\n\t\t\tchildRow.modules.dataTree.index = row.modules.dataTree.index + 1;\n\t\t\tchildRow.modules.dataTree.parent = row;\n\t\t\tif (childRow.modules.dataTree.children) {\n\t\t\t\tchildRow.modules.dataTree.open = _this31.startOpen(childRow.getComponent(), childRow.modules.dataTree.index);\n\t\t\t}\n\t\t\tchildren.push(childRow);\n\t\t});\n\n\t\treturn children;\n\t};\n\n\tDataTree.prototype.expandRow = function (row, silent) {\n\t\tvar config = row.modules.dataTree;\n\n\t\tif (config.children !== false) {\n\t\t\tconfig.open = true;\n\n\t\t\trow.reinitialize();\n\n\t\t\tthis.table.rowManager.refreshActiveData(\"tree\", false, true);\n\n\t\t\tthis.table.options.dataTreeRowExpanded(row.getComponent(), row.modules.dataTree.index);\n\t\t}\n\t};\n\n\tDataTree.prototype.collapseRow = function (row) {\n\t\tvar config = row.modules.dataTree;\n\n\t\tif (config.children !== false) {\n\t\t\tconfig.open = false;\n\n\t\t\trow.reinitialize();\n\n\t\t\tthis.table.rowManager.refreshActiveData(\"tree\", false, true);\n\n\t\t\tthis.table.options.dataTreeRowCollapsed(row.getComponent(), row.modules.dataTree.index);\n\t\t}\n\t};\n\n\tDataTree.prototype.toggleRow = function (row) {\n\t\tvar config = row.modules.dataTree;\n\n\t\tif (config.children !== false) {\n\t\t\tif (config.open) {\n\t\t\t\tthis.collapseRow(row);\n\t\t\t} else {\n\t\t\t\tthis.expandRow(row);\n\t\t\t}\n\t\t}\n\t};\n\n\tDataTree.prototype.getTreeParent = function (row) {\n\t\treturn row.modules.dataTree.parent ? row.modules.dataTree.parent.getComponent() : false;\n\t};\n\n\tDataTree.prototype.getTreeChildren = function (row) {\n\t\tvar config = row.modules.dataTree,\n\t\t output = [];\n\n\t\tif (config.children) {\n\n\t\t\tif (!Array.isArray(config.children)) {\n\t\t\t\tconfig.children = this.generateChildren(row);\n\t\t\t}\n\n\t\t\tconfig.children.forEach(function (childRow) {\n\t\t\t\tif (childRow instanceof Row) {\n\t\t\t\t\toutput.push(childRow.getComponent());\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn output;\n\t};\n\n\tDataTree.prototype.checkForRestyle = function (cell) {\n\t\tif (!cell.row.cells.indexOf(cell)) {\n\t\t\tif (cell.row.modules.dataTree.children !== false) {\n\t\t\t\tcell.row.reinitialize();\n\t\t\t}\n\t\t}\n\t};\n\n\tDataTree.prototype.getChildField = function () {\n\t\treturn this.field;\n\t};\n\n\tTabulator.prototype.registerModule(\"dataTree\", DataTree);\n\tvar Download = function Download(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.fields = {}; //hold filed multi dimension arrays\n\t\tthis.columnsByIndex = []; //hold columns in their order in the table\n\t\tthis.columnsByField = {}; //hold columns with lookup by field name\n\t\tthis.config = {};\n\t};\n\n\t//trigger file download\n\tDownload.prototype.download = function (type, filename, options, interceptCallback) {\n\t\tvar self = this,\n\t\t downloadFunc = false;\n\t\tthis.processConfig();\n\n\t\tfunction buildLink(data, mime) {\n\t\t\tif (interceptCallback) {\n\t\t\t\tif (interceptCallback === true) {\n\t\t\t\t\tself.triggerDownload(data, mime, type, filename, true);\n\t\t\t\t} else {\n\t\t\t\t\tinterceptCallback(data);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tself.triggerDownload(data, mime, type, filename);\n\t\t\t}\n\t\t}\n\n\t\tif (typeof type == \"function\") {\n\t\t\tdownloadFunc = type;\n\t\t} else {\n\t\t\tif (self.downloaders[type]) {\n\t\t\t\tdownloadFunc = self.downloaders[type];\n\t\t\t} else {\n\t\t\t\tconsole.warn(\"Download Error - No such download type found: \", type);\n\t\t\t}\n\t\t}\n\n\t\tthis.processColumns();\n\n\t\tif (downloadFunc) {\n\t\t\tdownloadFunc.call(this, self.processDefinitions(), self.processData(), options || {}, buildLink, this.config);\n\t\t}\n\t};\n\n\tDownload.prototype.processConfig = function () {\n\t\tvar config = { //download config\n\t\t\tcolumnGroups: true,\n\t\t\trowGroups: true,\n\t\t\tcolumnCalcs: true\n\t\t};\n\n\t\tif (this.table.options.downloadConfig) {\n\t\t\tfor (var key in this.table.options.downloadConfig) {\n\t\t\t\tconfig[key] = this.table.options.downloadConfig[key];\n\t\t\t}\n\t\t}\n\n\t\tif (config.rowGroups && this.table.options.groupBy && this.table.modExists(\"groupRows\")) {\n\t\t\tthis.config.rowGroups = true;\n\t\t}\n\n\t\tif (config.columnGroups && this.table.columnManager.columns.length != this.table.columnManager.columnsByIndex.length) {\n\t\t\tthis.config.columnGroups = true;\n\t\t}\n\n\t\tif (config.columnCalcs && this.table.modExists(\"columnCalcs\")) {\n\t\t\tthis.config.columnCalcs = true;\n\t\t}\n\t};\n\n\tDownload.prototype.processColumns = function () {\n\t\tvar self = this;\n\n\t\tself.columnsByIndex = [];\n\t\tself.columnsByField = {};\n\n\t\tself.table.columnManager.columnsByIndex.forEach(function (column) {\n\n\t\t\tif (column.field && column.definition.download !== false && (column.visible || !column.visible && column.definition.download)) {\n\t\t\t\tself.columnsByIndex.push(column);\n\t\t\t\tself.columnsByField[column.field] = column;\n\t\t\t}\n\t\t});\n\t};\n\n\tDownload.prototype.processDefinitions = function () {\n\t\tvar self = this,\n\t\t processedDefinitions = [];\n\n\t\tif (this.config.columnGroups) {\n\t\t\tself.table.columnManager.columns.forEach(function (column) {\n\t\t\t\tvar colData = self.processColumnGroup(column);\n\n\t\t\t\tif (colData) {\n\t\t\t\t\tprocessedDefinitions.push(colData);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tself.columnsByIndex.forEach(function (column) {\n\t\t\t\tif (column.download !== false) {\n\t\t\t\t\t//isolate definiton from defintion object\n\t\t\t\t\tprocessedDefinitions.push(self.processDefinition(column));\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn processedDefinitions;\n\t};\n\n\tDownload.prototype.processColumnGroup = function (column) {\n\t\tvar _this32 = this;\n\n\t\tvar subGroups = column.columns,\n\t\t maxDepth = 0;\n\t\tvar processedColumn = this.processDefinition(column);\n\t\tvar groupData = {\n\t\t\ttype: \"group\",\n\t\t\ttitle: processedColumn.title,\n\t\t\tdepth: 1\n\t\t};\n\n\t\tif (subGroups.length) {\n\t\t\tgroupData.subGroups = [];\n\t\t\tgroupData.width = 0;\n\n\t\t\tsubGroups.forEach(function (subGroup) {\n\t\t\t\tvar subGroupData = _this32.processColumnGroup(subGroup);\n\n\t\t\t\tif (subGroupData.depth > maxDepth) {\n\t\t\t\t\tmaxDepth = subGroupData.depth;\n\t\t\t\t}\n\n\t\t\t\tif (subGroupData) {\n\t\t\t\t\tgroupData.width += subGroupData.width;\n\t\t\t\t\tgroupData.subGroups.push(subGroupData);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tgroupData.depth += maxDepth;\n\n\t\t\tif (!groupData.width) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} else {\n\t\t\tif (column.field && column.definition.download !== false && (column.visible || !column.visible && column.definition.download)) {\n\t\t\t\tgroupData.width = 1;\n\t\t\t\tgroupData.definition = processedColumn;\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn groupData;\n\t};\n\n\tDownload.prototype.processDefinition = function (column) {\n\t\tvar def = {};\n\n\t\tfor (var key in column.definition) {\n\t\t\tdef[key] = column.definition[key];\n\t\t}\n\n\t\tif (typeof column.definition.downloadTitle != \"undefined\") {\n\t\t\tdef.title = column.definition.downloadTitle;\n\t\t}\n\n\t\treturn def;\n\t};\n\n\tDownload.prototype.processData = function () {\n\t\tvar _this33 = this;\n\n\t\tvar self = this,\n\t\t data = [],\n\t\t groups = [],\n\t\t calcs = {};\n\n\t\tif (this.config.rowGroups) {\n\t\t\tgroups = this.table.modules.groupRows.getGroups();\n\n\t\t\tgroups.forEach(function (group) {\n\t\t\t\tdata.push(_this33.processGroupData(group));\n\t\t\t});\n\t\t} else {\n\t\t\tdata = self.table.rowManager.getData(true, \"download\");\n\t\t}\n\n\t\tif (this.config.columnCalcs) {\n\t\t\tcalcs = this.table.getCalcResults();\n\n\t\t\tdata = {\n\t\t\t\tcalcs: calcs,\n\t\t\t\tdata: data\n\t\t\t};\n\t\t}\n\n\t\t//bulk data processing\n\t\tif (typeof self.table.options.downloadDataFormatter == \"function\") {\n\t\t\tdata = self.table.options.downloadDataFormatter(data);\n\t\t}\n\n\t\treturn data;\n\t};\n\n\tDownload.prototype.processGroupData = function (group) {\n\t\tvar _this34 = this;\n\n\t\tvar subGroups = group.getSubGroups();\n\n\t\tvar groupData = {\n\t\t\ttype: \"group\",\n\t\t\tkey: group.key\n\t\t};\n\n\t\tif (subGroups.length) {\n\t\t\tgroupData.subGroups = [];\n\n\t\t\tsubGroups.forEach(function (subGroup) {\n\t\t\t\tgroupData.subGroups.push(_this34.processGroupData(subGroup));\n\t\t\t});\n\t\t} else {\n\t\t\tgroupData.rows = group.getData(true, \"download\");\n\t\t}\n\n\t\treturn groupData;\n\t};\n\n\tDownload.prototype.triggerDownload = function (data, mime, type, filename, newTab) {\n\t\tvar element = document.createElement('a'),\n\t\t blob = new Blob([data], { type: mime }),\n\t\t filename = filename || \"Tabulator.\" + (typeof type === \"function\" ? \"txt\" : type);\n\n\t\tblob = this.table.options.downloadReady.call(this.table, data, blob);\n\n\t\tif (blob) {\n\n\t\t\tif (newTab) {\n\t\t\t\twindow.open(window.URL.createObjectURL(blob));\n\t\t\t} else {\n\t\t\t\tif (navigator.msSaveOrOpenBlob) {\n\t\t\t\t\tnavigator.msSaveOrOpenBlob(blob, filename);\n\t\t\t\t} else {\n\t\t\t\t\telement.setAttribute('href', window.URL.createObjectURL(blob));\n\n\t\t\t\t\t//set file title\n\t\t\t\t\telement.setAttribute('download', filename);\n\n\t\t\t\t\t//trigger download\n\t\t\t\t\telement.style.display = 'none';\n\t\t\t\t\tdocument.body.appendChild(element);\n\t\t\t\t\telement.click();\n\n\t\t\t\t\t//remove temporary link element\n\t\t\t\t\tdocument.body.removeChild(element);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.table.options.downloadComplete) {\n\t\t\t\tthis.table.options.downloadComplete();\n\t\t\t}\n\t\t}\n\t};\n\n\t//nested field lookup\n\tDownload.prototype.getFieldValue = function (field, data) {\n\t\tvar column = this.columnsByField[field];\n\n\t\tif (column) {\n\t\t\treturn column.getFieldValue(data);\n\t\t}\n\n\t\treturn false;\n\t};\n\n\tDownload.prototype.commsReceived = function (table, action, data) {\n\t\tswitch (action) {\n\t\t\tcase \"intercept\":\n\t\t\t\tthis.download(data.type, \"\", data.options, data.intercept);\n\t\t\t\tbreak;\n\t\t}\n\t};\n\n\t//downloaders\n\tDownload.prototype.downloaders = {\n\t\tcsv: function csv(columns, data, options, setFileContents, config) {\n\t\t\tvar self = this,\n\t\t\t titles = [],\n\t\t\t fields = [],\n\t\t\t delimiter = options && options.delimiter ? options.delimiter : \",\",\n\t\t\t fileContents,\n\t\t\t output;\n\n\t\t\t//build column headers\n\t\t\tfunction parseSimpleTitles() {\n\t\t\t\tcolumns.forEach(function (column) {\n\t\t\t\t\ttitles.push('\"' + String(column.title).split('\"').join('\"\"') + '\"');\n\t\t\t\t\tfields.push(column.field);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tfunction parseColumnGroup(column, level) {\n\t\t\t\tif (column.subGroups) {\n\t\t\t\t\tcolumn.subGroups.forEach(function (subGroup) {\n\t\t\t\t\t\tparseColumnGroup(subGroup, level + 1);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\ttitles.push('\"' + String(column.title).split('\"').join('\"\"') + '\"');\n\t\t\t\t\tfields.push(column.definition.field);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (config.columnGroups) {\n\t\t\t\tconsole.warn(\"Download Warning - CSV downloader cannot process column groups\");\n\n\t\t\t\tcolumns.forEach(function (column) {\n\t\t\t\t\tparseColumnGroup(column, 0);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tparseSimpleTitles();\n\t\t\t}\n\n\t\t\t//generate header row\n\t\t\tfileContents = [titles.join(delimiter)];\n\n\t\t\tfunction parseRows(data) {\n\t\t\t\t//generate each row of the table\n\t\t\t\tdata.forEach(function (row) {\n\t\t\t\t\tvar rowData = [];\n\n\t\t\t\t\tfields.forEach(function (field) {\n\t\t\t\t\t\tvar value = self.getFieldValue(field, row);\n\n\t\t\t\t\t\tswitch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {\n\t\t\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\t\t\tvalue = JSON.stringify(value);\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\t\tcase \"null\":\n\t\t\t\t\t\t\t\tvalue = \"\";\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tvalue = value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t//escape quotation marks\n\t\t\t\t\t\trowData.push('\"' + String(value).split('\"').join('\"\"') + '\"');\n\t\t\t\t\t});\n\n\t\t\t\t\tfileContents.push(rowData.join(delimiter));\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tfunction parseGroup(group) {\n\t\t\t\tif (group.subGroups) {\n\t\t\t\t\tgroup.subGroups.forEach(function (subGroup) {\n\t\t\t\t\t\tparseGroup(subGroup);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tparseRows(group.rows);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (config.columnCalcs) {\n\t\t\t\tconsole.warn(\"Download Warning - CSV downloader cannot process column calculations\");\n\t\t\t\tdata = data.data;\n\t\t\t}\n\n\t\t\tif (config.rowGroups) {\n\t\t\t\tconsole.warn(\"Download Warning - CSV downloader cannot process row groups\");\n\n\t\t\t\tdata.forEach(function (group) {\n\t\t\t\t\tparseGroup(group);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tparseRows(data);\n\t\t\t}\n\n\t\t\toutput = fileContents.join(\"\\n\");\n\n\t\t\tif (options.bom) {\n\t\t\t\toutput = '\\uFEFF' + output;\n\t\t\t}\n\n\t\t\tsetFileContents(output, \"text/csv\");\n\t\t},\n\n\t\tjson: function json(columns, data, options, setFileContents, config) {\n\t\t\tvar fileContents;\n\n\t\t\tif (config.columnCalcs) {\n\t\t\t\tconsole.warn(\"Download Warning - CSV downloader cannot process column calculations\");\n\t\t\t\tdata = data.data;\n\t\t\t}\n\n\t\t\tfileContents = JSON.stringify(data, null, '\\t');\n\n\t\t\tsetFileContents(fileContents, \"application/json\");\n\t\t},\n\n\t\tpdf: function pdf(columns, data, options, setFileContents, config) {\n\t\t\tvar self = this,\n\t\t\t fields = [],\n\t\t\t header = [],\n\t\t\t body = [],\n\t\t\t calcs = {},\n\t\t\t headerDepth = 1,\n\t\t\t table = \"\",\n\t\t\t autoTableParams = {},\n\t\t\t rowGroupStyles = options.rowGroupStyles || {\n\t\t\t\tfontStyle: \"bold\",\n\t\t\t\tfontSize: 12,\n\t\t\t\tcellPadding: 6,\n\t\t\t\tfillColor: 220\n\t\t\t},\n\t\t\t rowCalcStyles = options.rowCalcStyles || {\n\t\t\t\tfontStyle: \"bold\",\n\t\t\t\tfontSize: 10,\n\t\t\t\tcellPadding: 4,\n\t\t\t\tfillColor: 232\n\t\t\t},\n\t\t\t jsPDFParams = options.jsPDF || {},\n\t\t\t title = options && options.title ? options.title : \"\";\n\n\t\t\tif (config.columnCalcs) {\n\t\t\t\tcalcs = data.calcs;\n\t\t\t\tdata = data.data;\n\t\t\t}\n\n\t\t\tif (!jsPDFParams.orientation) {\n\t\t\t\tjsPDFParams.orientation = options.orientation || \"landscape\";\n\t\t\t}\n\n\t\t\tif (!jsPDFParams.unit) {\n\t\t\t\tjsPDFParams.unit = \"pt\";\n\t\t\t}\n\n\t\t\t//build column headers\n\t\t\tfunction parseSimpleTitles() {\n\t\t\t\tcolumns.forEach(function (column) {\n\t\t\t\t\tif (column.field) {\n\t\t\t\t\t\theader.push(column.title || \"\");\n\t\t\t\t\t\tfields.push(column.field);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\theader = [header];\n\t\t\t}\n\n\t\t\tfunction parseColumnGroup(column, level) {\n\t\t\t\tvar colSpan = column.width,\n\t\t\t\t rowSpan = 1,\n\t\t\t\t col = {\n\t\t\t\t\tcontent: column.title || \"\"\n\t\t\t\t};\n\n\t\t\t\tif (column.subGroups) {\n\t\t\t\t\tcolumn.subGroups.forEach(function (subGroup) {\n\t\t\t\t\t\tparseColumnGroup(subGroup, level + 1);\n\t\t\t\t\t});\n\t\t\t\t\trowSpan = 1;\n\t\t\t\t} else {\n\t\t\t\t\tfields.push(column.definition.field);\n\t\t\t\t\trowSpan = headerDepth - level;\n\t\t\t\t}\n\n\t\t\t\tcol.rowSpan = rowSpan;\n\t\t\t\t// col.colSpan = colSpan;\n\n\t\t\t\theader[level].push(col);\n\n\t\t\t\tcolSpan--;\n\n\t\t\t\tif (rowSpan > 1) {\n\t\t\t\t\tfor (var i = level + 1; i < headerDepth; i++) {\n\t\t\t\t\t\theader[i].push(\"\");\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfor (var i = 0; i < colSpan; i++) {\n\t\t\t\t\theader[level].push(\"\");\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (config.columnGroups) {\n\t\t\t\tcolumns.forEach(function (column) {\n\t\t\t\t\tif (column.depth > headerDepth) {\n\t\t\t\t\t\theaderDepth = column.depth;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tfor (var i = 0; i < headerDepth; i++) {\n\t\t\t\t\theader.push([]);\n\t\t\t\t}\n\n\t\t\t\tcolumns.forEach(function (column) {\n\t\t\t\t\tparseColumnGroup(column, 0);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tparseSimpleTitles();\n\t\t\t}\n\n\t\t\tfunction parseValue(value) {\n\t\t\t\tswitch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {\n\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\tvalue = JSON.stringify(value);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\tcase \"null\":\n\t\t\t\t\t\tvalue = \"\";\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvalue = value;\n\t\t\t\t}\n\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t\tfunction parseRows(data) {\n\t\t\t\t//build table rows\n\t\t\t\tdata.forEach(function (row) {\n\t\t\t\t\tbody.push(parseRow(row));\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tfunction parseRow(row, styles) {\n\t\t\t\tvar rowData = [];\n\n\t\t\t\tfields.forEach(function (field) {\n\t\t\t\t\tvar value = self.getFieldValue(field, row);\n\t\t\t\t\tvalue = parseValue(value);\n\n\t\t\t\t\tif (styles) {\n\t\t\t\t\t\trowData.push({\n\t\t\t\t\t\t\tcontent: value,\n\t\t\t\t\t\t\tstyles: styles\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\trowData.push(value);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn rowData;\n\t\t\t}\n\n\t\t\tfunction parseGroup(group, calcObj) {\n\t\t\t\tvar groupData = [];\n\n\t\t\t\tgroupData.push({ content: parseValue(group.key), colSpan: fields.length, styles: rowGroupStyles });\n\n\t\t\t\tbody.push(groupData);\n\n\t\t\t\tif (group.subGroups) {\n\t\t\t\t\tgroup.subGroups.forEach(function (subGroup) {\n\t\t\t\t\t\tparseGroup(subGroup, calcObj[group.key] ? calcObj[group.key].groups || {} : {});\n\t\t\t\t\t});\n\t\t\t\t} else {\n\n\t\t\t\t\tif (config.columnCalcs) {\n\t\t\t\t\t\taddCalcRow(calcObj, group.key, \"top\");\n\t\t\t\t\t}\n\n\t\t\t\t\tparseRows(group.rows);\n\n\t\t\t\t\tif (config.columnCalcs) {\n\t\t\t\t\t\taddCalcRow(calcObj, group.key, \"bottom\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction addCalcRow(calcs, selector, pos) {\n\t\t\t\tvar calcData = calcs[selector];\n\n\t\t\t\tif (calcData) {\n\t\t\t\t\tif (pos) {\n\t\t\t\t\t\tcalcData = calcData[pos];\n\t\t\t\t\t}\n\n\t\t\t\t\tif (Object.keys(calcData).length) {\n\t\t\t\t\t\tbody.push(parseRow(calcData, rowCalcStyles));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (config.rowGroups) {\n\t\t\t\tdata.forEach(function (group) {\n\t\t\t\t\tparseGroup(group, calcs);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tif (config.columnCalcs) {\n\t\t\t\t\taddCalcRow(calcs, \"top\");\n\t\t\t\t}\n\n\t\t\t\tparseRows(data);\n\n\t\t\t\tif (config.columnCalcs) {\n\t\t\t\t\taddCalcRow(calcs, \"bottom\");\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar doc = new jsPDF(jsPDFParams); //set document to landscape, better for most tables\n\n\t\t\tif (options && options.autoTable) {\n\t\t\t\tif (typeof options.autoTable === \"function\") {\n\t\t\t\t\tautoTableParams = options.autoTable(doc) || {};\n\t\t\t\t} else {\n\t\t\t\t\tautoTableParams = options.autoTable;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (title) {\n\t\t\t\tautoTableParams.addPageContent = function (data) {\n\t\t\t\t\tdoc.text(title, 40, 30);\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tautoTableParams.head = header;\n\t\t\tautoTableParams.body = body;\n\n\t\t\tdoc.autoTable(autoTableParams);\n\n\t\t\tif (options && options.documentProcessing) {\n\t\t\t\toptions.documentProcessing(doc);\n\t\t\t}\n\n\t\t\tsetFileContents(doc.output(\"arraybuffer\"), \"application/pdf\");\n\t\t},\n\n\t\txlsx: function xlsx(columns, data, options, setFileContents, config) {\n\t\t\tvar self = this,\n\t\t\t sheetName = options.sheetName || \"Sheet1\",\n\t\t\t workbook = { SheetNames: [], Sheets: {} },\n\t\t\t calcs = {},\n\t\t\t groupRowIndexs = [],\n\t\t\t groupColumnIndexs = [],\n\t\t\t calcRowIndexs = [],\n\t\t\t output;\n\n\t\t\tif (config.columnCalcs) {\n\t\t\t\tcalcs = data.calcs;\n\t\t\t\tdata = data.data;\n\t\t\t}\n\n\t\t\tfunction generateSheet() {\n\t\t\t\tvar titles = [],\n\t\t\t\t fields = [],\n\t\t\t\t rows = [],\n\t\t\t\t worksheet;\n\n\t\t\t\t//convert rows to worksheet\n\t\t\t\tfunction rowsToSheet() {\n\t\t\t\t\tvar sheet = {};\n\t\t\t\t\tvar range = { s: { c: 0, r: 0 }, e: { c: fields.length, r: rows.length } };\n\n\t\t\t\t\tXLSX.utils.sheet_add_aoa(sheet, rows);\n\n\t\t\t\t\tsheet['!ref'] = XLSX.utils.encode_range(range);\n\n\t\t\t\t\tvar merges = generateMerges();\n\n\t\t\t\t\tif (merges.length) {\n\t\t\t\t\t\tsheet[\"!merges\"] = merges;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn sheet;\n\t\t\t\t}\n\n\t\t\t\tfunction parseSimpleTitles() {\n\t\t\t\t\t//get field lists\n\t\t\t\t\tcolumns.forEach(function (column) {\n\t\t\t\t\t\ttitles.push(column.title);\n\t\t\t\t\t\tfields.push(column.field);\n\t\t\t\t\t});\n\n\t\t\t\t\trows.push(titles);\n\t\t\t\t}\n\n\t\t\t\tfunction parseColumnGroup(column, level) {\n\n\t\t\t\t\tif (typeof titles[level] === \"undefined\") {\n\t\t\t\t\t\ttitles[level] = [];\n\t\t\t\t\t}\n\n\t\t\t\t\tif (typeof groupColumnIndexs[level] === \"undefined\") {\n\t\t\t\t\t\tgroupColumnIndexs[level] = [];\n\t\t\t\t\t}\n\n\t\t\t\t\tif (column.width > 1) {\n\n\t\t\t\t\t\tgroupColumnIndexs[level].push({\n\t\t\t\t\t\t\ttype: \"hoz\",\n\t\t\t\t\t\t\tstart: titles[level].length,\n\t\t\t\t\t\t\tend: titles[level].length + column.width - 1\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\ttitles[level].push(column.title);\n\n\t\t\t\t\tif (column.subGroups) {\n\t\t\t\t\t\tcolumn.subGroups.forEach(function (subGroup) {\n\t\t\t\t\t\t\tparseColumnGroup(subGroup, level + 1);\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfields.push(column.definition.field);\n\t\t\t\t\t\tpadColumnTitles(fields.length - 1, level);\n\n\t\t\t\t\t\tgroupColumnIndexs[level].push({\n\t\t\t\t\t\t\ttype: \"vert\",\n\t\t\t\t\t\t\tstart: fields.length - 1\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfunction padColumnTitles() {\n\t\t\t\t\tvar max = 0;\n\n\t\t\t\t\ttitles.forEach(function (title) {\n\t\t\t\t\t\tvar len = title.length;\n\t\t\t\t\t\tif (len > max) {\n\t\t\t\t\t\t\tmax = len;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\ttitles.forEach(function (title) {\n\t\t\t\t\t\tvar len = title.length;\n\t\t\t\t\t\tif (len < max) {\n\t\t\t\t\t\t\tfor (var i = len; i < max; i++) {\n\t\t\t\t\t\t\t\ttitle.push(\"\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (config.columnGroups) {\n\t\t\t\t\tcolumns.forEach(function (column) {\n\t\t\t\t\t\tparseColumnGroup(column, 0);\n\t\t\t\t\t});\n\n\t\t\t\t\ttitles.forEach(function (title) {\n\t\t\t\t\t\trows.push(title);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tparseSimpleTitles();\n\t\t\t\t}\n\n\t\t\t\tfunction generateMerges() {\n\t\t\t\t\tvar output = [];\n\n\t\t\t\t\tgroupRowIndexs.forEach(function (index) {\n\t\t\t\t\t\toutput.push({ s: { r: index, c: 0 }, e: { r: index, c: fields.length - 1 } });\n\t\t\t\t\t});\n\n\t\t\t\t\tgroupColumnIndexs.forEach(function (merges, level) {\n\t\t\t\t\t\tmerges.forEach(function (merge) {\n\t\t\t\t\t\t\tif (merge.type === \"hoz\") {\n\t\t\t\t\t\t\t\toutput.push({ s: { r: level, c: merge.start }, e: { r: level, c: merge.end } });\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (level != titles.length - 1) {\n\t\t\t\t\t\t\t\t\toutput.push({ s: { r: level, c: merge.start }, e: { r: titles.length - 1, c: merge.start } });\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\n\t\t\t\t\treturn output;\n\t\t\t\t}\n\n\t\t\t\t//generate each row of the table\n\t\t\t\tfunction parseRows(data) {\n\t\t\t\t\tdata.forEach(function (row) {\n\t\t\t\t\t\trows.push(parseRow(row));\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tfunction parseRow(row) {\n\t\t\t\t\tvar rowData = [];\n\n\t\t\t\t\tfields.forEach(function (field) {\n\t\t\t\t\t\tvar value = self.getFieldValue(field, row);\n\t\t\t\t\t\trowData.push(!(value instanceof Date) && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === \"object\" ? JSON.stringify(value) : value);\n\t\t\t\t\t});\n\n\t\t\t\t\treturn rowData;\n\t\t\t\t}\n\n\t\t\t\tfunction addCalcRow(calcs, selector, pos) {\n\t\t\t\t\tvar calcData = calcs[selector];\n\n\t\t\t\t\tif (calcData) {\n\t\t\t\t\t\tif (pos) {\n\t\t\t\t\t\t\tcalcData = calcData[pos];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (Object.keys(calcData).length) {\n\t\t\t\t\t\t\tcalcRowIndexs.push(rows.length);\n\t\t\t\t\t\t\trows.push(parseRow(calcData));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfunction parseGroup(group, calcObj) {\n\t\t\t\t\tvar groupData = [];\n\n\t\t\t\t\tgroupData.push(group.key);\n\n\t\t\t\t\tgroupRowIndexs.push(rows.length);\n\n\t\t\t\t\trows.push(groupData);\n\n\t\t\t\t\tif (group.subGroups) {\n\t\t\t\t\t\tgroup.subGroups.forEach(function (subGroup) {\n\t\t\t\t\t\t\tparseGroup(subGroup, calcObj[group.key] ? calcObj[group.key].groups || {} : {});\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif (config.columnCalcs) {\n\t\t\t\t\t\t\taddCalcRow(calcObj, group.key, \"top\");\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tparseRows(group.rows);\n\n\t\t\t\t\t\tif (config.columnCalcs) {\n\t\t\t\t\t\t\taddCalcRow(calcObj, group.key, \"bottom\");\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (config.rowGroups) {\n\t\t\t\t\tdata.forEach(function (group) {\n\t\t\t\t\t\tparseGroup(group, calcs);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tif (config.columnCalcs) {\n\t\t\t\t\t\taddCalcRow(calcs, \"top\");\n\t\t\t\t\t}\n\n\t\t\t\t\tparseRows(data);\n\n\t\t\t\t\tif (config.columnCalcs) {\n\t\t\t\t\t\taddCalcRow(calcs, \"bottom\");\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tworksheet = rowsToSheet();\n\n\t\t\t\treturn worksheet;\n\t\t\t}\n\n\t\t\tif (options.sheetOnly) {\n\t\t\t\tsetFileContents(generateSheet());\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (options.sheets) {\n\t\t\t\tfor (var sheet in options.sheets) {\n\n\t\t\t\t\tif (options.sheets[sheet] === true) {\n\t\t\t\t\t\tworkbook.SheetNames.push(sheet);\n\t\t\t\t\t\tworkbook.Sheets[sheet] = generateSheet();\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tworkbook.SheetNames.push(sheet);\n\n\t\t\t\t\t\tthis.table.modules.comms.send(options.sheets[sheet], \"download\", \"intercept\", {\n\t\t\t\t\t\t\ttype: \"xlsx\",\n\t\t\t\t\t\t\toptions: { sheetOnly: true },\n\t\t\t\t\t\t\tintercept: function intercept(data) {\n\t\t\t\t\t\t\t\tworkbook.Sheets[sheet] = data;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tworkbook.SheetNames.push(sheetName);\n\t\t\t\tworkbook.Sheets[sheetName] = generateSheet();\n\t\t\t}\n\n\t\t\t//convert workbook to binary array\n\t\t\tfunction s2ab(s) {\n\t\t\t\tvar buf = new ArrayBuffer(s.length);\n\t\t\t\tvar view = new Uint8Array(buf);\n\t\t\t\tfor (var i = 0; i != s.length; ++i) {\n\t\t\t\t\tview[i] = s.charCodeAt(i) & 0xFF;\n\t\t\t\t}return buf;\n\t\t\t}\n\n\t\t\toutput = XLSX.write(workbook, { bookType: 'xlsx', bookSST: true, type: 'binary' });\n\n\t\t\tsetFileContents(s2ab(output), \"application/octet-stream\");\n\t\t}\n\n\t};\n\n\tTabulator.prototype.registerModule(\"download\", Download);\n\n\tvar Edit = function Edit(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.currentCell = false; //hold currently editing cell\n\t\tthis.mouseClick = false; //hold mousedown state to prevent click binding being overriden by editor opening\n\t\tthis.recursionBlock = false; //prevent focus recursion\n\t\tthis.invalidEdit = false;\n\t};\n\n\t//initialize column editor\n\tEdit.prototype.initializeColumn = function (column) {\n\t\tvar self = this,\n\t\t config = {\n\t\t\teditor: false,\n\t\t\tblocked: false,\n\t\t\tcheck: column.definition.editable,\n\t\t\tparams: column.definition.editorParams || {}\n\t\t};\n\n\t\t//set column editor\n\t\tswitch (_typeof(column.definition.editor)) {\n\t\t\tcase \"string\":\n\n\t\t\t\tif (column.definition.editor === \"tick\") {\n\t\t\t\t\tcolumn.definition.editor = \"tickCross\";\n\t\t\t\t\tconsole.warn(\"DEPRECATION WANRING - the tick editor has been depricated, please use the tickCross editor\");\n\t\t\t\t}\n\n\t\t\t\tif (self.editors[column.definition.editor]) {\n\t\t\t\t\tconfig.editor = self.editors[column.definition.editor];\n\t\t\t\t} else {\n\t\t\t\t\tconsole.warn(\"Editor Error - No such editor found: \", column.definition.editor);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tconfig.editor = column.definition.editor;\n\t\t\t\tbreak;\n\n\t\t\tcase \"boolean\":\n\n\t\t\t\tif (column.definition.editor === true) {\n\n\t\t\t\t\tif (typeof column.definition.formatter !== \"function\") {\n\n\t\t\t\t\t\tif (column.definition.formatter === \"tick\") {\n\t\t\t\t\t\t\tcolumn.definition.formatter = \"tickCross\";\n\t\t\t\t\t\t\tconsole.warn(\"DEPRECATION WANRING - the tick editor has been depricated, please use the tickCross editor\");\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (self.editors[column.definition.formatter]) {\n\t\t\t\t\t\t\tconfig.editor = self.editors[column.definition.formatter];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconfig.editor = self.editors[\"input\"];\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.warn(\"Editor Error - Cannot auto lookup editor for a custom formatter: \", column.definition.formatter);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif (config.editor) {\n\t\t\tcolumn.modules.edit = config;\n\t\t}\n\t};\n\n\tEdit.prototype.getCurrentCell = function () {\n\t\treturn this.currentCell ? this.currentCell.getComponent() : false;\n\t};\n\n\tEdit.prototype.clearEditor = function () {\n\t\tvar cell = this.currentCell,\n\t\t cellEl;\n\n\t\tthis.invalidEdit = false;\n\n\t\tif (cell) {\n\t\t\tthis.currentCell = false;\n\n\t\t\tcellEl = cell.getElement();\n\t\t\tcellEl.classList.remove(\"tabulator-validation-fail\");\n\t\t\tcellEl.classList.remove(\"tabulator-editing\");\n\t\t\twhile (cellEl.firstChild) {\n\t\t\t\tcellEl.removeChild(cellEl.firstChild);\n\t\t\t}cell.row.getElement().classList.remove(\"tabulator-row-editing\");\n\t\t}\n\t};\n\n\tEdit.prototype.cancelEdit = function () {\n\n\t\tif (this.currentCell) {\n\t\t\tvar cell = this.currentCell;\n\t\t\tvar component = this.currentCell.getComponent();\n\n\t\t\tthis.clearEditor();\n\t\t\tcell.setValueActual(cell.getValue());\n\n\t\t\tif (cell.column.cellEvents.cellEditCancelled) {\n\t\t\t\tcell.column.cellEvents.cellEditCancelled.call(this.table, component);\n\t\t\t}\n\n\t\t\tthis.table.options.cellEditCancelled.call(this.table, component);\n\t\t}\n\t};\n\n\t//return a formatted value for a cell\n\tEdit.prototype.bindEditor = function (cell) {\n\t\tvar self = this,\n\t\t element = cell.getElement();\n\n\t\telement.setAttribute(\"tabindex\", 0);\n\n\t\telement.addEventListener(\"click\", function (e) {\n\t\t\tif (!element.classList.contains(\"tabulator-editing\")) {\n\t\t\t\telement.focus();\n\t\t\t}\n\t\t});\n\n\t\telement.addEventListener(\"mousedown\", function (e) {\n\t\t\tself.mouseClick = true;\n\t\t});\n\n\t\telement.addEventListener(\"focus\", function (e) {\n\t\t\tif (!self.recursionBlock) {\n\t\t\t\tself.edit(cell, e, false);\n\t\t\t}\n\t\t});\n\t};\n\n\tEdit.prototype.focusCellNoEvent = function (cell) {\n\t\tthis.recursionBlock = true;\n\t\tif (this.table.browser !== \"ie\") {\n\t\t\tcell.getElement().focus();\n\t\t}\n\t\tthis.recursionBlock = false;\n\t};\n\n\tEdit.prototype.editCell = function (cell, forceEdit) {\n\t\tthis.focusCellNoEvent(cell);\n\t\tthis.edit(cell, false, forceEdit);\n\t};\n\n\tEdit.prototype.edit = function (cell, e, forceEdit) {\n\t\tvar self = this,\n\t\t allowEdit = true,\n\t\t rendered = function rendered() {},\n\t\t element = cell.getElement(),\n\t\t cellEditor,\n\t\t component,\n\t\t params;\n\n\t\t//prevent editing if another cell is refusing to leave focus (eg. validation fail)\n\t\tif (this.currentCell) {\n\t\t\tif (!this.invalidEdit) {\n\t\t\t\tthis.cancelEdit();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t//handle successfull value change\n\t\tfunction success(value) {\n\n\t\t\tif (self.currentCell === cell) {\n\t\t\t\tvar valid = true;\n\n\t\t\t\tif (cell.column.modules.validate && self.table.modExists(\"validate\")) {\n\t\t\t\t\tvalid = self.table.modules.validate.validate(cell.column.modules.validate, cell.getComponent(), value);\n\t\t\t\t}\n\n\t\t\t\tif (valid === true) {\n\t\t\t\t\tself.clearEditor();\n\t\t\t\t\tcell.setValue(value, true);\n\n\t\t\t\t\tif (self.table.options.dataTree && self.table.modExists(\"dataTree\")) {\n\t\t\t\t\t\tself.table.modules.dataTree.checkForRestyle(cell);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tself.invalidEdit = true;\n\t\t\t\t\telement.classList.add(\"tabulator-validation-fail\");\n\t\t\t\t\tself.focusCellNoEvent(cell);\n\t\t\t\t\trendered();\n\t\t\t\t\tself.table.options.validationFailed.call(self.table, cell.getComponent(), value, valid);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// console.warn(\"Edit Success Error - cannot call success on a cell that is no longer being edited\");\n\t\t\t}\n\t\t}\n\n\t\t//handle aborted edit\n\t\tfunction cancel() {\n\t\t\tif (self.currentCell === cell) {\n\t\t\t\tself.cancelEdit();\n\n\t\t\t\tif (self.table.options.dataTree && self.table.modExists(\"dataTree\")) {\n\t\t\t\t\tself.table.modules.dataTree.checkForRestyle(cell);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// console.warn(\"Edit Success Error - cannot call cancel on a cell that is no longer being edited\");\n\t\t\t}\n\t\t}\n\n\t\tfunction onRendered(callback) {\n\t\t\trendered = callback;\n\t\t}\n\n\t\tif (!cell.column.modules.edit.blocked) {\n\t\t\tif (e) {\n\t\t\t\te.stopPropagation();\n\t\t\t}\n\n\t\t\tswitch (_typeof(cell.column.modules.edit.check)) {\n\t\t\t\tcase \"function\":\n\t\t\t\t\tallowEdit = cell.column.modules.edit.check(cell.getComponent());\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"boolean\":\n\t\t\t\t\tallowEdit = cell.column.modules.edit.check;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (allowEdit || forceEdit) {\n\n\t\t\t\tself.cancelEdit();\n\n\t\t\t\tself.currentCell = cell;\n\n\t\t\t\tcomponent = cell.getComponent();\n\n\t\t\t\tif (this.mouseClick) {\n\t\t\t\t\tthis.mouseClick = false;\n\n\t\t\t\t\tif (cell.column.cellEvents.cellClick) {\n\t\t\t\t\t\tcell.column.cellEvents.cellClick.call(this.table, e, component);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (cell.column.cellEvents.cellEditing) {\n\t\t\t\t\tcell.column.cellEvents.cellEditing.call(this.table, component);\n\t\t\t\t}\n\n\t\t\t\tself.table.options.cellEditing.call(this.table, component);\n\n\t\t\t\tparams = typeof cell.column.modules.edit.params === \"function\" ? cell.column.modules.edit.params(component) : cell.column.modules.edit.params;\n\n\t\t\t\tcellEditor = cell.column.modules.edit.editor.call(self, component, onRendered, success, cancel, params);\n\n\t\t\t\t//if editor returned, add to DOM, if false, abort edit\n\t\t\t\tif (cellEditor !== false) {\n\n\t\t\t\t\tif (cellEditor instanceof Node) {\n\t\t\t\t\t\telement.classList.add(\"tabulator-editing\");\n\t\t\t\t\t\tcell.row.getElement().classList.add(\"tabulator-row-editing\");\n\t\t\t\t\t\twhile (element.firstChild) {\n\t\t\t\t\t\t\telement.removeChild(element.firstChild);\n\t\t\t\t\t\t}element.appendChild(cellEditor);\n\n\t\t\t\t\t\t//trigger onRendered Callback\n\t\t\t\t\t\trendered();\n\n\t\t\t\t\t\t//prevent editing from triggering rowClick event\n\t\t\t\t\t\tvar children = element.children;\n\n\t\t\t\t\t\tfor (var i = 0; i < children.length; i++) {\n\t\t\t\t\t\t\tchildren[i].addEventListener(\"click\", function (e) {\n\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.warn(\"Edit Error - Editor should return an instance of Node, the editor returned:\", cellEditor);\n\t\t\t\t\t\telement.blur();\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\telement.blur();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t} else {\n\t\t\t\tthis.mouseClick = false;\n\t\t\t\telement.blur();\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} else {\n\t\t\tthis.mouseClick = false;\n\t\t\telement.blur();\n\t\t\treturn false;\n\t\t}\n\t};\n\n\t//default data editors\n\tEdit.prototype.editors = {\n\n\t\t//input element\n\t\tinput: function input(cell, onRendered, success, cancel, editorParams) {\n\n\t\t\t//create and style input\n\t\t\tvar cellValue = cell.getValue(),\n\t\t\t input = document.createElement(\"input\");\n\n\t\t\tinput.setAttribute(\"type\", editorParams.search ? \"search\" : \"text\");\n\n\t\t\tinput.style.padding = \"4px\";\n\t\t\tinput.style.width = \"100%\";\n\t\t\tinput.style.boxSizing = \"border-box\";\n\n\t\t\tinput.value = typeof cellValue !== \"undefined\" ? cellValue : \"\";\n\n\t\t\tonRendered(function () {\n\t\t\t\tinput.focus();\n\t\t\t\tinput.style.height = \"100%\";\n\t\t\t});\n\n\t\t\tfunction onChange(e) {\n\t\t\t\tif ((cellValue === null || typeof cellValue === \"undefined\") && input.value !== \"\" || input.value != cellValue) {\n\t\t\t\t\tsuccess(input.value);\n\t\t\t\t} else {\n\t\t\t\t\tcancel();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//submit new value on blur or change\n\t\t\tinput.addEventListener(\"change\", onChange);\n\t\t\tinput.addEventListener(\"blur\", onChange);\n\n\t\t\t//submit new value on enter\n\t\t\tinput.addEventListener(\"keydown\", function (e) {\n\t\t\t\tswitch (e.keyCode) {\n\t\t\t\t\tcase 13:\n\t\t\t\t\t\tsuccess(input.value);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 27:\n\t\t\t\t\t\tcancel();\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn input;\n\t\t},\n\n\t\t//resizable text area element\n\t\ttextarea: function textarea(cell, onRendered, success, cancel, editorParams) {\n\t\t\tvar self = this,\n\t\t\t cellValue = cell.getValue(),\n\t\t\t value = String(cellValue !== null && typeof cellValue !== \"undefined\" ? cellValue : \"\"),\n\t\t\t count = (value.match(/(?:\\r\\n|\\r|\\n)/g) || []).length + 1,\n\t\t\t input = document.createElement(\"textarea\"),\n\t\t\t scrollHeight = 0;\n\n\t\t\t//create and style input\n\t\t\tinput.style.display = \"block\";\n\t\t\tinput.style.padding = \"2px\";\n\t\t\tinput.style.height = \"100%\";\n\t\t\tinput.style.width = \"100%\";\n\t\t\tinput.style.boxSizing = \"border-box\";\n\t\t\tinput.style.whiteSpace = \"pre-wrap\";\n\t\t\tinput.style.resize = \"none\";\n\n\t\t\tinput.value = value;\n\n\t\t\tonRendered(function () {\n\t\t\t\tinput.focus();\n\t\t\t\tinput.style.height = \"100%\";\n\t\t\t});\n\n\t\t\tfunction onChange(e) {\n\n\t\t\t\tif ((cellValue === null || typeof cellValue === \"undefined\") && input.value !== \"\" || input.value != cellValue) {\n\t\t\t\t\tsuccess(input.value);\n\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\tcell.getRow().normalizeHeight();\n\t\t\t\t\t}, 300);\n\t\t\t\t} else {\n\t\t\t\t\tcancel();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//submit new value on blur or change\n\t\t\tinput.addEventListener(\"change\", onChange);\n\t\t\tinput.addEventListener(\"blur\", onChange);\n\n\t\t\tinput.addEventListener(\"keyup\", function () {\n\n\t\t\t\tinput.style.height = \"\";\n\n\t\t\t\tvar heightNow = input.scrollHeight;\n\n\t\t\t\tinput.style.height = heightNow + \"px\";\n\n\t\t\t\tif (heightNow != scrollHeight) {\n\t\t\t\t\tscrollHeight = heightNow;\n\t\t\t\t\tcell.getRow().normalizeHeight();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tinput.addEventListener(\"keydown\", function (e) {\n\t\t\t\tif (e.keyCode == 27) {\n\t\t\t\t\tcancel();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn input;\n\t\t},\n\n\t\t//input element with type of number\n\t\tnumber: function number(cell, onRendered, success, cancel, editorParams) {\n\n\t\t\tvar cellValue = cell.getValue(),\n\t\t\t input = document.createElement(\"input\");\n\n\t\t\tinput.setAttribute(\"type\", \"number\");\n\n\t\t\tif (typeof editorParams.max != \"undefined\") {\n\t\t\t\tinput.setAttribute(\"max\", editorParams.max);\n\t\t\t}\n\n\t\t\tif (typeof editorParams.min != \"undefined\") {\n\t\t\t\tinput.setAttribute(\"min\", editorParams.min);\n\t\t\t}\n\n\t\t\tif (typeof editorParams.step != \"undefined\") {\n\t\t\t\tinput.setAttribute(\"step\", editorParams.step);\n\t\t\t}\n\n\t\t\t//create and style input\n\t\t\tinput.style.padding = \"4px\";\n\t\t\tinput.style.width = \"100%\";\n\t\t\tinput.style.boxSizing = \"border-box\";\n\n\t\t\tinput.value = cellValue;\n\n\t\t\tvar blurFunc = function blurFunc(e) {\n\t\t\t\tonChange();\n\t\t\t};\n\n\t\t\tonRendered(function () {\n\t\t\t\t//submit new value on blur\n\t\t\t\tinput.removeEventListener(\"blur\", blurFunc);\n\n\t\t\t\tinput.focus();\n\t\t\t\tinput.style.height = \"100%\";\n\n\t\t\t\t//submit new value on blur\n\t\t\t\tinput.addEventListener(\"blur\", blurFunc);\n\t\t\t});\n\n\t\t\tfunction onChange() {\n\t\t\t\tvar value = input.value;\n\n\t\t\t\tif (!isNaN(value) && value !== \"\") {\n\t\t\t\t\tvalue = Number(value);\n\t\t\t\t}\n\n\t\t\t\tif (value != cellValue) {\n\t\t\t\t\tsuccess(value);\n\t\t\t\t} else {\n\t\t\t\t\tcancel();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//submit new value on enter\n\t\t\tinput.addEventListener(\"keydown\", function (e) {\n\t\t\t\tswitch (e.keyCode) {\n\t\t\t\t\tcase 13:\n\t\t\t\t\tcase 9:\n\t\t\t\t\t\tonChange();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 27:\n\t\t\t\t\t\tcancel();\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn input;\n\t\t},\n\n\t\t//input element with type of number\n\t\trange: function range(cell, onRendered, success, cancel, editorParams) {\n\n\t\t\tvar cellValue = cell.getValue(),\n\t\t\t input = document.createElement(\"input\");\n\n\t\t\tinput.setAttribute(\"type\", \"range\");\n\n\t\t\tif (typeof editorParams.max != \"undefined\") {\n\t\t\t\tinput.setAttribute(\"max\", editorParams.max);\n\t\t\t}\n\n\t\t\tif (typeof editorParams.min != \"undefined\") {\n\t\t\t\tinput.setAttribute(\"min\", editorParams.min);\n\t\t\t}\n\n\t\t\tif (typeof editorParams.step != \"undefined\") {\n\t\t\t\tinput.setAttribute(\"step\", editorParams.step);\n\t\t\t}\n\n\t\t\t//create and style input\n\t\t\tinput.style.padding = \"4px\";\n\t\t\tinput.style.width = \"100%\";\n\t\t\tinput.style.boxSizing = \"border-box\";\n\n\t\t\tinput.value = cellValue;\n\n\t\t\tonRendered(function () {\n\t\t\t\tinput.focus();\n\t\t\t\tinput.style.height = \"100%\";\n\t\t\t});\n\n\t\t\tfunction onChange() {\n\t\t\t\tvar value = input.value;\n\n\t\t\t\tif (!isNaN(value) && value !== \"\") {\n\t\t\t\t\tvalue = Number(value);\n\t\t\t\t}\n\n\t\t\t\tif (value != cellValue) {\n\t\t\t\t\tsuccess(value);\n\t\t\t\t} else {\n\t\t\t\t\tcancel();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//submit new value on blur\n\t\t\tinput.addEventListener(\"blur\", function (e) {\n\t\t\t\tonChange();\n\t\t\t});\n\n\t\t\t//submit new value on enter\n\t\t\tinput.addEventListener(\"keydown\", function (e) {\n\t\t\t\tswitch (e.keyCode) {\n\t\t\t\t\tcase 13:\n\t\t\t\t\tcase 9:\n\t\t\t\t\t\tonChange();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 27:\n\t\t\t\t\t\tcancel();\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn input;\n\t\t},\n\n\t\t//select\n\t\tselect: function select(cell, onRendered, success, cancel, editorParams) {\n\t\t\tvar self = this,\n\t\t\t cellEl = cell.getElement(),\n\t\t\t initialValue = cell.getValue(),\n\t\t\t input = document.createElement(\"input\"),\n\t\t\t listEl = document.createElement(\"div\"),\n\t\t\t dataItems = [],\n\t\t\t displayItems = [],\n\t\t\t currentItem = {},\n\t\t\t blurable = true;\n\n\t\t\tthis.table.rowManager.element.addEventListener(\"scroll\", cancelItem);\n\n\t\t\tif (Array.isArray(editorParams) || !Array.isArray(editorParams) && (typeof editorParams === 'undefined' ? 'undefined' : _typeof(editorParams)) === \"object\" && !editorParams.values) {\n\t\t\t\tconsole.warn(\"DEPRECATION WANRING - values for the select editor must now be passed into the values property of the editorParams object, not as the editorParams object\");\n\t\t\t\teditorParams = { values: editorParams };\n\t\t\t}\n\n\t\t\tfunction getUniqueColumnValues() {\n\t\t\t\tvar output = {},\n\t\t\t\t column = cell.getColumn()._getSelf(),\n\t\t\t\t data = self.table.getData();\n\n\t\t\t\tdata.forEach(function (row) {\n\t\t\t\t\tvar val = column.getFieldValue(row);\n\n\t\t\t\t\tif (val !== null && typeof val !== \"undefined\" && val !== \"\") {\n\t\t\t\t\t\toutput[val] = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif (editorParams.sortValuesList) {\n\t\t\t\t\tif (editorParams.sortValuesList == \"asc\") {\n\t\t\t\t\t\toutput = Object.keys(output).sort();\n\t\t\t\t\t} else {\n\t\t\t\t\t\toutput = Object.keys(output).sort().reverse();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\toutput = Object.keys(output);\n\t\t\t\t}\n\n\t\t\t\treturn output;\n\t\t\t}\n\n\t\t\tfunction parseItems(inputValues, curentValue) {\n\t\t\t\tvar dataList = [];\n\t\t\t\tvar displayList = [];\n\n\t\t\t\tfunction processComplexListItem(item) {\n\t\t\t\t\tvar item = {\n\t\t\t\t\t\tlabel: editorParams.listItemFormatter ? editorParams.listItemFormatter(item.value, item.label) : item.label,\n\t\t\t\t\t\tvalue: item.value,\n\t\t\t\t\t\telement: false\n\t\t\t\t\t};\n\n\t\t\t\t\tif (item.value === curentValue || !isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue)) {\n\t\t\t\t\t\tsetCurrentItem(item);\n\t\t\t\t\t}\n\n\t\t\t\t\tdataList.push(item);\n\t\t\t\t\tdisplayList.push(item);\n\n\t\t\t\t\treturn item;\n\t\t\t\t}\n\n\t\t\t\tif (typeof inputValues == \"function\") {\n\t\t\t\t\tinputValues = inputValues(cell);\n\t\t\t\t}\n\n\t\t\t\tif (Array.isArray(inputValues)) {\n\t\t\t\t\tinputValues.forEach(function (value) {\n\t\t\t\t\t\tvar item;\n\n\t\t\t\t\t\tif ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === \"object\") {\n\n\t\t\t\t\t\t\tif (value.options) {\n\t\t\t\t\t\t\t\titem = {\n\t\t\t\t\t\t\t\t\tlabel: value.label,\n\t\t\t\t\t\t\t\t\tgroup: true,\n\t\t\t\t\t\t\t\t\telement: false\n\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\tdisplayList.push(item);\n\n\t\t\t\t\t\t\t\tvalue.options.forEach(function (item) {\n\t\t\t\t\t\t\t\t\tprocessComplexListItem(item);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tprocessComplexListItem(value);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\titem = {\n\t\t\t\t\t\t\t\tlabel: editorParams.listItemFormatter ? editorParams.listItemFormatter(value, value) : value,\n\t\t\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\t\t\telement: false\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tif (item.value === curentValue || !isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue)) {\n\t\t\t\t\t\t\t\tsetCurrentItem(item);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tdataList.push(item);\n\t\t\t\t\t\t\tdisplayList.push(item);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tfor (var key in inputValues) {\n\t\t\t\t\t\tvar item = {\n\t\t\t\t\t\t\tlabel: editorParams.listItemFormatter ? editorParams.listItemFormatter(key, inputValues[key]) : inputValues[key],\n\t\t\t\t\t\t\tvalue: key,\n\t\t\t\t\t\t\telement: false\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (item.value === curentValue || !isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue)) {\n\t\t\t\t\t\t\tsetCurrentItem(item);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdataList.push(item);\n\t\t\t\t\t\tdisplayList.push(item);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tdataItems = dataList;\n\t\t\t\tdisplayItems = displayList;\n\n\t\t\t\tfillList();\n\t\t\t}\n\n\t\t\tfunction fillList() {\n\t\t\t\twhile (listEl.firstChild) {\n\t\t\t\t\tlistEl.removeChild(listEl.firstChild);\n\t\t\t\t}displayItems.forEach(function (item) {\n\t\t\t\t\tvar el = item.element;\n\n\t\t\t\t\tif (!el) {\n\n\t\t\t\t\t\tif (item.group) {\n\t\t\t\t\t\t\tel = document.createElement(\"div\");\n\t\t\t\t\t\t\tel.classList.add(\"tabulator-edit-select-list-group\");\n\t\t\t\t\t\t\tel.tabIndex = 0;\n\t\t\t\t\t\t\tel.innerHTML = item.label === \"\" ? \" \" : item.label;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tel = document.createElement(\"div\");\n\t\t\t\t\t\t\tel.classList.add(\"tabulator-edit-select-list-item\");\n\t\t\t\t\t\t\tel.tabIndex = 0;\n\t\t\t\t\t\t\tel.innerHTML = item.label === \"\" ? \" \" : item.label;\n\n\t\t\t\t\t\t\tel.addEventListener(\"click\", function () {\n\t\t\t\t\t\t\t\tsetCurrentItem(item);\n\t\t\t\t\t\t\t\tchooseItem();\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tif (item === currentItem) {\n\t\t\t\t\t\t\t\tel.classList.add(\"active\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tel.addEventListener(\"mousedown\", function () {\n\t\t\t\t\t\t\tblurable = false;\n\n\t\t\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\t\t\tblurable = true;\n\t\t\t\t\t\t\t}, 10);\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\titem.element = el;\n\t\t\t\t\t}\n\n\t\t\t\t\tlistEl.appendChild(el);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tfunction setCurrentItem(item) {\n\n\t\t\t\tif (currentItem && currentItem.element) {\n\t\t\t\t\tcurrentItem.element.classList.remove(\"active\");\n\t\t\t\t}\n\n\t\t\t\tcurrentItem = item;\n\t\t\t\tinput.value = item.label === \" \" ? \"\" : item.label;\n\n\t\t\t\tif (item.element) {\n\t\t\t\t\titem.element.classList.add(\"active\");\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction chooseItem() {\n\t\t\t\thideList();\n\n\t\t\t\tif (initialValue !== currentItem.value) {\n\t\t\t\t\tinitialValue = currentItem.value;\n\t\t\t\t\tsuccess(currentItem.value);\n\t\t\t\t} else {\n\t\t\t\t\tcancel();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction cancelItem() {\n\t\t\t\thideList();\n\t\t\t\tcancel();\n\t\t\t}\n\n\t\t\tfunction showList() {\n\t\t\t\tif (!listEl.parentNode) {\n\n\t\t\t\t\tif (editorParams.values === true) {\n\t\t\t\t\t\tparseItems(getUniqueColumnValues(), initialValue);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tparseItems(editorParams.values || [], initialValue);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar offset = Tabulator.prototype.helpers.elOffset(cellEl);\n\n\t\t\t\t\tlistEl.style.minWidth = cellEl.offsetWidth + \"px\";\n\n\t\t\t\t\tlistEl.style.top = offset.top + cellEl.offsetHeight + \"px\";\n\t\t\t\t\tlistEl.style.left = offset.left + \"px\";\n\t\t\t\t\tdocument.body.appendChild(listEl);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction hideList() {\n\t\t\t\tif (listEl.parentNode) {\n\t\t\t\t\tlistEl.parentNode.removeChild(listEl);\n\t\t\t\t}\n\n\t\t\t\tremoveScrollListener();\n\t\t\t}\n\n\t\t\tfunction removeScrollListener() {\n\t\t\t\tself.table.rowManager.element.removeEventListener(\"scroll\", cancelItem);\n\t\t\t}\n\n\t\t\t//style input\n\t\t\tinput.setAttribute(\"type\", \"text\");\n\n\t\t\tinput.style.padding = \"4px\";\n\t\t\tinput.style.width = \"100%\";\n\t\t\tinput.style.boxSizing = \"border-box\";\n\t\t\tinput.style.cursor = \"default\";\n\t\t\tinput.readOnly = this.currentCell != false;\n\n\t\t\tinput.value = typeof initialValue !== \"undefined\" || initialValue === null ? initialValue : \"\";\n\n\t\t\tif (editorParams.values === true) {\n\t\t\t\tparseItems(getUniqueColumnValues(), initialValue);\n\t\t\t} else {\n\t\t\t\tparseItems(editorParams.values || [], initialValue);\n\t\t\t}\n\n\t\t\t//allow key based navigation\n\t\t\tinput.addEventListener(\"keydown\", function (e) {\n\t\t\t\tvar index;\n\n\t\t\t\tswitch (e.keyCode) {\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\t//up arrow\n\t\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\t\tindex = dataItems.indexOf(currentItem);\n\n\t\t\t\t\t\tif (index > 0) {\n\t\t\t\t\t\t\tsetCurrentItem(dataItems[index - 1]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 40:\n\t\t\t\t\t\t//down arrow\n\t\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\t\tindex = dataItems.indexOf(currentItem);\n\n\t\t\t\t\t\tif (index < dataItems.length - 1) {\n\t\t\t\t\t\t\tif (index == -1) {\n\t\t\t\t\t\t\t\tsetCurrentItem(dataItems[0]);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tsetCurrentItem(dataItems[index + 1]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 37: //left arrow\n\t\t\t\t\tcase 39:\n\t\t\t\t\t\t//right arrow\n\t\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 13:\n\t\t\t\t\t\t//enter\n\t\t\t\t\t\tchooseItem();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 27:\n\t\t\t\t\t\t//escape\n\t\t\t\t\t\tcancelItem();\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tinput.addEventListener(\"blur\", function (e) {\n\t\t\t\tif (blurable) {\n\t\t\t\t\tcancelItem();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tinput.addEventListener(\"focus\", function (e) {\n\t\t\t\tshowList();\n\t\t\t});\n\n\t\t\t//style list element\n\t\t\tlistEl = document.createElement(\"div\");\n\t\t\tlistEl.classList.add(\"tabulator-edit-select-list\");\n\n\t\t\tonRendered(function () {\n\t\t\t\tinput.style.height = \"100%\";\n\t\t\t\tinput.focus();\n\t\t\t});\n\n\t\t\treturn input;\n\t\t},\n\n\t\t//autocomplete\n\t\tautocomplete: function autocomplete(cell, onRendered, success, cancel, editorParams) {\n\t\t\tvar self = this,\n\t\t\t cellEl = cell.getElement(),\n\t\t\t initialValue = cell.getValue(),\n\t\t\t input = document.createElement(\"input\"),\n\t\t\t listEl = document.createElement(\"div\"),\n\t\t\t allItems = [],\n\t\t\t displayItems = [],\n\t\t\t values = [],\n\t\t\t currentItem = {},\n\t\t\t blurable = true;\n\n\t\t\tthis.table.rowManager.element.addEventListener(\"scroll\", cancelItem);\n\n\t\t\tfunction getUniqueColumnValues() {\n\t\t\t\tvar output = {},\n\t\t\t\t column = cell.getColumn()._getSelf(),\n\t\t\t\t data = self.table.getData();\n\n\t\t\t\tdata.forEach(function (row) {\n\t\t\t\t\tvar val = column.getFieldValue(row);\n\n\t\t\t\t\tif (val !== null && typeof val !== \"undefined\" && val !== \"\") {\n\t\t\t\t\t\toutput[val] = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif (editorParams.sortValuesList) {\n\t\t\t\t\tif (editorParams.sortValuesList == \"asc\") {\n\t\t\t\t\t\toutput = Object.keys(output).sort();\n\t\t\t\t\t} else {\n\t\t\t\t\t\toutput = Object.keys(output).sort().reverse();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\toutput = Object.keys(output);\n\t\t\t\t}\n\n\t\t\t\treturn output;\n\t\t\t}\n\n\t\t\tfunction parseItems(inputValues, curentValue) {\n\t\t\t\tvar itemList = [];\n\n\t\t\t\tif (Array.isArray(inputValues)) {\n\t\t\t\t\tinputValues.forEach(function (value) {\n\t\t\t\t\t\tvar item = {\n\t\t\t\t\t\t\ttitle: editorParams.listItemFormatter ? editorParams.listItemFormatter(value, value) : value,\n\t\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\t\telement: false\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (item.value === curentValue || !isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue)) {\n\t\t\t\t\t\t\tsetCurrentItem(item);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\titemList.push(item);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tfor (var key in inputValues) {\n\t\t\t\t\t\tvar item = {\n\t\t\t\t\t\t\ttitle: editorParams.listItemFormatter ? editorParams.listItemFormatter(key, inputValues[key]) : inputValues[key],\n\t\t\t\t\t\t\tvalue: key,\n\t\t\t\t\t\t\telement: false\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (item.value === curentValue || !isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue)) {\n\t\t\t\t\t\t\tsetCurrentItem(item);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\titemList.push(item);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (editorParams.searchFunc) {\n\t\t\t\t\titemList.forEach(function (item) {\n\t\t\t\t\t\titem.search = {\n\t\t\t\t\t\t\ttitle: item.title,\n\t\t\t\t\t\t\tvalue: item.value\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tallItems = itemList;\n\t\t\t}\n\n\t\t\tfunction filterList(term, intialLoad) {\n\t\t\t\tvar matches = [],\n\t\t\t\t searchObjs = [],\n\t\t\t\t searchResults = [];\n\n\t\t\t\tif (editorParams.searchFunc) {\n\n\t\t\t\t\tallItems.forEach(function (item) {\n\t\t\t\t\t\tsearchObjs.push(item.search);\n\t\t\t\t\t});\n\n\t\t\t\t\tsearchResults = editorParams.searchFunc(term, searchObjs);\n\n\t\t\t\t\tsearchResults.forEach(function (result) {\n\t\t\t\t\t\tvar match = allItems.find(function (item) {\n\t\t\t\t\t\t\treturn item.search === result;\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (match) {\n\t\t\t\t\t\t\tmatches.push(match);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tif (term === \"\") {\n\n\t\t\t\t\t\tif (editorParams.showListOnEmpty) {\n\t\t\t\t\t\t\tallItems.forEach(function (item) {\n\t\t\t\t\t\t\t\tmatches.push(item);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tallItems.forEach(function (item) {\n\n\t\t\t\t\t\t\tif (item.value !== null || typeof item.value !== \"undefined\") {\n\t\t\t\t\t\t\t\tif (String(item.value).toLowerCase().indexOf(String(term).toLowerCase()) > -1 || String(item.title).toLowerCase().indexOf(String(term).toLowerCase()) > -1) {\n\t\t\t\t\t\t\t\t\tmatches.push(item);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tdisplayItems = matches;\n\n\t\t\t\tfillList(intialLoad);\n\t\t\t}\n\n\t\t\tfunction fillList(intialLoad) {\n\t\t\t\tvar current = false;\n\n\t\t\t\twhile (listEl.firstChild) {\n\t\t\t\t\tlistEl.removeChild(listEl.firstChild);\n\t\t\t\t}displayItems.forEach(function (item) {\n\t\t\t\t\tvar el = item.element;\n\n\t\t\t\t\tif (!el) {\n\t\t\t\t\t\tel = document.createElement(\"div\");\n\t\t\t\t\t\tel.classList.add(\"tabulator-edit-select-list-item\");\n\t\t\t\t\t\tel.tabIndex = 0;\n\t\t\t\t\t\tel.innerHTML = item.title;\n\n\t\t\t\t\t\tel.addEventListener(\"click\", function () {\n\t\t\t\t\t\t\tsetCurrentItem(item);\n\t\t\t\t\t\t\tchooseItem();\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tel.addEventListener(\"mousedown\", function () {\n\t\t\t\t\t\t\tblurable = false;\n\n\t\t\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\t\t\tblurable = true;\n\t\t\t\t\t\t\t}, 10);\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\titem.element = el;\n\n\t\t\t\t\t\tif (intialLoad && item.value == initialValue) {\n\t\t\t\t\t\t\tinput.value = item.title;\n\t\t\t\t\t\t\titem.element.classList.add(\"active\");\n\t\t\t\t\t\t\tcurrent = true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (item === currentItem) {\n\t\t\t\t\t\t\titem.element.classList.add(\"active\");\n\t\t\t\t\t\t\tcurrent = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tlistEl.appendChild(el);\n\t\t\t\t});\n\n\t\t\t\tif (!current) {\n\t\t\t\t\tsetCurrentItem(false);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction setCurrentItem(item, showInputValue) {\n\t\t\t\tif (currentItem && currentItem.element) {\n\t\t\t\t\tcurrentItem.element.classList.remove(\"active\");\n\t\t\t\t}\n\n\t\t\t\tcurrentItem = item;\n\n\t\t\t\tif (item && item.element) {\n\t\t\t\t\titem.element.classList.add(\"active\");\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction chooseItem() {\n\t\t\t\thideList();\n\n\t\t\t\tif (currentItem) {\n\t\t\t\t\tif (initialValue !== currentItem.value) {\n\t\t\t\t\t\tinitialValue = currentItem.value;\n\t\t\t\t\t\tinput.value = currentItem.title;\n\t\t\t\t\t\tsuccess(currentItem.value);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcancel();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (editorParams.freetext) {\n\t\t\t\t\t\tinitialValue = input.value;\n\t\t\t\t\t\tsuccess(input.value);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (editorParams.allowEmpty && input.value === \"\") {\n\t\t\t\t\t\t\tinitialValue = input.value;\n\t\t\t\t\t\t\tsuccess(input.value);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcancel();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction cancelItem() {\n\t\t\t\thideList();\n\t\t\t\tcancel();\n\t\t\t}\n\n\t\t\tfunction showList() {\n\t\t\t\tif (!listEl.parentNode) {\n\t\t\t\t\twhile (listEl.firstChild) {\n\t\t\t\t\t\tlistEl.removeChild(listEl.firstChild);\n\t\t\t\t\t}if (editorParams.values === true) {\n\t\t\t\t\t\tvalues = getUniqueColumnValues();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvalues = editorParams.values || [];\n\t\t\t\t\t}\n\n\t\t\t\t\tparseItems(values, initialValue);\n\n\t\t\t\t\tvar offset = Tabulator.prototype.helpers.elOffset(cellEl);\n\n\t\t\t\t\tlistEl.style.minWidth = cellEl.offsetWidth + \"px\";\n\n\t\t\t\t\tlistEl.style.top = offset.top + cellEl.offsetHeight + \"px\";\n\t\t\t\t\tlistEl.style.left = offset.left + \"px\";\n\t\t\t\t\tdocument.body.appendChild(listEl);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction hideList() {\n\t\t\t\tif (listEl.parentNode) {\n\t\t\t\t\tlistEl.parentNode.removeChild(listEl);\n\t\t\t\t}\n\n\t\t\t\tremoveScrollListener();\n\t\t\t}\n\n\t\t\tfunction removeScrollListener() {\n\t\t\t\tself.table.rowManager.element.removeEventListener(\"scroll\", cancelItem);\n\t\t\t}\n\n\t\t\t//style input\n\t\t\tinput.setAttribute(\"type\", \"search\");\n\n\t\t\tinput.style.padding = \"4px\";\n\t\t\tinput.style.width = \"100%\";\n\t\t\tinput.style.boxSizing = \"border-box\";\n\n\t\t\t//allow key based navigation\n\t\t\tinput.addEventListener(\"keydown\", function (e) {\n\t\t\t\tvar index;\n\n\t\t\t\tswitch (e.keyCode) {\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\t//up arrow\n\t\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\t\tindex = displayItems.indexOf(currentItem);\n\n\t\t\t\t\t\tif (index > 0) {\n\t\t\t\t\t\t\tsetCurrentItem(displayItems[index - 1]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsetCurrentItem(false);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 40:\n\t\t\t\t\t\t//down arrow\n\t\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\t\tindex = displayItems.indexOf(currentItem);\n\n\t\t\t\t\t\tif (index < displayItems.length - 1) {\n\t\t\t\t\t\t\tif (index == -1) {\n\t\t\t\t\t\t\t\tsetCurrentItem(displayItems[0]);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tsetCurrentItem(displayItems[index + 1]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 37: //left arrow\n\t\t\t\t\tcase 39:\n\t\t\t\t\t\t//right arrow\n\t\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 13:\n\t\t\t\t\t\t//enter\n\t\t\t\t\t\tchooseItem();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 27:\n\t\t\t\t\t\t//escape\n\t\t\t\t\t\tcancelItem();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 36: //home\n\t\t\t\t\tcase 35:\n\t\t\t\t\t\t//end\n\t\t\t\t\t\t//prevent table navigation while using input element\n\t\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tinput.addEventListener(\"keyup\", function (e) {\n\n\t\t\t\tswitch (e.keyCode) {\n\t\t\t\t\tcase 38: //up arrow\n\t\t\t\t\tcase 37: //left arrow\n\t\t\t\t\tcase 39: //up arrow\n\t\t\t\t\tcase 40: //right arrow\n\t\t\t\t\tcase 13: //enter\n\t\t\t\t\tcase 27:\n\t\t\t\t\t\t//escape\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tfilterList(input.value);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tinput.addEventListener(\"search\", function (e) {\n\t\t\t\tfilterList(input.value);\n\t\t\t});\n\n\t\t\tinput.addEventListener(\"blur\", function (e) {\n\t\t\t\tif (blurable) {\n\t\t\t\t\tchooseItem();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tinput.addEventListener(\"focus\", function (e) {\n\t\t\t\tvar value = typeof initialValue !== \"undefined\" || initialValue === null ? initialValue : \"\";\n\t\t\t\tshowList();\n\t\t\t\tinput.value = value;\n\t\t\t\tfilterList(value, true);\n\t\t\t});\n\n\t\t\t//style list element\n\t\t\tlistEl = document.createElement(\"div\");\n\t\t\tlistEl.classList.add(\"tabulator-edit-select-list\");\n\n\t\t\tonRendered(function () {\n\t\t\t\tinput.style.height = \"100%\";\n\t\t\t\tinput.focus();\n\t\t\t});\n\n\t\t\treturn input;\n\t\t},\n\n\t\t//start rating\n\t\tstar: function star(cell, onRendered, success, cancel, editorParams) {\n\t\t\tvar self = this,\n\t\t\t element = cell.getElement(),\n\t\t\t value = cell.getValue(),\n\t\t\t maxStars = element.getElementsByTagName(\"svg\").length || 5,\n\t\t\t size = element.getElementsByTagName(\"svg\")[0] ? element.getElementsByTagName(\"svg\")[0].getAttribute(\"width\") : 14,\n\t\t\t stars = [],\n\t\t\t starsHolder = document.createElement(\"div\"),\n\t\t\t star = document.createElementNS('http://www.w3.org/2000/svg', \"svg\");\n\n\t\t\t//change star type\n\t\t\tfunction starChange(val) {\n\t\t\t\tstars.forEach(function (star, i) {\n\t\t\t\t\tif (i < val) {\n\t\t\t\t\t\tif (self.table.browser == \"ie\") {\n\t\t\t\t\t\t\tstar.setAttribute(\"class\", \"tabulator-star-active\");\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tstar.classList.replace(\"tabulator-star-inactive\", \"tabulator-star-active\");\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstar.innerHTML = '<polygon fill=\"#488CE9\" stroke=\"#014AAE\" stroke-width=\"37.6152\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" points=\"259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 \"/>';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (self.table.browser == \"ie\") {\n\t\t\t\t\t\t\tstar.setAttribute(\"class\", \"tabulator-star-inactive\");\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tstar.classList.replace(\"tabulator-star-active\", \"tabulator-star-inactive\");\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstar.innerHTML = '<polygon fill=\"#010155\" stroke=\"#686868\" stroke-width=\"37.6152\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" points=\"259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 \"/>';\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t//build stars\n\t\t\tfunction buildStar(i) {\n\n\t\t\t\tvar starHolder = document.createElement(\"span\");\n\t\t\t\tvar nextStar = star.cloneNode(true);\n\n\t\t\t\tstars.push(nextStar);\n\n\t\t\t\tstarHolder.addEventListener(\"mouseenter\", function (e) {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\tstarChange(i);\n\t\t\t\t});\n\n\t\t\t\tstarHolder.addEventListener(\"mousemove\", function (e) {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t});\n\n\t\t\t\tstarHolder.addEventListener(\"click\", function (e) {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\tsuccess(i);\n\t\t\t\t});\n\n\t\t\t\tstarHolder.appendChild(nextStar);\n\t\t\t\tstarsHolder.appendChild(starHolder);\n\t\t\t}\n\n\t\t\t//handle keyboard navigation value change\n\t\t\tfunction changeValue(val) {\n\t\t\t\tvalue = val;\n\t\t\t\tstarChange(val);\n\t\t\t}\n\n\t\t\t//style cell\n\t\t\telement.style.whiteSpace = \"nowrap\";\n\t\t\telement.style.overflow = \"hidden\";\n\t\t\telement.style.textOverflow = \"ellipsis\";\n\n\t\t\t//style holding element\n\t\t\tstarsHolder.style.verticalAlign = \"middle\";\n\t\t\tstarsHolder.style.display = \"inline-block\";\n\t\t\tstarsHolder.style.padding = \"4px\";\n\n\t\t\t//style star\n\t\t\tstar.setAttribute(\"width\", size);\n\t\t\tstar.setAttribute(\"height\", size);\n\t\t\tstar.setAttribute(\"viewBox\", \"0 0 512 512\");\n\t\t\tstar.setAttribute(\"xml:space\", \"preserve\");\n\t\t\tstar.style.padding = \"0 1px\";\n\n\t\t\t//create correct number of stars\n\t\t\tfor (var i = 1; i <= maxStars; i++) {\n\t\t\t\tbuildStar(i);\n\t\t\t}\n\n\t\t\t//ensure value does not exceed number of stars\n\t\t\tvalue = Math.min(parseInt(value), maxStars);\n\n\t\t\t// set initial styling of stars\n\t\t\tstarChange(value);\n\n\t\t\tstarsHolder.addEventListener(\"mousemove\", function (e) {\n\t\t\t\tstarChange(0);\n\t\t\t});\n\n\t\t\tstarsHolder.addEventListener(\"click\", function (e) {\n\t\t\t\tsuccess(0);\n\t\t\t});\n\n\t\t\telement.addEventListener(\"blur\", function (e) {\n\t\t\t\tcancel();\n\t\t\t});\n\n\t\t\t//allow key based navigation\n\t\t\telement.addEventListener(\"keydown\", function (e) {\n\t\t\t\tswitch (e.keyCode) {\n\t\t\t\t\tcase 39:\n\t\t\t\t\t\t//right arrow\n\t\t\t\t\t\tchangeValue(value + 1);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 37:\n\t\t\t\t\t\t//left arrow\n\t\t\t\t\t\tchangeValue(value - 1);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 13:\n\t\t\t\t\t\t//enter\n\t\t\t\t\t\tsuccess(value);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 27:\n\t\t\t\t\t\t//escape\n\t\t\t\t\t\tcancel();\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn starsHolder;\n\t\t},\n\n\t\t//draggable progress bar\n\t\tprogress: function progress(cell, onRendered, success, cancel, editorParams) {\n\t\t\tvar element = cell.getElement(),\n\t\t\t max = typeof editorParams.max === \"undefined\" ? element.getElementsByTagName(\"div\")[0].getAttribute(\"max\") || 100 : editorParams.max,\n\t\t\t min = typeof editorParams.min === \"undefined\" ? element.getElementsByTagName(\"div\")[0].getAttribute(\"min\") || 0 : editorParams.min,\n\t\t\t percent = (max - min) / 100,\n\t\t\t value = cell.getValue() || 0,\n\t\t\t handle = document.createElement(\"div\"),\n\t\t\t bar = document.createElement(\"div\"),\n\t\t\t mouseDrag,\n\t\t\t mouseDragWidth;\n\n\t\t\t//set new value\n\t\t\tfunction updateValue() {\n\t\t\t\tvar calcVal = percent * Math.round(bar.offsetWidth / (element.clientWidth / 100)) + min;\n\t\t\t\tsuccess(calcVal);\n\t\t\t\telement.setAttribute(\"aria-valuenow\", calcVal);\n\t\t\t\telement.setAttribute(\"aria-label\", value);\n\t\t\t}\n\n\t\t\t//style handle\n\t\t\thandle.style.position = \"absolute\";\n\t\t\thandle.style.right = \"0\";\n\t\t\thandle.style.top = \"0\";\n\t\t\thandle.style.bottom = \"0\";\n\t\t\thandle.style.width = \"5px\";\n\t\t\thandle.classList.add(\"tabulator-progress-handle\");\n\n\t\t\t//style bar\n\t\t\tbar.style.display = \"inline-block\";\n\t\t\tbar.style.position = \"relative\";\n\t\t\t// bar.style.top = \"8px\";\n\t\t\t// bar.style.bottom = \"8px\";\n\t\t\t// bar.style.left = \"4px\";\n\t\t\t// bar.style.marginRight = \"4px\";\n\t\t\tbar.style.height = \"100%\";\n\t\t\tbar.style.backgroundColor = \"#488CE9\";\n\t\t\tbar.style.maxWidth = \"100%\";\n\t\t\tbar.style.minWidth = \"0%\";\n\n\t\t\t//style cell\n\t\t\telement.style.padding = \"4px 4px\";\n\n\t\t\t//make sure value is in range\n\t\t\tvalue = Math.min(parseFloat(value), max);\n\t\t\tvalue = Math.max(parseFloat(value), min);\n\n\t\t\t//workout percentage\n\t\t\tvalue = Math.round((value - min) / percent);\n\t\t\t// bar.style.right = value + \"%\";\n\t\t\tbar.style.width = value + \"%\";\n\n\t\t\telement.setAttribute(\"aria-valuemin\", min);\n\t\t\telement.setAttribute(\"aria-valuemax\", max);\n\n\t\t\tbar.appendChild(handle);\n\n\t\t\thandle.addEventListener(\"mousedown\", function (e) {\n\t\t\t\tmouseDrag = e.screenX;\n\t\t\t\tmouseDragWidth = bar.offsetWidth;\n\t\t\t});\n\n\t\t\thandle.addEventListener(\"mouseover\", function () {\n\t\t\t\thandle.style.cursor = \"ew-resize\";\n\t\t\t});\n\n\t\t\telement.addEventListener(\"mousemove\", function (e) {\n\t\t\t\tif (mouseDrag) {\n\t\t\t\t\tbar.style.width = mouseDragWidth + e.screenX - mouseDrag + \"px\";\n\t\t\t\t}\n\t\t\t});\n\n\t\t\telement.addEventListener(\"mouseup\", function (e) {\n\t\t\t\tif (mouseDrag) {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\te.stopImmediatePropagation();\n\n\t\t\t\t\tmouseDrag = false;\n\t\t\t\t\tmouseDragWidth = false;\n\n\t\t\t\t\tupdateValue();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t//allow key based navigation\n\t\t\telement.addEventListener(\"keydown\", function (e) {\n\t\t\t\tswitch (e.keyCode) {\n\t\t\t\t\tcase 39:\n\t\t\t\t\t\t//right arrow\n\t\t\t\t\t\tbar.style.width = bar.clientWidth + element.clientWidth / 100 + \"px\";\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 37:\n\t\t\t\t\t\t//left arrow\n\t\t\t\t\t\tbar.style.width = bar.clientWidth - element.clientWidth / 100 + \"px\";\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 13:\n\t\t\t\t\t\t//enter\n\t\t\t\t\t\tupdateValue();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 27:\n\t\t\t\t\t\t//escape\n\t\t\t\t\t\tcancel();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\t\t\t});\n\n\t\t\telement.addEventListener(\"blur\", function () {\n\t\t\t\tcancel();\n\t\t\t});\n\n\t\t\treturn bar;\n\t\t},\n\n\t\t//checkbox\n\t\ttickCross: function tickCross(cell, onRendered, success, cancel, editorParams) {\n\t\t\tvar value = cell.getValue(),\n\t\t\t input = document.createElement(\"input\"),\n\t\t\t tristate = editorParams.tristate,\n\t\t\t indetermValue = typeof editorParams.indeterminateValue === \"undefined\" ? null : editorParams.indeterminateValue,\n\t\t\t indetermState = false;\n\n\t\t\tinput.setAttribute(\"type\", \"checkbox\");\n\t\t\tinput.style.marginTop = \"5px\";\n\t\t\tinput.style.boxSizing = \"border-box\";\n\n\t\t\tinput.value = value;\n\n\t\t\tif (tristate && (typeof value === \"undefined\" || value === indetermValue || value === \"\")) {\n\t\t\t\tindetermState = true;\n\t\t\t\tinput.indeterminate = true;\n\t\t\t}\n\n\t\t\tif (this.table.browser != \"firefox\") {\n\t\t\t\t//prevent blur issue on mac firefox\n\t\t\t\tonRendered(function () {\n\t\t\t\t\tinput.focus();\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tinput.checked = value === true || value === \"true\" || value === \"True\" || value === 1;\n\n\t\t\tfunction setValue(blur) {\n\t\t\t\tif (tristate) {\n\t\t\t\t\tif (!blur) {\n\t\t\t\t\t\tif (input.checked && !indetermState) {\n\t\t\t\t\t\t\tinput.checked = false;\n\t\t\t\t\t\t\tinput.indeterminate = true;\n\t\t\t\t\t\t\tindetermState = true;\n\t\t\t\t\t\t\treturn indetermValue;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tindetermState = false;\n\t\t\t\t\t\t\treturn input.checked;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (indetermState) {\n\t\t\t\t\t\t\treturn indetermValue;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn input.checked;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\treturn input.checked;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//submit new value on blur\n\t\t\tinput.addEventListener(\"change\", function (e) {\n\t\t\t\tsuccess(setValue());\n\t\t\t});\n\n\t\t\tinput.addEventListener(\"blur\", function (e) {\n\t\t\t\tsuccess(setValue(true));\n\t\t\t});\n\n\t\t\t//submit new value on enter\n\t\t\tinput.addEventListener(\"keydown\", function (e) {\n\t\t\t\tif (e.keyCode == 13) {\n\t\t\t\t\tsuccess(setValue());\n\t\t\t\t}\n\t\t\t\tif (e.keyCode == 27) {\n\t\t\t\t\tcancel();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn input;\n\t\t}\n\t};\n\n\tTabulator.prototype.registerModule(\"edit\", Edit);\n\n\tvar Filter = function Filter(table) {\n\n\t\tthis.table = table; //hold Tabulator object\n\n\t\tthis.filterList = []; //hold filter list\n\t\tthis.headerFilters = {}; //hold column filters\n\t\tthis.headerFilterElements = []; //hold header filter elements for manipulation\n\t\tthis.headerFilterColumns = []; //hold columns that use header filters\n\n\t\tthis.changed = false; //has filtering changed since last render\n\t};\n\n\t//initialize column header filter\n\tFilter.prototype.initializeColumn = function (column, value) {\n\t\tvar self = this,\n\t\t field = column.getField(),\n\t\t prevSuccess,\n\t\t params;\n\n\t\t//handle successfull value change\n\t\tfunction success(value) {\n\t\t\tvar filterType = column.modules.filter.tagType == \"input\" && column.modules.filter.attrType == \"text\" || column.modules.filter.tagType == \"textarea\" ? \"partial\" : \"match\",\n\t\t\t type = \"\",\n\t\t\t filterFunc;\n\n\t\t\tif (typeof prevSuccess === \"undefined\" || prevSuccess !== value) {\n\n\t\t\t\tprevSuccess = value;\n\n\t\t\t\tif (!column.modules.filter.emptyFunc(value)) {\n\t\t\t\t\tcolumn.modules.filter.value = value;\n\n\t\t\t\t\tswitch (_typeof(column.definition.headerFilterFunc)) {\n\t\t\t\t\t\tcase \"string\":\n\t\t\t\t\t\t\tif (self.filters[column.definition.headerFilterFunc]) {\n\t\t\t\t\t\t\t\ttype = column.definition.headerFilterFunc;\n\t\t\t\t\t\t\t\tfilterFunc = function filterFunc(data) {\n\t\t\t\t\t\t\t\t\tvar params = column.definition.headerFilterFuncParams || {};\n\t\t\t\t\t\t\t\t\tvar fieldVal = column.getFieldValue(data);\n\n\t\t\t\t\t\t\t\t\tparams = typeof params === \"function\" ? params(value, fieldVal, data) : params;\n\n\t\t\t\t\t\t\t\t\treturn self.filters[column.definition.headerFilterFunc](value, fieldVal, data, params);\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconsole.warn(\"Header Filter Error - Matching filter function not found: \", column.definition.headerFilterFunc);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase \"function\":\n\t\t\t\t\t\t\tfilterFunc = function filterFunc(data) {\n\t\t\t\t\t\t\t\tvar params = column.definition.headerFilterFuncParams || {};\n\t\t\t\t\t\t\t\tvar fieldVal = column.getFieldValue(data);\n\n\t\t\t\t\t\t\t\tparams = typeof params === \"function\" ? params(value, fieldVal, data) : params;\n\n\t\t\t\t\t\t\t\treturn column.definition.headerFilterFunc(value, fieldVal, data, params);\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\ttype = filterFunc;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!filterFunc) {\n\t\t\t\t\t\tswitch (filterType) {\n\t\t\t\t\t\t\tcase \"partial\":\n\t\t\t\t\t\t\t\tfilterFunc = function filterFunc(data) {\n\t\t\t\t\t\t\t\t\tvar colVal = column.getFieldValue(data);\n\n\t\t\t\t\t\t\t\t\tif (typeof colVal !== 'undefined' && colVal !== null) {\n\t\t\t\t\t\t\t\t\t\treturn String(colVal).toLowerCase().indexOf(String(value).toLowerCase()) > -1;\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\ttype = \"like\";\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tfilterFunc = function filterFunc(data) {\n\t\t\t\t\t\t\t\t\treturn column.getFieldValue(data) == value;\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\ttype = \"=\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tself.headerFilters[field] = { value: value, func: filterFunc, type: type };\n\t\t\t\t} else {\n\t\t\t\t\tdelete self.headerFilters[field];\n\t\t\t\t}\n\n\t\t\t\tself.changed = true;\n\n\t\t\t\tself.table.rowManager.filterRefresh();\n\t\t\t}\n\t\t}\n\n\t\tcolumn.modules.filter = {\n\t\t\tsuccess: success,\n\t\t\tattrType: false,\n\t\t\ttagType: false,\n\t\t\temptyFunc: false\n\t\t};\n\n\t\tthis.generateHeaderFilterElement(column);\n\t};\n\n\tFilter.prototype.generateHeaderFilterElement = function (column, initialValue) {\n\t\tvar _this35 = this;\n\n\t\tvar self = this,\n\t\t success = column.modules.filter.success,\n\t\t field = column.getField(),\n\t\t filterElement,\n\t\t editor,\n\t\t editorElement,\n\t\t cellWrapper,\n\t\t typingTimer,\n\t\t searchTrigger,\n\t\t params;\n\n\t\t//handle aborted edit\n\t\tfunction cancel() {}\n\n\t\tif (column.modules.filter.headerElement && column.modules.filter.headerElement.parentNode) {\n\t\t\tvar oldFilterElement = column.modules.filter.headerElement.parentNode;\n\t\t\tvar oldFilterElementIndex = self.headerFilterElements.indexOf(oldFilterElement);\n\t\t\tif (oldFilterElementIndex >= 0) {\n\t\t\t\tself.headerFilterElements.splice(oldFilterElementIndex, 1);\n\t\t\t}\n\n\t\t\tvar oldColumnIndex = self.headerFilterColumns.indexOf(oldColumnIndex);\n\t\t\tif (oldColumnIndex >= 0) {\n\t\t\t\tself.headerFilterColumns.splice(oldColumnIndex, 1);\n\t\t\t}\n\n\t\t\tcolumn.contentElement.removeChild(oldFilterElement);\n\t\t}\n\n\t\tif (field) {\n\n\t\t\t//set empty value function\n\t\t\tcolumn.modules.filter.emptyFunc = column.definition.headerFilterEmptyCheck || function (value) {\n\t\t\t\treturn !value && value !== \"0\";\n\t\t\t};\n\n\t\t\tfilterElement = document.createElement(\"div\");\n\t\t\tfilterElement.classList.add(\"tabulator-header-filter\");\n\n\t\t\t//set column editor\n\t\t\tswitch (_typeof(column.definition.headerFilter)) {\n\t\t\t\tcase \"string\":\n\t\t\t\t\tif (self.table.modules.edit.editors[column.definition.headerFilter]) {\n\t\t\t\t\t\teditor = self.table.modules.edit.editors[column.definition.headerFilter];\n\n\t\t\t\t\t\tif ((column.definition.headerFilter === \"tick\" || column.definition.headerFilter === \"tickCross\") && !column.definition.headerFilterEmptyCheck) {\n\t\t\t\t\t\t\tcolumn.modules.filter.emptyFunc = function (value) {\n\t\t\t\t\t\t\t\treturn value !== true && value !== false;\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.warn(\"Filter Error - Cannot build header filter, No such editor found: \", column.definition.editor);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"function\":\n\t\t\t\t\teditor = column.definition.headerFilter;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"boolean\":\n\t\t\t\t\tif (column.modules.edit && column.modules.edit.editor) {\n\t\t\t\t\t\teditor = column.modules.edit.editor;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (column.definition.formatter && self.table.modules.edit.editors[column.definition.formatter]) {\n\t\t\t\t\t\t\teditor = self.table.modules.edit.editors[column.definition.formatter];\n\n\t\t\t\t\t\t\tif ((column.definition.formatter === \"tick\" || column.definition.formatter === \"tickCross\") && !column.definition.headerFilterEmptyCheck) {\n\t\t\t\t\t\t\t\tcolumn.modules.filter.emptyFunc = function (value) {\n\t\t\t\t\t\t\t\t\treturn value !== true && value !== false;\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\teditor = self.table.modules.edit.editors[\"input\"];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (editor) {\n\n\t\t\t\tcellWrapper = {\n\t\t\t\t\tgetValue: function getValue() {\n\t\t\t\t\t\treturn typeof initialValue !== \"undefined\" ? initialValue : \"\";\n\t\t\t\t\t},\n\t\t\t\t\tgetField: function getField() {\n\t\t\t\t\t\treturn column.definition.field;\n\t\t\t\t\t},\n\t\t\t\t\tgetElement: function getElement() {\n\t\t\t\t\t\treturn filterElement;\n\t\t\t\t\t},\n\t\t\t\t\tgetColumn: function getColumn() {\n\t\t\t\t\t\treturn column.getComponent();\n\t\t\t\t\t},\n\t\t\t\t\tgetRow: function getRow() {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tnormalizeHeight: function normalizeHeight() {}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tparams = column.definition.headerFilterParams || {};\n\n\t\t\t\tparams = typeof params === \"function\" ? params.call(self.table) : params;\n\n\t\t\t\teditorElement = editor.call(this.table.modules.edit, cellWrapper, function () {}, success, cancel, params);\n\n\t\t\t\tif (!editorElement) {\n\t\t\t\t\tconsole.warn(\"Filter Error - Cannot add filter to \" + field + \" column, editor returned a value of false\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!(editorElement instanceof Node)) {\n\t\t\t\t\tconsole.warn(\"Filter Error - Cannot add filter to \" + field + \" column, editor should return an instance of Node, the editor returned:\", editorElement);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t//set Placeholder Text\n\t\t\t\tif (field) {\n\t\t\t\t\tself.table.modules.localize.bind(\"headerFilters|columns|\" + column.definition.field, function (value) {\n\t\t\t\t\t\teditorElement.setAttribute(\"placeholder\", typeof value !== \"undefined\" && value ? value : self.table.modules.localize.getText(\"headerFilters|default\"));\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tself.table.modules.localize.bind(\"headerFilters|default\", function (value) {\n\t\t\t\t\t\teditorElement.setAttribute(\"placeholder\", typeof self.column.definition.headerFilterPlaceholder !== \"undefined\" && self.column.definition.headerFilterPlaceholder ? self.column.definition.headerFilterPlaceholder : value);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t//focus on element on click\n\t\t\t\teditorElement.addEventListener(\"click\", function (e) {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\teditorElement.focus();\n\t\t\t\t});\n\n\t\t\t\teditorElement.addEventListener(\"focus\", function (e) {\n\t\t\t\t\tvar left = _this35.table.columnManager.element.scrollLeft;\n\n\t\t\t\t\tif (left !== _this35.table.rowManager.element.scrollLeft) {\n\t\t\t\t\t\t_this35.table.rowManager.scrollHorizontal(left);\n\t\t\t\t\t\t_this35.table.columnManager.scrollHorizontal(left);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t//live update filters as user types\n\t\t\t\ttypingTimer = false;\n\n\t\t\t\tsearchTrigger = function searchTrigger(e) {\n\t\t\t\t\tif (typingTimer) {\n\t\t\t\t\t\tclearTimeout(typingTimer);\n\t\t\t\t\t}\n\n\t\t\t\t\ttypingTimer = setTimeout(function () {\n\t\t\t\t\t\tsuccess(editorElement.value);\n\t\t\t\t\t}, 300);\n\t\t\t\t};\n\n\t\t\t\tcolumn.modules.filter.headerElement = editorElement;\n\t\t\t\tcolumn.modules.filter.attrType = editorElement.hasAttribute(\"type\") ? editorElement.getAttribute(\"type\").toLowerCase() : \"\";\n\t\t\t\tcolumn.modules.filter.tagType = editorElement.tagName.toLowerCase();\n\n\t\t\t\tif (column.definition.headerFilterLiveFilter !== false) {\n\n\t\t\t\t\tif (!(column.definition.headerFilter === 'autocomplete' || column.definition.headerFilter === 'tickCross' || (column.definition.editor === 'autocomplete' || column.definition.editor === 'tickCross') && column.definition.headerFilter === true)) {\n\t\t\t\t\t\teditorElement.addEventListener(\"keyup\", searchTrigger);\n\t\t\t\t\t\teditorElement.addEventListener(\"search\", searchTrigger);\n\n\t\t\t\t\t\t//update number filtered columns on change\n\t\t\t\t\t\tif (column.modules.filter.attrType == \"number\") {\n\t\t\t\t\t\t\teditorElement.addEventListener(\"change\", function (e) {\n\t\t\t\t\t\t\t\tsuccess(editorElement.value);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t//change text inputs to search inputs to allow for clearing of field\n\t\t\t\t\t\tif (column.modules.filter.attrType == \"text\" && this.table.browser !== \"ie\") {\n\t\t\t\t\t\t\teditorElement.setAttribute(\"type\", \"search\");\n\t\t\t\t\t\t\t// editorElement.off(\"change blur\"); //prevent blur from triggering filter and preventing selection click\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t//prevent input and select elements from propegating click to column sorters etc\n\t\t\t\t\tif (column.modules.filter.tagType == \"input\" || column.modules.filter.tagType == \"select\" || column.modules.filter.tagType == \"textarea\") {\n\t\t\t\t\t\teditorElement.addEventListener(\"mousedown\", function (e) {\n\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfilterElement.appendChild(editorElement);\n\n\t\t\t\tcolumn.contentElement.appendChild(filterElement);\n\n\t\t\t\tself.headerFilterElements.push(editorElement);\n\t\t\t\tself.headerFilterColumns.push(column);\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.warn(\"Filter Error - Cannot add header filter, column has no field set:\", column.definition.title);\n\t\t}\n\t};\n\n\t//hide all header filter elements (used to ensure correct column widths in \"fitData\" layout mode)\n\tFilter.prototype.hideHeaderFilterElements = function () {\n\t\tthis.headerFilterElements.forEach(function (element) {\n\t\t\telement.style.display = 'none';\n\t\t});\n\t};\n\n\t//show all header filter elements (used to ensure correct column widths in \"fitData\" layout mode)\n\tFilter.prototype.showHeaderFilterElements = function () {\n\t\tthis.headerFilterElements.forEach(function (element) {\n\t\t\telement.style.display = '';\n\t\t});\n\t};\n\n\t//programatically set value of header filter\n\tFilter.prototype.setHeaderFilterFocus = function (column) {\n\t\tif (column.modules.filter && column.modules.filter.headerElement) {\n\t\t\tcolumn.modules.filter.headerElement.focus();\n\t\t} else {\n\t\t\tconsole.warn(\"Column Filter Focus Error - No header filter set on column:\", column.getField());\n\t\t}\n\t};\n\n\t//programatically set value of header filter\n\tFilter.prototype.setHeaderFilterValue = function (column, value) {\n\t\tif (column) {\n\t\t\tif (column.modules.filter && column.modules.filter.headerElement) {\n\t\t\t\tthis.generateHeaderFilterElement(column, value);\n\t\t\t\tcolumn.modules.filter.success(value);\n\t\t\t} else {\n\t\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\n\t\t\t}\n\t\t}\n\t};\n\n\tFilter.prototype.reloadHeaderFilter = function (column) {\n\t\tif (column) {\n\t\t\tif (column.modules.filter && column.modules.filter.headerElement) {\n\t\t\t\tthis.generateHeaderFilterElement(column, column.modules.filter.value);\n\t\t\t} else {\n\t\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\n\t\t\t}\n\t\t}\n\t};\n\n\t//check if the filters has changed since last use\n\tFilter.prototype.hasChanged = function () {\n\t\tvar changed = this.changed;\n\t\tthis.changed = false;\n\t\treturn changed;\n\t};\n\n\t//set standard filters\n\tFilter.prototype.setFilter = function (field, type, value) {\n\t\tvar self = this;\n\n\t\tself.filterList = [];\n\n\t\tif (!Array.isArray(field)) {\n\t\t\tfield = [{ field: field, type: type, value: value }];\n\t\t}\n\n\t\tself.addFilter(field);\n\t};\n\n\t//add filter to array\n\tFilter.prototype.addFilter = function (field, type, value) {\n\t\tvar self = this;\n\n\t\tif (!Array.isArray(field)) {\n\t\t\tfield = [{ field: field, type: type, value: value }];\n\t\t}\n\n\t\tfield.forEach(function (filter) {\n\n\t\t\tfilter = self.findFilter(filter);\n\n\t\t\tif (filter) {\n\t\t\t\tself.filterList.push(filter);\n\n\t\t\t\tself.changed = true;\n\t\t\t}\n\t\t});\n\n\t\tif (this.table.options.persistentFilter && this.table.modExists(\"persistence\", true)) {\n\t\t\tthis.table.modules.persistence.save(\"filter\");\n\t\t}\n\t};\n\n\tFilter.prototype.findFilter = function (filter) {\n\t\tvar self = this,\n\t\t column;\n\n\t\tif (Array.isArray(filter)) {\n\t\t\treturn this.findSubFilters(filter);\n\t\t}\n\n\t\tvar filterFunc = false;\n\n\t\tif (typeof filter.field == \"function\") {\n\t\t\tfilterFunc = function filterFunc(data) {\n\t\t\t\treturn filter.field(data, filter.type || {}); // pass params to custom filter function\n\t\t\t};\n\t\t} else {\n\n\t\t\tif (self.filters[filter.type]) {\n\n\t\t\t\tcolumn = self.table.columnManager.getColumnByField(filter.field);\n\n\t\t\t\tif (column) {\n\t\t\t\t\tfilterFunc = function filterFunc(data) {\n\t\t\t\t\t\treturn self.filters[filter.type](filter.value, column.getFieldValue(data));\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\tfilterFunc = function filterFunc(data) {\n\t\t\t\t\t\treturn self.filters[filter.type](filter.value, data[filter.field]);\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconsole.warn(\"Filter Error - No such filter type found, ignoring: \", filter.type);\n\t\t\t}\n\t\t}\n\n\t\tfilter.func = filterFunc;\n\n\t\treturn filter.func ? filter : false;\n\t};\n\n\tFilter.prototype.findSubFilters = function (filters) {\n\t\tvar self = this,\n\t\t output = [];\n\n\t\tfilters.forEach(function (filter) {\n\t\t\tfilter = self.findFilter(filter);\n\n\t\t\tif (filter) {\n\t\t\t\toutput.push(filter);\n\t\t\t}\n\t\t});\n\n\t\treturn output.length ? output : false;\n\t};\n\n\t//get all filters\n\tFilter.prototype.getFilters = function (all, ajax) {\n\t\tvar output = [];\n\n\t\tif (all) {\n\t\t\toutput = this.getHeaderFilters();\n\t\t}\n\n\t\tif (ajax) {\n\t\t\toutput.forEach(function (item) {\n\t\t\t\tif (typeof item.type == \"function\") {\n\t\t\t\t\titem.type = \"function\";\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\toutput = output.concat(this.filtersToArray(this.filterList, ajax));\n\n\t\treturn output;\n\t};\n\n\t//filter to Object\n\tFilter.prototype.filtersToArray = function (filterList, ajax) {\n\t\tvar _this36 = this;\n\n\t\tvar output = [];\n\n\t\tfilterList.forEach(function (filter) {\n\t\t\tvar item;\n\n\t\t\tif (Array.isArray(filter)) {\n\t\t\t\toutput.push(_this36.filtersToArray(filter, ajax));\n\t\t\t} else {\n\t\t\t\titem = { field: filter.field, type: filter.type, value: filter.value };\n\n\t\t\t\tif (ajax) {\n\t\t\t\t\tif (typeof item.type == \"function\") {\n\t\t\t\t\t\titem.type = \"function\";\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\toutput.push(item);\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t};\n\n\t//get all filters\n\tFilter.prototype.getHeaderFilters = function () {\n\t\tvar self = this,\n\t\t output = [];\n\n\t\tfor (var key in this.headerFilters) {\n\t\t\toutput.push({ field: key, type: this.headerFilters[key].type, value: this.headerFilters[key].value });\n\t\t}\n\n\t\treturn output;\n\t};\n\n\t//remove filter from array\n\tFilter.prototype.removeFilter = function (field, type, value) {\n\t\tvar self = this;\n\n\t\tif (!Array.isArray(field)) {\n\t\t\tfield = [{ field: field, type: type, value: value }];\n\t\t}\n\n\t\tfield.forEach(function (filter) {\n\t\t\tvar index = -1;\n\n\t\t\tif (_typeof(filter.field) == \"object\") {\n\t\t\t\tindex = self.filterList.findIndex(function (element) {\n\t\t\t\t\treturn filter === element;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tindex = self.filterList.findIndex(function (element) {\n\t\t\t\t\treturn filter.field === element.field && filter.type === element.type && filter.value === element.value;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (index > -1) {\n\t\t\t\tself.filterList.splice(index, 1);\n\t\t\t\tself.changed = true;\n\t\t\t} else {\n\t\t\t\tconsole.warn(\"Filter Error - No matching filter type found, ignoring: \", filter.type);\n\t\t\t}\n\t\t});\n\n\t\tif (this.table.options.persistentFilter && this.table.modExists(\"persistence\", true)) {\n\t\t\tthis.table.modules.persistence.save(\"filter\");\n\t\t}\n\t};\n\n\t//clear filters\n\tFilter.prototype.clearFilter = function (all) {\n\t\tthis.filterList = [];\n\n\t\tif (all) {\n\t\t\tthis.clearHeaderFilter();\n\t\t}\n\n\t\tthis.changed = true;\n\n\t\tif (this.table.options.persistentFilter && this.table.modExists(\"persistence\", true)) {\n\t\t\tthis.table.modules.persistence.save(\"filter\");\n\t\t}\n\t};\n\n\t//clear header filters\n\tFilter.prototype.clearHeaderFilter = function () {\n\t\tvar self = this;\n\n\t\tthis.headerFilters = {};\n\n\t\tthis.headerFilterColumns.forEach(function (column) {\n\t\t\tcolumn.modules.filter.value = null;\n\t\t\tself.reloadHeaderFilter(column);\n\t\t});\n\n\t\tthis.changed = true;\n\t};\n\n\t//search data and return matching rows\n\tFilter.prototype.search = function (searchType, field, type, value) {\n\t\tvar self = this,\n\t\t activeRows = [],\n\t\t filterList = [];\n\n\t\tif (!Array.isArray(field)) {\n\t\t\tfield = [{ field: field, type: type, value: value }];\n\t\t}\n\n\t\tfield.forEach(function (filter) {\n\t\t\tfilter = self.findFilter(filter);\n\n\t\t\tif (filter) {\n\t\t\t\tfilterList.push(filter);\n\t\t\t}\n\t\t});\n\n\t\tthis.table.rowManager.rows.forEach(function (row) {\n\t\t\tvar match = true;\n\n\t\t\tfilterList.forEach(function (filter) {\n\t\t\t\tif (!self.filterRecurse(filter, row.getData())) {\n\t\t\t\t\tmatch = false;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (match) {\n\t\t\t\tactiveRows.push(searchType === \"data\" ? row.getData(\"data\") : row.getComponent());\n\t\t\t}\n\t\t});\n\n\t\treturn activeRows;\n\t};\n\n\t//filter row array\n\tFilter.prototype.filter = function (rowList, filters) {\n\t\tvar self = this,\n\t\t activeRows = [],\n\t\t activeRowComponents = [];\n\n\t\tif (self.table.options.dataFiltering) {\n\t\t\tself.table.options.dataFiltering.call(self.table, self.getFilters());\n\t\t}\n\n\t\tif (!self.table.options.ajaxFiltering && (self.filterList.length || Object.keys(self.headerFilters).length)) {\n\n\t\t\trowList.forEach(function (row) {\n\t\t\t\tif (self.filterRow(row)) {\n\t\t\t\t\tactiveRows.push(row);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tactiveRows = rowList.slice(0);\n\t\t}\n\n\t\tif (self.table.options.dataFiltered) {\n\n\t\t\tactiveRows.forEach(function (row) {\n\t\t\t\tactiveRowComponents.push(row.getComponent());\n\t\t\t});\n\n\t\t\tself.table.options.dataFiltered.call(self.table, self.getFilters(), activeRowComponents);\n\t\t}\n\n\t\treturn activeRows;\n\t};\n\n\t//filter individual row\n\tFilter.prototype.filterRow = function (row, filters) {\n\t\tvar self = this,\n\t\t match = true,\n\t\t data = row.getData();\n\n\t\tself.filterList.forEach(function (filter) {\n\t\t\tif (!self.filterRecurse(filter, data)) {\n\t\t\t\tmatch = false;\n\t\t\t}\n\t\t});\n\n\t\tfor (var field in self.headerFilters) {\n\t\t\tif (!self.headerFilters[field].func(data)) {\n\t\t\t\tmatch = false;\n\t\t\t}\n\t\t}\n\n\t\treturn match;\n\t};\n\n\tFilter.prototype.filterRecurse = function (filter, data) {\n\t\tvar self = this,\n\t\t match = false;\n\n\t\tif (Array.isArray(filter)) {\n\t\t\tfilter.forEach(function (subFilter) {\n\t\t\t\tif (self.filterRecurse(subFilter, data)) {\n\t\t\t\t\tmatch = true;\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tmatch = filter.func(data);\n\t\t}\n\n\t\treturn match;\n\t};\n\n\t//list of available filters\n\tFilter.prototype.filters = {\n\n\t\t//equal to\n\t\t\"=\": function _(filterVal, rowVal, rowData, filterParams) {\n\t\t\treturn rowVal == filterVal ? true : false;\n\t\t},\n\n\t\t//less than\n\t\t\"<\": function _(filterVal, rowVal, rowData, filterParams) {\n\t\t\treturn rowVal < filterVal ? true : false;\n\t\t},\n\n\t\t//less than or equal to\n\t\t\"<=\": function _(filterVal, rowVal, rowData, filterParams) {\n\t\t\treturn rowVal <= filterVal ? true : false;\n\t\t},\n\n\t\t//greater than\n\t\t\">\": function _(filterVal, rowVal, rowData, filterParams) {\n\t\t\treturn rowVal > filterVal ? true : false;\n\t\t},\n\n\t\t//greater than or equal to\n\t\t\">=\": function _(filterVal, rowVal, rowData, filterParams) {\n\t\t\treturn rowVal >= filterVal ? true : false;\n\t\t},\n\n\t\t//not equal to\n\t\t\"!=\": function _(filterVal, rowVal, rowData, filterParams) {\n\t\t\treturn rowVal != filterVal ? true : false;\n\t\t},\n\n\t\t\"regex\": function regex(filterVal, rowVal, rowData, filterParams) {\n\n\t\t\tif (typeof filterVal == \"string\") {\n\t\t\t\tfilterVal = new RegExp(filterVal);\n\t\t\t}\n\n\t\t\treturn filterVal.test(rowVal);\n\t\t},\n\n\t\t//contains the string\n\t\t\"like\": function like(filterVal, rowVal, rowData, filterParams) {\n\t\t\tif (filterVal === null || typeof filterVal === \"undefined\") {\n\t\t\t\treturn rowVal === filterVal ? true : false;\n\t\t\t} else {\n\t\t\t\tif (typeof rowVal !== 'undefined' && rowVal !== null) {\n\t\t\t\t\treturn String(rowVal).toLowerCase().indexOf(filterVal.toLowerCase()) > -1;\n\t\t\t\t} else {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t//in array\n\t\t\"in\": function _in(filterVal, rowVal, rowData, filterParams) {\n\t\t\tif (Array.isArray(filterVal)) {\n\t\t\t\treturn filterVal.indexOf(rowVal) > -1;\n\t\t\t} else {\n\t\t\t\tconsole.warn(\"Filter Error - filter value is not an array:\", filterVal);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t};\n\n\tTabulator.prototype.registerModule(\"filter\", Filter);\n\tvar Format = function Format(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t};\n\n\t//initialize column formatter\n\tFormat.prototype.initializeColumn = function (column) {\n\t\tvar self = this,\n\t\t config = { params: column.definition.formatterParams || {} };\n\n\t\t//set column formatter\n\t\tswitch (_typeof(column.definition.formatter)) {\n\t\t\tcase \"string\":\n\n\t\t\t\tif (column.definition.formatter === \"tick\") {\n\t\t\t\t\tcolumn.definition.formatter = \"tickCross\";\n\n\t\t\t\t\tif (typeof config.params.crossElement == \"undefined\") {\n\t\t\t\t\t\tconfig.params.crossElement = false;\n\t\t\t\t\t}\n\n\t\t\t\t\tconsole.warn(\"DEPRECATION WANRING - the tick formatter has been depricated, please use the tickCross formatter with the crossElement param set to false\");\n\t\t\t\t}\n\n\t\t\t\tif (self.formatters[column.definition.formatter]) {\n\t\t\t\t\tconfig.formatter = self.formatters[column.definition.formatter];\n\t\t\t\t} else {\n\t\t\t\t\tconsole.warn(\"Formatter Error - No such formatter found: \", column.definition.formatter);\n\t\t\t\t\tconfig.formatter = self.formatters.plaintext;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tconfig.formatter = column.definition.formatter;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconfig.formatter = self.formatters.plaintext;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tcolumn.modules.format = config;\n\t};\n\n\tFormat.prototype.cellRendered = function (cell) {\n\t\tif (cell.column.modules.format.renderedCallback) {\n\t\t\tcell.column.modules.format.renderedCallback();\n\t\t}\n\t};\n\n\t//return a formatted value for a cell\n\tFormat.prototype.formatValue = function (cell) {\n\t\tvar component = cell.getComponent(),\n\t\t params = typeof cell.column.modules.format.params === \"function\" ? cell.column.modules.format.params(component) : cell.column.modules.format.params;\n\n\t\tfunction onRendered(callback) {\n\t\t\tcell.column.modules.format.renderedCallback = callback;\n\t\t}\n\n\t\treturn cell.column.modules.format.formatter.call(this, component, params, onRendered);\n\t};\n\n\tFormat.prototype.sanitizeHTML = function (value) {\n\t\tif (value) {\n\t\t\tvar entityMap = {\n\t\t\t\t'&': '&',\n\t\t\t\t'<': '<',\n\t\t\t\t'>': '>',\n\t\t\t\t'\"': '"',\n\t\t\t\t\"'\": ''',\n\t\t\t\t'/': '/',\n\t\t\t\t'`': '`',\n\t\t\t\t'=': '='\n\t\t\t};\n\n\t\t\treturn String(value).replace(/[&<>\"'`=\\/]/g, function (s) {\n\t\t\t\treturn entityMap[s];\n\t\t\t});\n\t\t} else {\n\t\t\treturn value;\n\t\t}\n\t};\n\n\tFormat.prototype.emptyToSpace = function (value) {\n\t\treturn value === null || typeof value === \"undefined\" ? \" \" : value;\n\t};\n\n\t//get formatter for cell\n\tFormat.prototype.getFormatter = function (formatter) {\n\t\tvar formatter;\n\n\t\tswitch (typeof formatter === 'undefined' ? 'undefined' : _typeof(formatter)) {\n\t\t\tcase \"string\":\n\t\t\t\tif (this.formatters[formatter]) {\n\t\t\t\t\tformatter = this.formatters[formatter];\n\t\t\t\t} else {\n\t\t\t\t\tconsole.warn(\"Formatter Error - No such formatter found: \", formatter);\n\t\t\t\t\tformatter = this.formatters.plaintext;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tformatter = formatter;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tformatter = this.formatters.plaintext;\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn formatter;\n\t};\n\n\t//default data formatters\n\tFormat.prototype.formatters = {\n\t\t//plain text value\n\t\tplaintext: function plaintext(cell, formatterParams, onRendered) {\n\t\t\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\n\t\t},\n\n\t\t//html text value\n\t\thtml: function html(cell, formatterParams, onRendered) {\n\t\t\treturn cell.getValue();\n\t\t},\n\n\t\t//multiline text area\n\t\ttextarea: function textarea(cell, formatterParams, onRendered) {\n\t\t\tcell.getElement().style.whiteSpace = \"pre-wrap\";\n\t\t\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\n\t\t},\n\n\t\t//currency formatting\n\t\tmoney: function money(cell, formatterParams, onRendered) {\n\t\t\tvar floatVal = parseFloat(cell.getValue()),\n\t\t\t number,\n\t\t\t integer,\n\t\t\t decimal,\n\t\t\t rgx;\n\n\t\t\tvar decimalSym = formatterParams.decimal || \".\";\n\t\t\tvar thousandSym = formatterParams.thousand || \",\";\n\t\t\tvar symbol = formatterParams.symbol || \"\";\n\t\t\tvar after = !!formatterParams.symbolAfter;\n\t\t\tvar precision = typeof formatterParams.precision !== \"undefined\" ? formatterParams.precision : 2;\n\n\t\t\tif (isNaN(floatVal)) {\n\t\t\t\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\n\t\t\t}\n\n\t\t\tnumber = precision !== false ? floatVal.toFixed(precision) : floatVal;\n\t\t\tnumber = String(number).split(\".\");\n\n\t\t\tinteger = number[0];\n\t\t\tdecimal = number.length > 1 ? decimalSym + number[1] : \"\";\n\n\t\t\trgx = /(\\d+)(\\d{3})/;\n\n\t\t\twhile (rgx.test(integer)) {\n\t\t\t\tinteger = integer.replace(rgx, \"$1\" + thousandSym + \"$2\");\n\t\t\t}\n\n\t\t\treturn after ? integer + decimal + symbol : symbol + integer + decimal;\n\t\t},\n\n\t\t//clickable anchor tag\n\t\tlink: function link(cell, formatterParams, onRendered) {\n\t\t\tvar value = cell.getValue(),\n\t\t\t urlPrefix = formatterParams.urlPrefix || \"\",\n\t\t\t label = this.emptyToSpace(value),\n\t\t\t el = document.createElement(\"a\"),\n\t\t\t data;\n\n\t\t\tif (formatterParams.labelField) {\n\t\t\t\tdata = cell.getData();\n\t\t\t\tlabel = data[formatterParams.labelField];\n\t\t\t}\n\n\t\t\tif (formatterParams.label) {\n\t\t\t\tswitch (_typeof(formatterParams.label)) {\n\t\t\t\t\tcase \"string\":\n\t\t\t\t\t\tlabel = formatterParams.label;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"function\":\n\t\t\t\t\t\tlabel = formatterParams.label(cell);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (formatterParams.urlField) {\n\t\t\t\tdata = cell.getData();\n\t\t\t\tvalue = data[formatterParams.urlField];\n\t\t\t}\n\n\t\t\tif (formatterParams.url) {\n\t\t\t\tswitch (_typeof(formatterParams.url)) {\n\t\t\t\t\tcase \"string\":\n\t\t\t\t\t\tvalue = formatterParams.url;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"function\":\n\t\t\t\t\t\tvalue = formatterParams.url(cell);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tel.setAttribute(\"href\", urlPrefix + value);\n\n\t\t\tif (formatterParams.target) {\n\t\t\t\tel.setAttribute(\"target\", formatterParams.target);\n\t\t\t}\n\n\t\t\tel.innerHTML = this.emptyToSpace(this.sanitizeHTML(label));\n\n\t\t\treturn el;\n\t\t},\n\n\t\t//image element\n\t\timage: function image(cell, formatterParams, onRendered) {\n\t\t\tvar el = document.createElement(\"img\");\n\t\t\tel.setAttribute(\"src\", cell.getValue());\n\n\t\t\tswitch (_typeof(formatterParams.height)) {\n\t\t\t\tcase \"number\":\n\t\t\t\t\tel.style.height = formatterParams.height + \"px\";\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"string\":\n\t\t\t\t\tel.style.height = formatterParams.height;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tswitch (_typeof(formatterParams.width)) {\n\t\t\t\tcase \"number\":\n\t\t\t\t\tel.style.width = formatterParams.width + \"px\";\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"string\":\n\t\t\t\t\tel.style.width = formatterParams.width;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tel.addEventListener(\"load\", function () {\n\t\t\t\tcell.getRow().normalizeHeight();\n\t\t\t});\n\n\t\t\treturn el;\n\t\t},\n\n\t\t//tick or cross\n\t\ttickCross: function tickCross(cell, formatterParams, onRendered) {\n\t\t\tvar value = cell.getValue(),\n\t\t\t element = cell.getElement(),\n\t\t\t empty = formatterParams.allowEmpty,\n\t\t\t truthy = formatterParams.allowTruthy,\n\t\t\t tick = typeof formatterParams.tickElement !== \"undefined\" ? formatterParams.tickElement : '<svg enable-background=\"new 0 0 24 24\" height=\"14\" width=\"14\" viewBox=\"0 0 24 24\" xml:space=\"preserve\" ><path fill=\"#2DC214\" clip-rule=\"evenodd\" d=\"M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34 c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351 l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07 l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z\" fill-rule=\"evenodd\"/></svg>',\n\t\t\t cross = typeof formatterParams.crossElement !== \"undefined\" ? formatterParams.crossElement : '<svg enable-background=\"new 0 0 24 24\" height=\"14\" width=\"14\" viewBox=\"0 0 24 24\" xml:space=\"preserve\" ><path fill=\"#CE1515\" d=\"M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272 c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0 l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269 c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73 L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z\"/></svg>';\n\n\t\t\tif (truthy && value || value === true || value === \"true\" || value === \"True\" || value === 1 || value === \"1\") {\n\t\t\t\telement.setAttribute(\"aria-checked\", true);\n\t\t\t\treturn tick || \"\";\n\t\t\t} else {\n\t\t\t\tif (empty && (value === \"null\" || value === \"\" || value === null || typeof value === \"undefined\")) {\n\t\t\t\t\telement.setAttribute(\"aria-checked\", \"mixed\");\n\t\t\t\t\treturn \"\";\n\t\t\t\t} else {\n\t\t\t\t\telement.setAttribute(\"aria-checked\", false);\n\t\t\t\t\treturn cross || \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tdatetime: function datetime(cell, formatterParams, onRendered) {\n\t\t\tvar inputFormat = formatterParams.inputFormat || \"YYYY-MM-DD hh:mm:ss\";\n\t\t\tvar outputFormat = formatterParams.outputFormat || \"DD/MM/YYYY hh:mm:ss\";\n\t\t\tvar invalid = typeof formatterParams.invalidPlaceholder !== \"undefined\" ? formatterParams.invalidPlaceholder : \"\";\n\t\t\tvar value = cell.getValue();\n\n\t\t\tvar newDatetime = moment(value, inputFormat);\n\n\t\t\tif (newDatetime.isValid()) {\n\t\t\t\treturn newDatetime.format(outputFormat);\n\t\t\t} else {\n\n\t\t\t\tif (invalid === true) {\n\t\t\t\t\treturn value;\n\t\t\t\t} else if (typeof invalid === \"function\") {\n\t\t\t\t\treturn invalid(value);\n\t\t\t\t} else {\n\t\t\t\t\treturn invalid;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tdatetimediff: function datetime(cell, formatterParams, onRendered) {\n\t\t\tvar inputFormat = formatterParams.inputFormat || \"YYYY-MM-DD hh:mm:ss\";\n\t\t\tvar invalid = typeof formatterParams.invalidPlaceholder !== \"undefined\" ? formatterParams.invalidPlaceholder : \"\";\n\t\t\tvar suffix = typeof formatterParams.suffix !== \"undefined\" ? formatterParams.suffix : false;\n\t\t\tvar unit = typeof formatterParams.unit !== \"undefined\" ? formatterParams.unit : undefined;\n\t\t\tvar humanize = typeof formatterParams.humanize !== \"undefined\" ? formatterParams.humanize : false;\n\t\t\tvar date = typeof formatterParams.date !== \"undefined\" ? formatterParams.date : moment();\n\t\t\tvar value = cell.getValue();\n\n\t\t\tvar newDatetime = moment(value, inputFormat);\n\n\t\t\tif (newDatetime.isValid()) {\n\t\t\t\tif (humanize) {\n\t\t\t\t\treturn moment.duration(newDatetime.diff(date)).humanize(suffix);\n\t\t\t\t} else {\n\t\t\t\t\treturn newDatetime.diff(date, unit) + (suffix ? \" \" + suffix : \"\");\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\tif (invalid === true) {\n\t\t\t\t\treturn value;\n\t\t\t\t} else if (typeof invalid === \"function\") {\n\t\t\t\t\treturn invalid(value);\n\t\t\t\t} else {\n\t\t\t\t\treturn invalid;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t//select\n\t\tlookup: function lookup(cell, formatterParams, onRendered) {\n\t\t\tvar value = cell.getValue();\n\n\t\t\tif (typeof formatterParams[value] === \"undefined\") {\n\t\t\t\tconsole.warn('Missing display value for ' + value);\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t\treturn formatterParams[value];\n\t\t},\n\n\t\t//star rating\n\t\tstar: function star(cell, formatterParams, onRendered) {\n\t\t\tvar value = cell.getValue(),\n\t\t\t element = cell.getElement(),\n\t\t\t maxStars = formatterParams && formatterParams.stars ? formatterParams.stars : 5,\n\t\t\t stars = document.createElement(\"span\"),\n\t\t\t star = document.createElementNS('http://www.w3.org/2000/svg', \"svg\"),\n\t\t\t starActive = '<polygon fill=\"#FFEA00\" stroke=\"#C1AB60\" stroke-width=\"37.6152\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" points=\"259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 \"/>',\n\t\t\t starInactive = '<polygon fill=\"#D2D2D2\" stroke=\"#686868\" stroke-width=\"37.6152\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" points=\"259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 \"/>';\n\n\t\t\t//style stars holder\n\t\t\tstars.style.verticalAlign = \"middle\";\n\n\t\t\t//style star\n\t\t\tstar.setAttribute(\"width\", \"14\");\n\t\t\tstar.setAttribute(\"height\", \"14\");\n\t\t\tstar.setAttribute(\"viewBox\", \"0 0 512 512\");\n\t\t\tstar.setAttribute(\"xml:space\", \"preserve\");\n\t\t\tstar.style.padding = \"0 1px\";\n\n\t\t\tvalue = parseInt(value) < maxStars ? parseInt(value) : maxStars;\n\n\t\t\tfor (var i = 1; i <= maxStars; i++) {\n\t\t\t\tvar nextStar = star.cloneNode(true);\n\t\t\t\tnextStar.innerHTML = i <= value ? starActive : starInactive;\n\n\t\t\t\tstars.appendChild(nextStar);\n\t\t\t}\n\n\t\t\telement.style.whiteSpace = \"nowrap\";\n\t\t\telement.style.overflow = \"hidden\";\n\t\t\telement.style.textOverflow = \"ellipsis\";\n\n\t\t\telement.setAttribute(\"aria-label\", value);\n\n\t\t\treturn stars;\n\t\t},\n\n\t\ttraffic: function traffic(cell, formatterParams, onRendered) {\n\t\t\tvar value = this.sanitizeHTML(cell.getValue()) || 0,\n\t\t\t el = document.createElement(\"span\"),\n\t\t\t max = formatterParams && formatterParams.max ? formatterParams.max : 100,\n\t\t\t min = formatterParams && formatterParams.min ? formatterParams.min : 0,\n\t\t\t colors = formatterParams && typeof formatterParams.color !== \"undefined\" ? formatterParams.color : [\"red\", \"orange\", \"green\"],\n\t\t\t color = \"#666666\",\n\t\t\t percent,\n\t\t\t percentValue;\n\n\t\t\tif (isNaN(value) || typeof cell.getValue() === \"undefined\") {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tel.classList.add(\"tabulator-traffic-light\");\n\n\t\t\t//make sure value is in range\n\t\t\tpercentValue = parseFloat(value) <= max ? parseFloat(value) : max;\n\t\t\tpercentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;\n\n\t\t\t//workout percentage\n\t\t\tpercent = (max - min) / 100;\n\t\t\tpercentValue = Math.round((percentValue - min) / percent);\n\n\t\t\t//set color\n\t\t\tswitch (typeof colors === 'undefined' ? 'undefined' : _typeof(colors)) {\n\t\t\t\tcase \"string\":\n\t\t\t\t\tcolor = colors;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"function\":\n\t\t\t\t\tcolor = colors(value);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"object\":\n\t\t\t\t\tif (Array.isArray(colors)) {\n\t\t\t\t\t\tvar unit = 100 / colors.length;\n\t\t\t\t\t\tvar index = Math.floor(percentValue / unit);\n\n\t\t\t\t\t\tindex = Math.min(index, colors.length - 1);\n\t\t\t\t\t\tindex = Math.max(index, 0);\n\t\t\t\t\t\tcolor = colors[index];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t}\n\n\t\t\tel.style.backgroundColor = color;\n\n\t\t\treturn el;\n\t\t},\n\n\t\t//progress bar\n\t\tprogress: function progress(cell, formatterParams, onRendered) {\n\t\t\t//progress bar\n\t\t\tvar value = this.sanitizeHTML(cell.getValue()) || 0,\n\t\t\t element = cell.getElement(),\n\t\t\t max = formatterParams && formatterParams.max ? formatterParams.max : 100,\n\t\t\t min = formatterParams && formatterParams.min ? formatterParams.min : 0,\n\t\t\t legendAlign = formatterParams && formatterParams.legendAlign ? formatterParams.legendAlign : \"center\",\n\t\t\t percent,\n\t\t\t percentValue,\n\t\t\t color,\n\t\t\t legend,\n\t\t\t legendColor,\n\t\t\t top,\n\t\t\t left,\n\t\t\t right,\n\t\t\t bottom;\n\n\t\t\t//make sure value is in range\n\t\t\tpercentValue = parseFloat(value) <= max ? parseFloat(value) : max;\n\t\t\tpercentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;\n\n\t\t\t//workout percentage\n\t\t\tpercent = (max - min) / 100;\n\t\t\tpercentValue = Math.round((percentValue - min) / percent);\n\n\t\t\t//set bar color\n\t\t\tswitch (_typeof(formatterParams.color)) {\n\t\t\t\tcase \"string\":\n\t\t\t\t\tcolor = formatterParams.color;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"function\":\n\t\t\t\t\tcolor = formatterParams.color(value);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"object\":\n\t\t\t\t\tif (Array.isArray(formatterParams.color)) {\n\t\t\t\t\t\tvar unit = 100 / formatterParams.color.length;\n\t\t\t\t\t\tvar index = Math.floor(percentValue / unit);\n\n\t\t\t\t\t\tindex = Math.min(index, formatterParams.color.length - 1);\n\t\t\t\t\t\tindex = Math.max(index, 0);\n\t\t\t\t\t\tcolor = formatterParams.color[index];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\tcolor = \"#2DC214\";\n\t\t\t}\n\n\t\t\t//generate legend\n\t\t\tswitch (_typeof(formatterParams.legend)) {\n\t\t\t\tcase \"string\":\n\t\t\t\t\tlegend = formatterParams.legend;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"function\":\n\t\t\t\t\tlegend = formatterParams.legend(value);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"boolean\":\n\t\t\t\t\tlegend = value;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tlegend = false;\n\t\t\t}\n\n\t\t\t//set legend color\n\t\t\tswitch (_typeof(formatterParams.legendColor)) {\n\t\t\t\tcase \"string\":\n\t\t\t\t\tlegendColor = formatterParams.legendColor;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"function\":\n\t\t\t\t\tlegendColor = formatterParams.legendColor(value);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"object\":\n\t\t\t\t\tif (Array.isArray(formatterParams.legendColor)) {\n\t\t\t\t\t\tvar unit = 100 / formatterParams.legendColor.length;\n\t\t\t\t\t\tvar index = Math.floor(percentValue / unit);\n\n\t\t\t\t\t\tindex = Math.min(index, formatterParams.legendColor.length - 1);\n\t\t\t\t\t\tindex = Math.max(index, 0);\n\t\t\t\t\t\tlegendColor = formatterParams.legendColor[index];\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tlegendColor = \"#000\";\n\t\t\t}\n\n\t\t\telement.style.minWidth = \"30px\";\n\t\t\telement.style.position = \"relative\";\n\n\t\t\telement.setAttribute(\"aria-label\", percentValue);\n\n\t\t\treturn \"<div style='position:realtive; height:100%;' data-max='\" + max + \"' data-min='\" + min + \"'><div style='position:relative; height:100%; width:calc(\" + percentValue + \"%); background-color:\" + color + \"; display:inline-block;'></div></div>\" + (legend ? \"<div style='position:absolute; top:4px; left:0; text-align:\" + legendAlign + \"; width:100%; color:\" + legendColor + \";'>\" + legend + \"</div>\" : \"\");\n\t\t},\n\n\t\t//background color\n\t\tcolor: function color(cell, formatterParams, onRendered) {\n\t\t\tcell.getElement().style.backgroundColor = this.sanitizeHTML(cell.getValue());\n\t\t\treturn \"\";\n\t\t},\n\n\t\t//tick icon\n\t\tbuttonTick: function buttonTick(cell, formatterParams, onRendered) {\n\t\t\treturn '<svg enable-background=\"new 0 0 24 24\" height=\"14\" width=\"14\" viewBox=\"0 0 24 24\" xml:space=\"preserve\" ><path fill=\"#2DC214\" clip-rule=\"evenodd\" d=\"M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34 c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351 l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07 l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z\" fill-rule=\"evenodd\"/></svg>';\n\t\t},\n\n\t\t//cross icon\n\t\tbuttonCross: function buttonCross(cell, formatterParams, onRendered) {\n\t\t\treturn '<svg enable-background=\"new 0 0 24 24\" height=\"14\" width=\"14\" viewBox=\"0 0 24 24\" xml:space=\"preserve\" ><path fill=\"#CE1515\" d=\"M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272 c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0 l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269 c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73 L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z\"/></svg>';\n\t\t},\n\n\t\t//current row number\n\t\trownum: function rownum(cell, formatterParams, onRendered) {\n\t\t\treturn this.table.rowManager.activeRows.indexOf(cell.getRow()._getSelf()) + 1;\n\t\t},\n\n\t\t//row handle\n\t\thandle: function handle(cell, formatterParams, onRendered) {\n\t\t\tcell.getElement().classList.add(\"tabulator-row-handle\");\n\t\t\treturn \"<div class='tabulator-row-handle-box'><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div></div>\";\n\t\t},\n\n\t\tresponsiveCollapse: function responsiveCollapse(cell, formatterParams, onRendered) {\n\t\t\tvar self = this,\n\t\t\t open = false,\n\t\t\t el = document.createElement(\"div\");\n\n\t\t\tfunction toggleList(isOpen) {\n\t\t\t\tvar collapse = cell.getRow().getElement().getElementsByClassName(\"tabulator-responsive-collapse\")[0];\n\n\t\t\t\topen = isOpen;\n\n\t\t\t\tif (open) {\n\t\t\t\t\tel.classList.add(\"open\");\n\t\t\t\t\tif (collapse) {\n\t\t\t\t\t\tcollapse.style.display = '';\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tel.classList.remove(\"open\");\n\t\t\t\t\tif (collapse) {\n\t\t\t\t\t\tcollapse.style.display = 'none';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tel.classList.add(\"tabulator-responsive-collapse-toggle\");\n\t\t\tel.innerHTML = \"<span class='tabulator-responsive-collapse-toggle-open'>+</span><span class='tabulator-responsive-collapse-toggle-close'>-</span>\";\n\n\t\t\tcell.getElement().classList.add(\"tabulator-row-handle\");\n\n\t\t\tif (self.table.options.responsiveLayoutCollapseStartOpen) {\n\t\t\t\topen = true;\n\t\t\t}\n\n\t\t\tel.addEventListener(\"click\", function (e) {\n\t\t\t\te.stopImmediatePropagation();\n\t\t\t\ttoggleList(!open);\n\t\t\t});\n\n\t\t\ttoggleList(open);\n\n\t\t\treturn el;\n\t\t}\n\t};\n\n\tTabulator.prototype.registerModule(\"format\", Format);\n\n\tvar FrozenColumns = function FrozenColumns(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.leftColumns = [];\n\t\tthis.rightColumns = [];\n\t\tthis.leftMargin = 0;\n\t\tthis.rightMargin = 0;\n\t\tthis.rightPadding = 0;\n\t\tthis.initializationMode = \"left\";\n\t\tthis.active = false;\n\t\tthis.scrollEndTimer = false;\n\t};\n\n\t//reset initial state\n\tFrozenColumns.prototype.reset = function () {\n\t\tthis.initializationMode = \"left\";\n\t\tthis.leftColumns = [];\n\t\tthis.rightColumns = [];\n\t\tthis.leftMargin = 0;\n\t\tthis.rightMargin = 0;\n\t\tthis.rightMargin = 0;\n\t\tthis.active = false;\n\n\t\tthis.table.columnManager.headersElement.style.marginLeft = 0;\n\t\tthis.table.columnManager.element.style.paddingRight = 0;\n\t};\n\n\t//initialize specific column\n\tFrozenColumns.prototype.initializeColumn = function (column) {\n\t\tvar config = { margin: 0, edge: false };\n\n\t\tif (column.definition.frozen) {\n\n\t\t\tif (!column.parent.isGroup) {\n\n\t\t\t\tif (!column.isGroup) {\n\t\t\t\t\tconfig.position = this.initializationMode;\n\n\t\t\t\t\tif (this.initializationMode == \"left\") {\n\t\t\t\t\t\tthis.leftColumns.push(column);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.rightColumns.unshift(column);\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.active = true;\n\n\t\t\t\t\tcolumn.modules.frozen = config;\n\t\t\t\t} else {\n\t\t\t\t\tconsole.warn(\"Frozen Column Error - Column Groups cannot be frozen\");\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconsole.warn(\"Frozen Column Error - Grouped columns cannot be frozen\");\n\t\t\t}\n\t\t} else {\n\t\t\tthis.initializationMode = \"right\";\n\t\t}\n\t};\n\n\t//quick layout to smooth horizontal scrolling\n\tFrozenColumns.prototype.scrollHorizontal = function () {\n\t\tvar _this37 = this;\n\n\t\tvar rows;\n\n\t\tif (this.active) {\n\t\t\tclearTimeout(this.scrollEndTimer);\n\n\t\t\t//layout all rows after scroll is complete\n\t\t\tthis.scrollEndTimer = setTimeout(function () {\n\t\t\t\t_this37.layout();\n\t\t\t}, 100);\n\n\t\t\trows = this.table.rowManager.getVisibleRows();\n\n\t\t\tthis.calcMargins();\n\n\t\t\tthis.layoutColumnPosition();\n\n\t\t\tthis.layoutCalcRows();\n\n\t\t\trows.forEach(function (row) {\n\t\t\t\tif (row.type === \"row\") {\n\t\t\t\t\t_this37.layoutRow(row);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.table.rowManager.tableElement.style.marginRight = this.rightMargin;\n\t\t}\n\t};\n\n\t//calculate margins for rows\n\tFrozenColumns.prototype.calcMargins = function () {\n\t\tthis.leftMargin = this._calcSpace(this.leftColumns, this.leftColumns.length) + \"px\";\n\t\tthis.table.columnManager.headersElement.style.marginLeft = this.leftMargin;\n\n\t\tthis.rightMargin = this._calcSpace(this.rightColumns, this.rightColumns.length) + \"px\";\n\t\tthis.table.columnManager.element.style.paddingRight = this.rightMargin;\n\n\t\t//calculate right frozen columns\n\t\tthis.rightPadding = this.table.rowManager.element.clientWidth + this.table.columnManager.scrollLeft;\n\t};\n\n\t//layout calculation rows\n\tFrozenColumns.prototype.layoutCalcRows = function () {\n\t\tif (this.table.modExists(\"columnCalcs\")) {\n\t\t\tif (this.table.modules.columnCalcs.topInitialized && this.table.modules.columnCalcs.topRow) {\n\t\t\t\tthis.layoutRow(this.table.modules.columnCalcs.topRow);\n\t\t\t}\n\t\t\tif (this.table.modules.columnCalcs.botInitialized && this.table.modules.columnCalcs.botRow) {\n\t\t\t\tthis.layoutRow(this.table.modules.columnCalcs.botRow);\n\t\t\t}\n\t\t}\n\t};\n\n\t//calculate column positions and layout headers\n\tFrozenColumns.prototype.layoutColumnPosition = function (allCells) {\n\t\tvar _this38 = this;\n\n\t\tthis.leftColumns.forEach(function (column, i) {\n\t\t\tcolumn.modules.frozen.margin = _this38._calcSpace(_this38.leftColumns, i) + _this38.table.columnManager.scrollLeft + \"px\";\n\n\t\t\tif (i == _this38.leftColumns.length - 1) {\n\t\t\t\tcolumn.modules.frozen.edge = true;\n\t\t\t} else {\n\t\t\t\tcolumn.modules.frozen.edge = false;\n\t\t\t}\n\n\t\t\t_this38.layoutElement(column.getElement(), column);\n\n\t\t\tif (allCells) {\n\t\t\t\tcolumn.cells.forEach(function (cell) {\n\t\t\t\t\t_this38.layoutElement(cell.getElement(), column);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tthis.rightColumns.forEach(function (column, i) {\n\t\t\tcolumn.modules.frozen.margin = _this38.rightPadding - _this38._calcSpace(_this38.rightColumns, i + 1) + \"px\";\n\n\t\t\tif (i == _this38.rightColumns.length - 1) {\n\t\t\t\tcolumn.modules.frozen.edge = true;\n\t\t\t} else {\n\t\t\t\tcolumn.modules.frozen.edge = false;\n\t\t\t}\n\n\t\t\t_this38.layoutElement(column.getElement(), column);\n\n\t\t\tif (allCells) {\n\t\t\t\tcolumn.cells.forEach(function (cell) {\n\t\t\t\t\t_this38.layoutElement(cell.getElement(), column);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t};\n\n\t//layout columns appropropriatly\n\tFrozenColumns.prototype.layout = function () {\n\t\tvar self = this,\n\t\t rightMargin = 0;\n\n\t\tif (self.active) {\n\n\t\t\t//calculate row padding\n\t\t\tthis.calcMargins();\n\n\t\t\t// self.table.rowManager.activeRows.forEach(function(row){\n\t\t\t// \tself.layoutRow(row);\n\t\t\t// });\n\n\t\t\t// if(self.table.options.dataTree){\n\t\t\tself.table.rowManager.getDisplayRows().forEach(function (row) {\n\t\t\t\tif (row.type === \"row\") {\n\t\t\t\t\tself.layoutRow(row);\n\t\t\t\t}\n\t\t\t});\n\t\t\t// }\n\n\t\t\tthis.layoutCalcRows();\n\n\t\t\t//calculate left columns\n\t\t\tthis.layoutColumnPosition(true);\n\n\t\t\t// if(tableHolder.scrollHeight > tableHolder.clientHeight){\n\t\t\t// \trightMargin -= tableHolder.offsetWidth - tableHolder.clientWidth;\n\t\t\t// }\n\n\t\t\tthis.table.rowManager.tableElement.style.marginRight = this.rightMargin;\n\t\t}\n\t};\n\n\tFrozenColumns.prototype.layoutRow = function (row) {\n\t\tvar _this39 = this;\n\n\t\tvar rowEl = row.getElement();\n\n\t\trowEl.style.paddingLeft = this.leftMargin;\n\t\t// rowEl.style.paddingRight = this.rightMargin + \"px\";\n\n\t\tthis.leftColumns.forEach(function (column) {\n\t\t\tvar cell = row.getCell(column);\n\n\t\t\tif (cell) {\n\t\t\t\t_this39.layoutElement(cell.getElement(), column);\n\t\t\t}\n\t\t});\n\n\t\tthis.rightColumns.forEach(function (column) {\n\t\t\tvar cell = row.getCell(column);\n\n\t\t\tif (cell) {\n\t\t\t\t_this39.layoutElement(cell.getElement(), column);\n\t\t\t}\n\t\t});\n\t};\n\n\tFrozenColumns.prototype.layoutElement = function (element, column) {\n\n\t\tif (column.modules.frozen) {\n\t\t\telement.style.position = \"absolute\";\n\t\t\telement.style.left = column.modules.frozen.margin;\n\n\t\t\telement.classList.add(\"tabulator-frozen\");\n\n\t\t\tif (column.modules.frozen.edge) {\n\t\t\t\telement.classList.add(\"tabulator-frozen-\" + column.modules.frozen.position);\n\t\t\t}\n\t\t}\n\t};\n\n\tFrozenColumns.prototype._calcSpace = function (columns, index) {\n\t\tvar width = 0;\n\n\t\tfor (var i = 0; i < index; i++) {\n\t\t\tif (columns[i].visible) {\n\t\t\t\twidth += columns[i].getWidth();\n\t\t\t}\n\t\t}\n\n\t\treturn width;\n\t};\n\n\tTabulator.prototype.registerModule(\"frozenColumns\", FrozenColumns);\n\tvar FrozenRows = function FrozenRows(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.topElement = document.createElement(\"div\");\n\t\tthis.rows = [];\n\t\tthis.displayIndex = 0; //index in display pipeline\n\t};\n\n\tFrozenRows.prototype.initialize = function () {\n\t\tthis.rows = [];\n\n\t\tthis.topElement.classList.add(\"tabulator-frozen-rows-holder\");\n\n\t\t// this.table.columnManager.element.append(this.topElement);\n\t\tthis.table.columnManager.getElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);\n\t};\n\n\tFrozenRows.prototype.setDisplayIndex = function (index) {\n\t\tthis.displayIndex = index;\n\t};\n\n\tFrozenRows.prototype.getDisplayIndex = function () {\n\t\treturn this.displayIndex;\n\t};\n\n\tFrozenRows.prototype.isFrozen = function () {\n\t\treturn !!this.rows.length;\n\t};\n\n\t//filter frozen rows out of display data\n\tFrozenRows.prototype.getRows = function (rows) {\n\t\tvar self = this,\n\t\t frozen = [],\n\t\t output = rows.slice(0);\n\n\t\tthis.rows.forEach(function (row) {\n\t\t\tvar index = output.indexOf(row);\n\n\t\t\tif (index > -1) {\n\t\t\t\toutput.splice(index, 1);\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t};\n\n\tFrozenRows.prototype.freezeRow = function (row) {\n\t\tif (!row.modules.frozen) {\n\t\t\trow.modules.frozen = true;\n\t\t\tthis.topElement.appendChild(row.getElement());\n\t\t\trow.initialize();\n\t\t\trow.normalizeHeight();\n\t\t\tthis.table.rowManager.adjustTableSize();\n\n\t\t\tthis.rows.push(row);\n\n\t\t\tthis.table.rowManager.refreshActiveData(\"display\");\n\n\t\t\tthis.styleRows();\n\t\t} else {\n\t\t\tconsole.warn(\"Freeze Error - Row is already frozen\");\n\t\t}\n\t};\n\n\tFrozenRows.prototype.unfreezeRow = function (row) {\n\t\tvar index = this.rows.indexOf(row);\n\n\t\tif (row.modules.frozen) {\n\n\t\t\trow.modules.frozen = false;\n\n\t\t\tvar rowEl = row.getElement();\n\t\t\trowEl.parentNode.removeChild(rowEl);\n\n\t\t\tthis.table.rowManager.adjustTableSize();\n\n\t\t\tthis.rows.splice(index, 1);\n\n\t\t\tthis.table.rowManager.refreshActiveData(\"display\");\n\n\t\t\tif (this.rows.length) {\n\t\t\t\tthis.styleRows();\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.warn(\"Freeze Error - Row is already unfrozen\");\n\t\t}\n\t};\n\n\tFrozenRows.prototype.styleRows = function (row) {\n\t\tvar self = this;\n\n\t\tthis.rows.forEach(function (row, i) {\n\t\t\tself.table.rowManager.styleRow(row, i);\n\t\t});\n\t};\n\n\tTabulator.prototype.registerModule(\"frozenRows\", FrozenRows);\n\n\t//public group object\n\tvar GroupComponent = function GroupComponent(group) {\n\t\tthis._group = group;\n\t\tthis.type = \"GroupComponent\";\n\t};\n\n\tGroupComponent.prototype.getKey = function () {\n\t\treturn this._group.key;\n\t};\n\n\tGroupComponent.prototype.getElement = function () {\n\t\treturn this._group.element;\n\t};\n\n\tGroupComponent.prototype.getRows = function () {\n\t\treturn this._group.getRows(true);\n\t};\n\n\tGroupComponent.prototype.getSubGroups = function () {\n\t\treturn this._group.getSubGroups(true);\n\t};\n\n\tGroupComponent.prototype.getParentGroup = function () {\n\t\treturn this._group.parent ? this._group.parent.getComponent() : false;\n\t};\n\n\tGroupComponent.prototype.getVisibility = function () {\n\t\treturn this._group.visible;\n\t};\n\n\tGroupComponent.prototype.show = function () {\n\t\tthis._group.show();\n\t};\n\n\tGroupComponent.prototype.hide = function () {\n\t\tthis._group.hide();\n\t};\n\n\tGroupComponent.prototype.toggle = function () {\n\t\tthis._group.toggleVisibility();\n\t};\n\n\tGroupComponent.prototype._getSelf = function () {\n\t\treturn this._group;\n\t};\n\n\tGroupComponent.prototype.getTable = function () {\n\t\treturn this._group.groupManager.table;\n\t};\n\n\t//////////////////////////////////////////////////\n\t//////////////// Group Functions /////////////////\n\t//////////////////////////////////////////////////\n\n\tvar Group = function Group(groupManager, parent, level, key, field, generator, oldGroup) {\n\n\t\tthis.groupManager = groupManager;\n\t\tthis.parent = parent;\n\t\tthis.key = key;\n\t\tthis.level = level;\n\t\tthis.field = field;\n\t\tthis.hasSubGroups = level < groupManager.groupIDLookups.length - 1;\n\t\tthis.addRow = this.hasSubGroups ? this._addRowToGroup : this._addRow;\n\t\tthis.type = \"group\"; //type of element\n\t\tthis.old = oldGroup;\n\t\tthis.rows = [];\n\t\tthis.groups = [];\n\t\tthis.groupList = [];\n\t\tthis.generator = generator;\n\t\tthis.elementContents = false;\n\t\tthis.height = 0;\n\t\tthis.outerHeight = 0;\n\t\tthis.initialized = false;\n\t\tthis.calcs = {};\n\t\tthis.initialized = false;\n\t\tthis.modules = {};\n\t\tthis.arrowElement = false;\n\n\t\tthis.visible = oldGroup ? oldGroup.visible : typeof groupManager.startOpen[level] !== \"undefined\" ? groupManager.startOpen[level] : groupManager.startOpen[0];\n\n\t\tthis.createElements();\n\t\tthis.addBindings();\n\n\t\tthis.createValueGroups();\n\t};\n\n\tGroup.prototype.wipe = function () {\n\t\tif (this.groupList.length) {\n\t\t\tthis.groupList.forEach(function (group) {\n\t\t\t\tgroup.wipe();\n\t\t\t});\n\t\t} else {\n\t\t\tthis.element = false;\n\t\t\tthis.arrowElement = false;\n\t\t\tthis.elementContents = false;\n\t\t}\n\t};\n\n\tGroup.prototype.createElements = function () {\n\t\tthis.element = document.createElement(\"div\");\n\t\tthis.element.classList.add(\"tabulator-row\");\n\t\tthis.element.classList.add(\"tabulator-group\");\n\t\tthis.element.classList.add(\"tabulator-group-level-\" + this.level);\n\t\tthis.element.setAttribute(\"role\", \"rowgroup\");\n\n\t\tthis.arrowElement = document.createElement(\"div\");\n\t\tthis.arrowElement.classList.add(\"tabulator-arrow\");\n\n\t\t//setup movable rows\n\t\tif (this.groupManager.table.options.movableRows !== false && this.groupManager.table.modExists(\"moveRow\")) {\n\t\t\tthis.groupManager.table.modules.moveRow.initializeGroupHeader(this);\n\t\t}\n\t};\n\n\tGroup.prototype.createValueGroups = function () {\n\t\tvar _this40 = this;\n\n\t\tvar level = this.level + 1;\n\t\tif (this.groupManager.allowedValues && this.groupManager.allowedValues[level]) {\n\t\t\tthis.groupManager.allowedValues[level].forEach(function (value) {\n\t\t\t\t_this40._createGroup(value, level);\n\t\t\t});\n\t\t}\n\t};\n\n\tGroup.prototype.addBindings = function () {\n\t\tvar self = this,\n\t\t dblTap,\n\t\t tapHold,\n\t\t tap,\n\t\t toggleElement;\n\n\t\t//handle group click events\n\t\tif (self.groupManager.table.options.groupClick) {\n\t\t\tself.element.addEventListener(\"click\", function (e) {\n\t\t\t\tself.groupManager.table.options.groupClick(e, self.getComponent());\n\t\t\t});\n\t\t}\n\n\t\tif (self.groupManager.table.options.groupDblClick) {\n\t\t\tself.element.addEventListener(\"dblclick\", function (e) {\n\t\t\t\tself.groupManager.table.options.groupDblClick(e, self.getComponent());\n\t\t\t});\n\t\t}\n\n\t\tif (self.groupManager.table.options.groupContext) {\n\t\t\tself.element.addEventListener(\"contextmenu\", function (e) {\n\t\t\t\tself.groupManager.table.options.groupContext(e, self.getComponent());\n\t\t\t});\n\t\t}\n\n\t\tif (self.groupManager.table.options.groupTap) {\n\n\t\t\ttap = false;\n\n\t\t\tself.element.addEventListener(\"touchstart\", function (e) {\n\t\t\t\ttap = true;\n\t\t\t}, { passive: true });\n\n\t\t\tself.element.addEventListener(\"touchend\", function (e) {\n\t\t\t\tif (tap) {\n\t\t\t\t\tself.groupManager.table.options.groupTap(e, self.getComponent());\n\t\t\t\t}\n\n\t\t\t\ttap = false;\n\t\t\t});\n\t\t}\n\n\t\tif (self.groupManager.table.options.groupDblTap) {\n\n\t\t\tdblTap = null;\n\n\t\t\tself.element.addEventListener(\"touchend\", function (e) {\n\n\t\t\t\tif (dblTap) {\n\t\t\t\t\tclearTimeout(dblTap);\n\t\t\t\t\tdblTap = null;\n\n\t\t\t\t\tself.groupManager.table.options.groupDblTap(e, self.getComponent());\n\t\t\t\t} else {\n\n\t\t\t\t\tdblTap = setTimeout(function () {\n\t\t\t\t\t\tclearTimeout(dblTap);\n\t\t\t\t\t\tdblTap = null;\n\t\t\t\t\t}, 300);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (self.groupManager.table.options.groupTapHold) {\n\n\t\t\ttapHold = null;\n\n\t\t\tself.element.addEventListener(\"touchstart\", function (e) {\n\t\t\t\tclearTimeout(tapHold);\n\n\t\t\t\ttapHold = setTimeout(function () {\n\t\t\t\t\tclearTimeout(tapHold);\n\t\t\t\t\ttapHold = null;\n\t\t\t\t\ttap = false;\n\t\t\t\t\tself.groupManager.table.options.groupTapHold(e, self.getComponent());\n\t\t\t\t}, 1000);\n\t\t\t}, { passive: true });\n\n\t\t\tself.element.addEventListener(\"touchend\", function (e) {\n\t\t\t\tclearTimeout(tapHold);\n\t\t\t\ttapHold = null;\n\t\t\t});\n\t\t}\n\n\t\tif (self.groupManager.table.options.groupToggleElement) {\n\t\t\ttoggleElement = self.groupManager.table.options.groupToggleElement == \"arrow\" ? self.arrowElement : self.element;\n\n\t\t\ttoggleElement.addEventListener(\"click\", function (e) {\n\t\t\t\te.stopPropagation();\n\t\t\t\te.stopImmediatePropagation();\n\t\t\t\tself.toggleVisibility();\n\t\t\t});\n\t\t}\n\t};\n\n\tGroup.prototype._createGroup = function (groupID, level) {\n\t\tvar groupKey = level + \"_\" + groupID;\n\t\tvar group = new Group(this.groupManager, this, level, groupID, this.groupManager.groupIDLookups[level].field, this.groupManager.headerGenerator[level] || this.groupManager.headerGenerator[0], this.old ? this.old.groups[groupKey] : false);\n\n\t\tthis.groups[groupKey] = group;\n\t\tthis.groupList.push(group);\n\t};\n\n\tGroup.prototype._addRowToGroup = function (row) {\n\n\t\tvar level = this.level + 1;\n\n\t\tif (this.hasSubGroups) {\n\t\t\tvar groupID = this.groupManager.groupIDLookups[level].func(row.getData()),\n\t\t\t groupKey = level + \"_\" + groupID;\n\n\t\t\tif (this.groupManager.allowedValues && this.groupManager.allowedValues[level]) {\n\t\t\t\tif (this.groups[groupKey]) {\n\t\t\t\t\tthis.groups[groupKey].addRow(row);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (!this.groups[groupKey]) {\n\t\t\t\t\tthis._createGroup(groupID, level);\n\t\t\t\t}\n\n\t\t\t\tthis.groups[groupKey].addRow(row);\n\t\t\t}\n\t\t}\n\t};\n\n\tGroup.prototype._addRow = function (row) {\n\t\tthis.rows.push(row);\n\t\trow.modules.group = this;\n\t};\n\n\tGroup.prototype.insertRow = function (row, to, after) {\n\t\tvar data = this.conformRowData({});\n\n\t\trow.updateData(data);\n\n\t\tvar toIndex = this.rows.indexOf(to);\n\n\t\tif (toIndex > -1) {\n\t\t\tif (after) {\n\t\t\t\tthis.rows.splice(toIndex + 1, 0, row);\n\t\t\t} else {\n\t\t\t\tthis.rows.splice(toIndex, 0, row);\n\t\t\t}\n\t\t} else {\n\t\t\tif (after) {\n\t\t\t\tthis.rows.push(row);\n\t\t\t} else {\n\t\t\t\tthis.rows.unshift(row);\n\t\t\t}\n\t\t}\n\n\t\trow.modules.group = this;\n\n\t\tthis.generateGroupHeaderContents();\n\n\t\tif (this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.options.columnCalcs != \"table\") {\n\t\t\tthis.groupManager.table.modules.columnCalcs.recalcGroup(this);\n\t\t}\n\n\t\tthis.groupManager.updateGroupRows(true);\n\t};\n\n\tGroup.prototype.scrollHeader = function (left) {\n\t\tthis.arrowElement.style.marginLeft = left;\n\n\t\tthis.groupList.forEach(function (child) {\n\t\t\tchild.scrollHeader(left);\n\t\t});\n\t};\n\n\tGroup.prototype.getRowIndex = function (row) {};\n\n\t//update row data to match grouping contraints\n\tGroup.prototype.conformRowData = function (data) {\n\t\tif (this.field) {\n\t\t\tdata[this.field] = this.key;\n\t\t} else {\n\t\t\tconsole.warn(\"Data Conforming Error - Cannot conform row data to match new group as groupBy is a function\");\n\t\t}\n\n\t\tif (this.parent) {\n\t\t\tdata = this.parent.conformRowData(data);\n\t\t}\n\n\t\treturn data;\n\t};\n\n\tGroup.prototype.removeRow = function (row) {\n\t\tvar index = this.rows.indexOf(row);\n\t\tvar el = row.getElement();\n\n\t\tif (index > -1) {\n\t\t\tthis.rows.splice(index, 1);\n\t\t}\n\n\t\tif (!this.groupManager.table.options.groupValues && !this.rows.length) {\n\t\t\tif (this.parent) {\n\t\t\t\tthis.parent.removeGroup(this);\n\t\t\t} else {\n\t\t\t\tthis.groupManager.removeGroup(this);\n\t\t\t}\n\n\t\t\tthis.groupManager.updateGroupRows(true);\n\t\t} else {\n\n\t\t\tif (el.parentNode) {\n\t\t\t\tel.parentNode.removeChild(el);\n\t\t\t}\n\n\t\t\tthis.generateGroupHeaderContents();\n\n\t\t\tif (this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.options.columnCalcs != \"table\") {\n\t\t\t\tthis.groupManager.table.modules.columnCalcs.recalcGroup(this);\n\t\t\t}\n\t\t}\n\t};\n\n\tGroup.prototype.removeGroup = function (group) {\n\t\tvar groupKey = group.level + \"_\" + group.key,\n\t\t index;\n\n\t\tif (this.groups[groupKey]) {\n\t\t\tdelete this.groups[groupKey];\n\n\t\t\tindex = this.groupList.indexOf(group);\n\n\t\t\tif (index > -1) {\n\t\t\t\tthis.groupList.splice(index, 1);\n\t\t\t}\n\n\t\t\tif (!this.groupList.length) {\n\t\t\t\tif (this.parent) {\n\t\t\t\t\tthis.parent.removeGroup(this);\n\t\t\t\t} else {\n\t\t\t\t\tthis.groupManager.removeGroup(this);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tGroup.prototype.getHeadersAndRows = function (noCalc) {\n\t\tvar output = [];\n\n\t\toutput.push(this);\n\n\t\tthis._visSet();\n\n\t\tif (this.visible) {\n\t\t\tif (this.groupList.length) {\n\t\t\t\tthis.groupList.forEach(function (group) {\n\t\t\t\t\toutput = output.concat(group.getHeadersAndRows(noCalc));\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tif (!noCalc && this.groupManager.table.options.columnCalcs != \"table\" && this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.modules.columnCalcs.hasTopCalcs()) {\n\t\t\t\t\tif (this.calcs.top) {\n\t\t\t\t\t\tthis.calcs.top.detachElement();\n\t\t\t\t\t\tthis.calcs.top.deleteCells();\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);\n\t\t\t\t\toutput.push(this.calcs.top);\n\t\t\t\t}\n\n\t\t\t\toutput = output.concat(this.rows);\n\n\t\t\t\tif (!noCalc && this.groupManager.table.options.columnCalcs != \"table\" && this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()) {\n\t\t\t\t\tif (this.calcs.bottom) {\n\t\t\t\t\t\tthis.calcs.bottom.detachElement();\n\t\t\t\t\t\tthis.calcs.bottom.deleteCells();\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);\n\t\t\t\t\toutput.push(this.calcs.bottom);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (!this.groupList.length && this.groupManager.table.options.columnCalcs != \"table\") {\n\n\t\t\t\tif (this.groupManager.table.modExists(\"columnCalcs\")) {\n\n\t\t\t\t\tif (!noCalc && this.groupManager.table.modules.columnCalcs.hasTopCalcs()) {\n\t\t\t\t\t\tif (this.calcs.top) {\n\t\t\t\t\t\t\tthis.calcs.top.detachElement();\n\t\t\t\t\t\t\tthis.calcs.top.deleteCells();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (this.groupManager.table.options.groupClosedShowCalcs) {\n\t\t\t\t\t\t\tthis.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);\n\t\t\t\t\t\t\toutput.push(this.calcs.top);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!noCalc && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()) {\n\t\t\t\t\t\tif (this.calcs.bottom) {\n\t\t\t\t\t\t\tthis.calcs.bottom.detachElement();\n\t\t\t\t\t\t\tthis.calcs.bottom.deleteCells();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (this.groupManager.table.options.groupClosedShowCalcs) {\n\t\t\t\t\t\t\tthis.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);\n\t\t\t\t\t\t\toutput.push(this.calcs.bottom);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn output;\n\t};\n\n\tGroup.prototype.getData = function (visible, transform) {\n\t\tvar self = this,\n\t\t output = [];\n\n\t\tthis._visSet();\n\n\t\tif (!visible || visible && this.visible) {\n\t\t\tthis.rows.forEach(function (row) {\n\t\t\t\toutput.push(row.getData(transform || \"data\"));\n\t\t\t});\n\t\t}\n\n\t\treturn output;\n\t};\n\n\t// Group.prototype.getRows = function(){\n\t// \tthis._visSet();\n\n\t// \treturn this.visible ? this.rows : [];\n\t// };\n\n\tGroup.prototype.getRowCount = function () {\n\t\tvar count = 0;\n\n\t\tif (this.groupList.length) {\n\t\t\tthis.groupList.forEach(function (group) {\n\t\t\t\tcount += group.getRowCount();\n\t\t\t});\n\t\t} else {\n\t\t\tcount = this.rows.length;\n\t\t}\n\t\treturn count;\n\t};\n\n\tGroup.prototype.toggleVisibility = function () {\n\t\tif (this.visible) {\n\t\t\tthis.hide();\n\t\t} else {\n\t\t\tthis.show();\n\t\t}\n\t};\n\n\tGroup.prototype.hide = function () {\n\t\tthis.visible = false;\n\n\t\tif (this.groupManager.table.rowManager.getRenderMode() == \"classic\" && !this.groupManager.table.options.pagination) {\n\n\t\t\tthis.element.classList.remove(\"tabulator-group-visible\");\n\n\t\t\tif (this.groupList.length) {\n\t\t\t\tthis.groupList.forEach(function (group) {\n\n\t\t\t\t\tvar rows = group.getHeadersAndRows();\n\n\t\t\t\t\trows.forEach(function (row) {\n\t\t\t\t\t\trow.detachElement();\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.rows.forEach(function (row) {\n\t\t\t\t\tvar rowEl = row.getElement();\n\t\t\t\t\trowEl.parentNode.removeChild(rowEl);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(), this.groupManager.getDisplayIndex());\n\n\t\t\tthis.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth();\n\t\t} else {\n\t\t\tthis.groupManager.updateGroupRows(true);\n\t\t}\n\n\t\tthis.groupManager.table.options.groupVisibilityChanged.call(this.table, this.getComponent(), false);\n\t};\n\n\tGroup.prototype.show = function () {\n\t\tvar self = this;\n\n\t\tself.visible = true;\n\n\t\tif (this.groupManager.table.rowManager.getRenderMode() == \"classic\" && !this.groupManager.table.options.pagination) {\n\n\t\t\tthis.element.classList.add(\"tabulator-group-visible\");\n\n\t\t\tvar prev = self.getElement();\n\n\t\t\tif (this.groupList.length) {\n\t\t\t\tthis.groupList.forEach(function (group) {\n\t\t\t\t\tvar rows = group.getHeadersAndRows();\n\n\t\t\t\t\trows.forEach(function (row) {\n\t\t\t\t\t\tvar rowEl = row.getElement();\n\t\t\t\t\t\tprev.parentNode.insertBefore(rowEl, prev.nextSibling);\n\t\t\t\t\t\trow.initialize();\n\t\t\t\t\t\tprev = rowEl;\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tself.rows.forEach(function (row) {\n\t\t\t\t\tvar rowEl = row.getElement();\n\t\t\t\t\tprev.parentNode.insertBefore(rowEl, prev.nextSibling);\n\t\t\t\t\trow.initialize();\n\t\t\t\t\tprev = rowEl;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(), this.groupManager.getDisplayIndex());\n\n\t\t\tthis.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth();\n\t\t} else {\n\t\t\tthis.groupManager.updateGroupRows(true);\n\t\t}\n\n\t\tthis.groupManager.table.options.groupVisibilityChanged.call(this.table, this.getComponent(), true);\n\t};\n\n\tGroup.prototype._visSet = function () {\n\t\tvar data = [];\n\n\t\tif (typeof this.visible == \"function\") {\n\n\t\t\tthis.rows.forEach(function (row) {\n\t\t\t\tdata.push(row.getData());\n\t\t\t});\n\n\t\t\tthis.visible = this.visible(this.key, this.getRowCount(), data, this.getComponent());\n\t\t}\n\t};\n\n\tGroup.prototype.getRowGroup = function (row) {\n\t\tvar match = false;\n\t\tif (this.groupList.length) {\n\t\t\tthis.groupList.forEach(function (group) {\n\t\t\t\tvar result = group.getRowGroup(row);\n\n\t\t\t\tif (result) {\n\t\t\t\t\tmatch = result;\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tif (this.rows.find(function (item) {\n\t\t\t\treturn item === row;\n\t\t\t})) {\n\t\t\t\tmatch = this;\n\t\t\t}\n\t\t}\n\n\t\treturn match;\n\t};\n\n\tGroup.prototype.getSubGroups = function (component) {\n\t\tvar output = [];\n\n\t\tthis.groupList.forEach(function (child) {\n\t\t\toutput.push(component ? child.getComponent() : child);\n\t\t});\n\n\t\treturn output;\n\t};\n\n\tGroup.prototype.getRows = function (compoment) {\n\t\tvar output = [];\n\n\t\tthis.rows.forEach(function (row) {\n\t\t\toutput.push(compoment ? row.getComponent() : row);\n\t\t});\n\n\t\treturn output;\n\t};\n\n\tGroup.prototype.generateGroupHeaderContents = function () {\n\t\tvar data = [];\n\n\t\tthis.rows.forEach(function (row) {\n\t\t\tdata.push(row.getData());\n\t\t});\n\n\t\tthis.elementContents = this.generator(this.key, this.getRowCount(), data, this.getComponent());\n\n\t\twhile (this.element.firstChild) {\n\t\t\tthis.element.removeChild(this.element.firstChild);\n\t\t}if (typeof this.elementContents === \"string\") {\n\t\t\tthis.element.innerHTML = this.elementContents;\n\t\t} else {\n\t\t\tthis.element.appendChild(this.elementContents);\n\t\t}\n\n\t\tthis.element.insertBefore(this.arrowElement, this.element.firstChild);\n\t};\n\n\t////////////// Standard Row Functions //////////////\n\n\tGroup.prototype.getElement = function () {\n\t\tthis.addBindingsd = false;\n\n\t\tthis._visSet();\n\n\t\tif (this.visible) {\n\t\t\tthis.element.classList.add(\"tabulator-group-visible\");\n\t\t} else {\n\t\t\tthis.element.classList.remove(\"tabulator-group-visible\");\n\t\t}\n\n\t\tfor (var i = 0; i < this.element.childNodes.length; ++i) {\n\t\t\tthis.element.childNodes[i].parentNode.removeChild(this.element.childNodes[i]);\n\t\t}\n\n\t\tthis.generateGroupHeaderContents();\n\n\t\t// this.addBindings();\n\n\t\treturn this.element;\n\t};\n\n\tGroup.prototype.detachElement = function () {\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t};\n\n\t//normalize the height of elements in the row\n\tGroup.prototype.normalizeHeight = function () {\n\t\tthis.setHeight(this.element.clientHeight);\n\t};\n\n\tGroup.prototype.initialize = function (force) {\n\t\tif (!this.initialized || force) {\n\t\t\tthis.normalizeHeight();\n\t\t\tthis.initialized = true;\n\t\t}\n\t};\n\n\tGroup.prototype.reinitialize = function () {\n\t\tthis.initialized = false;\n\t\tthis.height = 0;\n\n\t\tif (Tabulator.prototype.helpers.elVisible(this.element)) {\n\t\t\tthis.initialize(true);\n\t\t}\n\t};\n\n\tGroup.prototype.setHeight = function (height) {\n\t\tif (this.height != height) {\n\t\t\tthis.height = height;\n\t\t\tthis.outerHeight = this.element.offsetHeight;\n\t\t}\n\t};\n\n\t//return rows outer height\n\tGroup.prototype.getHeight = function () {\n\t\treturn this.outerHeight;\n\t};\n\n\tGroup.prototype.getGroup = function () {\n\t\treturn this;\n\t};\n\n\tGroup.prototype.reinitializeHeight = function () {};\n\tGroup.prototype.calcHeight = function () {};\n\tGroup.prototype.setCellHeight = function () {};\n\tGroup.prototype.clearCellHeight = function () {};\n\n\t//////////////// Object Generation /////////////////\n\tGroup.prototype.getComponent = function () {\n\t\treturn new GroupComponent(this);\n\t};\n\n\t//////////////////////////////////////////////////\n\t////////////// Group Row Extension ///////////////\n\t//////////////////////////////////////////////////\n\n\tvar GroupRows = function GroupRows(table) {\n\n\t\tthis.table = table; //hold Tabulator object\n\n\t\tthis.groupIDLookups = false; //enable table grouping and set field to group by\n\t\tthis.startOpen = [function () {\n\t\t\treturn false;\n\t\t}]; //starting state of group\n\t\tthis.headerGenerator = [function () {\n\t\t\treturn \"\";\n\t\t}];\n\t\tthis.groupList = []; //ordered list of groups\n\t\tthis.allowedValues = false;\n\t\tthis.groups = {}; //hold row groups\n\t\tthis.displayIndex = 0; //index in display pipeline\n\t};\n\n\t//initialize group configuration\n\tGroupRows.prototype.initialize = function () {\n\t\tvar self = this,\n\t\t groupBy = self.table.options.groupBy,\n\t\t startOpen = self.table.options.groupStartOpen,\n\t\t groupHeader = self.table.options.groupHeader;\n\n\t\tthis.allowedValues = self.table.options.groupValues;\n\n\t\tself.headerGenerator = [function () {\n\t\t\treturn \"\";\n\t\t}];\n\t\tthis.startOpen = [function () {\n\t\t\treturn false;\n\t\t}]; //starting state of group\n\n\t\tself.table.modules.localize.bind(\"groups|item\", function (langValue, lang) {\n\t\t\tself.headerGenerator[0] = function (value, count, data) {\n\t\t\t\t//header layout function\n\t\t\t\treturn (typeof value === \"undefined\" ? \"\" : value) + \"<span>(\" + count + \" \" + (count === 1 ? langValue : lang.groups.items) + \")</span>\";\n\t\t\t};\n\t\t});\n\n\t\tthis.groupIDLookups = [];\n\n\t\tif (Array.isArray(groupBy) || groupBy) {\n\t\t\tif (this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs != \"table\" && this.table.options.columnCalcs != \"both\") {\n\t\t\t\tthis.table.modules.columnCalcs.removeCalcs();\n\t\t\t}\n\t\t} else {\n\t\t\tif (this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs != \"group\") {\n\n\t\t\t\tvar cols = this.table.columnManager.getRealColumns();\n\n\t\t\t\tcols.forEach(function (col) {\n\t\t\t\t\tif (col.definition.topCalc) {\n\t\t\t\t\t\tself.table.modules.columnCalcs.initializeTopRow();\n\t\t\t\t\t}\n\n\t\t\t\t\tif (col.definition.bottomCalc) {\n\t\t\t\t\t\tself.table.modules.columnCalcs.initializeBottomRow();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (!Array.isArray(groupBy)) {\n\t\t\tgroupBy = [groupBy];\n\t\t}\n\n\t\tgroupBy.forEach(function (group, i) {\n\t\t\tvar lookupFunc, column;\n\n\t\t\tif (typeof group == \"function\") {\n\t\t\t\tlookupFunc = group;\n\t\t\t} else {\n\t\t\t\tcolumn = self.table.columnManager.getColumnByField(group);\n\n\t\t\t\tif (column) {\n\t\t\t\t\tlookupFunc = function lookupFunc(data) {\n\t\t\t\t\t\treturn column.getFieldValue(data);\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\tlookupFunc = function lookupFunc(data) {\n\t\t\t\t\t\treturn data[group];\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tself.groupIDLookups.push({\n\t\t\t\tfield: typeof group === \"function\" ? false : group,\n\t\t\t\tfunc: lookupFunc,\n\t\t\t\tvalues: self.allowedValues ? self.allowedValues[i] : false\n\t\t\t});\n\t\t});\n\n\t\tif (startOpen) {\n\n\t\t\tif (!Array.isArray(startOpen)) {\n\t\t\t\tstartOpen = [startOpen];\n\t\t\t}\n\n\t\t\tstartOpen.forEach(function (level) {\n\t\t\t\tlevel = typeof level == \"function\" ? level : function () {\n\t\t\t\t\treturn true;\n\t\t\t\t};\n\t\t\t});\n\n\t\t\tself.startOpen = startOpen;\n\t\t}\n\n\t\tif (groupHeader) {\n\t\t\tself.headerGenerator = Array.isArray(groupHeader) ? groupHeader : [groupHeader];\n\t\t}\n\n\t\tthis.initialized = true;\n\t};\n\n\tGroupRows.prototype.setDisplayIndex = function (index) {\n\t\tthis.displayIndex = index;\n\t};\n\n\tGroupRows.prototype.getDisplayIndex = function () {\n\t\treturn this.displayIndex;\n\t};\n\n\t//return appropriate rows with group headers\n\tGroupRows.prototype.getRows = function (rows) {\n\t\tif (this.groupIDLookups.length) {\n\n\t\t\tthis.table.options.dataGrouping.call(this.table);\n\n\t\t\tthis.generateGroups(rows);\n\n\t\t\tif (this.table.options.dataGrouped) {\n\t\t\t\tthis.table.options.dataGrouped.call(this.table, this.getGroups(true));\n\t\t\t}\n\n\t\t\treturn this.updateGroupRows();\n\t\t} else {\n\t\t\treturn rows.slice(0);\n\t\t}\n\t};\n\n\tGroupRows.prototype.getGroups = function (compoment) {\n\t\tvar groupComponents = [];\n\n\t\tthis.groupList.forEach(function (group) {\n\t\t\tgroupComponents.push(compoment ? group.getComponent() : group);\n\t\t});\n\n\t\treturn groupComponents;\n\t};\n\n\tGroupRows.prototype.wipe = function () {\n\t\tthis.groupList.forEach(function (group) {\n\t\t\tgroup.wipe();\n\t\t});\n\t};\n\n\tGroupRows.prototype.pullGroupListData = function (groupList) {\n\t\tvar self = this;\n\t\tvar groupListData = [];\n\n\t\tgroupList.forEach(function (group) {\n\t\t\tvar groupHeader = {};\n\t\t\tgroupHeader.level = 0;\n\t\t\tgroupHeader.rowCount = 0;\n\t\t\tgroupHeader.headerContent = \"\";\n\t\t\tvar childData = [];\n\n\t\t\tif (group.hasSubGroups) {\n\t\t\t\tchildData = self.pullGroupListData(group.groupList);\n\n\t\t\t\tgroupHeader.level = group.level;\n\t\t\t\tgroupHeader.rowCount = childData.length - group.groupList.length; // data length minus number of sub-headers\n\t\t\t\tgroupHeader.headerContent = group.generator(group.key, groupHeader.rowCount, group.rows, group);\n\n\t\t\t\tgroupListData.push(groupHeader);\n\t\t\t\tgroupListData = groupListData.concat(childData);\n\t\t\t} else {\n\t\t\t\tgroupHeader.level = group.level;\n\t\t\t\tgroupHeader.headerContent = group.generator(group.key, group.rows.length, group.rows, group);\n\t\t\t\tgroupHeader.rowCount = group.getRows().length;\n\n\t\t\t\tgroupListData.push(groupHeader);\n\n\t\t\t\tgroup.getRows().forEach(function (row) {\n\t\t\t\t\tgroupListData.push(row.getData(\"data\"));\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\treturn groupListData;\n\t};\n\n\tGroupRows.prototype.getGroupedData = function () {\n\n\t\treturn this.pullGroupListData(this.groupList);\n\t};\n\n\tGroupRows.prototype.getRowGroup = function (row) {\n\t\tvar match = false;\n\n\t\tthis.groupList.forEach(function (group) {\n\t\t\tvar result = group.getRowGroup(row);\n\n\t\t\tif (result) {\n\t\t\t\tmatch = result;\n\t\t\t}\n\t\t});\n\n\t\treturn match;\n\t};\n\n\tGroupRows.prototype.countGroups = function () {\n\t\treturn this.groupList.length;\n\t};\n\n\tGroupRows.prototype.generateGroups = function (rows) {\n\t\tvar self = this,\n\t\t oldGroups = self.groups;\n\n\t\tself.groups = {};\n\t\tself.groupList = [];\n\n\t\tif (this.allowedValues && this.allowedValues[0]) {\n\t\t\tthis.allowedValues[0].forEach(function (value) {\n\t\t\t\tself.createGroup(value, 0, oldGroups);\n\t\t\t});\n\n\t\t\trows.forEach(function (row) {\n\t\t\t\tself.assignRowToExistingGroup(row, oldGroups);\n\t\t\t});\n\t\t} else {\n\t\t\trows.forEach(function (row) {\n\t\t\t\tself.assignRowToGroup(row, oldGroups);\n\t\t\t});\n\t\t}\n\t};\n\n\tGroupRows.prototype.createGroup = function (groupID, level, oldGroups) {\n\t\tvar groupKey = level + \"_\" + groupID,\n\t\t group;\n\n\t\toldGroups = oldGroups || [];\n\n\t\tgroup = new Group(this, false, level, groupID, this.groupIDLookups[0].field, this.headerGenerator[0], oldGroups[groupKey]);\n\n\t\tthis.groups[groupKey] = group;\n\t\tthis.groupList.push(group);\n\t};\n\n\tGroupRows.prototype.assignRowToGroup = function (row, oldGroups) {\n\t\tvar groupID = this.groupIDLookups[0].func(row.getData()),\n\t\t groupKey = \"0_\" + groupID;\n\n\t\tif (!this.groups[groupKey]) {\n\t\t\tthis.createGroup(groupID, 0, oldGroups);\n\t\t}\n\n\t\tthis.groups[groupKey].addRow(row);\n\t};\n\n\tGroupRows.prototype.assignRowToExistingGroup = function (row, oldGroups) {\n\t\tvar groupID = this.groupIDLookups[0].func(row.getData()),\n\t\t groupKey = \"0_\" + groupID;\n\n\t\tif (this.groups[groupKey]) {\n\t\t\tthis.groups[groupKey].addRow(row);\n\t\t}\n\t};\n\n\tGroupRows.prototype.assignRowToGroup = function (row, oldGroups) {\n\t\tvar groupID = this.groupIDLookups[0].func(row.getData()),\n\t\t newGroupNeeded = !this.groups[\"0_\" + groupID];\n\n\t\tif (newGroupNeeded) {\n\t\t\tthis.createGroup(groupID, 0, oldGroups);\n\t\t}\n\n\t\tthis.groups[\"0_\" + groupID].addRow(row);\n\n\t\treturn !newGroupNeeded;\n\t};\n\n\tGroupRows.prototype.updateGroupRows = function (force) {\n\t\tvar self = this,\n\t\t output = [],\n\t\t oldRowCount;\n\n\t\tself.groupList.forEach(function (group) {\n\t\t\toutput = output.concat(group.getHeadersAndRows());\n\t\t});\n\n\t\t//force update of table display\n\t\tif (force) {\n\n\t\t\tvar displayIndex = self.table.rowManager.setDisplayRows(output, this.getDisplayIndex());\n\n\t\t\tif (displayIndex !== true) {\n\t\t\t\tthis.setDisplayIndex(displayIndex);\n\t\t\t}\n\n\t\t\tself.table.rowManager.refreshActiveData(\"group\", true, true);\n\t\t}\n\n\t\treturn output;\n\t};\n\n\tGroupRows.prototype.scrollHeaders = function (left) {\n\t\tleft = left + \"px\";\n\n\t\tthis.groupList.forEach(function (group) {\n\t\t\tgroup.scrollHeader(left);\n\t\t});\n\t};\n\n\tGroupRows.prototype.removeGroup = function (group) {\n\t\tvar groupKey = group.level + \"_\" + group.key,\n\t\t index;\n\n\t\tif (this.groups[groupKey]) {\n\t\t\tdelete this.groups[groupKey];\n\n\t\t\tindex = this.groupList.indexOf(group);\n\n\t\t\tif (index > -1) {\n\t\t\t\tthis.groupList.splice(index, 1);\n\t\t\t}\n\t\t}\n\t};\n\n\tTabulator.prototype.registerModule(\"groupRows\", GroupRows);\n\tvar History = function History(table) {\n\t\tthis.table = table; //hold Tabulator object\n\n\t\tthis.history = [];\n\t\tthis.index = -1;\n\t};\n\n\tHistory.prototype.clear = function () {\n\t\tthis.history = [];\n\t\tthis.index = -1;\n\t};\n\n\tHistory.prototype.action = function (type, component, data) {\n\n\t\tthis.history = this.history.slice(0, this.index + 1);\n\n\t\tthis.history.push({\n\t\t\ttype: type,\n\t\t\tcomponent: component,\n\t\t\tdata: data\n\t\t});\n\n\t\tthis.index++;\n\t};\n\n\tHistory.prototype.getHistoryUndoSize = function () {\n\t\treturn this.index + 1;\n\t};\n\n\tHistory.prototype.getHistoryRedoSize = function () {\n\t\treturn this.history.length - (this.index + 1);\n\t};\n\n\tHistory.prototype.undo = function () {\n\n\t\tif (this.index > -1) {\n\t\t\tvar action = this.history[this.index];\n\n\t\t\tthis.undoers[action.type].call(this, action);\n\n\t\t\tthis.index--;\n\n\t\t\tthis.table.options.historyUndo.call(this.table, action.type, action.component.getComponent(), action.data);\n\n\t\t\treturn true;\n\t\t} else {\n\t\t\tconsole.warn(\"History Undo Error - No more history to undo\");\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tHistory.prototype.redo = function () {\n\t\tif (this.history.length - 1 > this.index) {\n\n\t\t\tthis.index++;\n\n\t\t\tvar action = this.history[this.index];\n\n\t\t\tthis.redoers[action.type].call(this, action);\n\n\t\t\tthis.table.options.historyRedo.call(this.table, action.type, action.component.getComponent(), action.data);\n\n\t\t\treturn true;\n\t\t} else {\n\t\t\tconsole.warn(\"History Redo Error - No more history to redo\");\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tHistory.prototype.undoers = {\n\t\tcellEdit: function cellEdit(action) {\n\t\t\taction.component.setValueProcessData(action.data.oldValue);\n\t\t},\n\n\t\trowAdd: function rowAdd(action) {\n\t\t\taction.component.deleteActual();\n\t\t},\n\n\t\trowDelete: function rowDelete(action) {\n\t\t\tvar newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);\n\n\t\t\tthis._rebindRow(action.component, newRow);\n\t\t},\n\n\t\trowMove: function rowMove(action) {\n\t\t\tthis.table.rowManager.moveRowActual(action.component, this.table.rowManager.rows[action.data.pos], false);\n\t\t\tthis.table.rowManager.redraw();\n\t\t}\n\t};\n\n\tHistory.prototype.redoers = {\n\t\tcellEdit: function cellEdit(action) {\n\t\t\taction.component.setValueProcessData(action.data.newValue);\n\t\t},\n\n\t\trowAdd: function rowAdd(action) {\n\t\t\tvar newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);\n\n\t\t\tthis._rebindRow(action.component, newRow);\n\t\t},\n\n\t\trowDelete: function rowDelete(action) {\n\t\t\taction.component.deleteActual();\n\t\t},\n\n\t\trowMove: function rowMove(action) {\n\t\t\tthis.table.rowManager.moveRowActual(action.component, this.table.rowManager.rows[action.data.pos], false);\n\t\t\tthis.table.rowManager.redraw();\n\t\t}\n\t};\n\n\t//rebind rows to new element after deletion\n\tHistory.prototype._rebindRow = function (oldRow, newRow) {\n\t\tthis.history.forEach(function (action) {\n\t\t\tif (action.component instanceof Row) {\n\t\t\t\tif (action.component === oldRow) {\n\t\t\t\t\taction.component = newRow;\n\t\t\t\t}\n\t\t\t} else if (action.component instanceof Cell) {\n\t\t\t\tif (action.component.row === oldRow) {\n\t\t\t\t\tvar field = action.component.column.getField();\n\n\t\t\t\t\tif (field) {\n\t\t\t\t\t\taction.component = newRow.getCell(field);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t};\n\n\tTabulator.prototype.registerModule(\"history\", History);\n\tvar HtmlTableImport = function HtmlTableImport(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.fieldIndex = [];\n\t\tthis.hasIndex = false;\n\t};\n\n\tHtmlTableImport.prototype.parseTable = function () {\n\t\tvar self = this,\n\t\t element = self.table.element,\n\t\t options = self.table.options,\n\t\t columns = options.columns,\n\t\t headers = element.getElementsByTagName(\"th\"),\n\t\t rows = element.getElementsByTagName(\"tbody\")[0],\n\t\t data = [],\n\t\t newTable;\n\n\t\tself.hasIndex = false;\n\n\t\tself.table.options.htmlImporting.call(this.table);\n\n\t\trows = rows ? rows.getElementsByTagName(\"tr\") : [];\n\n\t\t//check for tablator inline options\n\t\tself._extractOptions(element, options);\n\n\t\tif (headers.length) {\n\t\t\tself._extractHeaders(headers, rows);\n\t\t} else {\n\t\t\tself._generateBlankHeaders(headers, rows);\n\t\t}\n\n\t\t//iterate through table rows and build data set\n\t\tfor (var index = 0; index < rows.length; index++) {\n\t\t\tvar row = rows[index],\n\t\t\t cells = row.getElementsByTagName(\"td\"),\n\t\t\t item = {};\n\n\t\t\t//create index if the dont exist in table\n\t\t\tif (!self.hasIndex) {\n\t\t\t\titem[options.index] = index;\n\t\t\t}\n\n\t\t\tfor (var i = 0; i < cells.length; i++) {\n\t\t\t\tvar cell = cells[i];\n\t\t\t\tif (typeof this.fieldIndex[i] !== \"undefined\") {\n\t\t\t\t\titem[this.fieldIndex[i]] = cell.innerHTML;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//add row data to item\n\t\t\tdata.push(item);\n\t\t}\n\n\t\t//create new element\n\t\tvar newElement = document.createElement(\"div\");\n\n\t\t//transfer attributes to new element\n\t\tvar attributes = element.attributes;\n\n\t\t// loop through attributes and apply them on div\n\n\t\tfor (var i in attributes) {\n\t\t\tif (_typeof(attributes[i]) == \"object\") {\n\t\t\t\tnewElement.setAttribute(attributes[i].name, attributes[i].value);\n\t\t\t}\n\t\t}\n\n\t\t// replace table with div element\n\t\telement.parentNode.replaceChild(newElement, element);\n\n\t\toptions.data = data;\n\n\t\tself.table.options.htmlImported.call(this.table);\n\n\t\t// // newElement.tabulator(options);\n\n\t\tthis.table.element = newElement;\n\t};\n\n\t//extract tabulator attribute options\n\tHtmlTableImport.prototype._extractOptions = function (element, options, defaultOptions) {\n\t\tvar attributes = element.attributes;\n\t\tvar optionsArr = defaultOptions ? Object.assign([], defaultOptions) : Object.keys(options);\n\t\tvar optionsList = {};\n\n\t\toptionsArr.forEach(function (item) {\n\t\t\toptionsList[item.toLowerCase()] = item;\n\t\t});\n\n\t\tfor (var index in attributes) {\n\t\t\tvar attrib = attributes[index];\n\t\t\tvar name;\n\n\t\t\tif (attrib && (typeof attrib === 'undefined' ? 'undefined' : _typeof(attrib)) == \"object\" && attrib.name && attrib.name.indexOf(\"tabulator-\") === 0) {\n\t\t\t\tname = attrib.name.replace(\"tabulator-\", \"\");\n\n\t\t\t\tif (typeof optionsList[name] !== \"undefined\") {\n\t\t\t\t\toptions[optionsList[name]] = this._attribValue(attrib.value);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\t//get value of attribute\n\tHtmlTableImport.prototype._attribValue = function (value) {\n\t\tif (value === \"true\") {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (value === \"false\") {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn value;\n\t};\n\n\t//find column if it has already been defined\n\tHtmlTableImport.prototype._findCol = function (title) {\n\t\tvar match = this.table.options.columns.find(function (column) {\n\t\t\treturn column.title === title;\n\t\t});\n\n\t\treturn match || false;\n\t};\n\n\t//extract column from headers\n\tHtmlTableImport.prototype._extractHeaders = function (headers, rows) {\n\t\tfor (var index = 0; index < headers.length; index++) {\n\t\t\tvar header = headers[index],\n\t\t\t exists = false,\n\t\t\t col = this._findCol(header.textContent),\n\t\t\t width,\n\t\t\t attributes;\n\n\t\t\tif (col) {\n\t\t\t\texists = true;\n\t\t\t} else {\n\t\t\t\tcol = { title: header.textContent.trim() };\n\t\t\t}\n\n\t\t\tif (!col.field) {\n\t\t\t\tcol.field = header.textContent.trim().toLowerCase().replace(\" \", \"_\");\n\t\t\t}\n\n\t\t\twidth = header.getAttribute(\"width\");\n\n\t\t\tif (width && !col.width) {\n\t\t\t\tcol.width = width;\n\t\t\t}\n\n\t\t\t//check for tablator inline options\n\t\t\tattributes = header.attributes;\n\n\t\t\t// //check for tablator inline options\n\t\t\tthis._extractOptions(header, col, Column.prototype.defaultOptionList);\n\n\t\t\tfor (var i in attributes) {\n\t\t\t\tvar attrib = attributes[i],\n\t\t\t\t name;\n\n\t\t\t\tif (attrib && (typeof attrib === 'undefined' ? 'undefined' : _typeof(attrib)) == \"object\" && attrib.name && attrib.name.indexOf(\"tabulator-\") === 0) {\n\n\t\t\t\t\tname = attrib.name.replace(\"tabulator-\", \"\");\n\n\t\t\t\t\tcol[name] = this._attribValue(attrib.value);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.fieldIndex[index] = col.field;\n\n\t\t\tif (col.field == this.table.options.index) {\n\t\t\t\tthis.hasIndex = true;\n\t\t\t}\n\n\t\t\tif (!exists) {\n\t\t\t\tthis.table.options.columns.push(col);\n\t\t\t}\n\t\t}\n\t};\n\n\t//generate blank headers\n\tHtmlTableImport.prototype._generateBlankHeaders = function (headers, rows) {\n\t\tfor (var index = 0; index < headers.length; index++) {\n\t\t\tvar header = headers[index],\n\t\t\t col = { title: \"\", field: \"col\" + index };\n\n\t\t\tthis.fieldIndex[index] = col.field;\n\n\t\t\tvar width = header.getAttribute(\"width\");\n\n\t\t\tif (width) {\n\t\t\t\tcol.width = width;\n\t\t\t}\n\n\t\t\tthis.table.options.columns.push(col);\n\t\t}\n\t};\n\n\tTabulator.prototype.registerModule(\"htmlTableImport\", HtmlTableImport);\n\tvar HtmlTableExport = function HtmlTableExport(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.config = {};\n\t\tthis.cloneTableStyle = true;\n\t\tthis.colVisProp = \"\";\n\t};\n\n\tHtmlTableExport.prototype.genereateTable = function (config, style, visible, colVisProp) {\n\t\tthis.cloneTableStyle = style;\n\t\tthis.config = config || {};\n\t\tthis.colVisProp = colVisProp;\n\n\t\tvar headers = this.generateHeaderElements();\n\t\tvar body = this.generateBodyElements(visible);\n\n\t\tvar table = document.createElement(\"table\");\n\t\ttable.classList.add(\"tabulator-print-table\");\n\t\ttable.appendChild(headers);\n\t\ttable.appendChild(body);\n\n\t\tthis.mapElementStyles(this.table.element, table, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\"]);\n\n\t\treturn table;\n\t};\n\n\tHtmlTableExport.prototype.generateColumnGroupHeaders = function () {\n\t\tvar _this41 = this;\n\n\t\tvar output = [];\n\n\t\tvar columns = this.config.columnGroups !== false ? this.table.columnManager.columns : this.table.columnManager.columnsByIndex;\n\n\t\tcolumns.forEach(function (column) {\n\t\t\tvar colData = _this41.processColumnGroup(column);\n\n\t\t\tif (colData) {\n\t\t\t\toutput.push(colData);\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t};\n\n\tHtmlTableExport.prototype.processColumnGroup = function (column) {\n\t\tvar _this42 = this;\n\n\t\tvar subGroups = column.columns,\n\t\t maxDepth = 0;\n\n\t\tvar groupData = {\n\t\t\ttitle: column.definition.title,\n\t\t\tcolumn: column,\n\t\t\tdepth: 1\n\t\t};\n\n\t\tif (subGroups.length) {\n\t\t\tgroupData.subGroups = [];\n\t\t\tgroupData.width = 0;\n\n\t\t\tsubGroups.forEach(function (subGroup) {\n\t\t\t\tvar subGroupData = _this42.processColumnGroup(subGroup);\n\n\t\t\t\tif (subGroupData) {\n\t\t\t\t\tgroupData.width += subGroupData.width;\n\t\t\t\t\tgroupData.subGroups.push(subGroupData);\n\n\t\t\t\t\tif (subGroupData.depth > maxDepth) {\n\t\t\t\t\t\tmaxDepth = subGroupData.depth;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tgroupData.depth += maxDepth;\n\n\t\t\tif (!groupData.width) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} else {\n\t\t\tif (column.field && this.columnVisCheck(column)) {\n\t\t\t\tgroupData.width = 1;\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn groupData;\n\t};\n\n\tHtmlTableExport.prototype.groupHeadersToRows = function (columns) {\n\n\t\tvar headers = [],\n\t\t headerDepth = 0;\n\n\t\tfunction parseColumnGroup(column, level) {\n\n\t\t\tvar depth = headerDepth - level;\n\n\t\t\tif (typeof headers[level] === \"undefined\") {\n\t\t\t\theaders[level] = [];\n\t\t\t}\n\n\t\t\tcolumn.height = column.subGroups ? 1 : depth - column.depth + 1;\n\n\t\t\theaders[level].push(column);\n\n\t\t\tif (column.subGroups) {\n\t\t\t\tcolumn.subGroups.forEach(function (subGroup) {\n\t\t\t\t\tparseColumnGroup(subGroup, level + 1);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t//calculate maximum header debth\n\t\tcolumns.forEach(function (column) {\n\t\t\tif (column.depth > headerDepth) {\n\t\t\t\theaderDepth = column.depth;\n\t\t\t}\n\t\t});\n\n\t\tcolumns.forEach(function (column) {\n\t\t\tparseColumnGroup(column, 0);\n\t\t});\n\n\t\treturn headers;\n\t};\n\n\tHtmlTableExport.prototype.generateHeaderElements = function () {\n\t\tvar _this43 = this;\n\n\t\tvar headerEl = document.createElement(\"thead\");\n\n\t\tvar rows = this.groupHeadersToRows(this.generateColumnGroupHeaders());\n\n\t\trows.forEach(function (row) {\n\t\t\tvar rowEl = document.createElement(\"tr\");\n\n\t\t\t_this43.mapElementStyles(_this43.table.columnManager.getHeadersElement(), headerEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"background-color\", \"color\", \"font-weight\", \"font-family\", \"font-size\"]);\n\n\t\t\trow.forEach(function (column) {\n\t\t\t\tvar cellEl = document.createElement(\"th\");\n\n\t\t\t\tcellEl.colSpan = column.width;\n\t\t\t\tcellEl.rowSpan = column.height;\n\n\t\t\t\tcellEl.innerHTML = column.column.definition.title;\n\n\t\t\t\tif (_this43.cloneTableStyle) {\n\t\t\t\t\tcellEl.style.boxSizing = \"border-box\";\n\t\t\t\t}\n\n\t\t\t\t_this43.mapElementStyles(column.column.getElement(), cellEl, [\"text-align\", \"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"background-color\", \"color\", \"font-weight\", \"font-family\", \"font-size\"]);\n\t\t\t\t_this43.mapElementStyles(column.column.contentElement, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\"]);\n\n\t\t\t\tif (column.column.visible) {\n\t\t\t\t\t_this43.mapElementStyles(column.column.getElement(), cellEl, [\"width\"]);\n\t\t\t\t} else {\n\t\t\t\t\tif (column.column.definition.width) {\n\t\t\t\t\t\tcellEl.style.width = column.column.definition.width + \"px\";\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (column.column.parent) {\n\t\t\t\t\t_this43.mapElementStyles(column.column.parent.groupElement, cellEl, [\"border-top\"]);\n\t\t\t\t}\n\n\t\t\t\trowEl.appendChild(cellEl);\n\t\t\t});\n\n\t\t\theaderEl.appendChild(rowEl);\n\t\t});\n\n\t\treturn headerEl;\n\t};\n\n\tHtmlTableExport.prototype.generateBodyElements = function (visible) {\n\t\tvar _this44 = this;\n\n\t\tvar oddRow, evenRow, calcRow, firstRow, firstCell, firstGroup, lastCell, styleCells, styleRow;\n\n\t\t//lookup row styles\n\t\tif (this.cloneTableStyle && window.getComputedStyle) {\n\t\t\toddRow = this.table.element.querySelector(\".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)\");\n\t\t\tevenRow = this.table.element.querySelector(\".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)\");\n\t\t\tcalcRow = this.table.element.querySelector(\".tabulator-row.tabulator-calcs\");\n\t\t\tfirstRow = this.table.element.querySelector(\".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)\");\n\t\t\tfirstGroup = this.table.element.getElementsByClassName(\"tabulator-group\")[0];\n\n\t\t\tif (firstRow) {\n\t\t\t\tstyleCells = firstRow.getElementsByClassName(\"tabulator-cell\");\n\t\t\t\tfirstCell = styleCells[0];\n\t\t\t\tlastCell = styleCells[styleCells.length - 1];\n\t\t\t}\n\t\t}\n\n\t\tvar bodyEl = document.createElement(\"tbody\");\n\n\t\tvar rows = visible ? this.table.rowManager.getVisibleRows(true) : this.table.rowManager.getDisplayRows();\n\t\tvar columns = [];\n\n\t\tthis.table.columnManager.columnsByIndex.forEach(function (column) {\n\t\t\tif (_this44.columnVisCheck(column)) {\n\t\t\t\tcolumns.push(column);\n\t\t\t}\n\t\t});\n\n\t\trows = rows.filter(function (row) {\n\t\t\tswitch (row.type) {\n\t\t\t\tcase \"group\":\n\t\t\t\t\treturn _this44.config.rowGroups !== false;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"calc\":\n\t\t\t\t\treturn _this44.config.columnCalcs !== false;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\treturn true;\n\t\t});\n\n\t\tif (rows.length > 1000) {\n\t\t\tconsole.warn(\"It may take a long time to render an HTML table with more than 1000 rows\");\n\t\t}\n\n\t\trows.forEach(function (row, i) {\n\t\t\tvar rowData = row.getData();\n\n\t\t\tvar rowEl = document.createElement(\"tr\");\n\t\t\trowEl.classList.add(\"tabulator-print-table-row\");\n\n\t\t\tswitch (row.type) {\n\t\t\t\tcase \"group\":\n\t\t\t\t\tvar cellEl = document.createElement(\"td\");\n\t\t\t\t\tcellEl.colSpan = columns.length;\n\t\t\t\t\tcellEl.innerHTML = row.key;\n\n\t\t\t\t\trowEl.classList.add(\"tabulator-print-table-group\");\n\n\t\t\t\t\t_this44.mapElementStyles(firstGroup, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\n\t\t\t\t\t_this44.mapElementStyles(firstGroup, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\"]);\n\t\t\t\t\trowEl.appendChild(cellEl);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"calc\":\n\t\t\t\t\trowEl.classList.add(\"tabulator-print-table-calcs\");\n\n\t\t\t\tcase \"row\":\n\t\t\t\t\tcolumns.forEach(function (column) {\n\t\t\t\t\t\tvar cellEl = document.createElement(\"td\");\n\n\t\t\t\t\t\tvar value = column.getFieldValue(rowData);\n\n\t\t\t\t\t\tvar cellWrapper = {\n\t\t\t\t\t\t\tgetValue: function getValue() {\n\t\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tgetField: function getField() {\n\t\t\t\t\t\t\t\treturn column.definition.field;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tgetElement: function getElement() {\n\t\t\t\t\t\t\t\treturn cellEl;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tgetColumn: function getColumn() {\n\t\t\t\t\t\t\t\treturn column.getComponent();\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tgetRow: function getRow() {\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\tnormalizeHeight: function normalizeHeight() {}\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tgetComponent: function getComponent() {\n\t\t\t\t\t\t\t\treturn cellWrapper;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tcolumn: column\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (_this44.table.modExists(\"format\")) {\n\t\t\t\t\t\t\tvalue = _this44.table.modules.format.formatValue(cellWrapper);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tswitch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {\n\t\t\t\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\t\t\t\tvalue = JSON.stringify(value);\n\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\t\t\tcase \"null\":\n\t\t\t\t\t\t\t\t\tvalue = \"\";\n\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\tvalue = value;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (value instanceof Node) {\n\t\t\t\t\t\t\tcellEl.appendChild(value);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcellEl.innerHTML = value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (firstCell) {\n\t\t\t\t\t\t\t_this44.mapElementStyles(firstCell, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\", \"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"text-align\"]);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\trowEl.appendChild(cellEl);\n\t\t\t\t\t});\n\n\t\t\t\t\tstyleRow = row.type == \"calc\" ? calcRow : i % 2 && evenRow ? evenRow : oddRow;\n\n\t\t\t\t\t_this44.mapElementStyles(styleRow, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tbodyEl.appendChild(rowEl);\n\t\t});\n\n\t\treturn bodyEl;\n\t};\n\n\tHtmlTableExport.prototype.columnVisCheck = function (column) {\n\t\treturn column.definition[this.colVisProp] !== false && (column.visible || !column.visible && column.definition[this.colVisProp]);\n\t};\n\n\tHtmlTableExport.prototype.getHtml = function (visible, style, config) {\n\t\tvar holder = document.createElement(\"div\");\n\n\t\tholder.appendChild(this.genereateTable(config || this.table.options.htmlOutputConfig, style, visible, \"htmlOutput\"));\n\n\t\treturn holder.innerHTML;\n\t};\n\n\tHtmlTableExport.prototype.mapElementStyles = function (from, to, props) {\n\t\tif (this.cloneTableStyle && from && to) {\n\n\t\t\tvar lookup = {\n\t\t\t\t\"background-color\": \"backgroundColor\",\n\t\t\t\t\"color\": \"fontColor\",\n\t\t\t\t\"width\": \"width\",\n\t\t\t\t\"font-weight\": \"fontWeight\",\n\t\t\t\t\"font-family\": \"fontFamily\",\n\t\t\t\t\"font-size\": \"fontSize\",\n\t\t\t\t\"text-align\": \"textAlign\",\n\t\t\t\t\"border-top\": \"borderTop\",\n\t\t\t\t\"border-left\": \"borderLeft\",\n\t\t\t\t\"border-right\": \"borderRight\",\n\t\t\t\t\"border-bottom\": \"borderBottom\",\n\t\t\t\t\"padding-top\": \"paddingTop\",\n\t\t\t\t\"padding-left\": \"paddingLeft\",\n\t\t\t\t\"padding-right\": \"paddingRight\",\n\t\t\t\t\"padding-bottom\": \"paddingBottom\"\n\t\t\t};\n\n\t\t\tif (window.getComputedStyle) {\n\t\t\t\tvar fromStyle = window.getComputedStyle(from);\n\n\t\t\t\tprops.forEach(function (prop) {\n\t\t\t\t\tto.style[lookup[prop]] = fromStyle.getPropertyValue(prop);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t};\n\n\tTabulator.prototype.registerModule(\"htmlTableExport\", HtmlTableExport);\n\tvar Keybindings = function Keybindings(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.watchKeys = null;\n\t\tthis.pressedKeys = null;\n\t\tthis.keyupBinding = false;\n\t\tthis.keydownBinding = false;\n\t};\n\n\tKeybindings.prototype.initialize = function () {\n\t\tvar bindings = this.table.options.keybindings,\n\t\t mergedBindings = {};\n\n\t\tthis.watchKeys = {};\n\t\tthis.pressedKeys = [];\n\n\t\tif (bindings !== false) {\n\n\t\t\tfor (var key in this.bindings) {\n\t\t\t\tmergedBindings[key] = this.bindings[key];\n\t\t\t}\n\n\t\t\tif (Object.keys(bindings).length) {\n\n\t\t\t\tfor (var _key in bindings) {\n\t\t\t\t\tmergedBindings[_key] = bindings[_key];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.mapBindings(mergedBindings);\n\t\t\tthis.bindEvents();\n\t\t}\n\t};\n\n\tKeybindings.prototype.mapBindings = function (bindings) {\n\t\tvar _this45 = this;\n\n\t\tvar self = this;\n\n\t\tvar _loop2 = function _loop2(key) {\n\n\t\t\tif (_this45.actions[key]) {\n\n\t\t\t\tif (bindings[key]) {\n\n\t\t\t\t\tif (_typeof(bindings[key]) !== \"object\") {\n\t\t\t\t\t\tbindings[key] = [bindings[key]];\n\t\t\t\t\t}\n\n\t\t\t\t\tbindings[key].forEach(function (binding) {\n\t\t\t\t\t\tself.mapBinding(key, binding);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconsole.warn(\"Key Binding Error - no such action:\", key);\n\t\t\t}\n\t\t};\n\n\t\tfor (var key in bindings) {\n\t\t\t_loop2(key);\n\t\t}\n\t};\n\n\tKeybindings.prototype.mapBinding = function (action, symbolsList) {\n\t\tvar self = this;\n\n\t\tvar binding = {\n\t\t\taction: this.actions[action],\n\t\t\tkeys: [],\n\t\t\tctrl: false,\n\t\t\tshift: false\n\t\t};\n\n\t\tvar symbols = symbolsList.toString().toLowerCase().split(\" \").join(\"\").split(\"+\");\n\n\t\tsymbols.forEach(function (symbol) {\n\t\t\tswitch (symbol) {\n\t\t\t\tcase \"ctrl\":\n\t\t\t\t\tbinding.ctrl = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"shift\":\n\t\t\t\t\tbinding.shift = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tsymbol = parseInt(symbol);\n\t\t\t\t\tbinding.keys.push(symbol);\n\n\t\t\t\t\tif (!self.watchKeys[symbol]) {\n\t\t\t\t\t\tself.watchKeys[symbol] = [];\n\t\t\t\t\t}\n\n\t\t\t\t\tself.watchKeys[symbol].push(binding);\n\t\t\t}\n\t\t});\n\t};\n\n\tKeybindings.prototype.bindEvents = function () {\n\t\tvar self = this;\n\n\t\tthis.keyupBinding = function (e) {\n\t\t\tvar code = e.keyCode;\n\t\t\tvar bindings = self.watchKeys[code];\n\n\t\t\tif (bindings) {\n\n\t\t\t\tself.pressedKeys.push(code);\n\n\t\t\t\tbindings.forEach(function (binding) {\n\t\t\t\t\tself.checkBinding(e, binding);\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\n\t\tthis.keydownBinding = function (e) {\n\t\t\tvar code = e.keyCode;\n\t\t\tvar bindings = self.watchKeys[code];\n\n\t\t\tif (bindings) {\n\n\t\t\t\tvar index = self.pressedKeys.indexOf(code);\n\n\t\t\t\tif (index > -1) {\n\t\t\t\t\tself.pressedKeys.splice(index, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tthis.table.element.addEventListener(\"keydown\", this.keyupBinding);\n\n\t\tthis.table.element.addEventListener(\"keyup\", this.keydownBinding);\n\t};\n\n\tKeybindings.prototype.clearBindings = function () {\n\t\tif (this.keyupBinding) {\n\t\t\tthis.table.element.removeEventListener(\"keydown\", this.keyupBinding);\n\t\t}\n\n\t\tif (this.keydownBinding) {\n\t\t\tthis.table.element.removeEventListener(\"keyup\", this.keydownBinding);\n\t\t}\n\t};\n\n\tKeybindings.prototype.checkBinding = function (e, binding) {\n\t\tvar self = this,\n\t\t match = true;\n\n\t\tif (e.ctrlKey == binding.ctrl && e.shiftKey == binding.shift) {\n\t\t\tbinding.keys.forEach(function (key) {\n\t\t\t\tvar index = self.pressedKeys.indexOf(key);\n\n\t\t\t\tif (index == -1) {\n\t\t\t\t\tmatch = false;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (match) {\n\t\t\t\tbinding.action.call(self, e);\n\t\t\t}\n\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t};\n\n\t//default bindings\n\tKeybindings.prototype.bindings = {\n\t\tnavPrev: \"shift + 9\",\n\t\tnavNext: 9,\n\t\tnavUp: 38,\n\t\tnavDown: 40,\n\t\tscrollPageUp: 33,\n\t\tscrollPageDown: 34,\n\t\tscrollToStart: 36,\n\t\tscrollToEnd: 35,\n\t\tundo: \"ctrl + 90\",\n\t\tredo: \"ctrl + 89\",\n\t\tcopyToClipboard: \"ctrl + 67\"\n\t};\n\n\t//default actions\n\tKeybindings.prototype.actions = {\n\t\tkeyBlock: function keyBlock(e) {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t},\n\t\tscrollPageUp: function scrollPageUp(e) {\n\t\t\tvar rowManager = this.table.rowManager,\n\t\t\t newPos = rowManager.scrollTop - rowManager.height,\n\t\t\t scrollMax = rowManager.element.scrollHeight;\n\n\t\t\te.preventDefault();\n\n\t\t\tif (rowManager.displayRowsCount) {\n\t\t\t\tif (newPos >= 0) {\n\t\t\t\t\trowManager.element.scrollTop = newPos;\n\t\t\t\t} else {\n\t\t\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[0]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.table.element.focus();\n\t\t},\n\t\tscrollPageDown: function scrollPageDown(e) {\n\t\t\tvar rowManager = this.table.rowManager,\n\t\t\t newPos = rowManager.scrollTop + rowManager.height,\n\t\t\t scrollMax = rowManager.element.scrollHeight;\n\n\t\t\te.preventDefault();\n\n\t\t\tif (rowManager.displayRowsCount) {\n\t\t\t\tif (newPos <= scrollMax) {\n\t\t\t\t\trowManager.element.scrollTop = newPos;\n\t\t\t\t} else {\n\t\t\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.table.element.focus();\n\t\t},\n\t\tscrollToStart: function scrollToStart(e) {\n\t\t\tvar rowManager = this.table.rowManager;\n\n\t\t\te.preventDefault();\n\n\t\t\tif (rowManager.displayRowsCount) {\n\t\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[0]);\n\t\t\t}\n\n\t\t\tthis.table.element.focus();\n\t\t},\n\t\tscrollToEnd: function scrollToEnd(e) {\n\t\t\tvar rowManager = this.table.rowManager;\n\n\t\t\te.preventDefault();\n\n\t\t\tif (rowManager.displayRowsCount) {\n\t\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);\n\t\t\t}\n\n\t\t\tthis.table.element.focus();\n\t\t},\n\t\tnavPrev: function navPrev(e) {\n\t\t\tvar cell = false;\n\n\t\t\tif (this.table.modExists(\"edit\")) {\n\t\t\t\tcell = this.table.modules.edit.currentCell;\n\n\t\t\t\tif (cell) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tcell.nav().prev();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tnavNext: function navNext(e) {\n\t\t\tvar cell = false;\n\n\t\t\tif (this.table.modExists(\"edit\")) {\n\t\t\t\tcell = this.table.modules.edit.currentCell;\n\n\t\t\t\tif (cell) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tcell.nav().next();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tnavLeft: function navLeft(e) {\n\t\t\tvar cell = false;\n\n\t\t\tif (this.table.modExists(\"edit\")) {\n\t\t\t\tcell = this.table.modules.edit.currentCell;\n\n\t\t\t\tif (cell) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tcell.nav().left();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tnavRight: function navRight(e) {\n\t\t\tvar cell = false;\n\n\t\t\tif (this.table.modExists(\"edit\")) {\n\t\t\t\tcell = this.table.modules.edit.currentCell;\n\n\t\t\t\tif (cell) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tcell.nav().right();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tnavUp: function navUp(e) {\n\t\t\tvar cell = false;\n\n\t\t\tif (this.table.modExists(\"edit\")) {\n\t\t\t\tcell = this.table.modules.edit.currentCell;\n\n\t\t\t\tif (cell) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tcell.nav().up();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tnavDown: function navDown(e) {\n\t\t\tvar cell = false;\n\n\t\t\tif (this.table.modExists(\"edit\")) {\n\t\t\t\tcell = this.table.modules.edit.currentCell;\n\n\t\t\t\tif (cell) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tcell.nav().down();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tundo: function undo(e) {\n\t\t\tvar cell = false;\n\t\t\tif (this.table.options.history && this.table.modExists(\"history\") && this.table.modExists(\"edit\")) {\n\n\t\t\t\tcell = this.table.modules.edit.currentCell;\n\n\t\t\t\tif (!cell) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tthis.table.modules.history.undo();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tredo: function redo(e) {\n\t\t\tvar cell = false;\n\t\t\tif (this.table.options.history && this.table.modExists(\"history\") && this.table.modExists(\"edit\")) {\n\n\t\t\t\tcell = this.table.modules.edit.currentCell;\n\n\t\t\t\tif (!cell) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tthis.table.modules.history.redo();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tcopyToClipboard: function copyToClipboard(e) {\n\t\t\tif (!this.table.modules.edit.currentCell) {\n\t\t\t\tif (this.table.modExists(\"clipboard\", true)) {\n\t\t\t\t\tthis.table.modules.clipboard.copy(!this.table.options.selectable || this.table.options.selectable == \"highlight\" ? \"active\" : \"selected\", null, null, null, true);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tTabulator.prototype.registerModule(\"keybindings\", Keybindings);\n\tvar MoveColumns = function MoveColumns(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.placeholderElement = this.createPlaceholderElement();\n\t\tthis.hoverElement = false; //floating column header element\n\t\tthis.checkTimeout = false; //click check timeout holder\n\t\tthis.checkPeriod = 250; //period to wait on mousedown to consider this a move and not a click\n\t\tthis.moving = false; //currently moving column\n\t\tthis.toCol = false; //destination column\n\t\tthis.toColAfter = false; //position of moving column relative to the desitnation column\n\t\tthis.startX = 0; //starting position within header element\n\t\tthis.autoScrollMargin = 40; //auto scroll on edge when within margin\n\t\tthis.autoScrollStep = 5; //auto scroll distance in pixels\n\t\tthis.autoScrollTimeout = false; //auto scroll timeout\n\t\tthis.touchMove = false;\n\n\t\tthis.moveHover = this.moveHover.bind(this);\n\t\tthis.endMove = this.endMove.bind(this);\n\t};\n\n\tMoveColumns.prototype.createPlaceholderElement = function () {\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-col\");\n\t\tel.classList.add(\"tabulator-col-placeholder\");\n\n\t\treturn el;\n\t};\n\n\tMoveColumns.prototype.initializeColumn = function (column) {\n\t\tvar self = this,\n\t\t config = {},\n\t\t colEl;\n\n\t\tif (!column.modules.frozen) {\n\n\t\t\tcolEl = column.getElement();\n\n\t\t\tconfig.mousemove = function (e) {\n\t\t\t\tif (column.parent === self.moving.parent) {\n\t\t\t\t\tif ((self.touchMove ? e.touches[0].pageX : e.pageX) - Tabulator.prototype.helpers.elOffset(colEl).left + self.table.columnManager.element.scrollLeft > column.getWidth() / 2) {\n\t\t\t\t\t\tif (self.toCol !== column || !self.toColAfter) {\n\t\t\t\t\t\t\tcolEl.parentNode.insertBefore(self.placeholderElement, colEl.nextSibling);\n\t\t\t\t\t\t\tself.moveColumn(column, true);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (self.toCol !== column || self.toColAfter) {\n\t\t\t\t\t\t\tcolEl.parentNode.insertBefore(self.placeholderElement, colEl);\n\t\t\t\t\t\t\tself.moveColumn(column, false);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}.bind(self);\n\n\t\t\tcolEl.addEventListener(\"mousedown\", function (e) {\n\t\t\t\tself.touchMove = false;\n\t\t\t\tif (e.which === 1) {\n\t\t\t\t\tself.checkTimeout = setTimeout(function () {\n\t\t\t\t\t\tself.startMove(e, column);\n\t\t\t\t\t}, self.checkPeriod);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tcolEl.addEventListener(\"mouseup\", function (e) {\n\t\t\t\tif (e.which === 1) {\n\t\t\t\t\tif (self.checkTimeout) {\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tself.bindTouchEvents(column);\n\t\t}\n\n\t\tcolumn.modules.moveColumn = config;\n\t};\n\n\tMoveColumns.prototype.bindTouchEvents = function (column) {\n\t\tvar self = this,\n\t\t colEl = column.getElement(),\n\t\t startXMove = false,\n\t\t //shifting center position of the cell\n\t\tdir = false,\n\t\t currentCol,\n\t\t nextCol,\n\t\t prevCol,\n\t\t nextColWidth,\n\t\t prevColWidth,\n\t\t nextColWidthLast,\n\t\t prevColWidthLast;\n\n\t\tcolEl.addEventListener(\"touchstart\", function (e) {\n\t\t\tself.checkTimeout = setTimeout(function () {\n\t\t\t\tself.touchMove = true;\n\t\t\t\tcurrentCol = column;\n\t\t\t\tnextCol = column.nextColumn();\n\t\t\t\tnextColWidth = nextCol ? nextCol.getWidth() / 2 : 0;\n\t\t\t\tprevCol = column.prevColumn();\n\t\t\t\tprevColWidth = prevCol ? prevCol.getWidth() / 2 : 0;\n\t\t\t\tnextColWidthLast = 0;\n\t\t\t\tprevColWidthLast = 0;\n\t\t\t\tstartXMove = false;\n\n\t\t\t\tself.startMove(e, column);\n\t\t\t}, self.checkPeriod);\n\t\t}, { passive: true });\n\n\t\tcolEl.addEventListener(\"touchmove\", function (e) {\n\t\t\tvar halfCol, diff, moveToCol;\n\n\t\t\tif (self.moving) {\n\t\t\t\tself.moveHover(e);\n\n\t\t\t\tif (!startXMove) {\n\t\t\t\t\tstartXMove = e.touches[0].pageX;\n\t\t\t\t}\n\n\t\t\t\tdiff = e.touches[0].pageX - startXMove;\n\n\t\t\t\tif (diff > 0) {\n\t\t\t\t\tif (nextCol && diff - nextColWidthLast > nextColWidth) {\n\t\t\t\t\t\tmoveToCol = nextCol;\n\n\t\t\t\t\t\tif (moveToCol !== column) {\n\t\t\t\t\t\t\tstartXMove = e.touches[0].pageX;\n\t\t\t\t\t\t\tmoveToCol.getElement().parentNode.insertBefore(self.placeholderElement, moveToCol.getElement().nextSibling);\n\t\t\t\t\t\t\tself.moveColumn(moveToCol, true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (prevCol && -diff - prevColWidthLast > prevColWidth) {\n\t\t\t\t\t\tmoveToCol = prevCol;\n\n\t\t\t\t\t\tif (moveToCol !== column) {\n\t\t\t\t\t\t\tstartXMove = e.touches[0].pageX;\n\t\t\t\t\t\t\tmoveToCol.getElement().parentNode.insertBefore(self.placeholderElement, moveToCol.getElement());\n\t\t\t\t\t\t\tself.moveColumn(moveToCol, false);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (moveToCol) {\n\t\t\t\t\tcurrentCol = moveToCol;\n\t\t\t\t\tnextCol = moveToCol.nextColumn();\n\t\t\t\t\tnextColWidthLast = nextColWidth;\n\t\t\t\t\tnextColWidth = nextCol ? nextCol.getWidth() / 2 : 0;\n\t\t\t\t\tprevCol = moveToCol.prevColumn();\n\t\t\t\t\tprevColWidthLast = prevColWidth;\n\t\t\t\t\tprevColWidth = prevCol ? prevCol.getWidth() / 2 : 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}, { passive: true });\n\n\t\tcolEl.addEventListener(\"touchend\", function (e) {\n\t\t\tif (self.checkTimeout) {\n\t\t\t\tclearTimeout(self.checkTimeout);\n\t\t\t}\n\t\t\tif (self.moving) {\n\t\t\t\tself.endMove(e);\n\t\t\t}\n\t\t});\n\t};\n\n\tMoveColumns.prototype.startMove = function (e, column) {\n\t\tvar element = column.getElement();\n\n\t\tthis.moving = column;\n\t\tthis.startX = (this.touchMove ? e.touches[0].pageX : e.pageX) - Tabulator.prototype.helpers.elOffset(element).left;\n\n\t\tthis.table.element.classList.add(\"tabulator-block-select\");\n\n\t\t//create placeholder\n\t\tthis.placeholderElement.style.width = column.getWidth() + \"px\";\n\t\tthis.placeholderElement.style.height = column.getHeight() + \"px\";\n\n\t\telement.parentNode.insertBefore(this.placeholderElement, element);\n\t\telement.parentNode.removeChild(element);\n\n\t\t//create hover element\n\t\tthis.hoverElement = element.cloneNode(true);\n\t\tthis.hoverElement.classList.add(\"tabulator-moving\");\n\n\t\tthis.table.columnManager.getElement().appendChild(this.hoverElement);\n\n\t\tthis.hoverElement.style.left = \"0\";\n\t\tthis.hoverElement.style.bottom = \"0\";\n\n\t\tif (!this.touchMove) {\n\t\t\tthis._bindMouseMove();\n\n\t\t\tdocument.body.addEventListener(\"mousemove\", this.moveHover);\n\t\t\tdocument.body.addEventListener(\"mouseup\", this.endMove);\n\t\t}\n\n\t\tthis.moveHover(e);\n\t};\n\n\tMoveColumns.prototype._bindMouseMove = function () {\n\t\tthis.table.columnManager.columnsByIndex.forEach(function (column) {\n\t\t\tif (column.modules.moveColumn.mousemove) {\n\t\t\t\tcolumn.getElement().addEventListener(\"mousemove\", column.modules.moveColumn.mousemove);\n\t\t\t}\n\t\t});\n\t};\n\n\tMoveColumns.prototype._unbindMouseMove = function () {\n\t\tthis.table.columnManager.columnsByIndex.forEach(function (column) {\n\t\t\tif (column.modules.moveColumn.mousemove) {\n\t\t\t\tcolumn.getElement().removeEventListener(\"mousemove\", column.modules.moveColumn.mousemove);\n\t\t\t}\n\t\t});\n\t};\n\n\tMoveColumns.prototype.moveColumn = function (column, after) {\n\t\tvar movingCells = this.moving.getCells();\n\n\t\tthis.toCol = column;\n\t\tthis.toColAfter = after;\n\n\t\tif (after) {\n\t\t\tcolumn.getCells().forEach(function (cell, i) {\n\t\t\t\tvar cellEl = cell.getElement();\n\t\t\t\tcellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl.nextSibling);\n\t\t\t});\n\t\t} else {\n\t\t\tcolumn.getCells().forEach(function (cell, i) {\n\t\t\t\tvar cellEl = cell.getElement();\n\t\t\t\tcellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl);\n\t\t\t});\n\t\t}\n\t};\n\n\tMoveColumns.prototype.endMove = function (e) {\n\t\tif (e.which === 1 || this.touchMove) {\n\t\t\tthis._unbindMouseMove();\n\n\t\t\tthis.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);\n\t\t\tthis.placeholderElement.parentNode.removeChild(this.placeholderElement);\n\t\t\tthis.hoverElement.parentNode.removeChild(this.hoverElement);\n\n\t\t\tthis.table.element.classList.remove(\"tabulator-block-select\");\n\n\t\t\tif (this.toCol) {\n\t\t\t\tthis.table.columnManager.moveColumn(this.moving, this.toCol, this.toColAfter);\n\t\t\t}\n\n\t\t\tthis.moving = false;\n\t\t\tthis.toCol = false;\n\t\t\tthis.toColAfter = false;\n\n\t\t\tif (!this.touchMove) {\n\t\t\t\tdocument.body.removeEventListener(\"mousemove\", this.moveHover);\n\t\t\t\tdocument.body.removeEventListener(\"mouseup\", this.endMove);\n\t\t\t}\n\t\t}\n\t};\n\n\tMoveColumns.prototype.moveHover = function (e) {\n\t\tvar self = this,\n\t\t columnHolder = self.table.columnManager.getElement(),\n\t\t scrollLeft = columnHolder.scrollLeft,\n\t\t xPos = (self.touchMove ? e.touches[0].pageX : e.pageX) - Tabulator.prototype.helpers.elOffset(columnHolder).left + scrollLeft,\n\t\t scrollPos;\n\n\t\tself.hoverElement.style.left = xPos - self.startX + \"px\";\n\n\t\tif (xPos - scrollLeft < self.autoScrollMargin) {\n\t\t\tif (!self.autoScrollTimeout) {\n\t\t\t\tself.autoScrollTimeout = setTimeout(function () {\n\t\t\t\t\tscrollPos = Math.max(0, scrollLeft - 5);\n\t\t\t\t\tself.table.rowManager.getElement().scrollLeft = scrollPos;\n\t\t\t\t\tself.autoScrollTimeout = false;\n\t\t\t\t}, 1);\n\t\t\t}\n\t\t}\n\n\t\tif (scrollLeft + columnHolder.clientWidth - xPos < self.autoScrollMargin) {\n\t\t\tif (!self.autoScrollTimeout) {\n\t\t\t\tself.autoScrollTimeout = setTimeout(function () {\n\t\t\t\t\tscrollPos = Math.min(columnHolder.clientWidth, scrollLeft + 5);\n\t\t\t\t\tself.table.rowManager.getElement().scrollLeft = scrollPos;\n\t\t\t\t\tself.autoScrollTimeout = false;\n\t\t\t\t}, 1);\n\t\t\t}\n\t\t}\n\t};\n\n\tTabulator.prototype.registerModule(\"moveColumn\", MoveColumns);\n\tvar MoveRows = function MoveRows(table) {\n\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.placeholderElement = this.createPlaceholderElement();\n\t\tthis.hoverElement = false; //floating row header element\n\t\tthis.checkTimeout = false; //click check timeout holder\n\t\tthis.checkPeriod = 150; //period to wait on mousedown to consider this a move and not a click\n\t\tthis.moving = false; //currently moving row\n\t\tthis.toRow = false; //destination row\n\t\tthis.toRowAfter = false; //position of moving row relative to the desitnation row\n\t\tthis.hasHandle = false; //row has handle instead of fully movable row\n\t\tthis.startY = 0; //starting Y position within header element\n\t\tthis.startX = 0; //starting X position within header element\n\n\t\tthis.moveHover = this.moveHover.bind(this);\n\t\tthis.endMove = this.endMove.bind(this);\n\t\tthis.tableRowDropEvent = false;\n\n\t\tthis.touchMove = false;\n\n\t\tthis.connection = false;\n\t\tthis.connections = [];\n\n\t\tthis.connectedTable = false;\n\t\tthis.connectedRow = false;\n\t};\n\n\tMoveRows.prototype.createPlaceholderElement = function () {\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-row\");\n\t\tel.classList.add(\"tabulator-row-placeholder\");\n\n\t\treturn el;\n\t};\n\n\tMoveRows.prototype.initialize = function (handle) {\n\t\tthis.connection = this.table.options.movableRowsConnectedTables;\n\t};\n\n\tMoveRows.prototype.setHandle = function (handle) {\n\t\tthis.hasHandle = handle;\n\t};\n\n\tMoveRows.prototype.initializeGroupHeader = function (group) {\n\t\tvar self = this,\n\t\t config = {},\n\t\t rowEl;\n\n\t\t//inter table drag drop\n\t\tconfig.mouseup = function (e) {\n\t\t\tself.tableRowDrop(e, row);\n\t\t}.bind(self);\n\n\t\t//same table drag drop\n\t\tconfig.mousemove = function (e) {\n\t\t\tif (e.pageY - Tabulator.prototype.helpers.elOffset(group.element).top + self.table.rowManager.element.scrollTop > group.getHeight() / 2) {\n\t\t\t\tif (self.toRow !== group || !self.toRowAfter) {\n\t\t\t\t\tvar rowEl = group.getElement();\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);\n\t\t\t\t\tself.moveRow(group, true);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (self.toRow !== group || self.toRowAfter) {\n\t\t\t\t\tvar rowEl = group.getElement();\n\t\t\t\t\tif (rowEl.previousSibling) {\n\t\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl);\n\t\t\t\t\t\tself.moveRow(group, false);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}.bind(self);\n\n\t\tgroup.modules.moveRow = config;\n\t};\n\n\tMoveRows.prototype.initializeRow = function (row) {\n\t\tvar self = this,\n\t\t config = {},\n\t\t rowEl;\n\n\t\t//inter table drag drop\n\t\tconfig.mouseup = function (e) {\n\t\t\tself.tableRowDrop(e, row);\n\t\t}.bind(self);\n\n\t\t//same table drag drop\n\t\tconfig.mousemove = function (e) {\n\t\t\tif (e.pageY - Tabulator.prototype.helpers.elOffset(row.element).top + self.table.rowManager.element.scrollTop > row.getHeight() / 2) {\n\t\t\t\tif (self.toRow !== row || !self.toRowAfter) {\n\t\t\t\t\tvar rowEl = row.getElement();\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);\n\t\t\t\t\tself.moveRow(row, true);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (self.toRow !== row || self.toRowAfter) {\n\t\t\t\t\tvar rowEl = row.getElement();\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl);\n\t\t\t\t\tself.moveRow(row, false);\n\t\t\t\t}\n\t\t\t}\n\t\t}.bind(self);\n\n\t\tif (!this.hasHandle) {\n\n\t\t\trowEl = row.getElement();\n\n\t\t\trowEl.addEventListener(\"mousedown\", function (e) {\n\t\t\t\tif (e.which === 1) {\n\t\t\t\t\tself.checkTimeout = setTimeout(function () {\n\t\t\t\t\t\tself.startMove(e, row);\n\t\t\t\t\t}, self.checkPeriod);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\trowEl.addEventListener(\"mouseup\", function (e) {\n\t\t\t\tif (e.which === 1) {\n\t\t\t\t\tif (self.checkTimeout) {\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.bindTouchEvents(row, row.getElement());\n\t\t}\n\n\t\trow.modules.moveRow = config;\n\t};\n\n\tMoveRows.prototype.initializeCell = function (cell) {\n\t\tvar self = this,\n\t\t cellEl = cell.getElement();\n\n\t\tcellEl.addEventListener(\"mousedown\", function (e) {\n\t\t\tif (e.which === 1) {\n\t\t\t\tself.checkTimeout = setTimeout(function () {\n\t\t\t\t\tself.startMove(e, cell.row);\n\t\t\t\t}, self.checkPeriod);\n\t\t\t}\n\t\t});\n\n\t\tcellEl.addEventListener(\"mouseup\", function (e) {\n\t\t\tif (e.which === 1) {\n\t\t\t\tif (self.checkTimeout) {\n\t\t\t\t\tclearTimeout(self.checkTimeout);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tthis.bindTouchEvents(cell.row, cell.getElement());\n\t};\n\n\tMoveRows.prototype.bindTouchEvents = function (row, element) {\n\t\tvar self = this,\n\t\t startYMove = false,\n\t\t //shifting center position of the cell\n\t\tdir = false,\n\t\t currentRow,\n\t\t nextRow,\n\t\t prevRow,\n\t\t nextRowHeight,\n\t\t prevRowHeight,\n\t\t nextRowHeightLast,\n\t\t prevRowHeightLast;\n\n\t\telement.addEventListener(\"touchstart\", function (e) {\n\t\t\tself.checkTimeout = setTimeout(function () {\n\t\t\t\tself.touchMove = true;\n\t\t\t\tcurrentRow = row;\n\t\t\t\tnextRow = row.nextRow();\n\t\t\t\tnextRowHeight = nextRow ? nextRow.getHeight() / 2 : 0;\n\t\t\t\tprevRow = row.prevRow();\n\t\t\t\tprevRowHeight = prevRow ? prevRow.getHeight() / 2 : 0;\n\t\t\t\tnextRowHeightLast = 0;\n\t\t\t\tprevRowHeightLast = 0;\n\t\t\t\tstartYMove = false;\n\n\t\t\t\tself.startMove(e, row);\n\t\t\t}, self.checkPeriod);\n\t\t}, { passive: true });\n\t\tthis.moving, this.toRow, this.toRowAfter;\n\t\telement.addEventListener(\"touchmove\", function (e) {\n\n\t\t\tvar halfCol, diff, moveToRow;\n\n\t\t\tif (self.moving) {\n\t\t\t\te.preventDefault();\n\n\t\t\t\tself.moveHover(e);\n\n\t\t\t\tif (!startYMove) {\n\t\t\t\t\tstartYMove = e.touches[0].pageY;\n\t\t\t\t}\n\n\t\t\t\tdiff = e.touches[0].pageY - startYMove;\n\n\t\t\t\tif (diff > 0) {\n\t\t\t\t\tif (nextRow && diff - nextRowHeightLast > nextRowHeight) {\n\t\t\t\t\t\tmoveToRow = nextRow;\n\n\t\t\t\t\t\tif (moveToRow !== row) {\n\t\t\t\t\t\t\tstartYMove = e.touches[0].pageY;\n\t\t\t\t\t\t\tmoveToRow.getElement().parentNode.insertBefore(self.placeholderElement, moveToRow.getElement().nextSibling);\n\t\t\t\t\t\t\tself.moveRow(moveToRow, true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (prevRow && -diff - prevRowHeightLast > prevRowHeight) {\n\t\t\t\t\t\tmoveToRow = prevRow;\n\n\t\t\t\t\t\tif (moveToRow !== row) {\n\t\t\t\t\t\t\tstartYMove = e.touches[0].pageY;\n\t\t\t\t\t\t\tmoveToRow.getElement().parentNode.insertBefore(self.placeholderElement, moveToRow.getElement());\n\t\t\t\t\t\t\tself.moveRow(moveToRow, false);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (moveToRow) {\n\t\t\t\t\tcurrentRow = moveToRow;\n\t\t\t\t\tnextRow = moveToRow.nextRow();\n\t\t\t\t\tnextRowHeightLast = nextRowHeight;\n\t\t\t\t\tnextRowHeight = nextRow ? nextRow.getHeight() / 2 : 0;\n\t\t\t\t\tprevRow = moveToRow.prevRow();\n\t\t\t\t\tprevRowHeightLast = prevRowHeight;\n\t\t\t\t\tprevRowHeight = prevRow ? prevRow.getHeight() / 2 : 0;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\telement.addEventListener(\"touchend\", function (e) {\n\t\t\tif (self.checkTimeout) {\n\t\t\t\tclearTimeout(self.checkTimeout);\n\t\t\t}\n\t\t\tif (self.moving) {\n\t\t\t\tself.endMove(e);\n\t\t\t\tself.touchMove = false;\n\t\t\t}\n\t\t});\n\t};\n\n\tMoveRows.prototype._bindMouseMove = function () {\n\t\tvar self = this;\n\n\t\tself.table.rowManager.getDisplayRows().forEach(function (row) {\n\t\t\tif ((row.type === \"row\" || row.type === \"group\") && row.modules.moveRow.mousemove) {\n\t\t\t\trow.getElement().addEventListener(\"mousemove\", row.modules.moveRow.mousemove);\n\t\t\t}\n\t\t});\n\t};\n\n\tMoveRows.prototype._unbindMouseMove = function () {\n\t\tvar self = this;\n\n\t\tself.table.rowManager.getDisplayRows().forEach(function (row) {\n\t\t\tif ((row.type === \"row\" || row.type === \"group\") && row.modules.moveRow.mousemove) {\n\t\t\t\trow.getElement().removeEventListener(\"mousemove\", row.modules.moveRow.mousemove);\n\t\t\t}\n\t\t});\n\t};\n\n\tMoveRows.prototype.startMove = function (e, row) {\n\t\tvar element = row.getElement();\n\n\t\tthis.setStartPosition(e, row);\n\n\t\tthis.moving = row;\n\n\t\tthis.table.element.classList.add(\"tabulator-block-select\");\n\n\t\t//create placeholder\n\t\tthis.placeholderElement.style.width = row.getWidth() + \"px\";\n\t\tthis.placeholderElement.style.height = row.getHeight() + \"px\";\n\n\t\tif (!this.connection) {\n\t\t\telement.parentNode.insertBefore(this.placeholderElement, element);\n\t\t\telement.parentNode.removeChild(element);\n\t\t} else {\n\t\t\tthis.table.element.classList.add(\"tabulator-movingrow-sending\");\n\t\t\tthis.connectToTables(row);\n\t\t}\n\n\t\t//create hover element\n\t\tthis.hoverElement = element.cloneNode(true);\n\t\tthis.hoverElement.classList.add(\"tabulator-moving\");\n\n\t\tif (this.connection) {\n\t\t\tdocument.body.appendChild(this.hoverElement);\n\t\t\tthis.hoverElement.style.left = \"0\";\n\t\t\tthis.hoverElement.style.top = \"0\";\n\t\t\tthis.hoverElement.style.width = this.table.element.clientWidth + \"px\";\n\t\t\tthis.hoverElement.style.whiteSpace = \"nowrap\";\n\t\t\tthis.hoverElement.style.overflow = \"hidden\";\n\t\t\tthis.hoverElement.style.pointerEvents = \"none\";\n\t\t} else {\n\t\t\tthis.table.rowManager.getTableElement().appendChild(this.hoverElement);\n\n\t\t\tthis.hoverElement.style.left = \"0\";\n\t\t\tthis.hoverElement.style.top = \"0\";\n\n\t\t\tthis._bindMouseMove();\n\t\t}\n\n\t\tdocument.body.addEventListener(\"mousemove\", this.moveHover);\n\t\tdocument.body.addEventListener(\"mouseup\", this.endMove);\n\n\t\tthis.moveHover(e);\n\t};\n\n\tMoveRows.prototype.setStartPosition = function (e, row) {\n\t\tvar pageX = this.touchMove ? e.touches[0].pageX : e.pageX,\n\t\t pageY = this.touchMove ? e.touches[0].pageY : e.pageY,\n\t\t element,\n\t\t position;\n\n\t\telement = row.getElement();\n\t\tif (this.connection) {\n\t\t\tposition = element.getBoundingClientRect();\n\n\t\t\tthis.startX = position.left - pageX + window.pageXOffset;\n\t\t\tthis.startY = position.top - pageY + window.pageYOffset;\n\t\t} else {\n\t\t\tthis.startY = pageY - element.getBoundingClientRect().top;\n\t\t}\n\t};\n\n\tMoveRows.prototype.endMove = function (e) {\n\t\tif (!e || e.which === 1 || this.touchMove) {\n\t\t\tthis._unbindMouseMove();\n\n\t\t\tif (!this.connection) {\n\t\t\t\tthis.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);\n\t\t\t\tthis.placeholderElement.parentNode.removeChild(this.placeholderElement);\n\t\t\t}\n\n\t\t\tthis.hoverElement.parentNode.removeChild(this.hoverElement);\n\n\t\t\tthis.table.element.classList.remove(\"tabulator-block-select\");\n\n\t\t\tif (this.toRow) {\n\t\t\t\tthis.table.rowManager.moveRow(this.moving, this.toRow, this.toRowAfter);\n\t\t\t}\n\n\t\t\tthis.moving = false;\n\t\t\tthis.toRow = false;\n\t\t\tthis.toRowAfter = false;\n\n\t\t\tdocument.body.removeEventListener(\"mousemove\", this.moveHover);\n\t\t\tdocument.body.removeEventListener(\"mouseup\", this.endMove);\n\n\t\t\tif (this.connection) {\n\t\t\t\tthis.table.element.classList.remove(\"tabulator-movingrow-sending\");\n\t\t\t\tthis.disconnectFromTables();\n\t\t\t}\n\t\t}\n\t};\n\n\tMoveRows.prototype.moveRow = function (row, after) {\n\t\tthis.toRow = row;\n\t\tthis.toRowAfter = after;\n\t};\n\n\tMoveRows.prototype.moveHover = function (e) {\n\t\tif (this.connection) {\n\t\t\tthis.moveHoverConnections.call(this, e);\n\t\t} else {\n\t\t\tthis.moveHoverTable.call(this, e);\n\t\t}\n\t};\n\n\tMoveRows.prototype.moveHoverTable = function (e) {\n\t\tvar rowHolder = this.table.rowManager.getElement(),\n\t\t scrollTop = rowHolder.scrollTop,\n\t\t yPos = (this.touchMove ? e.touches[0].pageY : e.pageY) - rowHolder.getBoundingClientRect().top + scrollTop,\n\t\t scrollPos;\n\n\t\tthis.hoverElement.style.top = yPos - this.startY + \"px\";\n\t};\n\n\tMoveRows.prototype.moveHoverConnections = function (e) {\n\t\tthis.hoverElement.style.left = this.startX + (this.touchMove ? e.touches[0].pageX : e.pageX) + \"px\";\n\t\tthis.hoverElement.style.top = this.startY + (this.touchMove ? e.touches[0].pageY : e.pageY) + \"px\";\n\t};\n\n\t//establish connection with other tables\n\tMoveRows.prototype.connectToTables = function (row) {\n\t\tvar self = this,\n\t\t connections = this.table.modules.comms.getConnections(this.connection);\n\n\t\tthis.table.options.movableRowsSendingStart.call(this.table, connections);\n\n\t\tthis.table.modules.comms.send(this.connection, \"moveRow\", \"connect\", {\n\t\t\trow: row\n\t\t});\n\t};\n\n\t//disconnect from other tables\n\tMoveRows.prototype.disconnectFromTables = function () {\n\t\tvar self = this,\n\t\t connections = this.table.modules.comms.getConnections(this.connection);\n\n\t\tthis.table.options.movableRowsSendingStop.call(this.table, connections);\n\n\t\tthis.table.modules.comms.send(this.connection, \"moveRow\", \"disconnect\");\n\t};\n\n\t//accept incomming connection\n\tMoveRows.prototype.connect = function (table, row) {\n\t\tvar self = this;\n\t\tif (!this.connectedTable) {\n\t\t\tthis.connectedTable = table;\n\t\t\tthis.connectedRow = row;\n\n\t\t\tthis.table.element.classList.add(\"tabulator-movingrow-receiving\");\n\n\t\t\tself.table.rowManager.getDisplayRows().forEach(function (row) {\n\t\t\t\tif (row.type === \"row\" && row.modules.moveRow && row.modules.moveRow.mouseup) {\n\t\t\t\t\trow.getElement().addEventListener(\"mouseup\", row.modules.moveRow.mouseup);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tself.tableRowDropEvent = self.tableRowDrop.bind(self);\n\n\t\t\tself.table.element.addEventListener(\"mouseup\", self.tableRowDropEvent);\n\n\t\t\tthis.table.options.movableRowsReceivingStart.call(this.table, row, table);\n\n\t\t\treturn true;\n\t\t} else {\n\t\t\tconsole.warn(\"Move Row Error - Table cannot accept connection, already connected to table:\", this.connectedTable);\n\t\t\treturn false;\n\t\t}\n\t};\n\n\t//close incomming connection\n\tMoveRows.prototype.disconnect = function (table) {\n\t\tvar self = this;\n\t\tif (table === this.connectedTable) {\n\t\t\tthis.connectedTable = false;\n\t\t\tthis.connectedRow = false;\n\n\t\t\tthis.table.element.classList.remove(\"tabulator-movingrow-receiving\");\n\n\t\t\tself.table.rowManager.getDisplayRows().forEach(function (row) {\n\t\t\t\tif (row.type === \"row\" && row.modules.moveRow && row.modules.moveRow.mouseup) {\n\t\t\t\t\trow.getElement().removeEventListener(\"mouseup\", row.modules.moveRow.mouseup);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tself.table.element.removeEventListener(\"mouseup\", self.tableRowDropEvent);\n\n\t\t\tthis.table.options.movableRowsReceivingStop.call(this.table, table);\n\t\t} else {\n\t\t\tconsole.warn(\"Move Row Error - trying to disconnect from non connected table\");\n\t\t}\n\t};\n\n\tMoveRows.prototype.dropComplete = function (table, row, success) {\n\t\tvar sender = false;\n\n\t\tif (success) {\n\n\t\t\tswitch (_typeof(this.table.options.movableRowsSender)) {\n\t\t\t\tcase \"string\":\n\t\t\t\t\tsender = this.senders[this.table.options.movableRowsSender];\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"function\":\n\t\t\t\t\tsender = this.table.options.movableRowsSender;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (sender) {\n\t\t\t\tsender.call(this, this.moving.getComponent(), row ? row.getComponent() : undefined, table);\n\t\t\t} else {\n\t\t\t\tif (this.table.options.movableRowsSender) {\n\t\t\t\t\tconsole.warn(\"Mover Row Error - no matching sender found:\", this.table.options.movableRowsSender);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.table.options.movableRowsSent.call(this.table, this.moving.getComponent(), row ? row.getComponent() : undefined, table);\n\t\t} else {\n\t\t\tthis.table.options.movableRowsSentFailed.call(this.table, this.moving.getComponent(), row ? row.getComponent() : undefined, table);\n\t\t}\n\n\t\tthis.endMove();\n\t};\n\n\tMoveRows.prototype.tableRowDrop = function (e, row) {\n\t\tvar receiver = false,\n\t\t success = false;\n\n\t\te.stopImmediatePropagation();\n\n\t\tswitch (_typeof(this.table.options.movableRowsReceiver)) {\n\t\t\tcase \"string\":\n\t\t\t\treceiver = this.receivers[this.table.options.movableRowsReceiver];\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\treceiver = this.table.options.movableRowsReceiver;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif (receiver) {\n\t\t\tsuccess = receiver.call(this, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\n\t\t} else {\n\t\t\tconsole.warn(\"Mover Row Error - no matching receiver found:\", this.table.options.movableRowsReceiver);\n\t\t}\n\n\t\tif (success) {\n\t\t\tthis.table.options.movableRowsReceived.call(this.table, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\n\t\t} else {\n\t\t\tthis.table.options.movableRowsReceivedFailed.call(this.table, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\n\t\t}\n\n\t\tthis.table.modules.comms.send(this.connectedTable, \"moveRow\", \"dropcomplete\", {\n\t\t\trow: row,\n\t\t\tsuccess: success\n\t\t});\n\t};\n\n\tMoveRows.prototype.receivers = {\n\t\tinsert: function insert(fromRow, toRow, fromTable) {\n\t\t\tthis.table.addRow(fromRow.getData(), undefined, toRow);\n\t\t\treturn true;\n\t\t},\n\n\t\tadd: function add(fromRow, toRow, fromTable) {\n\t\t\tthis.table.addRow(fromRow.getData());\n\t\t\treturn true;\n\t\t},\n\n\t\tupdate: function update(fromRow, toRow, fromTable) {\n\t\t\tif (toRow) {\n\t\t\t\ttoRow.update(fromRow.getData());\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\n\t\treplace: function replace(fromRow, toRow, fromTable) {\n\t\t\tif (toRow) {\n\t\t\t\tthis.table.addRow(fromRow.getData(), undefined, toRow);\n\t\t\t\ttoRow.delete();\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tMoveRows.prototype.senders = {\n\t\tdelete: function _delete(fromRow, toRow, toTable) {\n\t\t\tfromRow.delete();\n\t\t}\n\t};\n\n\tMoveRows.prototype.commsReceived = function (table, action, data) {\n\t\tswitch (action) {\n\t\t\tcase \"connect\":\n\t\t\t\treturn this.connect(table, data.row);\n\t\t\t\tbreak;\n\n\t\t\tcase \"disconnect\":\n\t\t\t\treturn this.disconnect(table);\n\t\t\t\tbreak;\n\n\t\t\tcase \"dropcomplete\":\n\t\t\t\treturn this.dropComplete(table, data.row, data.success);\n\t\t\t\tbreak;\n\t\t}\n\t};\n\n\tTabulator.prototype.registerModule(\"moveRow\", MoveRows);\n\tvar Mutator = function Mutator(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.allowedTypes = [\"\", \"data\", \"edit\", \"clipboard\"]; //list of muatation types\n\t\tthis.enabled = true;\n\t};\n\n\t//initialize column mutator\n\tMutator.prototype.initializeColumn = function (column) {\n\t\tvar self = this,\n\t\t match = false,\n\t\t config = {};\n\n\t\tthis.allowedTypes.forEach(function (type) {\n\t\t\tvar key = \"mutator\" + (type.charAt(0).toUpperCase() + type.slice(1)),\n\t\t\t mutator;\n\n\t\t\tif (column.definition[key]) {\n\t\t\t\tmutator = self.lookupMutator(column.definition[key]);\n\n\t\t\t\tif (mutator) {\n\t\t\t\t\tmatch = true;\n\n\t\t\t\t\tconfig[key] = {\n\t\t\t\t\t\tmutator: mutator,\n\t\t\t\t\t\tparams: column.definition[key + \"Params\"] || {}\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif (match) {\n\t\t\tcolumn.modules.mutate = config;\n\t\t}\n\t};\n\n\tMutator.prototype.lookupMutator = function (value) {\n\t\tvar mutator = false;\n\n\t\t//set column mutator\n\t\tswitch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {\n\t\t\tcase \"string\":\n\t\t\t\tif (this.mutators[value]) {\n\t\t\t\t\tmutator = this.mutators[value];\n\t\t\t\t} else {\n\t\t\t\t\tconsole.warn(\"Mutator Error - No such mutator found, ignoring: \", value);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tmutator = value;\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn mutator;\n\t};\n\n\t//apply mutator to row\n\tMutator.prototype.transformRow = function (data, type, update) {\n\t\tvar self = this,\n\t\t key = \"mutator\" + (type.charAt(0).toUpperCase() + type.slice(1)),\n\t\t value;\n\n\t\tif (this.enabled) {\n\n\t\t\tself.table.columnManager.traverse(function (column) {\n\t\t\t\tvar mutator, params, component;\n\n\t\t\t\tif (column.modules.mutate) {\n\t\t\t\t\tmutator = column.modules.mutate[key] || column.modules.mutate.mutator || false;\n\n\t\t\t\t\tif (mutator) {\n\t\t\t\t\t\tvalue = column.getFieldValue(data);\n\n\t\t\t\t\t\tif (!update || update && typeof value !== \"undefined\") {\n\t\t\t\t\t\t\tcomponent = column.getComponent();\n\t\t\t\t\t\t\tparams = typeof mutator.params === \"function\" ? mutator.params(value, data, type, component) : mutator.params;\n\t\t\t\t\t\t\tcolumn.setFieldValue(data, mutator.mutator(value, data, type, params, component));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn data;\n\t};\n\n\t//apply mutator to new cell value\n\tMutator.prototype.transformCell = function (cell, value) {\n\t\tvar mutator = cell.column.modules.mutate.mutatorEdit || cell.column.modules.mutate.mutator || false;\n\n\t\tif (mutator) {\n\t\t\treturn mutator.mutator(value, cell.row.getData(), \"edit\", mutator.params, cell.getComponent());\n\t\t} else {\n\t\t\treturn value;\n\t\t}\n\t};\n\n\tMutator.prototype.enable = function () {\n\t\tthis.enabled = true;\n\t};\n\n\tMutator.prototype.disable = function () {\n\t\tthis.enabled = false;\n\t};\n\n\t//default mutators\n\tMutator.prototype.mutators = {};\n\n\tTabulator.prototype.registerModule(\"mutator\", Mutator);\n\tvar Page = function Page(table) {\n\n\t\tthis.table = table; //hold Tabulator object\n\n\t\tthis.mode = \"local\";\n\t\tthis.progressiveLoad = false;\n\n\t\tthis.size = 0;\n\t\tthis.page = 1;\n\t\tthis.count = 5;\n\t\tthis.max = 1;\n\n\t\tthis.displayIndex = 0; //index in display pipeline\n\n\t\tthis.pageSizes = [];\n\n\t\tthis.createElements();\n\t};\n\n\tPage.prototype.createElements = function () {\n\n\t\tvar button;\n\n\t\tthis.element = document.createElement(\"span\");\n\t\tthis.element.classList.add(\"tabulator-paginator\");\n\n\t\tthis.pagesElement = document.createElement(\"span\");\n\t\tthis.pagesElement.classList.add(\"tabulator-pages\");\n\n\t\tbutton = document.createElement(\"button\");\n\t\tbutton.classList.add(\"tabulator-page\");\n\t\tbutton.setAttribute(\"type\", \"button\");\n\t\tbutton.setAttribute(\"role\", \"button\");\n\t\tbutton.setAttribute(\"aria-label\", \"\");\n\t\tbutton.setAttribute(\"title\", \"\");\n\n\t\tthis.firstBut = button.cloneNode(true);\n\t\tthis.firstBut.setAttribute(\"data-page\", \"first\");\n\n\t\tthis.prevBut = button.cloneNode(true);\n\t\tthis.prevBut.setAttribute(\"data-page\", \"prev\");\n\n\t\tthis.nextBut = button.cloneNode(true);\n\t\tthis.nextBut.setAttribute(\"data-page\", \"next\");\n\n\t\tthis.lastBut = button.cloneNode(true);\n\t\tthis.lastBut.setAttribute(\"data-page\", \"last\");\n\n\t\tif (this.table.options.paginationSizeSelector) {\n\t\t\tthis.pageSizeSelect = document.createElement(\"select\");\n\t\t\tthis.pageSizeSelect.classList.add(\"tabulator-page-size\");\n\t\t}\n\t};\n\n\tPage.prototype.generatePageSizeSelectList = function () {\n\t\tvar _this46 = this;\n\n\t\tvar pageSizes = [];\n\n\t\tif (this.pageSizeSelect) {\n\n\t\t\tif (Array.isArray(this.table.options.paginationSizeSelector)) {\n\t\t\t\tpageSizes = this.table.options.paginationSizeSelector;\n\t\t\t\tthis.pageSizes = pageSizes;\n\n\t\t\t\tif (this.pageSizes.indexOf(this.size) == -1) {\n\t\t\t\t\tpageSizes.unshift(this.size);\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\tif (this.pageSizes.indexOf(this.size) == -1) {\n\t\t\t\t\tpageSizes = [];\n\n\t\t\t\t\tfor (var i = 1; i < 5; i++) {\n\t\t\t\t\t\tpageSizes.push(this.size * i);\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.pageSizes = pageSizes;\n\t\t\t\t} else {\n\t\t\t\t\tpageSizes = this.pageSizes;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\twhile (this.pageSizeSelect.firstChild) {\n\t\t\t\tthis.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);\n\t\t\t}pageSizes.forEach(function (item) {\n\t\t\t\tvar itemEl = document.createElement(\"option\");\n\t\t\t\titemEl.value = item;\n\t\t\t\titemEl.innerHTML = item;\n\n\t\t\t\t_this46.pageSizeSelect.appendChild(itemEl);\n\t\t\t});\n\n\t\t\tthis.pageSizeSelect.value = this.size;\n\t\t}\n\t};\n\n\t//setup pageination\n\tPage.prototype.initialize = function (hidden) {\n\t\tvar self = this,\n\t\t pageSelectLabel;\n\n\t\t//update param names\n\t\tfor (var key in self.table.options.paginationDataSent) {\n\t\t\tself.paginationDataSentNames[key] = self.table.options.paginationDataSent[key];\n\t\t}\n\n\t\tfor (var _key2 in self.table.options.paginationDataReceived) {\n\t\t\tself.paginationDataReceivedNames[_key2] = self.table.options.paginationDataReceived[_key2];\n\t\t}\n\n\t\t//build pagination element\n\n\t\t//bind localizations\n\t\tself.table.modules.localize.bind(\"pagination|first\", function (value) {\n\t\t\tself.firstBut.innerHTML = value;\n\t\t});\n\n\t\tself.table.modules.localize.bind(\"pagination|first_title\", function (value) {\n\t\t\tself.firstBut.setAttribute(\"aria-label\", value);\n\t\t\tself.firstBut.setAttribute(\"title\", value);\n\t\t});\n\n\t\tself.table.modules.localize.bind(\"pagination|prev\", function (value) {\n\t\t\tself.prevBut.innerHTML = value;\n\t\t});\n\n\t\tself.table.modules.localize.bind(\"pagination|prev_title\", function (value) {\n\t\t\tself.prevBut.setAttribute(\"aria-label\", value);\n\t\t\tself.prevBut.setAttribute(\"title\", value);\n\t\t});\n\n\t\tself.table.modules.localize.bind(\"pagination|next\", function (value) {\n\t\t\tself.nextBut.innerHTML = value;\n\t\t});\n\n\t\tself.table.modules.localize.bind(\"pagination|next_title\", function (value) {\n\t\t\tself.nextBut.setAttribute(\"aria-label\", value);\n\t\t\tself.nextBut.setAttribute(\"title\", value);\n\t\t});\n\n\t\tself.table.modules.localize.bind(\"pagination|last\", function (value) {\n\t\t\tself.lastBut.innerHTML = value;\n\t\t});\n\n\t\tself.table.modules.localize.bind(\"pagination|last_title\", function (value) {\n\t\t\tself.lastBut.setAttribute(\"aria-label\", value);\n\t\t\tself.lastBut.setAttribute(\"title\", value);\n\t\t});\n\n\t\t//click bindings\n\t\tself.firstBut.addEventListener(\"click\", function () {\n\t\t\tself.setPage(1);\n\t\t});\n\n\t\tself.prevBut.addEventListener(\"click\", function () {\n\t\t\tself.previousPage();\n\t\t});\n\n\t\tself.nextBut.addEventListener(\"click\", function () {\n\t\t\tself.nextPage().then(function () {}).catch(function () {});\n\t\t});\n\n\t\tself.lastBut.addEventListener(\"click\", function () {\n\t\t\tself.setPage(self.max);\n\t\t});\n\n\t\tif (self.table.options.paginationElement) {\n\t\t\tself.element = self.table.options.paginationElement;\n\t\t}\n\n\t\tif (this.pageSizeSelect) {\n\t\t\tpageSelectLabel = document.createElement(\"label\");\n\n\t\t\tself.table.modules.localize.bind(\"pagination|page_size\", function (value) {\n\t\t\t\tself.pageSizeSelect.setAttribute(\"aria-label\", value);\n\t\t\t\tself.pageSizeSelect.setAttribute(\"title\", value);\n\t\t\t\tpageSelectLabel.innerHTML = value;\n\t\t\t});\n\n\t\t\tself.element.appendChild(pageSelectLabel);\n\t\t\tself.element.appendChild(self.pageSizeSelect);\n\n\t\t\tself.pageSizeSelect.addEventListener(\"change\", function (e) {\n\t\t\t\tself.setPageSize(self.pageSizeSelect.value);\n\t\t\t\tself.setPage(1).then(function () {}).catch(function () {});\n\t\t\t});\n\t\t}\n\n\t\t//append to DOM\n\t\tself.element.appendChild(self.firstBut);\n\t\tself.element.appendChild(self.prevBut);\n\t\tself.element.appendChild(self.pagesElement);\n\t\tself.element.appendChild(self.nextBut);\n\t\tself.element.appendChild(self.lastBut);\n\n\t\tif (!self.table.options.paginationElement && !hidden) {\n\t\t\tself.table.footerManager.append(self.element, self);\n\t\t}\n\n\t\t//set default values\n\t\tself.mode = self.table.options.pagination;\n\t\tself.size = self.table.options.paginationSize || Math.floor(self.table.rowManager.getElement().clientHeight / 24);\n\t\tself.count = self.table.options.paginationButtonCount;\n\n\t\tself.generatePageSizeSelectList();\n\t};\n\n\tPage.prototype.initializeProgressive = function (mode) {\n\t\tthis.initialize(true);\n\t\tthis.mode = \"progressive_\" + mode;\n\t\tthis.progressiveLoad = true;\n\t};\n\n\tPage.prototype.setDisplayIndex = function (index) {\n\t\tthis.displayIndex = index;\n\t};\n\n\tPage.prototype.getDisplayIndex = function () {\n\t\treturn this.displayIndex;\n\t};\n\n\t//calculate maximum page from number of rows\n\tPage.prototype.setMaxRows = function (rowCount) {\n\t\tif (!rowCount) {\n\t\t\tthis.max = 1;\n\t\t} else {\n\t\t\tthis.max = Math.ceil(rowCount / this.size);\n\t\t}\n\n\t\tif (this.page > this.max) {\n\t\t\tthis.page = this.max;\n\t\t}\n\t};\n\n\t//reset to first page without triggering action\n\tPage.prototype.reset = function (force) {\n\t\tif (this.mode == \"local\" || force) {\n\t\t\tthis.page = 1;\n\t\t}\n\t\treturn true;\n\t};\n\n\t//set the maxmum page\n\tPage.prototype.setMaxPage = function (max) {\n\n\t\tmax = parseInt(max);\n\n\t\tthis.max = max || 1;\n\n\t\tif (this.page > this.max) {\n\t\t\tthis.page = this.max;\n\t\t\tthis.trigger();\n\t\t}\n\t};\n\n\t//set current page number\n\tPage.prototype.setPage = function (page) {\n\t\tvar _this47 = this;\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tpage = parseInt(page);\n\n\t\t\tif (page > 0 && page <= _this47.max) {\n\t\t\t\t_this47.page = page;\n\t\t\t\t_this47.trigger().then(function () {\n\t\t\t\t\tresolve();\n\t\t\t\t}).catch(function () {\n\t\t\t\t\treject();\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconsole.warn(\"Pagination Error - Requested page is out of range of 1 - \" + _this47.max + \":\", page);\n\t\t\t\treject();\n\t\t\t}\n\t\t});\n\t};\n\n\tPage.prototype.setPageToRow = function (row) {\n\t\tvar _this48 = this;\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tvar rows = _this48.table.rowManager.getDisplayRows(_this48.displayIndex - 1);\n\t\t\tvar index = rows.indexOf(row);\n\n\t\t\tif (index > -1) {\n\t\t\t\tvar page = Math.ceil((index + 1) / _this48.size);\n\n\t\t\t\t_this48.setPage(page).then(function () {\n\t\t\t\t\tresolve();\n\t\t\t\t}).catch(function () {\n\t\t\t\t\treject();\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconsole.warn(\"Pagination Error - Requested row is not visible\");\n\t\t\t\treject();\n\t\t\t}\n\t\t});\n\t};\n\n\tPage.prototype.setPageSize = function (size) {\n\t\tsize = parseInt(size);\n\n\t\tif (size > 0) {\n\t\t\tthis.size = size;\n\t\t}\n\n\t\tif (this.pageSizeSelect) {\n\t\t\t// this.pageSizeSelect.value = size;\n\t\t\tthis.generatePageSizeSelectList();\n\t\t}\n\t};\n\n\t//setup the pagination buttons\n\tPage.prototype._setPageButtons = function () {\n\t\tvar self = this;\n\n\t\tvar leftSize = Math.floor((this.count - 1) / 2);\n\t\tvar rightSize = Math.ceil((this.count - 1) / 2);\n\t\tvar min = this.max - this.page + leftSize + 1 < this.count ? this.max - this.count + 1 : Math.max(this.page - leftSize, 1);\n\t\tvar max = this.page <= rightSize ? Math.min(this.count, this.max) : Math.min(this.page + rightSize, this.max);\n\n\t\twhile (self.pagesElement.firstChild) {\n\t\t\tself.pagesElement.removeChild(self.pagesElement.firstChild);\n\t\t}if (self.page == 1) {\n\t\t\tself.firstBut.disabled = true;\n\t\t\tself.prevBut.disabled = true;\n\t\t} else {\n\t\t\tself.firstBut.disabled = false;\n\t\t\tself.prevBut.disabled = false;\n\t\t}\n\n\t\tif (self.page == self.max) {\n\t\t\tself.lastBut.disabled = true;\n\t\t\tself.nextBut.disabled = true;\n\t\t} else {\n\t\t\tself.lastBut.disabled = false;\n\t\t\tself.nextBut.disabled = false;\n\t\t}\n\n\t\tfor (var i = min; i <= max; i++) {\n\t\t\tif (i > 0 && i <= self.max) {\n\t\t\t\tself.pagesElement.appendChild(self._generatePageButton(i));\n\t\t\t}\n\t\t}\n\n\t\tthis.footerRedraw();\n\t};\n\n\tPage.prototype._generatePageButton = function (page) {\n\t\tvar self = this,\n\t\t button = document.createElement(\"button\");\n\n\t\tbutton.classList.add(\"tabulator-page\");\n\t\tif (page == self.page) {\n\t\t\tbutton.classList.add(\"active\");\n\t\t}\n\n\t\tbutton.setAttribute(\"type\", \"button\");\n\t\tbutton.setAttribute(\"role\", \"button\");\n\t\tbutton.setAttribute(\"aria-label\", \"Show Page \" + page);\n\t\tbutton.setAttribute(\"title\", \"Show Page \" + page);\n\t\tbutton.setAttribute(\"data-page\", page);\n\t\tbutton.textContent = page;\n\n\t\tbutton.addEventListener(\"click\", function (e) {\n\t\t\tself.setPage(page);\n\t\t});\n\n\t\treturn button;\n\t};\n\n\t//previous page\n\tPage.prototype.previousPage = function () {\n\t\tvar _this49 = this;\n\n\t\treturn new Promise(function (resolve, reject) {\n\t\t\tif (_this49.page > 1) {\n\t\t\t\t_this49.page--;\n\t\t\t\t_this49.trigger().then(function () {\n\t\t\t\t\tresolve();\n\t\t\t\t}).catch(function () {\n\t\t\t\t\treject();\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconsole.warn(\"Pagination Error - Previous page would be less than page 1:\", 0);\n\t\t\t\treject();\n\t\t\t}\n\t\t});\n\t};\n\n\t//next page\n\tPage.prototype.nextPage = function () {\n\t\tvar _this50 = this;\n\n\t\treturn new Promise(function (resolve, reject) {\n\t\t\tif (_this50.page < _this50.max) {\n\t\t\t\t_this50.page++;\n\t\t\t\t_this50.trigger().then(function () {\n\t\t\t\t\tresolve();\n\t\t\t\t}).catch(function () {\n\t\t\t\t\treject();\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tif (!_this50.progressiveLoad) {\n\t\t\t\t\tconsole.warn(\"Pagination Error - Next page would be greater than maximum page of \" + _this50.max + \":\", _this50.max + 1);\n\t\t\t\t}\n\t\t\t\treject();\n\t\t\t}\n\t\t});\n\t};\n\n\t//return current page number\n\tPage.prototype.getPage = function () {\n\t\treturn this.page;\n\t};\n\n\t//return max page number\n\tPage.prototype.getPageMax = function () {\n\t\treturn this.max;\n\t};\n\n\tPage.prototype.getPageSize = function (size) {\n\t\treturn this.size;\n\t};\n\n\tPage.prototype.getMode = function () {\n\t\treturn this.mode;\n\t};\n\n\t//return appropriate rows for current page\n\tPage.prototype.getRows = function (data) {\n\t\tvar output, start, end;\n\n\t\tif (this.mode == \"local\") {\n\t\t\toutput = [];\n\t\t\tstart = this.size * (this.page - 1);\n\t\t\tend = start + parseInt(this.size);\n\n\t\t\tthis._setPageButtons();\n\n\t\t\tfor (var i = start; i < end; i++) {\n\t\t\t\tif (data[i]) {\n\t\t\t\t\toutput.push(data[i]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn output;\n\t\t} else {\n\n\t\t\tthis._setPageButtons();\n\n\t\t\treturn data.slice(0);\n\t\t}\n\t};\n\n\tPage.prototype.trigger = function () {\n\t\tvar _this51 = this;\n\n\t\tvar left;\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tswitch (_this51.mode) {\n\t\t\t\tcase \"local\":\n\t\t\t\t\tleft = _this51.table.rowManager.scrollLeft;\n\n\t\t\t\t\t_this51.table.rowManager.refreshActiveData(\"page\");\n\t\t\t\t\t_this51.table.rowManager.scrollHorizontal(left);\n\n\t\t\t\t\t_this51.table.options.pageLoaded.call(_this51.table, _this51.getPage());\n\t\t\t\t\tresolve();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"remote\":\n\t\t\t\tcase \"progressive_load\":\n\t\t\t\tcase \"progressive_scroll\":\n\t\t\t\t\t_this51.table.modules.ajax.blockActiveRequest();\n\t\t\t\t\t_this51._getRemotePage().then(function () {\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t}).catch(function () {\n\t\t\t\t\t\treject();\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tconsole.warn(\"Pagination Error - no such pagination mode:\", _this51.mode);\n\t\t\t\t\treject();\n\t\t\t}\n\t\t});\n\t};\n\n\tPage.prototype._getRemotePage = function () {\n\t\tvar _this52 = this;\n\n\t\tvar self = this,\n\t\t oldParams,\n\t\t pageParams;\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tif (!self.table.modExists(\"ajax\", true)) {\n\t\t\t\treject();\n\t\t\t}\n\n\t\t\t//record old params and restore after request has been made\n\t\t\toldParams = Tabulator.prototype.helpers.deepClone(self.table.modules.ajax.getParams() || {});\n\t\t\tpageParams = self.table.modules.ajax.getParams();\n\n\t\t\t//configure request params\n\t\t\tpageParams[_this52.paginationDataSentNames.page] = self.page;\n\n\t\t\t//set page size if defined\n\t\t\tif (_this52.size) {\n\t\t\t\tpageParams[_this52.paginationDataSentNames.size] = _this52.size;\n\t\t\t}\n\n\t\t\t//set sort data if defined\n\t\t\tif (_this52.table.options.ajaxSorting && _this52.table.modExists(\"sort\")) {\n\t\t\t\tvar sorters = self.table.modules.sort.getSort();\n\n\t\t\t\tsorters.forEach(function (item) {\n\t\t\t\t\tdelete item.column;\n\t\t\t\t});\n\n\t\t\t\tpageParams[_this52.paginationDataSentNames.sorters] = sorters;\n\t\t\t}\n\n\t\t\t//set filter data if defined\n\t\t\tif (_this52.table.options.ajaxFiltering && _this52.table.modExists(\"filter\")) {\n\t\t\t\tvar filters = self.table.modules.filter.getFilters(true, true);\n\t\t\t\tpageParams[_this52.paginationDataSentNames.filters] = filters;\n\t\t\t}\n\n\t\t\tself.table.modules.ajax.setParams(pageParams);\n\n\t\t\tself.table.modules.ajax.sendRequest(_this52.progressiveLoad).then(function (data) {\n\t\t\t\tself._parseRemoteData(data);\n\t\t\t\tresolve();\n\t\t\t}).catch(function (e) {\n\t\t\t\treject();\n\t\t\t});\n\n\t\t\tself.table.modules.ajax.setParams(oldParams);\n\t\t});\n\t};\n\n\tPage.prototype._parseRemoteData = function (data) {\n\t\tvar self = this,\n\t\t left,\n\t\t data,\n\t\t margin;\n\n\t\tif (typeof data[this.paginationDataReceivedNames.last_page] === \"undefined\") {\n\t\t\tconsole.warn(\"Remote Pagination Error - Server response missing '\" + this.paginationDataReceivedNames.last_page + \"' property\");\n\t\t}\n\n\t\tif (data[this.paginationDataReceivedNames.data]) {\n\t\t\tthis.max = parseInt(data[this.paginationDataReceivedNames.last_page]) || 1;\n\n\t\t\tif (this.progressiveLoad) {\n\t\t\t\tswitch (this.mode) {\n\t\t\t\t\tcase \"progressive_load\":\n\t\t\t\t\t\tthis.table.rowManager.addRows(data[this.paginationDataReceivedNames.data]);\n\t\t\t\t\t\tif (this.page < this.max) {\n\t\t\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\t\t\tself.nextPage().then(function () {}).catch(function () {});\n\t\t\t\t\t\t\t}, self.table.options.ajaxProgressiveLoadDelay);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"progressive_scroll\":\n\t\t\t\t\t\tdata = this.table.rowManager.getData().concat(data[this.paginationDataReceivedNames.data]);\n\n\t\t\t\t\t\tthis.table.rowManager.setData(data, true);\n\n\t\t\t\t\t\tmargin = this.table.options.ajaxProgressiveLoadScrollMargin || this.table.rowManager.element.clientHeight * 2;\n\n\t\t\t\t\t\tif (self.table.rowManager.element.scrollHeight <= self.table.rowManager.element.clientHeight + margin) {\n\t\t\t\t\t\t\tself.nextPage().then(function () {}).catch(function () {});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tleft = this.table.rowManager.scrollLeft;\n\n\t\t\t\tthis.table.rowManager.setData(data[this.paginationDataReceivedNames.data]);\n\n\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\n\n\t\t\t\tthis.table.columnManager.scrollHorizontal(left);\n\n\t\t\t\tthis.table.options.pageLoaded.call(this.table, this.getPage());\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.warn(\"Remote Pagination Error - Server response missing '\" + this.paginationDataReceivedNames.data + \"' property\");\n\t\t}\n\t};\n\n\t//handle the footer element being redrawn\n\tPage.prototype.footerRedraw = function () {\n\t\tvar footer = this.table.footerManager.element;\n\n\t\tif (Math.ceil(footer.clientWidth) - footer.scrollWidth < 0) {\n\t\t\tthis.pagesElement.style.display = 'none';\n\t\t} else {\n\t\t\tthis.pagesElement.style.display = '';\n\n\t\t\tif (Math.ceil(footer.clientWidth) - footer.scrollWidth < 0) {\n\t\t\t\tthis.pagesElement.style.display = 'none';\n\t\t\t}\n\t\t}\n\t};\n\n\t//set the paramter names for pagination requests\n\tPage.prototype.paginationDataSentNames = {\n\t\t\"page\": \"page\",\n\t\t\"size\": \"size\",\n\t\t\"sorters\": \"sorters\",\n\t\t// \"sort_dir\":\"sort_dir\",\n\t\t\"filters\": \"filters\"\n\t\t// \"filter_value\":\"filter_value\",\n\t\t// \"filter_type\":\"filter_type\",\n\t};\n\n\t//set the property names for pagination responses\n\tPage.prototype.paginationDataReceivedNames = {\n\t\t\"current_page\": \"current_page\",\n\t\t\"last_page\": \"last_page\",\n\t\t\"data\": \"data\"\n\t};\n\n\tTabulator.prototype.registerModule(\"page\", Page);\n\n\tvar Persistence = function Persistence(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.mode = \"\";\n\t\tthis.id = \"\";\n\t\tthis.persistProps = [\"field\", \"width\", \"visible\"];\n\t};\n\n\t//setup parameters\n\tPersistence.prototype.initialize = function (mode, id) {\n\t\t//determine persistent layout storage type\n\t\tthis.mode = mode !== true ? mode : typeof window.localStorage !== 'undefined' ? \"local\" : \"cookie\";\n\n\t\t//set storage tag\n\t\tthis.id = \"tabulator-\" + (id || this.table.element.getAttribute(\"id\") || \"\");\n\t};\n\n\t//load saved definitions\n\tPersistence.prototype.load = function (type, current) {\n\n\t\tvar data = this.retreiveData(type);\n\n\t\tif (current) {\n\t\t\tdata = data ? this.mergeDefinition(current, data) : current;\n\t\t}\n\n\t\treturn data;\n\t};\n\n\t//retreive data from memory\n\tPersistence.prototype.retreiveData = function (type) {\n\t\tvar data = \"\",\n\t\t id = this.id + (type === \"columns\" ? \"\" : \"-\" + type);\n\n\t\tswitch (this.mode) {\n\t\t\tcase \"local\":\n\t\t\t\tdata = localStorage.getItem(id);\n\t\t\t\tbreak;\n\n\t\t\tcase \"cookie\":\n\n\t\t\t\t//find cookie\n\t\t\t\tvar cookie = document.cookie,\n\t\t\t\t cookiePos = cookie.indexOf(id + \"=\"),\n\t\t\t\t end = void 0;\n\n\t\t\t\t//if cookie exists, decode and load column data into tabulator\n\t\t\t\tif (cookiePos > -1) {\n\t\t\t\t\tcookie = cookie.substr(cookiePos);\n\n\t\t\t\t\tend = cookie.indexOf(\";\");\n\n\t\t\t\t\tif (end > -1) {\n\t\t\t\t\t\tcookie = cookie.substr(0, end);\n\t\t\t\t\t}\n\n\t\t\t\t\tdata = cookie.replace(id + \"=\", \"\");\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn(\"Persistance Load Error - invalid mode selected\", this.mode);\n\t\t}\n\n\t\treturn data ? JSON.parse(data) : false;\n\t};\n\n\t//merge old and new column defintions\n\tPersistence.prototype.mergeDefinition = function (oldCols, newCols) {\n\t\tvar self = this,\n\t\t output = [];\n\n\t\t// oldCols = oldCols || [];\n\t\tnewCols = newCols || [];\n\n\t\tnewCols.forEach(function (column, to) {\n\n\t\t\tvar from = self._findColumn(oldCols, column);\n\n\t\t\tif (from) {\n\n\t\t\t\tfrom.width = column.width;\n\t\t\t\tfrom.visible = column.visible;\n\n\t\t\t\tif (from.columns) {\n\t\t\t\t\tfrom.columns = self.mergeDefinition(from.columns, column.columns);\n\t\t\t\t}\n\n\t\t\t\toutput.push(from);\n\t\t\t}\n\t\t});\n\t\toldCols.forEach(function (column, i) {\n\t\t\tvar from = self._findColumn(newCols, column);\n\t\t\tif (!from) {\n\t\t\t\tif (output.length > i) {\n\t\t\t\t\toutput.splice(i, 0, column);\n\t\t\t\t} else {\n\t\t\t\t\toutput.push(column);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t};\n\n\t//find matching columns\n\tPersistence.prototype._findColumn = function (columns, subject) {\n\t\tvar type = subject.columns ? \"group\" : subject.field ? \"field\" : \"object\";\n\n\t\treturn columns.find(function (col) {\n\t\t\tswitch (type) {\n\t\t\t\tcase \"group\":\n\t\t\t\t\treturn col.title === subject.title && col.columns.length === subject.columns.length;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"field\":\n\t\t\t\t\treturn col.field === subject.field;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"object\":\n\t\t\t\t\treturn col === subject;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\t};\n\n\t//save data\n\tPersistence.prototype.save = function (type) {\n\t\tvar data = {};\n\n\t\tswitch (type) {\n\t\t\tcase \"columns\":\n\t\t\t\tdata = this.parseColumns(this.table.columnManager.getColumns());\n\t\t\t\tbreak;\n\n\t\t\tcase \"filter\":\n\t\t\t\tdata = this.table.modules.filter.getFilters();\n\t\t\t\tbreak;\n\n\t\t\tcase \"sort\":\n\t\t\t\tdata = this.validateSorters(this.table.modules.sort.getSort());\n\t\t\t\tbreak;\n\t\t}\n\n\t\tvar id = this.id + (type === \"columns\" ? \"\" : \"-\" + type);\n\n\t\tthis.saveData(id, data);\n\t};\n\n\t//ensure sorters contain no function data\n\tPersistence.prototype.validateSorters = function (data) {\n\t\tdata.forEach(function (item) {\n\t\t\titem.column = item.field;\n\t\t\tdelete item.field;\n\t\t});\n\n\t\treturn data;\n\t};\n\n\t//save data to chosed medium\n\tPersistence.prototype.saveData = function (id, data) {\n\n\t\tdata = JSON.stringify(data);\n\n\t\tswitch (this.mode) {\n\t\t\tcase \"local\":\n\t\t\t\tlocalStorage.setItem(id, data);\n\t\t\t\tbreak;\n\n\t\t\tcase \"cookie\":\n\t\t\t\tvar expireDate = new Date();\n\t\t\t\texpireDate.setDate(expireDate.getDate() + 10000);\n\n\t\t\t\t//save cookie\n\t\t\t\tdocument.cookie = id + \"=\" + data + \"; expires=\" + expireDate.toUTCString();\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn(\"Persistance Save Error - invalid mode selected\", this.mode);\n\t\t}\n\t};\n\n\t//build premission list\n\tPersistence.prototype.parseColumns = function (columns) {\n\t\tvar self = this,\n\t\t definitions = [];\n\n\t\tcolumns.forEach(function (column) {\n\t\t\tvar def = {};\n\n\t\t\tif (column.isGroup) {\n\t\t\t\tdef.title = column.getDefinition().title;\n\t\t\t\tdef.columns = self.parseColumns(column.getColumns());\n\t\t\t} else {\n\t\t\t\tdef.title = column.getDefinition().title;\n\t\t\t\tdef.field = column.getField();\n\t\t\t\tdef.width = column.getWidth();\n\t\t\t\tdef.visible = column.visible;\n\t\t\t}\n\n\t\t\tdefinitions.push(def);\n\t\t});\n\n\t\treturn definitions;\n\t};\n\n\tTabulator.prototype.registerModule(\"persistence\", Persistence);\n\n\tvar Print = function Print(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.element = false;\n\t\tthis.manualBlock = false;\n\t};\n\n\tPrint.prototype.initialize = function () {\n\t\twindow.addEventListener(\"beforeprint\", this.replaceTable.bind(this));\n\t\twindow.addEventListener(\"afterprint\", this.cleanup.bind(this));\n\t};\n\n\tPrint.prototype.replaceTable = function () {\n\t\tif (!this.manualBlock) {\n\t\t\tthis.element = document.createElement(\"div\");\n\t\t\tthis.element.classList.add(\"tabulator-print-table\");\n\n\t\t\tthis.element.appendChild(this.table.modules.htmlTableExport.genereateTable(this.table.options.printConfig, this.table.options.printCopyStyle, this.table.options.printVisibleRows, \"print\"));\n\n\t\t\tthis.table.element.style.display = \"none\";\n\n\t\t\tthis.table.element.parentNode.insertBefore(this.element, this.table.element);\n\t\t}\n\t};\n\n\tPrint.prototype.cleanup = function () {\n\t\tdocument.body.classList.remove(\"tabulator-print-fullscreen-hide\");\n\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t\tthis.table.element.style.display = \"\";\n\t\t}\n\t};\n\n\tPrint.prototype.printFullscreen = function (visible, style, config) {\n\t\tvar scrollX = window.scrollX,\n\t\t scrollY = window.scrollY,\n\t\t headerEl = document.createElement(\"div\"),\n\t\t footerEl = document.createElement(\"div\"),\n\t\t tableEl = this.table.modules.htmlTableExport.genereateTable(typeof config != \"undefined\" ? config : this.table.options.printConfig, typeof style != \"undefined\" ? style : this.table.options.printCopyStyle, visible, \"print\"),\n\t\t headerContent,\n\t\t footerContent;\n\n\t\tthis.manualBlock = true;\n\n\t\tthis.element = document.createElement(\"div\");\n\t\tthis.element.classList.add(\"tabulator-print-fullscreen\");\n\n\t\tif (this.table.options.printHeader) {\n\t\t\theaderEl.classList.add(\"tabulator-print-header\");\n\n\t\t\theaderContent = typeof this.table.options.printHeader == \"function\" ? this.table.options.printHeader.call(this.table) : this.table.options.printHeader;\n\n\t\t\tif (typeof headerContent == \"string\") {\n\t\t\t\theaderEl.innerHTML = headerContent;\n\t\t\t} else {\n\t\t\t\theaderEl.appendChild(headerContent);\n\t\t\t}\n\n\t\t\tthis.element.appendChild(headerEl);\n\t\t}\n\n\t\tthis.element.appendChild(tableEl);\n\n\t\tif (this.table.options.printFooter) {\n\t\t\tfooterEl.classList.add(\"tabulator-print-footer\");\n\n\t\t\tfooterContent = typeof this.table.options.printFooter == \"function\" ? this.table.options.printFooter.call(this.table) : this.table.options.printFooter;\n\n\t\t\tif (typeof footerContent == \"string\") {\n\t\t\t\tfooterEl.innerHTML = footerContent;\n\t\t\t} else {\n\t\t\t\tfooterEl.appendChild(footerContent);\n\t\t\t}\n\n\t\t\tthis.element.appendChild(footerEl);\n\t\t}\n\n\t\tdocument.body.classList.add(\"tabulator-print-fullscreen-hide\");\n\t\tdocument.body.appendChild(this.element);\n\n\t\tif (this.table.options.printFormatter) {\n\t\t\tthis.table.options.printFormatter(this.element, tableEl);\n\t\t}\n\n\t\twindow.print();\n\n\t\tthis.cleanup();\n\n\t\twindow.scrollTo(scrollX, scrollY);\n\n\t\tthis.manualBlock = false;\n\t};\n\n\tTabulator.prototype.registerModule(\"print\", Print);\n\tvar ReactiveData = function ReactiveData(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.data = false;\n\t\tthis.blocked = false; //block reactivity while performing update\n\t\tthis.origFuncs = {}; // hold original data array functions to allow replacement after data is done with\n\t\tthis.currentVersion = 0;\n\t};\n\n\tReactiveData.prototype.watchData = function (data) {\n\t\tvar self = this,\n\t\t pushFunc,\n\t\t version;\n\n\t\tthis.currentVersion++;\n\n\t\tversion = this.currentVersion;\n\n\t\tself.unwatchData();\n\n\t\tself.data = data;\n\n\t\t//override array push function\n\t\tself.origFuncs.push = data.push;\n\n\t\tObject.defineProperty(self.data, \"push\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function value() {\n\t\t\t\tvar args = Array.from(arguments);\n\n\t\t\t\tif (!self.blocked && version === self.currentVersion) {\n\t\t\t\t\targs.forEach(function (arg) {\n\t\t\t\t\t\tself.table.rowManager.addRowActual(arg, false);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn self.origFuncs.push.apply(data, arguments);\n\t\t\t}\n\t\t});\n\n\t\t//override array unshift function\n\t\tself.origFuncs.unshift = data.unshift;\n\n\t\tObject.defineProperty(self.data, \"unshift\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function value() {\n\t\t\t\tvar args = Array.from(arguments);\n\n\t\t\t\tif (!self.blocked && version === self.currentVersion) {\n\t\t\t\t\targs.forEach(function (arg) {\n\t\t\t\t\t\tself.table.rowManager.addRowActual(arg, true);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn self.origFuncs.unshift.apply(data, arguments);\n\t\t\t}\n\t\t});\n\n\t\t//override array shift function\n\t\tself.origFuncs.shift = data.shift;\n\n\t\tObject.defineProperty(self.data, \"shift\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function value() {\n\t\t\t\tvar row;\n\n\t\t\t\tif (!self.blocked && version === self.currentVersion) {\n\t\t\t\t\tif (self.data.length) {\n\t\t\t\t\t\trow = self.table.rowManager.getRowFromDataObject(self.data[0]);\n\n\t\t\t\t\t\tif (row) {\n\t\t\t\t\t\t\trow.deleteActual();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn self.origFuncs.shift.call(data);\n\t\t\t}\n\t\t});\n\n\t\t//override array pop function\n\t\tself.origFuncs.pop = data.pop;\n\n\t\tObject.defineProperty(self.data, \"pop\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function value() {\n\t\t\t\tvar row;\n\t\t\t\tif (!self.blocked && version === self.currentVersion) {\n\t\t\t\t\tif (self.data.length) {\n\t\t\t\t\t\trow = self.table.rowManager.getRowFromDataObject(self.data[self.data.length - 1]);\n\n\t\t\t\t\t\tif (row) {\n\t\t\t\t\t\t\trow.deleteActual();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn self.origFuncs.pop.call(data);\n\t\t\t}\n\t\t});\n\n\t\t//override array splice function\n\t\tself.origFuncs.splice = data.splice;\n\n\t\tObject.defineProperty(self.data, \"splice\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function value() {\n\t\t\t\tvar args = Array.from(arguments),\n\t\t\t\t start = args[0] < 0 ? data.length + args[0] : args[0],\n\t\t\t\t end = args[1],\n\t\t\t\t newRows = args[2] ? args.slice(2) : false,\n\t\t\t\t startRow;\n\n\t\t\t\tif (!self.blocked && version === self.currentVersion) {\n\n\t\t\t\t\t//add new rows\n\t\t\t\t\tif (newRows) {\n\t\t\t\t\t\tstartRow = data[start] ? self.table.rowManager.getRowFromDataObject(data[start]) : false;\n\n\t\t\t\t\t\tif (startRow) {\n\t\t\t\t\t\t\tnewRows.forEach(function (rowData) {\n\t\t\t\t\t\t\t\tself.table.rowManager.addRowActual(rowData, true, startRow, true);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tnewRows = newRows.slice().reverse();\n\n\t\t\t\t\t\t\tnewRows.forEach(function (rowData) {\n\t\t\t\t\t\t\t\tself.table.rowManager.addRowActual(rowData, true, false, true);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t//delete removed rows\n\t\t\t\t\tif (end !== 0) {\n\t\t\t\t\t\tvar oldRows = data.slice(start, typeof args[1] === \"undefined\" ? args[1] : start + end);\n\n\t\t\t\t\t\toldRows.forEach(function (rowData, i) {\n\t\t\t\t\t\t\tvar row = self.table.rowManager.getRowFromDataObject(rowData);\n\n\t\t\t\t\t\t\tif (row) {\n\t\t\t\t\t\t\t\trow.deleteActual(i !== oldRows.length - 1);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tif (newRows || end !== 0) {\n\t\t\t\t\t\tself.table.rowManager.reRenderInPosition();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn self.origFuncs.splice.apply(data, arguments);\n\t\t\t}\n\t\t});\n\t};\n\n\tReactiveData.prototype.unwatchData = function () {\n\t\tif (this.data !== false) {\n\t\t\tfor (var key in this.origFuncs) {\n\t\t\t\tObject.defineProperty(this.data, key, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: this.origFuncs.key\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t};\n\n\tReactiveData.prototype.watchRow = function (row) {\n\t\tvar self = this,\n\t\t data = row.getData();\n\n\t\tthis.blocked = true;\n\n\t\tfor (var key in data) {\n\t\t\tthis.watchKey(row, data, key);\n\t\t}\n\n\t\tthis.blocked = false;\n\t};\n\n\tReactiveData.prototype.watchKey = function (row, data, key) {\n\t\tvar self = this,\n\t\t props = Object.getOwnPropertyDescriptor(data, key),\n\t\t value = data[key],\n\t\t version = this.currentVersion;\n\n\t\tObject.defineProperty(data, key, {\n\t\t\tset: function set(newValue) {\n\t\t\t\tvalue = newValue;\n\t\t\t\tif (!self.blocked && version === self.currentVersion) {\n\t\t\t\t\tvar update = {};\n\t\t\t\t\tupdate[key] = newValue;\n\t\t\t\t\trow.updateData(update);\n\t\t\t\t}\n\n\t\t\t\tif (props.set) {\n\t\t\t\t\tprops.set(newValue);\n\t\t\t\t}\n\t\t\t},\n\t\t\tget: function get() {\n\n\t\t\t\tif (props.get) {\n\t\t\t\t\tprops.get();\n\t\t\t\t}\n\n\t\t\t\treturn value;\n\t\t\t}\n\t\t});\n\t};\n\n\tReactiveData.prototype.unwatchRow = function (row) {\n\t\tvar data = row.getData();\n\n\t\tfor (var key in data) {\n\t\t\tObject.defineProperty(data, key, {\n\t\t\t\tvalue: data[key]\n\t\t\t});\n\t\t}\n\t};\n\n\tReactiveData.prototype.block = function () {\n\t\tthis.blocked = true;\n\t};\n\n\tReactiveData.prototype.unblock = function () {\n\t\tthis.blocked = false;\n\t};\n\n\tTabulator.prototype.registerModule(\"reactiveData\", ReactiveData);\n\n\tvar ResizeColumns = function ResizeColumns(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.startColumn = false;\n\t\tthis.startX = false;\n\t\tthis.startWidth = false;\n\t\tthis.handle = null;\n\t\tthis.prevHandle = null;\n\t};\n\n\tResizeColumns.prototype.initializeColumn = function (type, column, element) {\n\t\tvar self = this,\n\t\t variableHeight = false,\n\t\t mode = this.table.options.resizableColumns;\n\n\t\t//set column resize mode\n\t\tif (type === \"header\") {\n\t\t\tvariableHeight = column.definition.formatter == \"textarea\" || column.definition.variableHeight;\n\t\t\tcolumn.modules.resize = { variableHeight: variableHeight };\n\t\t}\n\n\t\tif (mode === true || mode == type) {\n\n\t\t\tvar handle = document.createElement('div');\n\t\t\thandle.className = \"tabulator-col-resize-handle\";\n\n\t\t\tvar prevHandle = document.createElement('div');\n\t\t\tprevHandle.className = \"tabulator-col-resize-handle prev\";\n\n\t\t\thandle.addEventListener(\"click\", function (e) {\n\t\t\t\te.stopPropagation();\n\t\t\t});\n\n\t\t\tvar handleDown = function handleDown(e) {\n\t\t\t\tvar nearestColumn = column.getLastColumn();\n\n\t\t\t\tif (nearestColumn && self._checkResizability(nearestColumn)) {\n\t\t\t\t\tself.startColumn = column;\n\t\t\t\t\tself._mouseDown(e, nearestColumn, handle);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\thandle.addEventListener(\"mousedown\", handleDown);\n\t\t\thandle.addEventListener(\"touchstart\", handleDown, { passive: true });\n\n\t\t\t//reszie column on double click\n\t\t\thandle.addEventListener(\"dblclick\", function (e) {\n\t\t\t\tvar col = column.getLastColumn();\n\n\t\t\t\tif (col && self._checkResizability(col)) {\n\t\t\t\t\tcol.reinitializeWidth(true);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tprevHandle.addEventListener(\"click\", function (e) {\n\t\t\t\te.stopPropagation();\n\t\t\t});\n\n\t\t\tvar prevHandleDown = function prevHandleDown(e) {\n\t\t\t\tvar nearestColumn, colIndex, prevColumn;\n\n\t\t\t\tnearestColumn = column.getFirstColumn();\n\n\t\t\t\tif (nearestColumn) {\n\t\t\t\t\tcolIndex = self.table.columnManager.findColumnIndex(nearestColumn);\n\t\t\t\t\tprevColumn = colIndex > 0 ? self.table.columnManager.getColumnByIndex(colIndex - 1) : false;\n\n\t\t\t\t\tif (prevColumn && self._checkResizability(prevColumn)) {\n\t\t\t\t\t\tself.startColumn = column;\n\t\t\t\t\t\tself._mouseDown(e, prevColumn, prevHandle);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tprevHandle.addEventListener(\"mousedown\", prevHandleDown);\n\t\t\tprevHandle.addEventListener(\"touchstart\", prevHandleDown, { passive: true });\n\n\t\t\t//resize column on double click\n\t\t\tprevHandle.addEventListener(\"dblclick\", function (e) {\n\t\t\t\tvar nearestColumn, colIndex, prevColumn;\n\n\t\t\t\tnearestColumn = column.getFirstColumn();\n\n\t\t\t\tif (nearestColumn) {\n\t\t\t\t\tcolIndex = self.table.columnManager.findColumnIndex(nearestColumn);\n\t\t\t\t\tprevColumn = colIndex > 0 ? self.table.columnManager.getColumnByIndex(colIndex - 1) : false;\n\n\t\t\t\t\tif (prevColumn && self._checkResizability(prevColumn)) {\n\t\t\t\t\t\tprevColumn.reinitializeWidth(true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\telement.appendChild(handle);\n\t\t\telement.appendChild(prevHandle);\n\t\t}\n\t};\n\n\tResizeColumns.prototype._checkResizability = function (column) {\n\t\treturn typeof column.definition.resizable != \"undefined\" ? column.definition.resizable : this.table.options.resizableColumns;\n\t};\n\n\tResizeColumns.prototype._mouseDown = function (e, column, handle) {\n\t\tvar self = this;\n\n\t\tself.table.element.classList.add(\"tabulator-block-select\");\n\n\t\tfunction mouseMove(e) {\n\t\t\t// self.table.columnManager.tempScrollBlock();\n\n\t\t\tcolumn.setWidth(self.startWidth + ((typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX) - self.startX));\n\n\t\t\tif (!self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight) {\n\t\t\t\tcolumn.checkCellHeights();\n\t\t\t}\n\t\t}\n\n\t\tfunction mouseUp(e) {\n\n\t\t\t//block editor from taking action while resizing is taking place\n\t\t\tif (self.startColumn.modules.edit) {\n\t\t\t\tself.startColumn.modules.edit.blocked = false;\n\t\t\t}\n\n\t\t\tif (self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight) {\n\t\t\t\tcolumn.checkCellHeights();\n\t\t\t}\n\n\t\t\tdocument.body.removeEventListener(\"mouseup\", mouseUp);\n\t\t\tdocument.body.removeEventListener(\"mousemove\", mouseMove);\n\n\t\t\thandle.removeEventListener(\"touchmove\", mouseMove);\n\t\t\thandle.removeEventListener(\"touchend\", mouseUp);\n\n\t\t\tself.table.element.classList.remove(\"tabulator-block-select\");\n\n\t\t\tif (self.table.options.persistentLayout && self.table.modExists(\"persistence\", true)) {\n\t\t\t\tself.table.modules.persistence.save(\"columns\");\n\t\t\t}\n\n\t\t\tself.table.options.columnResized.call(self.table, column.getComponent());\n\t\t}\n\n\t\te.stopPropagation(); //prevent resize from interfereing with movable columns\n\n\t\t//block editor from taking action while resizing is taking place\n\t\tif (self.startColumn.modules.edit) {\n\t\t\tself.startColumn.modules.edit.blocked = true;\n\t\t}\n\n\t\tself.startX = typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX;\n\t\tself.startWidth = column.getWidth();\n\n\t\tdocument.body.addEventListener(\"mousemove\", mouseMove);\n\t\tdocument.body.addEventListener(\"mouseup\", mouseUp);\n\t\thandle.addEventListener(\"touchmove\", mouseMove, { passive: true });\n\t\thandle.addEventListener(\"touchend\", mouseUp);\n\t};\n\n\tTabulator.prototype.registerModule(\"resizeColumns\", ResizeColumns);\n\tvar ResizeRows = function ResizeRows(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.startColumn = false;\n\t\tthis.startY = false;\n\t\tthis.startHeight = false;\n\t\tthis.handle = null;\n\t\tthis.prevHandle = null;\n\t};\n\n\tResizeRows.prototype.initializeRow = function (row) {\n\t\tvar self = this,\n\t\t rowEl = row.getElement();\n\n\t\tvar handle = document.createElement('div');\n\t\thandle.className = \"tabulator-row-resize-handle\";\n\n\t\tvar prevHandle = document.createElement('div');\n\t\tprevHandle.className = \"tabulator-row-resize-handle prev\";\n\n\t\thandle.addEventListener(\"click\", function (e) {\n\t\t\te.stopPropagation();\n\t\t});\n\n\t\tvar handleDown = function handleDown(e) {\n\t\t\tself.startRow = row;\n\t\t\tself._mouseDown(e, row, handle);\n\t\t};\n\n\t\thandle.addEventListener(\"mousedown\", handleDown, { passive: true });\n\t\thandle.addEventListener(\"touchstart\", handleDown);\n\n\t\tprevHandle.addEventListener(\"click\", function (e) {\n\t\t\te.stopPropagation();\n\t\t});\n\n\t\tvar prevHandleDown = function prevHandleDown(e) {\n\t\t\tvar prevRow = self.table.rowManager.prevDisplayRow(row);\n\n\t\t\tif (prevRow) {\n\t\t\t\tself.startRow = prevRow;\n\t\t\t\tself._mouseDown(e, prevRow, prevHandle);\n\t\t\t}\n\t\t};\n\n\t\tprevHandle.addEventListener(\"mousedown\", prevHandleDown);\n\t\tprevHandle.addEventListener(\"touchstart\", prevHandleDown, { passive: true });\n\n\t\trowEl.appendChild(handle);\n\t\trowEl.appendChild(prevHandle);\n\t};\n\n\tResizeRows.prototype._mouseDown = function (e, row, handle) {\n\t\tvar self = this;\n\n\t\tself.table.element.classList.add(\"tabulator-block-select\");\n\n\t\tfunction mouseMove(e) {\n\t\t\trow.setHeight(self.startHeight + ((typeof e.screenY === \"undefined\" ? e.touches[0].screenY : e.screenY) - self.startY));\n\t\t}\n\n\t\tfunction mouseUp(e) {\n\n\t\t\t// //block editor from taking action while resizing is taking place\n\t\t\t// if(self.startColumn.modules.edit){\n\t\t\t// \tself.startColumn.modules.edit.blocked = false;\n\t\t\t// }\n\n\t\t\tdocument.body.removeEventListener(\"mouseup\", mouseMove);\n\t\t\tdocument.body.removeEventListener(\"mousemove\", mouseMove);\n\n\t\t\thandle.removeEventListener(\"touchmove\", mouseMove);\n\t\t\thandle.removeEventListener(\"touchend\", mouseUp);\n\n\t\t\tself.table.element.classList.remove(\"tabulator-block-select\");\n\n\t\t\tself.table.options.rowResized.call(this.table, row.getComponent());\n\t\t}\n\n\t\te.stopPropagation(); //prevent resize from interfereing with movable columns\n\n\t\t//block editor from taking action while resizing is taking place\n\t\t// if(self.startColumn.modules.edit){\n\t\t// \tself.startColumn.modules.edit.blocked = true;\n\t\t// }\n\n\t\tself.startY = typeof e.screenY === \"undefined\" ? e.touches[0].screenY : e.screenY;\n\t\tself.startHeight = row.getHeight();\n\n\t\tdocument.body.addEventListener(\"mousemove\", mouseMove);\n\t\tdocument.body.addEventListener(\"mouseup\", mouseUp);\n\n\t\thandle.addEventListener(\"touchmove\", mouseMove, { passive: true });\n\t\thandle.addEventListener(\"touchend\", mouseUp);\n\t};\n\n\tTabulator.prototype.registerModule(\"resizeRows\", ResizeRows);\n\tvar ResizeTable = function ResizeTable(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.binding = false;\n\t\tthis.observer = false;\n\t};\n\n\tResizeTable.prototype.initialize = function (row) {\n\t\tvar table = this.table,\n\t\t observer;\n\n\t\tif (typeof ResizeObserver !== \"undefined\" && table.rowManager.getRenderMode() === \"virtual\") {\n\t\t\tthis.observer = new ResizeObserver(function (entry) {\n\t\t\t\ttable.redraw();\n\t\t\t});\n\n\t\t\tthis.observer.observe(table.element);\n\t\t} else {\n\t\t\tthis.binding = function () {\n\t\t\t\ttable.redraw();\n\t\t\t};\n\n\t\t\twindow.addEventListener(\"resize\", this.binding);\n\t\t}\n\t};\n\n\tResizeTable.prototype.clearBindings = function (row) {\n\t\tif (this.binding) {\n\t\t\twindow.removeEventListener(\"resize\", this.binding);\n\t\t}\n\n\t\tif (this.observer) {\n\t\t\tthis.observer.unobserve(this.table.element);\n\t\t}\n\t};\n\n\tTabulator.prototype.registerModule(\"resizeTable\", ResizeTable);\n\tvar ResponsiveLayout = function ResponsiveLayout(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.columns = [];\n\t\tthis.hiddenColumns = [];\n\t\tthis.mode = \"\";\n\t\tthis.index = 0;\n\t\tthis.collapseFormatter = [];\n\t\tthis.collapseStartOpen = true;\n\t};\n\n\t//generate resposive columns list\n\tResponsiveLayout.prototype.initialize = function () {\n\t\tvar self = this,\n\t\t columns = [];\n\n\t\tthis.mode = this.table.options.responsiveLayout;\n\t\tthis.collapseFormatter = this.table.options.responsiveLayoutCollapseFormatter || this.formatCollapsedData;\n\t\tthis.collapseStartOpen = this.table.options.responsiveLayoutCollapseStartOpen;\n\t\tthis.hiddenColumns = [];\n\n\t\t//detemine level of responsivity for each column\n\t\tthis.table.columnManager.columnsByIndex.forEach(function (column, i) {\n\t\t\tif (column.modules.responsive) {\n\t\t\t\tif (column.modules.responsive.order && column.modules.responsive.visible) {\n\t\t\t\t\tcolumn.modules.responsive.index = i;\n\t\t\t\t\tcolumns.push(column);\n\n\t\t\t\t\tif (!column.visible && self.mode === \"collapse\") {\n\t\t\t\t\t\tself.hiddenColumns.push(column);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t//sort list by responsivity\n\t\tcolumns = columns.reverse();\n\t\tcolumns = columns.sort(function (a, b) {\n\t\t\tvar diff = b.modules.responsive.order - a.modules.responsive.order;\n\t\t\treturn diff || b.modules.responsive.index - a.modules.responsive.index;\n\t\t});\n\n\t\tthis.columns = columns;\n\n\t\tif (this.mode === \"collapse\") {\n\t\t\tthis.generateCollapsedContent();\n\t\t}\n\t};\n\n\t//define layout information\n\tResponsiveLayout.prototype.initializeColumn = function (column) {\n\t\tvar def = column.getDefinition();\n\n\t\tcolumn.modules.responsive = { order: typeof def.responsive === \"undefined\" ? 1 : def.responsive, visible: def.visible === false ? false : true };\n\t};\n\n\tResponsiveLayout.prototype.layoutRow = function (row) {\n\t\tvar rowEl = row.getElement(),\n\t\t el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-responsive-collapse\");\n\n\t\tif (!rowEl.classList.contains(\"tabulator-calcs\")) {\n\t\t\trow.modules.responsiveLayout = {\n\t\t\t\telement: el\n\t\t\t};\n\n\t\t\tif (!this.collapseStartOpen) {\n\t\t\t\tel.style.display = 'none';\n\t\t\t}\n\n\t\t\trowEl.appendChild(el);\n\n\t\t\tthis.generateCollapsedRowContent(row);\n\t\t}\n\t};\n\n\t//update column visibility\n\tResponsiveLayout.prototype.updateColumnVisibility = function (column, visible) {\n\t\tvar index;\n\t\tif (column.modules.responsive) {\n\t\t\tcolumn.modules.responsive.visible = visible;\n\t\t\tthis.initialize();\n\t\t}\n\t};\n\n\tResponsiveLayout.prototype.hideColumn = function (column) {\n\t\tcolumn.hide(false, true);\n\n\t\tif (this.mode === \"collapse\") {\n\t\t\tthis.hiddenColumns.unshift(column);\n\t\t\tthis.generateCollapsedContent();\n\t\t}\n\t};\n\n\tResponsiveLayout.prototype.showColumn = function (column) {\n\t\tvar index;\n\n\t\tcolumn.show(false, true);\n\t\t//set column width to prevent calculation loops on uninitialized columns\n\t\tcolumn.setWidth(column.getWidth());\n\n\t\tif (this.mode === \"collapse\") {\n\t\t\tindex = this.hiddenColumns.indexOf(column);\n\n\t\t\tif (index > -1) {\n\t\t\t\tthis.hiddenColumns.splice(index, 1);\n\t\t\t}\n\n\t\t\tthis.generateCollapsedContent();\n\t\t}\n\t};\n\n\t//redraw columns to fit space\n\tResponsiveLayout.prototype.update = function () {\n\t\tvar self = this,\n\t\t working = true;\n\n\t\twhile (working) {\n\n\t\t\tvar width = self.table.modules.layout.getMode() == \"fitColumns\" ? self.table.columnManager.getFlexBaseWidth() : self.table.columnManager.getWidth();\n\n\t\t\tvar diff = self.table.columnManager.element.clientWidth - width;\n\n\t\t\tif (diff < 0) {\n\t\t\t\t//table is too wide\n\t\t\t\tvar column = self.columns[self.index];\n\n\t\t\t\tif (column) {\n\t\t\t\t\tself.hideColumn(column);\n\t\t\t\t\tself.index++;\n\t\t\t\t} else {\n\t\t\t\t\tworking = false;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t//table has spare space\n\t\t\t\tvar _column = self.columns[self.index - 1];\n\n\t\t\t\tif (_column) {\n\t\t\t\t\tif (diff > 0) {\n\t\t\t\t\t\tif (diff >= _column.getWidth()) {\n\t\t\t\t\t\t\tself.showColumn(_column);\n\t\t\t\t\t\t\tself.index--;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tworking = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tworking = false;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tworking = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!self.table.rowManager.activeRowsCount) {\n\t\t\t\tself.table.rowManager.renderEmptyScroll();\n\t\t\t}\n\t\t}\n\t};\n\n\tResponsiveLayout.prototype.generateCollapsedContent = function () {\n\t\tvar self = this,\n\t\t rows = this.table.rowManager.getDisplayRows();\n\n\t\trows.forEach(function (row) {\n\t\t\tself.generateCollapsedRowContent(row);\n\t\t});\n\t};\n\n\tResponsiveLayout.prototype.generateCollapsedRowContent = function (row) {\n\t\tvar el, contents;\n\n\t\tif (row.modules.responsiveLayout) {\n\t\t\tel = row.modules.responsiveLayout.element;\n\n\t\t\twhile (el.firstChild) {\n\t\t\t\tel.removeChild(el.firstChild);\n\t\t\t}contents = this.collapseFormatter(this.generateCollapsedRowData(row));\n\t\t\tif (contents) {\n\t\t\t\tel.appendChild(contents);\n\t\t\t}\n\t\t}\n\t};\n\n\tResponsiveLayout.prototype.generateCollapsedRowData = function (row) {\n\t\tvar self = this,\n\t\t data = row.getData(),\n\t\t output = [],\n\t\t mockCellComponent;\n\n\t\tthis.hiddenColumns.forEach(function (column) {\n\t\t\tvar value = column.getFieldValue(data);\n\n\t\t\tif (column.definition.title && column.field) {\n\t\t\t\tif (column.modules.format && self.table.options.responsiveLayoutCollapseUseFormatters) {\n\n\t\t\t\t\tmockCellComponent = {\n\t\t\t\t\t\tvalue: false,\n\t\t\t\t\t\tdata: {},\n\t\t\t\t\t\tgetValue: function getValue() {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetData: function getData() {\n\t\t\t\t\t\t\treturn data;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetElement: function getElement() {\n\t\t\t\t\t\t\treturn document.createElement(\"div\");\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetRow: function getRow() {\n\t\t\t\t\t\t\treturn row.getComponent();\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetColumn: function getColumn() {\n\t\t\t\t\t\t\treturn column.getComponent();\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\toutput.push({\n\t\t\t\t\t\ttitle: column.definition.title,\n\t\t\t\t\t\tvalue: column.modules.format.formatter.call(self.table.modules.format, mockCellComponent, column.modules.format.params)\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\toutput.push({\n\t\t\t\t\t\ttitle: column.definition.title,\n\t\t\t\t\t\tvalue: value\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t};\n\n\tResponsiveLayout.prototype.formatCollapsedData = function (data) {\n\t\tvar list = document.createElement(\"table\"),\n\t\t listContents = \"\";\n\n\t\tdata.forEach(function (item) {\n\t\t\tvar div = document.createElement(\"div\");\n\n\t\t\tif (item.value instanceof Node) {\n\t\t\t\tdiv.appendChild(item.value);\n\t\t\t\titem.value = div.innerHTML;\n\t\t\t}\n\n\t\t\tlistContents += \"<tr><td><strong>\" + item.title + \"</strong></td><td>\" + item.value + \"</td></tr>\";\n\t\t});\n\n\t\tlist.innerHTML = listContents;\n\n\t\treturn Object.keys(data).length ? list : \"\";\n\t};\n\n\tTabulator.prototype.registerModule(\"responsiveLayout\", ResponsiveLayout);\n\n\tvar SelectRow = function SelectRow(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.selecting = false; //flag selecting in progress\n\t\tthis.lastClickedRow = false; //last clicked row\n\t\tthis.selectPrev = []; //hold previously selected element for drag drop selection\n\t\tthis.selectedRows = []; //hold selected rows\n\t};\n\n\tSelectRow.prototype.clearSelectionData = function (silent) {\n\t\tthis.selecting = false;\n\t\tthis.lastClickedRow = false;\n\t\tthis.selectPrev = [];\n\t\tthis.selectedRows = [];\n\n\t\tif (!silent) {\n\t\t\tthis._rowSelectionChanged();\n\t\t}\n\t};\n\n\tSelectRow.prototype.initializeRow = function (row) {\n\t\tvar self = this,\n\t\t element = row.getElement();\n\n\t\t// trigger end of row selection\n\t\tvar endSelect = function endSelect() {\n\n\t\t\tsetTimeout(function () {\n\t\t\t\tself.selecting = false;\n\t\t\t}, 50);\n\n\t\t\tdocument.body.removeEventListener(\"mouseup\", endSelect);\n\t\t};\n\n\t\trow.modules.select = { selected: false };\n\n\t\t//set row selection class\n\t\tif (self.table.options.selectableCheck.call(this.table, row.getComponent())) {\n\t\t\telement.classList.add(\"tabulator-selectable\");\n\t\t\telement.classList.remove(\"tabulator-unselectable\");\n\n\t\t\tif (self.table.options.selectable && self.table.options.selectable != \"highlight\") {\n\t\t\t\tif (self.table.options.selectableRangeMode === \"click\") {\n\t\t\t\t\telement.addEventListener(\"click\", function (e) {\n\n\t\t\t\t\t\tself.table._clearSelection();\n\n\t\t\t\t\t\tif (e.shiftKey) {\n\t\t\t\t\t\t\tself.lastClickedRow = self.lastClickedRow || row;\n\n\t\t\t\t\t\t\tvar lastClickedRowIdx = self.table.rowManager.getDisplayRowIndex(self.lastClickedRow);\n\t\t\t\t\t\t\tvar rowIdx = self.table.rowManager.getDisplayRowIndex(row);\n\n\t\t\t\t\t\t\tvar fromRowIdx = lastClickedRowIdx <= rowIdx ? lastClickedRowIdx : rowIdx;\n\t\t\t\t\t\t\tvar toRowIdx = lastClickedRowIdx >= rowIdx ? lastClickedRowIdx : rowIdx;\n\n\t\t\t\t\t\t\tvar rows = self.table.rowManager.getDisplayRows().slice(0);\n\t\t\t\t\t\t\tvar toggledRows = rows.splice(fromRowIdx, toRowIdx - fromRowIdx + 1);\n\n\t\t\t\t\t\t\tif (e.ctrlKey || e.metaKey) {\n\t\t\t\t\t\t\t\ttoggledRows.forEach(function (toggledRow) {\n\t\t\t\t\t\t\t\t\tif (toggledRow !== self.lastClickedRow) {\n\n\t\t\t\t\t\t\t\t\t\tif (self.table.options.selectable !== true && !self.isRowSelected(row)) {\n\t\t\t\t\t\t\t\t\t\t\tif (self.selectedRows.length < self.table.options.selectable) {\n\t\t\t\t\t\t\t\t\t\t\t\tself.toggleRow(toggledRow);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\tself.toggleRow(toggledRow);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tself.lastClickedRow = row;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tself.deselectRows();\n\n\t\t\t\t\t\t\t\tif (self.table.options.selectable !== true) {\n\t\t\t\t\t\t\t\t\tif (toggledRows.length > self.table.options.selectable) {\n\t\t\t\t\t\t\t\t\t\ttoggledRows = toggledRows.slice(0, self.table.options.selectable);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tself.selectRows(toggledRows);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (e.ctrlKey || e.metaKey) {\n\t\t\t\t\t\t\tself.toggleRow(row);\n\t\t\t\t\t\t\tself.lastClickedRow = row;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tself.deselectRows();\n\t\t\t\t\t\t\tself.selectRows(row);\n\t\t\t\t\t\t\tself.lastClickedRow = row;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tself.table._clearSelection();\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\telement.addEventListener(\"click\", function (e) {\n\t\t\t\t\t\tself.table._clearSelection();\n\n\t\t\t\t\t\tif (!self.selecting) {\n\t\t\t\t\t\t\tself.toggleRow(row);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\telement.addEventListener(\"mousedown\", function (e) {\n\t\t\t\t\t\tif (e.shiftKey) {\n\t\t\t\t\t\t\tself.table._clearSelection();\n\n\t\t\t\t\t\t\tself.selecting = true;\n\n\t\t\t\t\t\t\tself.selectPrev = [];\n\n\t\t\t\t\t\t\tdocument.body.addEventListener(\"mouseup\", endSelect);\n\t\t\t\t\t\t\tdocument.body.addEventListener(\"keyup\", endSelect);\n\n\t\t\t\t\t\t\tself.toggleRow(row);\n\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\telement.addEventListener(\"mouseenter\", function (e) {\n\t\t\t\t\t\tif (self.selecting) {\n\t\t\t\t\t\t\tself.table._clearSelection();\n\t\t\t\t\t\t\tself.toggleRow(row);\n\n\t\t\t\t\t\t\tif (self.selectPrev[1] == row) {\n\t\t\t\t\t\t\t\tself.toggleRow(self.selectPrev[0]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\telement.addEventListener(\"mouseout\", function (e) {\n\t\t\t\t\t\tif (self.selecting) {\n\t\t\t\t\t\t\tself.table._clearSelection();\n\t\t\t\t\t\t\tself.selectPrev.unshift(row);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\telement.classList.add(\"tabulator-unselectable\");\n\t\t\telement.classList.remove(\"tabulator-selectable\");\n\t\t}\n\t};\n\n\t//toggle row selection\n\tSelectRow.prototype.toggleRow = function (row) {\n\t\tif (this.table.options.selectableCheck.call(this.table, row.getComponent())) {\n\t\t\tif (row.modules.select && row.modules.select.selected) {\n\t\t\t\tthis._deselectRow(row);\n\t\t\t} else {\n\t\t\t\tthis._selectRow(row);\n\t\t\t}\n\t\t}\n\t};\n\n\t//select a number of rows\n\tSelectRow.prototype.selectRows = function (rows) {\n\t\tvar self = this;\n\n\t\tswitch (typeof rows === 'undefined' ? 'undefined' : _typeof(rows)) {\n\t\t\tcase \"undefined\":\n\t\t\t\tself.table.rowManager.rows.forEach(function (row) {\n\t\t\t\t\tself._selectRow(row, true, true);\n\t\t\t\t});\n\n\t\t\t\tself._rowSelectionChanged();\n\t\t\t\tbreak;\n\n\t\t\tcase \"boolean\":\n\t\t\t\tif (rows === true) {\n\t\t\t\t\tself.table.rowManager.activeRows.forEach(function (row) {\n\t\t\t\t\t\tself._selectRow(row, true, true);\n\t\t\t\t\t});\n\n\t\t\t\t\tself._rowSelectionChanged();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tif (Array.isArray(rows)) {\n\t\t\t\t\trows.forEach(function (row) {\n\t\t\t\t\t\tself._selectRow(row, true, true);\n\t\t\t\t\t});\n\n\t\t\t\t\tself._rowSelectionChanged();\n\t\t\t\t} else {\n\t\t\t\t\tself._selectRow(rows, false, true);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t};\n\n\t//select an individual row\n\tSelectRow.prototype._selectRow = function (rowInfo, silent, force) {\n\t\tvar index;\n\n\t\t//handle max row count\n\t\tif (!isNaN(this.table.options.selectable) && this.table.options.selectable !== true && !force) {\n\t\t\tif (this.selectedRows.length >= this.table.options.selectable) {\n\t\t\t\tif (this.table.options.selectableRollingSelection) {\n\t\t\t\t\tthis._deselectRow(this.selectedRows[0]);\n\t\t\t\t} else {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvar row = this.table.rowManager.findRow(rowInfo);\n\n\t\tif (row) {\n\t\t\tif (this.selectedRows.indexOf(row) == -1) {\n\t\t\t\tif (!row.modules.select) {\n\t\t\t\t\trow.modules.select = {};\n\t\t\t\t}\n\n\t\t\t\trow.modules.select.selected = true;\n\t\t\t\trow.getElement().classList.add(\"tabulator-selected\");\n\n\t\t\t\tthis.selectedRows.push(row);\n\n\t\t\t\tif (!silent) {\n\t\t\t\t\tthis.table.options.rowSelected.call(this.table, row.getComponent());\n\t\t\t\t\tthis._rowSelectionChanged();\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (!silent) {\n\t\t\t\tconsole.warn(\"Selection Error - No such row found, ignoring selection:\" + rowInfo);\n\t\t\t}\n\t\t}\n\t};\n\n\tSelectRow.prototype.isRowSelected = function (row) {\n\t\treturn this.selectedRows.indexOf(row) !== -1;\n\t};\n\n\t//deselect a number of rows\n\tSelectRow.prototype.deselectRows = function (rows) {\n\t\tvar self = this,\n\t\t rowCount;\n\n\t\tif (typeof rows == \"undefined\") {\n\n\t\t\trowCount = self.selectedRows.length;\n\n\t\t\tfor (var i = 0; i < rowCount; i++) {\n\t\t\t\tself._deselectRow(self.selectedRows[0], true);\n\t\t\t}\n\n\t\t\tself._rowSelectionChanged();\n\t\t} else {\n\t\t\tif (Array.isArray(rows)) {\n\t\t\t\trows.forEach(function (row) {\n\t\t\t\t\tself._deselectRow(row, true);\n\t\t\t\t});\n\n\t\t\t\tself._rowSelectionChanged();\n\t\t\t} else {\n\t\t\t\tself._deselectRow(rows);\n\t\t\t}\n\t\t}\n\t};\n\n\t//deselect an individual row\n\tSelectRow.prototype._deselectRow = function (rowInfo, silent) {\n\t\tvar self = this,\n\t\t row = self.table.rowManager.findRow(rowInfo),\n\t\t index;\n\n\t\tif (row) {\n\t\t\tindex = self.selectedRows.findIndex(function (selectedRow) {\n\t\t\t\treturn selectedRow == row;\n\t\t\t});\n\n\t\t\tif (index > -1) {\n\n\t\t\t\tif (!row.modules.select) {\n\t\t\t\t\trow.modules.select = {};\n\t\t\t\t}\n\n\t\t\t\trow.modules.select.selected = false;\n\t\t\t\trow.getElement().classList.remove(\"tabulator-selected\");\n\t\t\t\tself.selectedRows.splice(index, 1);\n\n\t\t\t\tif (!silent) {\n\t\t\t\t\tself.table.options.rowDeselected.call(this.table, row.getComponent());\n\t\t\t\t\tself._rowSelectionChanged();\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (!silent) {\n\t\t\t\tconsole.warn(\"Deselection Error - No such row found, ignoring selection:\" + rowInfo);\n\t\t\t}\n\t\t}\n\t};\n\n\tSelectRow.prototype.getSelectedData = function () {\n\t\tvar data = [];\n\n\t\tthis.selectedRows.forEach(function (row) {\n\t\t\tdata.push(row.getData());\n\t\t});\n\n\t\treturn data;\n\t};\n\n\tSelectRow.prototype.getSelectedRows = function () {\n\n\t\tvar rows = [];\n\n\t\tthis.selectedRows.forEach(function (row) {\n\t\t\trows.push(row.getComponent());\n\t\t});\n\n\t\treturn rows;\n\t};\n\n\tSelectRow.prototype._rowSelectionChanged = function () {\n\t\tthis.table.options.rowSelectionChanged.call(this.table, this.getSelectedData(), this.getSelectedRows());\n\t};\n\n\tTabulator.prototype.registerModule(\"selectRow\", SelectRow);\n\n\tvar Sort = function Sort(table) {\n\t\tthis.table = table; //hold Tabulator object\n\t\tthis.sortList = []; //holder current sort\n\t\tthis.changed = false; //has the sort changed since last render\n\t};\n\n\t//initialize column header for sorting\n\tSort.prototype.initializeColumn = function (column, content) {\n\t\tvar self = this,\n\t\t sorter = false,\n\t\t colEl,\n\t\t arrowEl;\n\n\t\tswitch (_typeof(column.definition.sorter)) {\n\t\t\tcase \"string\":\n\t\t\t\tif (self.sorters[column.definition.sorter]) {\n\t\t\t\t\tsorter = self.sorters[column.definition.sorter];\n\t\t\t\t} else {\n\t\t\t\t\tconsole.warn(\"Sort Error - No such sorter found: \", column.definition.sorter);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tsorter = column.definition.sorter;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tcolumn.modules.sort = {\n\t\t\tsorter: sorter, dir: \"none\",\n\t\t\tparams: column.definition.sorterParams || {},\n\t\t\tstartingDir: column.definition.headerSortStartingDir || \"asc\",\n\t\t\ttristate: column.definition.headerSortTristate\n\t\t};\n\n\t\tif (column.definition.headerSort !== false) {\n\n\t\t\tcolEl = column.getElement();\n\n\t\t\tcolEl.classList.add(\"tabulator-sortable\");\n\n\t\t\tarrowEl = document.createElement(\"div\");\n\t\t\tarrowEl.classList.add(\"tabulator-arrow\");\n\t\t\t//create sorter arrow\n\t\t\tcontent.appendChild(arrowEl);\n\n\t\t\t//sort on click\n\t\t\tcolEl.addEventListener(\"click\", function (e) {\n\t\t\t\tvar dir = \"\",\n\t\t\t\t sorters = [],\n\t\t\t\t match = false;\n\n\t\t\t\tif (column.modules.sort) {\n\t\t\t\t\tif (column.modules.sort.tristate) {\n\t\t\t\t\t\tif (column.modules.sort.dir == \"none\") {\n\t\t\t\t\t\t\tdir = column.modules.sort.startingDir;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (column.modules.sort.dir == column.modules.sort.startingDir) {\n\t\t\t\t\t\t\t\tdir = column.modules.sort.dir == \"asc\" ? \"desc\" : \"asc\";\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tdir = \"none\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tswitch (column.modules.sort.dir) {\n\t\t\t\t\t\t\tcase \"asc\":\n\t\t\t\t\t\t\t\tdir = \"desc\";\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase \"desc\":\n\t\t\t\t\t\t\t\tdir = \"asc\";\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdir = column.modules.sort.startingDir;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (self.table.options.columnHeaderSortMulti && (e.shiftKey || e.ctrlKey)) {\n\t\t\t\t\t\tsorters = self.getSort();\n\n\t\t\t\t\t\tmatch = sorters.findIndex(function (sorter) {\n\t\t\t\t\t\t\treturn sorter.field === column.getField();\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (match > -1) {\n\t\t\t\t\t\t\tsorters[match].dir = dir;\n\n\t\t\t\t\t\t\tif (match != sorters.length - 1) {\n\t\t\t\t\t\t\t\tmatch = sorters.splice(match, 1)[0];\n\t\t\t\t\t\t\t\tif (dir != \"none\") {\n\t\t\t\t\t\t\t\t\tsorters.push(match);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (dir != \"none\") {\n\t\t\t\t\t\t\t\tsorters.push({ column: column, dir: dir });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t//add to existing sort\n\t\t\t\t\t\tself.setSort(sorters);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (dir == \"none\") {\n\t\t\t\t\t\t\tself.clear();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t//sort by column only\n\t\t\t\t\t\t\tself.setSort(column, dir);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tself.table.rowManager.sorterRefresh(!self.sortList.length);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t};\n\n\t//check if the sorters have changed since last use\n\tSort.prototype.hasChanged = function () {\n\t\tvar changed = this.changed;\n\t\tthis.changed = false;\n\t\treturn changed;\n\t};\n\n\t//return current sorters\n\tSort.prototype.getSort = function () {\n\t\tvar self = this,\n\t\t sorters = [];\n\n\t\tself.sortList.forEach(function (item) {\n\t\t\tif (item.column) {\n\t\t\t\tsorters.push({ column: item.column.getComponent(), field: item.column.getField(), dir: item.dir });\n\t\t\t}\n\t\t});\n\n\t\treturn sorters;\n\t};\n\n\t//change sort list and trigger sort\n\tSort.prototype.setSort = function (sortList, dir) {\n\t\tvar self = this,\n\t\t newSortList = [];\n\n\t\tif (!Array.isArray(sortList)) {\n\t\t\tsortList = [{ column: sortList, dir: dir }];\n\t\t}\n\n\t\tsortList.forEach(function (item) {\n\t\t\tvar column;\n\n\t\t\tcolumn = self.table.columnManager.findColumn(item.column);\n\n\t\t\tif (column) {\n\t\t\t\titem.column = column;\n\t\t\t\tnewSortList.push(item);\n\t\t\t\tself.changed = true;\n\t\t\t} else {\n\t\t\t\tconsole.warn(\"Sort Warning - Sort field does not exist and is being ignored: \", item.column);\n\t\t\t}\n\t\t});\n\n\t\tself.sortList = newSortList;\n\n\t\tif (this.table.options.persistentSort && this.table.modExists(\"persistence\", true)) {\n\t\t\tthis.table.modules.persistence.save(\"sort\");\n\t\t}\n\t};\n\n\t//clear sorters\n\tSort.prototype.clear = function () {\n\t\tthis.setSort([]);\n\t};\n\n\t//find appropriate sorter for column\n\tSort.prototype.findSorter = function (column) {\n\t\tvar row = this.table.rowManager.activeRows[0],\n\t\t sorter = \"string\",\n\t\t field,\n\t\t value;\n\n\t\tif (row) {\n\t\t\trow = row.getData();\n\t\t\tfield = column.getField();\n\n\t\t\tif (field) {\n\n\t\t\t\tvalue = column.getFieldValue(row);\n\n\t\t\t\tswitch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {\n\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\tsorter = \"string\";\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"boolean\":\n\t\t\t\t\t\tsorter = \"boolean\";\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif (!isNaN(value) && value !== \"\") {\n\t\t\t\t\t\t\tsorter = \"number\";\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)) {\n\t\t\t\t\t\t\t\tsorter = \"alphanum\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.sorters[sorter];\n\t};\n\n\t//work through sort list sorting data\n\tSort.prototype.sort = function (data) {\n\t\tvar self = this,\n\t\t lastSort,\n\t\t sortList;\n\n\t\tsortList = this.table.options.sortOrderReverse ? self.sortList.slice().reverse() : self.sortList;\n\n\t\tif (self.table.options.dataSorting) {\n\t\t\tself.table.options.dataSorting.call(self.table, self.getSort());\n\t\t}\n\n\t\tself.clearColumnHeaders();\n\n\t\tif (!self.table.options.ajaxSorting) {\n\n\t\t\tsortList.forEach(function (item, i) {\n\n\t\t\t\tif (item.column && item.column.modules.sort) {\n\n\t\t\t\t\t//if no sorter has been defined, take a guess\n\t\t\t\t\tif (!item.column.modules.sort.sorter) {\n\t\t\t\t\t\titem.column.modules.sort.sorter = self.findSorter(item.column);\n\t\t\t\t\t}\n\n\t\t\t\t\tself._sortItem(data, item.column, item.dir, sortList, i);\n\t\t\t\t}\n\n\t\t\t\tself.setColumnHeader(item.column, item.dir);\n\t\t\t});\n\t\t} else {\n\t\t\tsortList.forEach(function (item, i) {\n\t\t\t\tself.setColumnHeader(item.column, item.dir);\n\t\t\t});\n\t\t}\n\n\t\tif (self.table.options.dataSorted) {\n\t\t\tself.table.options.dataSorted.call(self.table, self.getSort(), self.table.rowManager.getComponents(true));\n\t\t}\n\t};\n\n\t//clear sort arrows on columns\n\tSort.prototype.clearColumnHeaders = function () {\n\t\tthis.table.columnManager.getRealColumns().forEach(function (column) {\n\t\t\tif (column.modules.sort) {\n\t\t\t\tcolumn.modules.sort.dir = \"none\";\n\t\t\t\tcolumn.getElement().setAttribute(\"aria-sort\", \"none\");\n\t\t\t}\n\t\t});\n\t};\n\n\t//set the column header sort direction\n\tSort.prototype.setColumnHeader = function (column, dir) {\n\t\tcolumn.modules.sort.dir = dir;\n\t\tcolumn.getElement().setAttribute(\"aria-sort\", dir);\n\t};\n\n\t//sort each item in sort list\n\tSort.prototype._sortItem = function (data, column, dir, sortList, i) {\n\t\tvar self = this;\n\n\t\tvar params = typeof column.modules.sort.params === \"function\" ? column.modules.sort.params(column.getComponent(), dir) : column.modules.sort.params;\n\n\t\tdata.sort(function (a, b) {\n\n\t\t\tvar result = self._sortRow(a, b, column, dir, params);\n\n\t\t\t//if results match recurse through previous searchs to be sure\n\t\t\tif (result === 0 && i) {\n\t\t\t\tfor (var j = i - 1; j >= 0; j--) {\n\t\t\t\t\tresult = self._sortRow(a, b, sortList[j].column, sortList[j].dir, params);\n\n\t\t\t\t\tif (result !== 0) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn result;\n\t\t});\n\t};\n\n\t//process individual rows for a sort function on active data\n\tSort.prototype._sortRow = function (a, b, column, dir, params) {\n\t\tvar el1Comp, el2Comp, colComp;\n\n\t\t//switch elements depending on search direction\n\t\tvar el1 = dir == \"asc\" ? a : b;\n\t\tvar el2 = dir == \"asc\" ? b : a;\n\n\t\ta = column.getFieldValue(el1.getData());\n\t\tb = column.getFieldValue(el2.getData());\n\n\t\ta = typeof a !== \"undefined\" ? a : \"\";\n\t\tb = typeof b !== \"undefined\" ? b : \"\";\n\n\t\tel1Comp = el1.getComponent();\n\t\tel2Comp = el2.getComponent();\n\n\t\treturn column.modules.sort.sorter.call(this, a, b, el1Comp, el2Comp, column.getComponent(), dir, params);\n\t};\n\n\t//default data sorters\n\tSort.prototype.sorters = {\n\n\t\t//sort numbers\n\t\tnumber: function number(a, b, aRow, bRow, column, dir, params) {\n\t\t\tvar alignEmptyValues = params.alignEmptyValues;\n\t\t\tvar decimal = params.decimalSeparator || \".\";\n\t\t\tvar thousand = params.thousandSeparator || \",\";\n\t\t\tvar emptyAlign = 0;\n\n\t\t\ta = parseFloat(String(a).split(thousand).join(\"\").split(decimal).join(\".\"));\n\t\t\tb = parseFloat(String(b).split(thousand).join(\"\").split(decimal).join(\".\"));\n\n\t\t\t//handle non numeric values\n\t\t\tif (isNaN(a)) {\n\t\t\t\temptyAlign = isNaN(b) ? 0 : -1;\n\t\t\t} else if (isNaN(b)) {\n\t\t\t\temptyAlign = 1;\n\t\t\t} else {\n\t\t\t\t//compare valid values\n\t\t\t\treturn a - b;\n\t\t\t}\n\n\t\t\t//fix empty values in position\n\t\t\tif (alignEmptyValues === \"top\" && dir === \"desc\" || alignEmptyValues === \"bottom\" && dir === \"asc\") {\n\t\t\t\temptyAlign *= -1;\n\t\t\t}\n\n\t\t\treturn emptyAlign;\n\t\t},\n\n\t\t//sort strings\n\t\tstring: function string(a, b, aRow, bRow, column, dir, params) {\n\t\t\tvar alignEmptyValues = params.alignEmptyValues;\n\t\t\tvar emptyAlign = 0;\n\t\t\tvar locale;\n\n\t\t\t//handle empty values\n\t\t\tif (!a) {\n\t\t\t\temptyAlign = !b ? 0 : -1;\n\t\t\t} else if (!b) {\n\t\t\t\temptyAlign = 1;\n\t\t\t} else {\n\t\t\t\t//compare valid values\n\t\t\t\tswitch (_typeof(params.locale)) {\n\t\t\t\t\tcase \"boolean\":\n\t\t\t\t\t\tif (params.locale) {\n\t\t\t\t\t\t\tlocale = this.table.modules.localize.getLocale();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"string\":\n\t\t\t\t\t\tlocale = params.locale;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\treturn String(a).toLowerCase().localeCompare(String(b).toLowerCase(), locale);\n\t\t\t}\n\n\t\t\t//fix empty values in position\n\t\t\tif (alignEmptyValues === \"top\" && dir === \"desc\" || alignEmptyValues === \"bottom\" && dir === \"asc\") {\n\t\t\t\temptyAlign *= -1;\n\t\t\t}\n\n\t\t\treturn emptyAlign;\n\t\t},\n\n\t\t//sort date\n\t\tdate: function date(a, b, aRow, bRow, column, dir, params) {\n\t\t\tif (!params.format) {\n\t\t\t\tparams.format = \"DD/MM/YYYY\";\n\t\t\t}\n\n\t\t\treturn this.sorters.datetime.call(this, a, b, aRow, bRow, column, dir, params);\n\t\t},\n\n\t\t//sort hh:mm formatted times\n\t\ttime: function time(a, b, aRow, bRow, column, dir, params) {\n\t\t\tif (!params.format) {\n\t\t\t\tparams.format = \"hh:mm\";\n\t\t\t}\n\n\t\t\treturn this.sorters.datetime.call(this, a, b, aRow, bRow, column, dir, params);\n\t\t},\n\n\t\t//sort datetime\n\t\tdatetime: function datetime(a, b, aRow, bRow, column, dir, params) {\n\t\t\tvar format = params.format || \"DD/MM/YYYY hh:mm:ss\",\n\t\t\t alignEmptyValues = params.alignEmptyValues,\n\t\t\t emptyAlign = 0;\n\n\t\t\tif (typeof moment != \"undefined\") {\n\t\t\t\ta = moment(a, format);\n\t\t\t\tb = moment(b, format);\n\n\t\t\t\tif (!a.isValid()) {\n\t\t\t\t\temptyAlign = !b.isValid() ? 0 : -1;\n\t\t\t\t} else if (!b.isValid()) {\n\t\t\t\t\temptyAlign = 1;\n\t\t\t\t} else {\n\t\t\t\t\t//compare valid values\n\t\t\t\t\treturn a - b;\n\t\t\t\t}\n\n\t\t\t\t//fix empty values in position\n\t\t\t\tif (alignEmptyValues === \"top\" && dir === \"desc\" || alignEmptyValues === \"bottom\" && dir === \"asc\") {\n\t\t\t\t\temptyAlign *= -1;\n\t\t\t\t}\n\n\t\t\t\treturn emptyAlign;\n\t\t\t} else {\n\t\t\t\tconsole.error(\"Sort Error - 'datetime' sorter is dependant on moment.js\");\n\t\t\t}\n\t\t},\n\n\t\t//sort booleans\n\t\tboolean: function boolean(a, b, aRow, bRow, column, dir, params) {\n\t\t\tvar el1 = a === true || a === \"true\" || a === \"True\" || a === 1 ? 1 : 0;\n\t\t\tvar el2 = b === true || b === \"true\" || b === \"True\" || b === 1 ? 1 : 0;\n\n\t\t\treturn el1 - el2;\n\t\t},\n\n\t\t//sort if element contains any data\n\t\tarray: function array(a, b, aRow, bRow, column, dir, params) {\n\t\t\tvar el1 = 0;\n\t\t\tvar el2 = 0;\n\t\t\tvar type = params.type || \"length\";\n\t\t\tvar alignEmptyValues = params.alignEmptyValues;\n\t\t\tvar emptyAlign = 0;\n\n\t\t\tfunction calc(value) {\n\n\t\t\t\tswitch (type) {\n\t\t\t\t\tcase \"length\":\n\t\t\t\t\t\treturn value.length;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"sum\":\n\t\t\t\t\t\treturn value.reduce(function (c, d) {\n\t\t\t\t\t\t\treturn c + d;\n\t\t\t\t\t\t});\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"max\":\n\t\t\t\t\t\treturn Math.max.apply(null, value);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"min\":\n\t\t\t\t\t\treturn Math.min.apply(null, value);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"avg\":\n\t\t\t\t\t\treturn value.reduce(function (c, d) {\n\t\t\t\t\t\t\treturn c + d;\n\t\t\t\t\t\t}) / value.length;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//handle non array values\n\t\t\tif (!Array.isArray(a)) {\n\t\t\t\talignEmptyValues = !Array.isArray(b) ? 0 : -1;\n\t\t\t} else if (!Array.isArray(b)) {\n\t\t\t\talignEmptyValues = 1;\n\t\t\t} else {\n\n\t\t\t\t//compare valid values\n\t\t\t\tel1 = a ? calc(a) : 0;\n\t\t\t\tel2 = b ? calc(b) : 0;\n\n\t\t\t\treturn el1 - el2;\n\t\t\t}\n\n\t\t\t//fix empty values in position\n\t\t\tif (alignEmptyValues === \"top\" && dir === \"desc\" || alignEmptyValues === \"bottom\" && dir === \"asc\") {\n\t\t\t\temptyAlign *= -1;\n\t\t\t}\n\n\t\t\treturn emptyAlign;\n\t\t},\n\n\t\t//sort if element contains any data\n\t\texists: function exists(a, b, aRow, bRow, column, dir, params) {\n\t\t\tvar el1 = typeof a == \"undefined\" ? 0 : 1;\n\t\t\tvar el2 = typeof b == \"undefined\" ? 0 : 1;\n\n\t\t\treturn el1 - el2;\n\t\t},\n\n\t\t//sort alpha numeric strings\n\t\talphanum: function alphanum(as, bs, aRow, bRow, column, dir, params) {\n\t\t\tvar a,\n\t\t\t b,\n\t\t\t a1,\n\t\t\t b1,\n\t\t\t i = 0,\n\t\t\t L,\n\t\t\t rx = /(\\d+)|(\\D+)/g,\n\t\t\t rd = /\\d/;\n\t\t\tvar alignEmptyValues = params.alignEmptyValues;\n\t\t\tvar emptyAlign = 0;\n\n\t\t\t//handle empty values\n\t\t\tif (!as && as !== 0) {\n\t\t\t\temptyAlign = !bs && bs !== 0 ? 0 : -1;\n\t\t\t} else if (!bs && bs !== 0) {\n\t\t\t\temptyAlign = 1;\n\t\t\t} else {\n\n\t\t\t\tif (isFinite(as) && isFinite(bs)) return as - bs;\n\t\t\t\ta = String(as).toLowerCase();\n\t\t\t\tb = String(bs).toLowerCase();\n\t\t\t\tif (a === b) return 0;\n\t\t\t\tif (!(rd.test(a) && rd.test(b))) return a > b ? 1 : -1;\n\t\t\t\ta = a.match(rx);\n\t\t\t\tb = b.match(rx);\n\t\t\t\tL = a.length > b.length ? b.length : a.length;\n\t\t\t\twhile (i < L) {\n\t\t\t\t\ta1 = a[i];\n\t\t\t\t\tb1 = b[i++];\n\t\t\t\t\tif (a1 !== b1) {\n\t\t\t\t\t\tif (isFinite(a1) && isFinite(b1)) {\n\t\t\t\t\t\t\tif (a1.charAt(0) === \"0\") a1 = \".\" + a1;\n\t\t\t\t\t\t\tif (b1.charAt(0) === \"0\") b1 = \".\" + b1;\n\t\t\t\t\t\t\treturn a1 - b1;\n\t\t\t\t\t\t} else return a1 > b1 ? 1 : -1;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn a.length > b.length;\n\t\t\t}\n\n\t\t\t//fix empty values in position\n\t\t\tif (alignEmptyValues === \"top\" && dir === \"desc\" || alignEmptyValues === \"bottom\" && dir === \"asc\") {\n\t\t\t\temptyAlign *= -1;\n\t\t\t}\n\n\t\t\treturn emptyAlign;\n\t\t}\n\t};\n\n\tTabulator.prototype.registerModule(\"sort\", Sort);\n\n\tvar Validate = function Validate(table) {\n\t\tthis.table = table;\n\t};\n\n\t//validate\n\tValidate.prototype.initializeColumn = function (column) {\n\t\tvar self = this,\n\t\t config = [],\n\t\t validator;\n\n\t\tif (column.definition.validator) {\n\n\t\t\tif (Array.isArray(column.definition.validator)) {\n\t\t\t\tcolumn.definition.validator.forEach(function (item) {\n\t\t\t\t\tvalidator = self._extractValidator(item);\n\n\t\t\t\t\tif (validator) {\n\t\t\t\t\t\tconfig.push(validator);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tvalidator = this._extractValidator(column.definition.validator);\n\n\t\t\t\tif (validator) {\n\t\t\t\t\tconfig.push(validator);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcolumn.modules.validate = config.length ? config : false;\n\t\t}\n\t};\n\n\tValidate.prototype._extractValidator = function (value) {\n\t\tvar parts, type, params;\n\n\t\tswitch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {\n\t\t\tcase \"string\":\n\t\t\t\tparts = value.split(\":\", 2);\n\t\t\t\ttype = parts.shift();\n\t\t\t\tparams = parts[0];\n\n\t\t\t\treturn this._buildValidator(type, params);\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\treturn this._buildValidator(value);\n\t\t\t\tbreak;\n\n\t\t\tcase \"object\":\n\t\t\t\treturn this._buildValidator(value.type, value.parameters);\n\t\t\t\tbreak;\n\t\t}\n\t};\n\n\tValidate.prototype._buildValidator = function (type, params) {\n\n\t\tvar func = typeof type == \"function\" ? type : this.validators[type];\n\n\t\tif (!func) {\n\t\t\tconsole.warn(\"Validator Setup Error - No matching validator found:\", type);\n\t\t\treturn false;\n\t\t} else {\n\t\t\treturn {\n\t\t\t\ttype: typeof type == \"function\" ? \"function\" : type,\n\t\t\t\tfunc: func,\n\t\t\t\tparams: params\n\t\t\t};\n\t\t}\n\t};\n\n\tValidate.prototype.validate = function (validators, cell, value) {\n\t\tvar self = this,\n\t\t valid = [];\n\n\t\tif (validators) {\n\t\t\tvalidators.forEach(function (item) {\n\t\t\t\tif (!item.func.call(self, cell, value, item.params)) {\n\t\t\t\t\tvalid.push({\n\t\t\t\t\t\ttype: item.type,\n\t\t\t\t\t\tparameters: item.params\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn valid.length ? valid : true;\n\t};\n\n\tValidate.prototype.validators = {\n\n\t\t//is integer\n\t\tinteger: function integer(cell, value, parameters) {\n\t\t\tif (value === \"\" || value === null || typeof value === \"undefined\") {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tvalue = Number(value);\n\t\t\treturn typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\n\t\t},\n\n\t\t//is float\n\t\tfloat: function float(cell, value, parameters) {\n\t\t\tif (value === \"\" || value === null || typeof value === \"undefined\") {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tvalue = Number(value);\n\t\t\treturn typeof value === 'number' && isFinite(value) && value % 1 !== 0;\n\t\t},\n\n\t\t//must be a number\n\t\tnumeric: function numeric(cell, value, parameters) {\n\t\t\tif (value === \"\" || value === null || typeof value === \"undefined\") {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn !isNaN(value);\n\t\t},\n\n\t\t//must be a string\n\t\tstring: function string(cell, value, parameters) {\n\t\t\tif (value === \"\" || value === null || typeof value === \"undefined\") {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn isNaN(value);\n\t\t},\n\n\t\t//maximum value\n\t\tmax: function max(cell, value, parameters) {\n\t\t\tif (value === \"\" || value === null || typeof value === \"undefined\") {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn parseFloat(value) <= parameters;\n\t\t},\n\n\t\t//minimum value\n\t\tmin: function min(cell, value, parameters) {\n\t\t\tif (value === \"\" || value === null || typeof value === \"undefined\") {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn parseFloat(value) >= parameters;\n\t\t},\n\n\t\t//minimum string length\n\t\tminLength: function minLength(cell, value, parameters) {\n\t\t\tif (value === \"\" || value === null || typeof value === \"undefined\") {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn String(value).length >= parameters;\n\t\t},\n\n\t\t//maximum string length\n\t\tmaxLength: function maxLength(cell, value, parameters) {\n\t\t\tif (value === \"\" || value === null || typeof value === \"undefined\") {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn String(value).length <= parameters;\n\t\t},\n\n\t\t//in provided value list\n\t\tin: function _in(cell, value, parameters) {\n\t\t\tif (value === \"\" || value === null || typeof value === \"undefined\") {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif (typeof parameters == \"string\") {\n\t\t\t\tparameters = parameters.split(\"|\");\n\t\t\t}\n\n\t\t\treturn value === \"\" || parameters.indexOf(value) > -1;\n\t\t},\n\n\t\t//must match provided regex\n\t\tregex: function regex(cell, value, parameters) {\n\t\t\tif (value === \"\" || value === null || typeof value === \"undefined\") {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tvar reg = new RegExp(parameters);\n\n\t\t\treturn reg.test(value);\n\t\t},\n\n\t\t//value must be unique in this column\n\t\tunique: function unique(cell, value, parameters) {\n\t\t\tif (value === \"\" || value === null || typeof value === \"undefined\") {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tvar unique = true;\n\n\t\t\tvar cellData = cell.getData();\n\t\t\tvar column = cell.getColumn()._getSelf();\n\n\t\t\tthis.table.rowManager.rows.forEach(function (row) {\n\t\t\t\tvar data = row.getData();\n\n\t\t\t\tif (data !== cellData) {\n\t\t\t\t\tif (value == column.getFieldValue(data)) {\n\t\t\t\t\t\tunique = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn unique;\n\t\t},\n\n\t\t//must have a value\n\t\trequired: function required(cell, value, parameters) {\n\t\t\treturn value !== \"\" && value !== null && typeof value !== \"undefined\";\n\t\t}\n\t};\n\n\tTabulator.prototype.registerModule(\"validate\", Validate);\n\n\treturn Tabulator;\n});","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inDOM = _interopRequireDefault(require(\"../util/inDOM\"));\n\nvar on = function on() {};\n\nif (_inDOM.default) {\n on = function () {\n if (document.addEventListener) return function (node, eventName, handler, capture) {\n return node.addEventListener(eventName, handler, capture || false);\n };else if (document.attachEvent) return function (node, eventName, handler) {\n return node.attachEvent('on' + eventName, function (e) {\n e = e || window.event;\n e.target = e.target || e.srcElement;\n e.currentTarget = node;\n handler.call(node, e);\n });\n };\n }();\n}\n\nvar _default = on;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inDOM = _interopRequireDefault(require(\"../util/inDOM\"));\n\nvar off = function off() {};\n\nif (_inDOM.default) {\n off = function () {\n if (document.addEventListener) return function (node, eventName, handler, capture) {\n return node.removeEventListener(eventName, handler, capture || false);\n };else if (document.attachEvent) return function (node, eventName, handler) {\n return node.detachEvent('on' + eventName, handler);\n };\n }();\n}\n\nvar _default = off;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inDOM = _interopRequireDefault(require(\"../util/inDOM\"));\n\nvar _default = function () {\n // HTML DOM and SVG DOM may have different support levels,\n // so we need to check on context instead of a document root element.\n return _inDOM.default ? function (context, node) {\n if (context.contains) {\n return context.contains(node);\n } else if (context.compareDocumentPosition) {\n return context === node || !!(context.compareDocumentPosition(node) & 16);\n } else {\n return fallback(context, node);\n }\n } : fallback;\n}();\n\nexports.default = _default;\n\nfunction fallback(context, node) {\n if (node) do {\n if (node === context) return true;\n } while (node = node.parentNode);\n return false;\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inDOM = _interopRequireDefault(require(\"../util/inDOM\"));\n\nvar _on = _interopRequireDefault(require(\"./on\"));\n\nvar _off = _interopRequireDefault(require(\"./off\"));\n\nvar listen = function listen() {};\n\nif (_inDOM.default) {\n listen = function listen(node, eventName, handler, capture) {\n (0, _on.default)(node, eventName, handler, capture);\n return function () {\n (0, _off.default)(node, eventName, handler, capture);\n };\n };\n}\n\nvar _default = listen;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = hasClass;\n\nfunction hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);else return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = camelizeStyleName;\n\nvar _camelize = _interopRequireDefault(require(\"./camelize\"));\n\n/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/camelizeStyleName.js\n */\nvar msPattern = /^-ms-/;\n\nfunction camelizeStyleName(string) {\n return (0, _camelize.default)(string.replace(msPattern, 'ms-'));\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = exports.animationEnd = exports.animationDelay = exports.animationTiming = exports.animationDuration = exports.animationName = exports.transitionEnd = exports.transitionDuration = exports.transitionDelay = exports.transitionTiming = exports.transitionProperty = exports.transform = void 0;\n\nvar _inDOM = _interopRequireDefault(require(\"../util/inDOM\"));\n\nvar transform = 'transform';\nexports.transform = transform;\nvar prefix, transitionEnd, animationEnd;\nexports.animationEnd = animationEnd;\nexports.transitionEnd = transitionEnd;\nvar transitionProperty, transitionDuration, transitionTiming, transitionDelay;\nexports.transitionDelay = transitionDelay;\nexports.transitionTiming = transitionTiming;\nexports.transitionDuration = transitionDuration;\nexports.transitionProperty = transitionProperty;\nvar animationName, animationDuration, animationTiming, animationDelay;\nexports.animationDelay = animationDelay;\nexports.animationTiming = animationTiming;\nexports.animationDuration = animationDuration;\nexports.animationName = animationName;\n\nif (_inDOM.default) {\n var _getTransitionPropert = getTransitionProperties();\n\n prefix = _getTransitionPropert.prefix;\n exports.transitionEnd = transitionEnd = _getTransitionPropert.transitionEnd;\n exports.animationEnd = animationEnd = _getTransitionPropert.animationEnd;\n exports.transform = transform = prefix + \"-\" + transform;\n exports.transitionProperty = transitionProperty = prefix + \"-transition-property\";\n exports.transitionDuration = transitionDuration = prefix + \"-transition-duration\";\n exports.transitionDelay = transitionDelay = prefix + \"-transition-delay\";\n exports.transitionTiming = transitionTiming = prefix + \"-transition-timing-function\";\n exports.animationName = animationName = prefix + \"-animation-name\";\n exports.animationDuration = animationDuration = prefix + \"-animation-duration\";\n exports.animationTiming = animationTiming = prefix + \"-animation-delay\";\n exports.animationDelay = animationDelay = prefix + \"-animation-timing-function\";\n}\n\nvar _default = {\n transform: transform,\n end: transitionEnd,\n property: transitionProperty,\n timing: transitionTiming,\n delay: transitionDelay,\n duration: transitionDuration\n};\nexports.default = _default;\n\nfunction getTransitionProperties() {\n var style = document.createElement('div').style;\n var vendorMap = {\n O: function O(e) {\n return \"o\" + e.toLowerCase();\n },\n Moz: function Moz(e) {\n return e.toLowerCase();\n },\n Webkit: function Webkit(e) {\n return \"webkit\" + e;\n },\n ms: function ms(e) {\n return \"MS\" + e;\n }\n };\n var vendors = Object.keys(vendorMap);\n var transitionEnd, animationEnd;\n var prefix = '';\n\n for (var i = 0; i < vendors.length; i++) {\n var vendor = vendors[i];\n\n if (vendor + \"TransitionProperty\" in style) {\n prefix = \"-\" + vendor.toLowerCase();\n transitionEnd = vendorMap[vendor]('TransitionEnd');\n animationEnd = vendorMap[vendor]('AnimationEnd');\n break;\n }\n }\n\n if (!transitionEnd && 'transitionProperty' in style) transitionEnd = 'transitionend';\n if (!animationEnd && 'animationName' in style) animationEnd = 'animationend';\n style = null;\n return {\n animationEnd: animationEnd,\n transitionEnd: transitionEnd,\n prefix: prefix\n };\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.default = getContainer;\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction getContainer(container, defaultContainer) {\n if (container == null) return defaultContainer;\n container = typeof container === 'function' ? container() : container;\n return _reactDom.default.findDOMNode(container) || null;\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _activeElement = _interopRequireDefault(require(\"dom-helpers/activeElement\"));\n\nvar _contains = _interopRequireDefault(require(\"dom-helpers/query/contains\"));\n\nvar _inDOM = _interopRequireDefault(require(\"dom-helpers/util/inDOM\"));\n\nvar _listen = _interopRequireDefault(require(\"dom-helpers/events/listen\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _componentOrElement = _interopRequireDefault(require(\"prop-types-extra/lib/componentOrElement\"));\n\nvar _elementType = _interopRequireDefault(require(\"prop-types-extra/lib/elementType\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _ModalManager = _interopRequireDefault(require(\"./ModalManager\"));\n\nvar _Portal = _interopRequireDefault(require(\"./Portal\"));\n\nvar _getContainer = _interopRequireDefault(require(\"./utils/getContainer\"));\n\nvar _ownerDocument = _interopRequireDefault(require(\"./utils/ownerDocument\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nvar modalManager = new _ModalManager.default();\n\nfunction omitProps(props, propTypes) {\n var keys = Object.keys(props);\n var newProps = {};\n keys.map(function (prop) {\n if (!Object.prototype.hasOwnProperty.call(propTypes, prop)) {\n newProps[prop] = props[prop];\n }\n });\n return newProps;\n}\n/**\n * Love them or hate them, `<Modal />` provides a solid foundation for creating dialogs, lightboxes, or whatever else.\n * The Modal component renders its `children` node in front of a backdrop component.\n *\n * The Modal offers a few helpful features over using just a `<Portal/>` component and some styles:\n *\n * - Manages dialog stacking when one-at-a-time just isn't enough.\n * - Creates a backdrop, for disabling interaction below the modal.\n * - It properly manages focus; moving to the modal content, and keeping it there until the modal is closed.\n * - It disables scrolling of the page content while open.\n * - Adds the appropriate ARIA roles are automatically.\n * - Easily pluggable animations via a `<Transition/>` component.\n *\n * Note that, in the same way the backdrop element prevents users from clicking or interacting\n * with the page content underneath the Modal, Screen readers also need to be signaled to not to\n * interact with page content while the Modal is open. To do this, we use a common technique of applying\n * the `aria-hidden='true'` attribute to the non-Modal elements in the Modal `container`. This means that for\n * a Modal to be truly modal, it should have a `container` that is _outside_ your app's\n * React hierarchy (such as the default: document.body).\n */\n\n\nvar Modal =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Modal, _React$Component);\n\n function Modal() {\n var _this;\n\n for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n _args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(_args)) || this;\n _this.state = {\n exited: !_this.props.show\n };\n\n _this.onPortalRendered = function () {\n if (_this.props.onShow) {\n _this.props.onShow();\n } // autofocus after onShow, to not trigger a focus event for previous\n // modals before this one is shown.\n\n\n _this.autoFocus();\n };\n\n _this.onShow = function () {\n var doc = (0, _ownerDocument.default)(_assertThisInitialized(_assertThisInitialized(_this)));\n var container = (0, _getContainer.default)(_this.props.container, doc.body);\n\n _this.props.manager.add(_assertThisInitialized(_assertThisInitialized(_this)), container, _this.props.containerClassName);\n\n _this.removeKeydownListener = (0, _listen.default)(doc, 'keydown', _this.handleDocumentKeyDown);\n _this.removeFocusListener = (0, _listen.default)(doc, 'focus', // the timeout is necessary b/c this will run before the new modal is mounted\n // and so steals focus from it\n function () {\n return setTimeout(_this.enforceFocus);\n }, true);\n };\n\n _this.onHide = function () {\n _this.props.manager.remove(_assertThisInitialized(_assertThisInitialized(_this)));\n\n _this.removeKeydownListener();\n\n _this.removeFocusListener();\n\n if (_this.props.restoreFocus) {\n _this.restoreLastFocus();\n }\n };\n\n _this.setDialogRef = function (ref) {\n _this.dialog = ref;\n };\n\n _this.setBackdropRef = function (ref) {\n _this.backdrop = ref && _reactDom.default.findDOMNode(ref);\n };\n\n _this.handleHidden = function () {\n _this.setState({\n exited: true\n });\n\n _this.onHide();\n\n if (_this.props.onExited) {\n var _this$props;\n\n (_this$props = _this.props).onExited.apply(_this$props, arguments);\n }\n };\n\n _this.handleBackdropClick = function (e) {\n if (e.target !== e.currentTarget) {\n return;\n }\n\n if (_this.props.onBackdropClick) {\n _this.props.onBackdropClick(e);\n }\n\n if (_this.props.backdrop === true) {\n _this.props.onHide();\n }\n };\n\n _this.handleDocumentKeyDown = function (e) {\n if (_this.props.keyboard && e.keyCode === 27 && _this.isTopModal()) {\n if (_this.props.onEscapeKeyDown) {\n _this.props.onEscapeKeyDown(e);\n }\n\n _this.props.onHide();\n }\n };\n\n _this.enforceFocus = function () {\n if (!_this.props.enforceFocus || !_this._isMounted || !_this.isTopModal()) {\n return;\n }\n\n var currentActiveElement = (0, _activeElement.default)((0, _ownerDocument.default)(_assertThisInitialized(_assertThisInitialized(_this))));\n\n if (_this.dialog && !(0, _contains.default)(_this.dialog, currentActiveElement)) {\n _this.dialog.focus();\n }\n };\n\n _this.renderBackdrop = function () {\n var _this$props2 = _this.props,\n renderBackdrop = _this$props2.renderBackdrop,\n Transition = _this$props2.backdropTransition;\n var backdrop = renderBackdrop({\n ref: _this.setBackdropRef,\n onClick: _this.handleBackdropClick\n });\n\n if (Transition) {\n backdrop = _react.default.createElement(Transition, {\n appear: true,\n in: _this.props.show\n }, backdrop);\n }\n\n return backdrop;\n };\n\n return _this;\n }\n\n Modal.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps) {\n if (nextProps.show) {\n return {\n exited: false\n };\n } else if (!nextProps.transition) {\n // Otherwise let handleHidden take care of marking exited.\n return {\n exited: true\n };\n }\n\n return null;\n };\n\n var _proto = Modal.prototype;\n\n _proto.getSnapshotBeforeUpdate = function getSnapshotBeforeUpdate(prevProps) {\n if (_inDOM.default && !prevProps.show && this.props.show) {\n this.lastFocus = (0, _activeElement.default)();\n }\n\n return null;\n };\n\n _proto.componentDidMount = function componentDidMount() {\n this._isMounted = true;\n\n if (this.props.show) {\n this.onShow();\n }\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var transition = this.props.transition;\n\n if (prevProps.show && !this.props.show && !transition) {\n // Otherwise handleHidden will call this.\n this.onHide();\n } else if (!prevProps.show && this.props.show) {\n this.onShow();\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n var _this$props3 = this.props,\n show = _this$props3.show,\n transition = _this$props3.transition;\n this._isMounted = false;\n\n if (show || transition && !this.state.exited) {\n this.onHide();\n }\n };\n\n _proto.autoFocus = function autoFocus() {\n if (!this.props.autoFocus) return;\n var currentActiveElement = (0, _activeElement.default)((0, _ownerDocument.default)(this));\n\n if (this.dialog && !(0, _contains.default)(this.dialog, currentActiveElement)) {\n this.lastFocus = currentActiveElement;\n this.dialog.focus();\n }\n };\n\n _proto.restoreLastFocus = function restoreLastFocus() {\n // Support: <=IE11 doesn't support `focus()` on svg elements (RB: #917)\n if (this.lastFocus && this.lastFocus.focus) {\n this.lastFocus.focus();\n this.lastFocus = null;\n }\n };\n\n _proto.isTopModal = function isTopModal() {\n return this.props.manager.isTopModal(this);\n };\n\n _proto.render = function render() {\n var _this$props4 = this.props,\n show = _this$props4.show,\n container = _this$props4.container,\n children = _this$props4.children,\n renderDialog = _this$props4.renderDialog,\n _this$props4$role = _this$props4.role,\n role = _this$props4$role === void 0 ? 'dialog' : _this$props4$role,\n Transition = _this$props4.transition,\n backdrop = _this$props4.backdrop,\n className = _this$props4.className,\n style = _this$props4.style,\n onExit = _this$props4.onExit,\n onExiting = _this$props4.onExiting,\n onEnter = _this$props4.onEnter,\n onEntering = _this$props4.onEntering,\n onEntered = _this$props4.onEntered,\n props = _objectWithoutPropertiesLoose(_this$props4, [\"show\", \"container\", \"children\", \"renderDialog\", \"role\", \"transition\", \"backdrop\", \"className\", \"style\", \"onExit\", \"onExiting\", \"onEnter\", \"onEntering\", \"onEntered\"]);\n\n if (!(show || Transition && !this.state.exited)) {\n return null;\n }\n\n var dialogProps = _extends({\n role: role,\n ref: this.setDialogRef,\n // apparently only works on the dialog role element\n 'aria-modal': role === 'dialog' ? true : undefined\n }, omitProps(props, Modal.propTypes), {\n style: style,\n className: className,\n tabIndex: '-1'\n });\n\n var dialog = renderDialog ? renderDialog(dialogProps) : _react.default.createElement(\"div\", dialogProps, _react.default.cloneElement(children, {\n role: 'document'\n }));\n\n if (Transition) {\n dialog = _react.default.createElement(Transition, {\n appear: true,\n unmountOnExit: true,\n in: show,\n onExit: onExit,\n onExiting: onExiting,\n onExited: this.handleHidden,\n onEnter: onEnter,\n onEntering: onEntering,\n onEntered: onEntered\n }, dialog);\n }\n\n return _react.default.createElement(_Portal.default, {\n container: container,\n onRendered: this.onPortalRendered\n }, _react.default.createElement(_react.default.Fragment, null, backdrop && this.renderBackdrop(), dialog));\n };\n\n return Modal;\n}(_react.default.Component);\n\nModal.propTypes = {\n /**\n * Set the visibility of the Modal\n */\n show: _propTypes.default.bool,\n\n /**\n * A Node, Component instance, or function that returns either. The Modal is appended to it's container element.\n *\n * For the sake of assistive technologies, the container should usually be the document body, so that the rest of the\n * page content can be placed behind a virtual backdrop as well as a visual one.\n */\n container: _propTypes.default.oneOfType([_componentOrElement.default, _propTypes.default.func]),\n\n /**\n * A callback fired when the Modal is opening.\n */\n onShow: _propTypes.default.func,\n\n /**\n * A callback fired when either the backdrop is clicked, or the escape key is pressed.\n *\n * The `onHide` callback only signals intent from the Modal,\n * you must actually set the `show` prop to `false` for the Modal to close.\n */\n onHide: _propTypes.default.func,\n\n /**\n * Include a backdrop component.\n */\n backdrop: _propTypes.default.oneOfType([_propTypes.default.bool, _propTypes.default.oneOf(['static'])]),\n\n /**\n * A function that returns the dialog component. Useful for custom\n * rendering. **Note:** the component should make sure to apply the provided ref.\n *\n * ```js\n * renderDialog={props => <MyDialog {...props} />}\n * ```\n */\n renderDialog: _propTypes.default.func,\n\n /**\n * A function that returns a backdrop component. Useful for custom\n * backdrop rendering.\n *\n * ```js\n * renderBackdrop={props => <MyBackdrop {...props} />}\n * ```\n */\n renderBackdrop: _propTypes.default.func,\n\n /**\n * A callback fired when the escape key, if specified in `keyboard`, is pressed.\n */\n onEscapeKeyDown: _propTypes.default.func,\n\n /**\n * A callback fired when the backdrop, if specified, is clicked.\n */\n onBackdropClick: _propTypes.default.func,\n\n /**\n * A css class or set of classes applied to the modal container when the modal is open,\n * and removed when it is closed.\n */\n containerClassName: _propTypes.default.string,\n\n /**\n * Close the modal when escape key is pressed\n */\n keyboard: _propTypes.default.bool,\n\n /**\n * A `react-transition-group@2.0.0` `<Transition/>` component used\n * to control animations for the dialog component.\n */\n transition: _elementType.default,\n\n /**\n * A `react-transition-group@2.0.0` `<Transition/>` component used\n * to control animations for the backdrop components.\n */\n backdropTransition: _elementType.default,\n\n /**\n * When `true` The modal will automatically shift focus to itself when it opens, and\n * replace it to the last focused element when it closes. This also\n * works correctly with any Modal children that have the `autoFocus` prop.\n *\n * Generally this should never be set to `false` as it makes the Modal less\n * accessible to assistive technologies, like screen readers.\n */\n autoFocus: _propTypes.default.bool,\n\n /**\n * When `true` The modal will prevent focus from leaving the Modal while open.\n *\n * Generally this should never be set to `false` as it makes the Modal less\n * accessible to assistive technologies, like screen readers.\n */\n enforceFocus: _propTypes.default.bool,\n\n /**\n * When `true` The modal will restore focus to previously focused element once\n * modal is hidden\n */\n restoreFocus: _propTypes.default.bool,\n\n /**\n * Callback fired before the Modal transitions in\n */\n onEnter: _propTypes.default.func,\n\n /**\n * Callback fired as the Modal begins to transition in\n */\n onEntering: _propTypes.default.func,\n\n /**\n * Callback fired after the Modal finishes transitioning in\n */\n onEntered: _propTypes.default.func,\n\n /**\n * Callback fired right before the Modal transitions out\n */\n onExit: _propTypes.default.func,\n\n /**\n * Callback fired as the Modal begins to transition out\n */\n onExiting: _propTypes.default.func,\n\n /**\n * Callback fired after the Modal finishes transitioning out\n */\n onExited: _propTypes.default.func,\n\n /**\n * A ModalManager instance used to track and manage the state of open\n * Modals. Useful when customizing how modals interact within a container\n */\n manager: _propTypes.default.object.isRequired\n};\nModal.defaultProps = {\n show: false,\n role: 'dialog',\n backdrop: true,\n keyboard: true,\n autoFocus: true,\n enforceFocus: true,\n restoreFocus: true,\n onHide: function onHide() {},\n manager: modalManager,\n renderBackdrop: function renderBackdrop(props) {\n return _react.default.createElement(\"div\", props);\n }\n};\nModal.Manager = _ModalManager.default;\nvar _default = Modal;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _properties = _interopRequireDefault(require(\"./properties\"));\n\nvar _style = _interopRequireDefault(require(\"../style\"));\n\nfunction onEnd(node, handler, duration) {\n var fakeEvent = {\n target: node,\n currentTarget: node\n },\n backup;\n if (!_properties.default.end) duration = 0;else if (duration == null) duration = parseDuration(node) || 0;\n\n if (_properties.default.end) {\n node.addEventListener(_properties.default.end, done, false);\n backup = setTimeout(function () {\n return done(fakeEvent);\n }, (duration || 100) * 1.5);\n } else setTimeout(done.bind(null, fakeEvent), 0);\n\n function done(event) {\n if (event.target !== event.currentTarget) return;\n clearTimeout(backup);\n event.target.removeEventListener(_properties.default.end, done);\n handler.call(this);\n }\n}\n\nonEnd._parseDuration = parseDuration;\nvar _default = onEnd;\nexports.default = _default;\n\nfunction parseDuration(node) {\n var str = (0, _style.default)(node, _properties.default.duration),\n mult = str.indexOf('ms') === -1 ? 1000 : 1;\n return parseFloat(str) * mult;\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = mapContextToProps;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _forwardRef = _interopRequireDefault(require(\"./forwardRef\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nvar getDisplayName = function getDisplayName(Component) {\n var name = typeof Component === 'string' ? Component : Component.name || Component.displayName;\n return name ? \"ContextTransform(\" + name + \")\" : 'ContextTransform';\n};\n\nvar ensureConsumer = function ensureConsumer(c) {\n return c.Consumer || c;\n};\n\nfunction $mapContextToProps(_ref, Component) {\n var maybeArrayOfConsumers = _ref.consumers,\n mapToProps = _ref.mapToProps,\n displayName = _ref.displayName,\n _ref$forwardRefAs = _ref.forwardRefAs,\n forwardRefAs = _ref$forwardRefAs === void 0 ? 'ref' : _ref$forwardRefAs;\n var consumers = maybeArrayOfConsumers;\n\n if (!Array.isArray(maybeArrayOfConsumers)) {\n consumers = [maybeArrayOfConsumers];\n }\n\n var SingleConsumer = ensureConsumer(consumers[0]);\n\n function singleRender(props, ref) {\n var _extends2;\n\n var propsWithRef = _extends((_extends2 = {}, _extends2[forwardRefAs] = ref, _extends2), props);\n\n return _react.default.createElement(SingleConsumer, null, function (value) {\n return _react.default.createElement(Component, _extends({}, propsWithRef, mapToProps(value, props)));\n });\n }\n\n function multiRender(props, ref) {\n var _extends3;\n\n var propsWithRef = _extends((_extends3 = {}, _extends3[forwardRefAs] = ref, _extends3), props);\n\n return consumers.reduceRight(function (inner, Context) {\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var Consumer = ensureConsumer(Context);\n return _react.default.createElement(Consumer, null, function (value) {\n return inner.apply(void 0, args.concat([value]));\n });\n };\n }, function () {\n for (var _len2 = arguments.length, contexts = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n contexts[_key2] = arguments[_key2];\n }\n\n return _react.default.createElement(Component, _extends({}, propsWithRef, mapToProps.apply(void 0, contexts.concat([props]))));\n })();\n }\n\n var contextTransform = consumers.length === 1 ? singleRender : multiRender;\n return (0, _forwardRef.default)(contextTransform, {\n displayName: displayName || getDisplayName(Component)\n });\n}\n\nfunction mapContextToProps(maybeOpts, mapToProps, Component) {\n if (arguments.length === 2) return $mapContextToProps(maybeOpts, mapToProps);\n return $mapContextToProps({\n consumers: maybeOpts,\n mapToProps: mapToProps\n }, Component);\n}","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = options && options.delimiter || '/'\n var res\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n continue\n }\n\n var next = str[index]\n var prefix = res[2]\n var name = res[3]\n var capture = res[4]\n var group = res[5]\n var modifier = res[6]\n var asterisk = res[7]\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n }\n\n var partial = prefix != null && next != null && next !== prefix\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var delimiter = res[2] || defaultDelimiter\n var pattern = capture || group\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n })\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index)\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path)\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options))\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$')\n }\n }\n\n return function (obj, opts) {\n var path = ''\n var data = obj || {}\n var options = opts || {}\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n\n continue\n }\n\n var value = data[token.name]\n var segment\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j])\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n })\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n var strict = options.strict\n var end = options.end !== false\n var route = ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var prefix = escapeString(token.prefix)\n var capture = '(?:' + token.pattern + ')'\n\n keys.push(token)\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*'\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?'\n } else {\n capture = prefix + '(' + capture + ')?'\n }\n } else {\n capture = prefix + '(' + capture + ')'\n }\n\n route += capture\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/')\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n }\n\n if (end) {\n route += '$'\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n","/** @license React v16.8.6\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var k=require(\"object-assign\"),n=\"function\"===typeof Symbol&&Symbol.for,p=n?Symbol.for(\"react.element\"):60103,q=n?Symbol.for(\"react.portal\"):60106,r=n?Symbol.for(\"react.fragment\"):60107,t=n?Symbol.for(\"react.strict_mode\"):60108,u=n?Symbol.for(\"react.profiler\"):60114,v=n?Symbol.for(\"react.provider\"):60109,w=n?Symbol.for(\"react.context\"):60110,x=n?Symbol.for(\"react.concurrent_mode\"):60111,y=n?Symbol.for(\"react.forward_ref\"):60112,z=n?Symbol.for(\"react.suspense\"):60113,aa=n?Symbol.for(\"react.memo\"):\n60115,ba=n?Symbol.for(\"react.lazy\"):60116,A=\"function\"===typeof Symbol&&Symbol.iterator;function ca(a,b,d,c,e,g,h,f){if(!a){a=void 0;if(void 0===b)a=Error(\"Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.\");else{var l=[d,c,e,g,h,f],m=0;a=Error(b.replace(/%s/g,function(){return l[m++]}));a.name=\"Invariant Violation\"}a.framesToPop=1;throw a;}}\nfunction B(a){for(var b=arguments.length-1,d=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=0;c<b;c++)d+=\"&args[]=\"+encodeURIComponent(arguments[c+1]);ca(!1,\"Minified React error #\"+a+\"; visit %s for the full message or use the non-minified dev environment for full errors and additional helpful warnings. \",d)}var C={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},D={};\nfunction E(a,b,d){this.props=a;this.context=b;this.refs=D;this.updater=d||C}E.prototype.isReactComponent={};E.prototype.setState=function(a,b){\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a?B(\"85\"):void 0;this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,d){this.props=a;this.context=b;this.refs=D;this.updater=d||C}var H=G.prototype=new F;\nH.constructor=G;k(H,E.prototype);H.isPureReactComponent=!0;var I={current:null},J={current:null},K=Object.prototype.hasOwnProperty,L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,d){var c=void 0,e={},g=null,h=null;if(null!=b)for(c in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(g=\"\"+b.key),b)K.call(b,c)&&!L.hasOwnProperty(c)&&(e[c]=b[c]);var f=arguments.length-2;if(1===f)e.children=d;else if(1<f){for(var l=Array(f),m=0;m<f;m++)l[m]=arguments[m+2];e.children=l}if(a&&a.defaultProps)for(c in f=a.defaultProps,f)void 0===e[c]&&(e[c]=f[c]);return{$$typeof:p,type:a,key:g,ref:h,props:e,_owner:J.current}}\nfunction da(a,b){return{$$typeof:p,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function N(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===p}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+(\"\"+a).replace(/[=:]/g,function(a){return b[a]})}var O=/\\/+/g,P=[];function Q(a,b,d,c){if(P.length){var e=P.pop();e.result=a;e.keyPrefix=b;e.func=d;e.context=c;e.count=0;return e}return{result:a,keyPrefix:b,func:d,context:c,count:0}}\nfunction R(a){a.result=null;a.keyPrefix=null;a.func=null;a.context=null;a.count=0;10>P.length&&P.push(a)}\nfunction S(a,b,d,c){var e=typeof a;if(\"undefined\"===e||\"boolean\"===e)a=null;var g=!1;if(null===a)g=!0;else switch(e){case \"string\":case \"number\":g=!0;break;case \"object\":switch(a.$$typeof){case p:case q:g=!0}}if(g)return d(c,a,\"\"===b?\".\"+T(a,0):b),1;g=0;b=\"\"===b?\".\":b+\":\";if(Array.isArray(a))for(var h=0;h<a.length;h++){e=a[h];var f=b+T(e,h);g+=S(e,f,d,c)}else if(null===a||\"object\"!==typeof a?f=null:(f=A&&a[A]||a[\"@@iterator\"],f=\"function\"===typeof f?f:null),\"function\"===typeof f)for(a=f.call(a),h=\n0;!(e=a.next()).done;)e=e.value,f=b+T(e,h++),g+=S(e,f,d,c);else\"object\"===e&&(d=\"\"+a,B(\"31\",\"[object Object]\"===d?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":d,\"\"));return g}function U(a,b,d){return null==a?0:S(a,\"\",b,d)}function T(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(a.key):b.toString(36)}function ea(a,b){a.func.call(a.context,b,a.count++)}\nfunction fa(a,b,d){var c=a.result,e=a.keyPrefix;a=a.func.call(a.context,b,a.count++);Array.isArray(a)?V(a,c,d,function(a){return a}):null!=a&&(N(a)&&(a=da(a,e+(!a.key||b&&b.key===a.key?\"\":(\"\"+a.key).replace(O,\"$&/\")+\"/\")+d)),c.push(a))}function V(a,b,d,c,e){var g=\"\";null!=d&&(g=(\"\"+d).replace(O,\"$&/\")+\"/\");b=Q(b,g,c,e);U(a,fa,b);R(b)}function W(){var a=I.current;null===a?B(\"321\"):void 0;return a}\nvar X={Children:{map:function(a,b,d){if(null==a)return a;var c=[];V(a,c,null,b,d);return c},forEach:function(a,b,d){if(null==a)return a;b=Q(null,null,b,d);U(a,ea,b);R(b)},count:function(a){return U(a,function(){return null},null)},toArray:function(a){var b=[];V(a,b,null,function(a){return a});return b},only:function(a){N(a)?void 0:B(\"143\");return a}},createRef:function(){return{current:null}},Component:E,PureComponent:G,createContext:function(a,b){void 0===b&&(b=null);a={$$typeof:w,_calculateChangedBits:b,\n_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null};a.Provider={$$typeof:v,_context:a};return a.Consumer=a},forwardRef:function(a){return{$$typeof:y,render:a}},lazy:function(a){return{$$typeof:ba,_ctor:a,_status:-1,_result:null}},memo:function(a,b){return{$$typeof:aa,type:a,compare:void 0===b?null:b}},useCallback:function(a,b){return W().useCallback(a,b)},useContext:function(a,b){return W().useContext(a,b)},useEffect:function(a,b){return W().useEffect(a,b)},useImperativeHandle:function(a,\nb,d){return W().useImperativeHandle(a,b,d)},useDebugValue:function(){},useLayoutEffect:function(a,b){return W().useLayoutEffect(a,b)},useMemo:function(a,b){return W().useMemo(a,b)},useReducer:function(a,b,d){return W().useReducer(a,b,d)},useRef:function(a){return W().useRef(a)},useState:function(a){return W().useState(a)},Fragment:r,StrictMode:t,Suspense:z,createElement:M,cloneElement:function(a,b,d){null===a||void 0===a?B(\"267\",a):void 0;var c=void 0,e=k({},a.props),g=a.key,h=a.ref,f=a._owner;if(null!=\nb){void 0!==b.ref&&(h=b.ref,f=J.current);void 0!==b.key&&(g=\"\"+b.key);var l=void 0;a.type&&a.type.defaultProps&&(l=a.type.defaultProps);for(c in b)K.call(b,c)&&!L.hasOwnProperty(c)&&(e[c]=void 0===b[c]&&void 0!==l?l[c]:b[c])}c=arguments.length-2;if(1===c)e.children=d;else if(1<c){l=Array(c);for(var m=0;m<c;m++)l[m]=arguments[m+2];e.children=l}return{$$typeof:p,type:a.type,key:g,ref:h,props:e,_owner:f}},createFactory:function(a){var b=M.bind(null,a);b.type=a;return b},isValidElement:N,version:\"16.8.6\",\nunstable_ConcurrentMode:x,unstable_Profiler:u,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:{ReactCurrentDispatcher:I,ReactCurrentOwner:J,assign:k}},Y={default:X},Z=Y&&X||Y;module.exports=Z.default||Z;\n","/** @license React v16.8.6\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),n=require(\"object-assign\"),r=require(\"scheduler\");function ba(a,b,c,d,e,f,g,h){if(!a){a=void 0;if(void 0===b)a=Error(\"Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.\");else{var l=[c,d,e,f,g,h],k=0;a=Error(b.replace(/%s/g,function(){return l[k++]}));a.name=\"Invariant Violation\"}a.framesToPop=1;throw a;}}\nfunction x(a){for(var b=arguments.length-1,c=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,d=0;d<b;d++)c+=\"&args[]=\"+encodeURIComponent(arguments[d+1]);ba(!1,\"Minified React error #\"+a+\"; visit %s for the full message or use the non-minified dev environment for full errors and additional helpful warnings. \",c)}aa?void 0:x(\"227\");function ca(a,b,c,d,e,f,g,h,l){var k=Array.prototype.slice.call(arguments,3);try{b.apply(c,k)}catch(m){this.onError(m)}}\nvar da=!1,ea=null,fa=!1,ha=null,ia={onError:function(a){da=!0;ea=a}};function ja(a,b,c,d,e,f,g,h,l){da=!1;ea=null;ca.apply(ia,arguments)}function ka(a,b,c,d,e,f,g,h,l){ja.apply(this,arguments);if(da){if(da){var k=ea;da=!1;ea=null}else x(\"198\"),k=void 0;fa||(fa=!0,ha=k)}}var la=null,ma={};\nfunction na(){if(la)for(var a in ma){var b=ma[a],c=la.indexOf(a);-1<c?void 0:x(\"96\",a);if(!oa[c]){b.extractEvents?void 0:x(\"97\",a);oa[c]=b;c=b.eventTypes;for(var d in c){var e=void 0;var f=c[d],g=b,h=d;pa.hasOwnProperty(h)?x(\"99\",h):void 0;pa[h]=f;var l=f.phasedRegistrationNames;if(l){for(e in l)l.hasOwnProperty(e)&&qa(l[e],g,h);e=!0}else f.registrationName?(qa(f.registrationName,g,h),e=!0):e=!1;e?void 0:x(\"98\",d,a)}}}}\nfunction qa(a,b,c){ra[a]?x(\"100\",a):void 0;ra[a]=b;sa[a]=b.eventTypes[c].dependencies}var oa=[],pa={},ra={},sa={},ta=null,ua=null,va=null;function wa(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=va(c);ka(d,b,void 0,a);a.currentTarget=null}function xa(a,b){null==b?x(\"30\"):void 0;if(null==a)return b;if(Array.isArray(a)){if(Array.isArray(b))return a.push.apply(a,b),a;a.push(b);return a}return Array.isArray(b)?[a].concat(b):[a,b]}\nfunction ya(a,b,c){Array.isArray(a)?a.forEach(b,c):a&&b.call(c,a)}var za=null;function Aa(a){if(a){var b=a._dispatchListeners,c=a._dispatchInstances;if(Array.isArray(b))for(var d=0;d<b.length&&!a.isPropagationStopped();d++)wa(a,b[d],c[d]);else b&&wa(a,b,c);a._dispatchListeners=null;a._dispatchInstances=null;a.isPersistent()||a.constructor.release(a)}}\nvar Ba={injectEventPluginOrder:function(a){la?x(\"101\"):void 0;la=Array.prototype.slice.call(a);na()},injectEventPluginsByName:function(a){var b=!1,c;for(c in a)if(a.hasOwnProperty(c)){var d=a[c];ma.hasOwnProperty(c)&&ma[c]===d||(ma[c]?x(\"102\",c):void 0,ma[c]=d,b=!0)}b&&na()}};\nfunction Ca(a,b){var c=a.stateNode;if(!c)return null;var d=ta(c);if(!d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;c&&\"function\"!==typeof c?x(\"231\",b,typeof c):void 0;\nreturn c}function Da(a){null!==a&&(za=xa(za,a));a=za;za=null;if(a&&(ya(a,Aa),za?x(\"95\"):void 0,fa))throw a=ha,fa=!1,ha=null,a;}var Ea=Math.random().toString(36).slice(2),Fa=\"__reactInternalInstance$\"+Ea,Ga=\"__reactEventHandlers$\"+Ea;function Ha(a){if(a[Fa])return a[Fa];for(;!a[Fa];)if(a.parentNode)a=a.parentNode;else return null;a=a[Fa];return 5===a.tag||6===a.tag?a:null}function Ia(a){a=a[Fa];return!a||5!==a.tag&&6!==a.tag?null:a}\nfunction Ja(a){if(5===a.tag||6===a.tag)return a.stateNode;x(\"33\")}function Ka(a){return a[Ga]||null}function La(a){do a=a.return;while(a&&5!==a.tag);return a?a:null}function Ma(a,b,c){if(b=Ca(a,c.dispatchConfig.phasedRegistrationNames[b]))c._dispatchListeners=xa(c._dispatchListeners,b),c._dispatchInstances=xa(c._dispatchInstances,a)}\nfunction Na(a){if(a&&a.dispatchConfig.phasedRegistrationNames){for(var b=a._targetInst,c=[];b;)c.push(b),b=La(b);for(b=c.length;0<b--;)Ma(c[b],\"captured\",a);for(b=0;b<c.length;b++)Ma(c[b],\"bubbled\",a)}}function Oa(a,b,c){a&&c&&c.dispatchConfig.registrationName&&(b=Ca(a,c.dispatchConfig.registrationName))&&(c._dispatchListeners=xa(c._dispatchListeners,b),c._dispatchInstances=xa(c._dispatchInstances,a))}function Pa(a){a&&a.dispatchConfig.registrationName&&Oa(a._targetInst,null,a)}\nfunction Qa(a){ya(a,Na)}var Ra=!(\"undefined\"===typeof window||!window.document||!window.document.createElement);function Sa(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var Ta={animationend:Sa(\"Animation\",\"AnimationEnd\"),animationiteration:Sa(\"Animation\",\"AnimationIteration\"),animationstart:Sa(\"Animation\",\"AnimationStart\"),transitionend:Sa(\"Transition\",\"TransitionEnd\")},Ua={},Va={};\nRa&&(Va=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete Ta.animationend.animation,delete Ta.animationiteration.animation,delete Ta.animationstart.animation),\"TransitionEvent\"in window||delete Ta.transitionend.transition);function Wa(a){if(Ua[a])return Ua[a];if(!Ta[a])return a;var b=Ta[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Va)return Ua[a]=b[c];return a}\nvar Xa=Wa(\"animationend\"),Ya=Wa(\"animationiteration\"),Za=Wa(\"animationstart\"),$a=Wa(\"transitionend\"),ab=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),bb=null,cb=null,db=null;\nfunction eb(){if(db)return db;var a,b=cb,c=b.length,d,e=\"value\"in bb?bb.value:bb.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return db=e.slice(a,1<d?1-d:void 0)}function fb(){return!0}function gb(){return!1}\nfunction y(a,b,c,d){this.dispatchConfig=a;this._targetInst=b;this.nativeEvent=c;a=this.constructor.Interface;for(var e in a)a.hasOwnProperty(e)&&((b=a[e])?this[e]=b(c):\"target\"===e?this.target=d:this[e]=c[e]);this.isDefaultPrevented=(null!=c.defaultPrevented?c.defaultPrevented:!1===c.returnValue)?fb:gb;this.isPropagationStopped=gb;return this}\nn(y.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&(a.returnValue=!1),this.isDefaultPrevented=fb)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=fb)},persist:function(){this.isPersistent=fb},isPersistent:gb,destructor:function(){var a=this.constructor.Interface,\nb;for(b in a)this[b]=null;this.nativeEvent=this._targetInst=this.dispatchConfig=null;this.isPropagationStopped=this.isDefaultPrevented=gb;this._dispatchInstances=this._dispatchListeners=null}});y.Interface={type:null,target:null,currentTarget:function(){return null},eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null};\ny.extend=function(a){function b(){}function c(){return d.apply(this,arguments)}var d=this;b.prototype=d.prototype;var e=new b;n(e,c.prototype);c.prototype=e;c.prototype.constructor=c;c.Interface=n({},d.Interface,a);c.extend=d.extend;hb(c);return c};hb(y);function ib(a,b,c,d){if(this.eventPool.length){var e=this.eventPool.pop();this.call(e,a,b,c,d);return e}return new this(a,b,c,d)}function jb(a){a instanceof this?void 0:x(\"279\");a.destructor();10>this.eventPool.length&&this.eventPool.push(a)}\nfunction hb(a){a.eventPool=[];a.getPooled=ib;a.release=jb}var kb=y.extend({data:null}),lb=y.extend({data:null}),mb=[9,13,27,32],nb=Ra&&\"CompositionEvent\"in window,ob=null;Ra&&\"documentMode\"in document&&(ob=document.documentMode);\nvar pb=Ra&&\"TextEvent\"in window&&!ob,qb=Ra&&(!nb||ob&&8<ob&&11>=ob),rb=String.fromCharCode(32),sb={beforeInput:{phasedRegistrationNames:{bubbled:\"onBeforeInput\",captured:\"onBeforeInputCapture\"},dependencies:[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]},compositionEnd:{phasedRegistrationNames:{bubbled:\"onCompositionEnd\",captured:\"onCompositionEndCapture\"},dependencies:\"blur compositionend keydown keypress keyup mousedown\".split(\" \")},compositionStart:{phasedRegistrationNames:{bubbled:\"onCompositionStart\",\ncaptured:\"onCompositionStartCapture\"},dependencies:\"blur compositionstart keydown keypress keyup mousedown\".split(\" \")},compositionUpdate:{phasedRegistrationNames:{bubbled:\"onCompositionUpdate\",captured:\"onCompositionUpdateCapture\"},dependencies:\"blur compositionupdate keydown keypress keyup mousedown\".split(\" \")}},tb=!1;\nfunction ub(a,b){switch(a){case \"keyup\":return-1!==mb.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"blur\":return!0;default:return!1}}function vb(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var wb=!1;function xb(a,b){switch(a){case \"compositionend\":return vb(b);case \"keypress\":if(32!==b.which)return null;tb=!0;return rb;case \"textInput\":return a=b.data,a===rb&&tb?null:a;default:return null}}\nfunction yb(a,b){if(wb)return\"compositionend\"===a||!nb&&ub(a,b)?(a=eb(),db=cb=bb=null,wb=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1<b.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case \"compositionend\":return qb&&\"ko\"!==b.locale?null:b.data;default:return null}}\nvar zb={eventTypes:sb,extractEvents:function(a,b,c,d){var e=void 0;var f=void 0;if(nb)b:{switch(a){case \"compositionstart\":e=sb.compositionStart;break b;case \"compositionend\":e=sb.compositionEnd;break b;case \"compositionupdate\":e=sb.compositionUpdate;break b}e=void 0}else wb?ub(a,c)&&(e=sb.compositionEnd):\"keydown\"===a&&229===c.keyCode&&(e=sb.compositionStart);e?(qb&&\"ko\"!==c.locale&&(wb||e!==sb.compositionStart?e===sb.compositionEnd&&wb&&(f=eb()):(bb=d,cb=\"value\"in bb?bb.value:bb.textContent,wb=\n!0)),e=kb.getPooled(e,b,c,d),f?e.data=f:(f=vb(c),null!==f&&(e.data=f)),Qa(e),f=e):f=null;(a=pb?xb(a,c):yb(a,c))?(b=lb.getPooled(sb.beforeInput,b,c,d),b.data=a,Qa(b)):b=null;return null===f?b:null===b?f:[f,b]}},Ab=null,Bb=null,Cb=null;function Db(a){if(a=ua(a)){\"function\"!==typeof Ab?x(\"280\"):void 0;var b=ta(a.stateNode);Ab(a.stateNode,a.type,b)}}function Eb(a){Bb?Cb?Cb.push(a):Cb=[a]:Bb=a}function Fb(){if(Bb){var a=Bb,b=Cb;Cb=Bb=null;Db(a);if(b)for(a=0;a<b.length;a++)Db(b[a])}}\nfunction Gb(a,b){return a(b)}function Hb(a,b,c){return a(b,c)}function Ib(){}var Jb=!1;function Kb(a,b){if(Jb)return a(b);Jb=!0;try{return Gb(a,b)}finally{if(Jb=!1,null!==Bb||null!==Cb)Ib(),Fb()}}var Lb={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Mb(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===b?!!Lb[a.type]:\"textarea\"===b?!0:!1}\nfunction Nb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}function Ob(a){if(!Ra)return!1;a=\"on\"+a;var b=a in document;b||(b=document.createElement(\"div\"),b.setAttribute(a,\"return;\"),b=\"function\"===typeof b[a]);return b}function Pb(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Qb(a){var b=Pb(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Rb(a){a._valueTracker||(a._valueTracker=Qb(a))}function Sb(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Pb(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}var Tb=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;Tb.hasOwnProperty(\"ReactCurrentDispatcher\")||(Tb.ReactCurrentDispatcher={current:null});\nvar Ub=/^(.*)[\\\\\\/]/,z=\"function\"===typeof Symbol&&Symbol.for,Vb=z?Symbol.for(\"react.element\"):60103,Wb=z?Symbol.for(\"react.portal\"):60106,Xb=z?Symbol.for(\"react.fragment\"):60107,Yb=z?Symbol.for(\"react.strict_mode\"):60108,Zb=z?Symbol.for(\"react.profiler\"):60114,$b=z?Symbol.for(\"react.provider\"):60109,ac=z?Symbol.for(\"react.context\"):60110,bc=z?Symbol.for(\"react.concurrent_mode\"):60111,cc=z?Symbol.for(\"react.forward_ref\"):60112,dc=z?Symbol.for(\"react.suspense\"):60113,ec=z?Symbol.for(\"react.memo\"):\n60115,fc=z?Symbol.for(\"react.lazy\"):60116,gc=\"function\"===typeof Symbol&&Symbol.iterator;function hc(a){if(null===a||\"object\"!==typeof a)return null;a=gc&&a[gc]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nfunction ic(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case bc:return\"ConcurrentMode\";case Xb:return\"Fragment\";case Wb:return\"Portal\";case Zb:return\"Profiler\";case Yb:return\"StrictMode\";case dc:return\"Suspense\"}if(\"object\"===typeof a)switch(a.$$typeof){case ac:return\"Context.Consumer\";case $b:return\"Context.Provider\";case cc:var b=a.render;b=b.displayName||b.name||\"\";return a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\n\")\":\"ForwardRef\");case ec:return ic(a.type);case fc:if(a=1===a._status?a._result:null)return ic(a)}return null}function jc(a){var b=\"\";do{a:switch(a.tag){case 3:case 4:case 6:case 7:case 10:case 9:var c=\"\";break a;default:var d=a._debugOwner,e=a._debugSource,f=ic(a.type);c=null;d&&(c=ic(d.type));d=f;f=\"\";e?f=\" (at \"+e.fileName.replace(Ub,\"\")+\":\"+e.lineNumber+\")\":c&&(f=\" (created by \"+c+\")\");c=\"\\n in \"+(d||\"Unknown\")+f}b+=c;a=a.return}while(a);return b}\nvar kc=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,lc=Object.prototype.hasOwnProperty,mc={},nc={};\nfunction oc(a){if(lc.call(nc,a))return!0;if(lc.call(mc,a))return!1;if(kc.test(a))return nc[a]=!0;mc[a]=!0;return!1}function pc(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction qc(a,b,c,d){if(null===b||\"undefined\"===typeof b||pc(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function C(a,b,c,d,e){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b}var D={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){D[a]=new C(a,0,!1,a,null)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];D[b]=new C(b,1,!1,a[1],null)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){D[a]=new C(a,2,!1,a.toLowerCase(),null)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){D[a]=new C(a,2,!1,a,null)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){D[a]=new C(a,3,!1,a.toLowerCase(),null)});[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){D[a]=new C(a,3,!0,a,null)});\n[\"capture\",\"download\"].forEach(function(a){D[a]=new C(a,4,!1,a,null)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){D[a]=new C(a,6,!1,a,null)});[\"rowSpan\",\"start\"].forEach(function(a){D[a]=new C(a,5,!1,a.toLowerCase(),null)});var rc=/[\\-:]([a-z])/g;function sc(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(rc,\nsc);D[b]=new C(b,1,!1,a,null)});\"xlink:actuate xlink:arcrole xlink:href xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(rc,sc);D[b]=new C(b,1,!1,a,\"http://www.w3.org/1999/xlink\")});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(rc,sc);D[b]=new C(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\")});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){D[a]=new C(a,1,!1,a.toLowerCase(),null)});\nfunction tc(a,b,c,d){var e=D.hasOwnProperty(b)?D[b]:null;var f=null!==e?0===e.type:d?!1:!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1]?!1:!0;f||(qc(b,c,e,d)&&(c=null),d||null===e?oc(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,\"\"+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:\"\":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?\"\":\"\"+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c))))}\nfunction uc(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}function vc(a,b){var c=b.checked;return n({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}\nfunction wc(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=uc(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function xc(a,b){b=b.checked;null!=b&&tc(a,\"checked\",b,!1)}\nfunction yc(a,b){xc(a,b);var c=uc(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?zc(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&zc(a,b.type,uc(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction Ac(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!a.defaultChecked;a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction zc(a,b,c){if(\"number\"!==b||a.ownerDocument.activeElement!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var Bc={change:{phasedRegistrationNames:{bubbled:\"onChange\",captured:\"onChangeCapture\"},dependencies:\"blur change click focus input keydown keyup selectionchange\".split(\" \")}};function Cc(a,b,c){a=y.getPooled(Bc.change,a,b,c);a.type=\"change\";Eb(c);Qa(a);return a}var Dc=null,Ec=null;function Fc(a){Da(a)}\nfunction Gc(a){var b=Ja(a);if(Sb(b))return a}function Hc(a,b){if(\"change\"===a)return b}var Ic=!1;Ra&&(Ic=Ob(\"input\")&&(!document.documentMode||9<document.documentMode));function Jc(){Dc&&(Dc.detachEvent(\"onpropertychange\",Kc),Ec=Dc=null)}function Kc(a){\"value\"===a.propertyName&&Gc(Ec)&&(a=Cc(Ec,a,Nb(a)),Kb(Fc,a))}function Lc(a,b,c){\"focus\"===a?(Jc(),Dc=b,Ec=c,Dc.attachEvent(\"onpropertychange\",Kc)):\"blur\"===a&&Jc()}function Mc(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return Gc(Ec)}\nfunction Nc(a,b){if(\"click\"===a)return Gc(b)}function Oc(a,b){if(\"input\"===a||\"change\"===a)return Gc(b)}\nvar Pc={eventTypes:Bc,_isInputEventSupported:Ic,extractEvents:function(a,b,c,d){var e=b?Ja(b):window,f=void 0,g=void 0,h=e.nodeName&&e.nodeName.toLowerCase();\"select\"===h||\"input\"===h&&\"file\"===e.type?f=Hc:Mb(e)?Ic?f=Oc:(f=Mc,g=Lc):(h=e.nodeName)&&\"input\"===h.toLowerCase()&&(\"checkbox\"===e.type||\"radio\"===e.type)&&(f=Nc);if(f&&(f=f(a,b)))return Cc(f,c,d);g&&g(a,e,b);\"blur\"===a&&(a=e._wrapperState)&&a.controlled&&\"number\"===e.type&&zc(e,\"number\",e.value)}},Qc=y.extend({view:null,detail:null}),Rc={Alt:\"altKey\",\nControl:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Sc(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Rc[a])?!!b[a]:!1}function Tc(){return Sc}\nvar Uc=0,Vc=0,Wc=!1,Xc=!1,Yc=Qc.extend({screenX:null,screenY:null,clientX:null,clientY:null,pageX:null,pageY:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,getModifierState:Tc,button:null,buttons:null,relatedTarget:function(a){return a.relatedTarget||(a.fromElement===a.srcElement?a.toElement:a.fromElement)},movementX:function(a){if(\"movementX\"in a)return a.movementX;var b=Uc;Uc=a.screenX;return Wc?\"mousemove\"===a.type?a.screenX-b:0:(Wc=!0,0)},movementY:function(a){if(\"movementY\"in a)return a.movementY;\nvar b=Vc;Vc=a.screenY;return Xc?\"mousemove\"===a.type?a.screenY-b:0:(Xc=!0,0)}}),Zc=Yc.extend({pointerId:null,width:null,height:null,pressure:null,tangentialPressure:null,tiltX:null,tiltY:null,twist:null,pointerType:null,isPrimary:null}),$c={mouseEnter:{registrationName:\"onMouseEnter\",dependencies:[\"mouseout\",\"mouseover\"]},mouseLeave:{registrationName:\"onMouseLeave\",dependencies:[\"mouseout\",\"mouseover\"]},pointerEnter:{registrationName:\"onPointerEnter\",dependencies:[\"pointerout\",\"pointerover\"]},pointerLeave:{registrationName:\"onPointerLeave\",\ndependencies:[\"pointerout\",\"pointerover\"]}},ad={eventTypes:$c,extractEvents:function(a,b,c,d){var e=\"mouseover\"===a||\"pointerover\"===a,f=\"mouseout\"===a||\"pointerout\"===a;if(e&&(c.relatedTarget||c.fromElement)||!f&&!e)return null;e=d.window===d?d:(e=d.ownerDocument)?e.defaultView||e.parentWindow:window;f?(f=b,b=(b=c.relatedTarget||c.toElement)?Ha(b):null):f=null;if(f===b)return null;var g=void 0,h=void 0,l=void 0,k=void 0;if(\"mouseout\"===a||\"mouseover\"===a)g=Yc,h=$c.mouseLeave,l=$c.mouseEnter,k=\"mouse\";\nelse if(\"pointerout\"===a||\"pointerover\"===a)g=Zc,h=$c.pointerLeave,l=$c.pointerEnter,k=\"pointer\";var m=null==f?e:Ja(f);e=null==b?e:Ja(b);a=g.getPooled(h,f,c,d);a.type=k+\"leave\";a.target=m;a.relatedTarget=e;c=g.getPooled(l,b,c,d);c.type=k+\"enter\";c.target=e;c.relatedTarget=m;d=b;if(f&&d)a:{b=f;e=d;k=0;for(g=b;g;g=La(g))k++;g=0;for(l=e;l;l=La(l))g++;for(;0<k-g;)b=La(b),k--;for(;0<g-k;)e=La(e),g--;for(;k--;){if(b===e||b===e.alternate)break a;b=La(b);e=La(e)}b=null}else b=null;e=b;for(b=[];f&&f!==e;){k=\nf.alternate;if(null!==k&&k===e)break;b.push(f);f=La(f)}for(f=[];d&&d!==e;){k=d.alternate;if(null!==k&&k===e)break;f.push(d);d=La(d)}for(d=0;d<b.length;d++)Oa(b[d],\"bubbled\",a);for(d=f.length;0<d--;)Oa(f[d],\"captured\",c);return[a,c]}};function bd(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var cd=Object.prototype.hasOwnProperty;\nfunction dd(a,b){if(bd(a,b))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++)if(!cd.call(b,c[d])||!bd(a[c[d]],b[c[d]]))return!1;return!0}function ed(a){var b=a;if(a.alternate)for(;b.return;)b=b.return;else{if(0!==(b.effectTag&2))return 1;for(;b.return;)if(b=b.return,0!==(b.effectTag&2))return 1}return 3===b.tag?2:3}function fd(a){2!==ed(a)?x(\"188\"):void 0}\nfunction gd(a){var b=a.alternate;if(!b)return b=ed(a),3===b?x(\"188\"):void 0,1===b?null:a;for(var c=a,d=b;;){var e=c.return,f=e?e.alternate:null;if(!e||!f)break;if(e.child===f.child){for(var g=e.child;g;){if(g===c)return fd(e),a;if(g===d)return fd(e),b;g=g.sibling}x(\"188\")}if(c.return!==d.return)c=e,d=f;else{g=!1;for(var h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===c){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}g?\nvoid 0:x(\"189\")}}c.alternate!==d?x(\"190\"):void 0}3!==c.tag?x(\"188\"):void 0;return c.stateNode.current===c?a:b}function hd(a){a=gd(a);if(!a)return null;for(var b=a;;){if(5===b.tag||6===b.tag)return b;if(b.child)b.child.return=b,b=b.child;else{if(b===a)break;for(;!b.sibling;){if(!b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}}return null}\nvar id=y.extend({animationName:null,elapsedTime:null,pseudoElement:null}),jd=y.extend({clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),kd=Qc.extend({relatedTarget:null});function ld(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}\nvar md={Esc:\"Escape\",Spacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},nd={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",\n116:\"F5\",117:\"F6\",118:\"F7\",119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},od=Qc.extend({key:function(a){if(a.key){var b=md[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=ld(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?nd[a.keyCode]||\"Unidentified\":\"\"},location:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,repeat:null,locale:null,getModifierState:Tc,charCode:function(a){return\"keypress\"===\na.type?ld(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===a.type?ld(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),pd=Yc.extend({dataTransfer:null}),qd=Qc.extend({touches:null,targetTouches:null,changedTouches:null,altKey:null,metaKey:null,ctrlKey:null,shiftKey:null,getModifierState:Tc}),rd=y.extend({propertyName:null,elapsedTime:null,pseudoElement:null}),sd=Yc.extend({deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in\na?-a.wheelDeltaX:0},deltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:null,deltaMode:null}),td=[[\"abort\",\"abort\"],[Xa,\"animationEnd\"],[Ya,\"animationIteration\"],[Za,\"animationStart\"],[\"canplay\",\"canPlay\"],[\"canplaythrough\",\"canPlayThrough\"],[\"drag\",\"drag\"],[\"dragenter\",\"dragEnter\"],[\"dragexit\",\"dragExit\"],[\"dragleave\",\"dragLeave\"],[\"dragover\",\"dragOver\"],[\"durationchange\",\"durationChange\"],[\"emptied\",\"emptied\"],[\"encrypted\",\"encrypted\"],\n[\"ended\",\"ended\"],[\"error\",\"error\"],[\"gotpointercapture\",\"gotPointerCapture\"],[\"load\",\"load\"],[\"loadeddata\",\"loadedData\"],[\"loadedmetadata\",\"loadedMetadata\"],[\"loadstart\",\"loadStart\"],[\"lostpointercapture\",\"lostPointerCapture\"],[\"mousemove\",\"mouseMove\"],[\"mouseout\",\"mouseOut\"],[\"mouseover\",\"mouseOver\"],[\"playing\",\"playing\"],[\"pointermove\",\"pointerMove\"],[\"pointerout\",\"pointerOut\"],[\"pointerover\",\"pointerOver\"],[\"progress\",\"progress\"],[\"scroll\",\"scroll\"],[\"seeking\",\"seeking\"],[\"stalled\",\"stalled\"],\n[\"suspend\",\"suspend\"],[\"timeupdate\",\"timeUpdate\"],[\"toggle\",\"toggle\"],[\"touchmove\",\"touchMove\"],[$a,\"transitionEnd\"],[\"waiting\",\"waiting\"],[\"wheel\",\"wheel\"]],ud={},vd={};function wd(a,b){var c=a[0];a=a[1];var d=\"on\"+(a[0].toUpperCase()+a.slice(1));b={phasedRegistrationNames:{bubbled:d,captured:d+\"Capture\"},dependencies:[c],isInteractive:b};ud[a]=b;vd[c]=b}\n[[\"blur\",\"blur\"],[\"cancel\",\"cancel\"],[\"click\",\"click\"],[\"close\",\"close\"],[\"contextmenu\",\"contextMenu\"],[\"copy\",\"copy\"],[\"cut\",\"cut\"],[\"auxclick\",\"auxClick\"],[\"dblclick\",\"doubleClick\"],[\"dragend\",\"dragEnd\"],[\"dragstart\",\"dragStart\"],[\"drop\",\"drop\"],[\"focus\",\"focus\"],[\"input\",\"input\"],[\"invalid\",\"invalid\"],[\"keydown\",\"keyDown\"],[\"keypress\",\"keyPress\"],[\"keyup\",\"keyUp\"],[\"mousedown\",\"mouseDown\"],[\"mouseup\",\"mouseUp\"],[\"paste\",\"paste\"],[\"pause\",\"pause\"],[\"play\",\"play\"],[\"pointercancel\",\"pointerCancel\"],\n[\"pointerdown\",\"pointerDown\"],[\"pointerup\",\"pointerUp\"],[\"ratechange\",\"rateChange\"],[\"reset\",\"reset\"],[\"seeked\",\"seeked\"],[\"submit\",\"submit\"],[\"touchcancel\",\"touchCancel\"],[\"touchend\",\"touchEnd\"],[\"touchstart\",\"touchStart\"],[\"volumechange\",\"volumeChange\"]].forEach(function(a){wd(a,!0)});td.forEach(function(a){wd(a,!1)});\nvar xd={eventTypes:ud,isInteractiveTopLevelEventType:function(a){a=vd[a];return void 0!==a&&!0===a.isInteractive},extractEvents:function(a,b,c,d){var e=vd[a];if(!e)return null;switch(a){case \"keypress\":if(0===ld(c))return null;case \"keydown\":case \"keyup\":a=od;break;case \"blur\":case \"focus\":a=kd;break;case \"click\":if(2===c.button)return null;case \"auxclick\":case \"dblclick\":case \"mousedown\":case \"mousemove\":case \"mouseup\":case \"mouseout\":case \"mouseover\":case \"contextmenu\":a=Yc;break;case \"drag\":case \"dragend\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"dragstart\":case \"drop\":a=\npd;break;case \"touchcancel\":case \"touchend\":case \"touchmove\":case \"touchstart\":a=qd;break;case Xa:case Ya:case Za:a=id;break;case $a:a=rd;break;case \"scroll\":a=Qc;break;case \"wheel\":a=sd;break;case \"copy\":case \"cut\":case \"paste\":a=jd;break;case \"gotpointercapture\":case \"lostpointercapture\":case \"pointercancel\":case \"pointerdown\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"pointerup\":a=Zc;break;default:a=y}b=a.getPooled(e,b,c,d);Qa(b);return b}},yd=xd.isInteractiveTopLevelEventType,\nzd=[];function Ad(a){var b=a.targetInst,c=b;do{if(!c){a.ancestors.push(c);break}var d;for(d=c;d.return;)d=d.return;d=3!==d.tag?null:d.stateNode.containerInfo;if(!d)break;a.ancestors.push(c);c=Ha(d)}while(c);for(c=0;c<a.ancestors.length;c++){b=a.ancestors[c];var e=Nb(a.nativeEvent);d=a.topLevelType;for(var f=a.nativeEvent,g=null,h=0;h<oa.length;h++){var l=oa[h];l&&(l=l.extractEvents(d,b,f,e))&&(g=xa(g,l))}Da(g)}}var Bd=!0;\nfunction E(a,b){if(!b)return null;var c=(yd(a)?Cd:Dd).bind(null,a);b.addEventListener(a,c,!1)}function Ed(a,b){if(!b)return null;var c=(yd(a)?Cd:Dd).bind(null,a);b.addEventListener(a,c,!0)}function Cd(a,b){Hb(Dd,a,b)}\nfunction Dd(a,b){if(Bd){var c=Nb(b);c=Ha(c);null===c||\"number\"!==typeof c.tag||2===ed(c)||(c=null);if(zd.length){var d=zd.pop();d.topLevelType=a;d.nativeEvent=b;d.targetInst=c;a=d}else a={topLevelType:a,nativeEvent:b,targetInst:c,ancestors:[]};try{Kb(Ad,a)}finally{a.topLevelType=null,a.nativeEvent=null,a.targetInst=null,a.ancestors.length=0,10>zd.length&&zd.push(a)}}}var Fd={},Gd=0,Hd=\"_reactListenersID\"+(\"\"+Math.random()).slice(2);\nfunction Id(a){Object.prototype.hasOwnProperty.call(a,Hd)||(a[Hd]=Gd++,Fd[a[Hd]]={});return Fd[a[Hd]]}function Jd(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}function Kd(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction Ld(a,b){var c=Kd(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Kd(c)}}function Md(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Md(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Nd(){for(var a=window,b=Jd();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Jd(a.document)}return b}function Od(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Pd(){var a=Nd();if(Od(a)){if(\"selectionStart\"in a)var b={start:a.selectionStart,end:a.selectionEnd};else a:{b=(b=a.ownerDocument)&&b.defaultView||window;var c=b.getSelection&&b.getSelection();if(c&&0!==c.rangeCount){b=c.anchorNode;var d=c.anchorOffset,e=c.focusNode;c=c.focusOffset;try{b.nodeType,e.nodeType}catch(A){b=null;break a}var f=0,g=-1,h=-1,l=0,k=0,m=a,p=null;b:for(;;){for(var t;;){m!==b||0!==d&&3!==m.nodeType||(g=f+d);m!==e||0!==c&&3!==m.nodeType||(h=f+c);3===m.nodeType&&(f+=m.nodeValue.length);\nif(null===(t=m.firstChild))break;p=m;m=t}for(;;){if(m===a)break b;p===b&&++l===d&&(g=f);p===e&&++k===c&&(h=f);if(null!==(t=m.nextSibling))break;m=p;p=m.parentNode}m=t}b=-1===g||-1===h?null:{start:g,end:h}}else b=null}b=b||{start:0,end:0}}else b=null;return{focusedElem:a,selectionRange:b}}\nfunction Qd(a){var b=Nd(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Md(c.ownerDocument.documentElement,c)){if(null!==d&&Od(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ld(c,f);var g=Ld(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c<b.length;c++)a=b[c],a.element.scrollLeft=a.left,a.element.scrollTop=a.top}}\nvar Rd=Ra&&\"documentMode\"in document&&11>=document.documentMode,Sd={select:{phasedRegistrationNames:{bubbled:\"onSelect\",captured:\"onSelectCapture\"},dependencies:\"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange\".split(\" \")}},Td=null,Ud=null,Vd=null,Wd=!1;\nfunction Xd(a,b){var c=b.window===b?b.document:9===b.nodeType?b:b.ownerDocument;if(Wd||null==Td||Td!==Jd(c))return null;c=Td;\"selectionStart\"in c&&Od(c)?c={start:c.selectionStart,end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset});return Vd&&dd(Vd,c)?null:(Vd=c,a=y.getPooled(Sd.select,Ud,a,b),a.type=\"select\",a.target=Td,Qa(a),a)}\nvar Yd={eventTypes:Sd,extractEvents:function(a,b,c,d){var e=d.window===d?d.document:9===d.nodeType?d:d.ownerDocument,f;if(!(f=!e)){a:{e=Id(e);f=sa.onSelect;for(var g=0;g<f.length;g++){var h=f[g];if(!e.hasOwnProperty(h)||!e[h]){e=!1;break a}}e=!0}f=!e}if(f)return null;e=b?Ja(b):window;switch(a){case \"focus\":if(Mb(e)||\"true\"===e.contentEditable)Td=e,Ud=b,Vd=null;break;case \"blur\":Vd=Ud=Td=null;break;case \"mousedown\":Wd=!0;break;case \"contextmenu\":case \"mouseup\":case \"dragend\":return Wd=!1,Xd(c,d);case \"selectionchange\":if(Rd)break;\ncase \"keydown\":case \"keyup\":return Xd(c,d)}return null}};Ba.injectEventPluginOrder(\"ResponderEventPlugin SimpleEventPlugin EnterLeaveEventPlugin ChangeEventPlugin SelectEventPlugin BeforeInputEventPlugin\".split(\" \"));ta=Ka;ua=Ia;va=Ja;Ba.injectEventPluginsByName({SimpleEventPlugin:xd,EnterLeaveEventPlugin:ad,ChangeEventPlugin:Pc,SelectEventPlugin:Yd,BeforeInputEventPlugin:zb});function Zd(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}\nfunction $d(a,b){a=n({children:void 0},b);if(b=Zd(b.children))a.children=b;return a}function ae(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b[\"$\"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty(\"$\"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=\"\"+uc(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}\nfunction be(a,b){null!=b.dangerouslySetInnerHTML?x(\"91\"):void 0;return n({},b,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function ce(a,b){var c=b.value;null==c&&(c=b.defaultValue,b=b.children,null!=b&&(null!=c?x(\"92\"):void 0,Array.isArray(b)&&(1>=b.length?void 0:x(\"93\"),b=b[0]),c=b),null==c&&(c=\"\"));a._wrapperState={initialValue:uc(c)}}\nfunction de(a,b){var c=uc(b.value),d=uc(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function ee(a){var b=a.textContent;b===a._wrapperState.initialValue&&(a.value=b)}var fe={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction ge(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function he(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?ge(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar ie=void 0,je=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==fe.svg||\"innerHTML\"in a)a.innerHTML=b;else{ie=ie||document.createElement(\"div\");ie.innerHTML=\"<svg>\"+b+\"</svg>\";for(b=ie.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ke(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar le={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},me=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(le).forEach(function(a){me.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);le[b]=le[a]})});function ne(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||le.hasOwnProperty(a)&&le[a]?(\"\"+b).trim():b+\"px\"}\nfunction oe(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=ne(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var pe=n({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction qe(a,b){b&&(pe[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML?x(\"137\",a,\"\"):void 0),null!=b.dangerouslySetInnerHTML&&(null!=b.children?x(\"60\"):void 0,\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML?void 0:x(\"61\")),null!=b.style&&\"object\"!==typeof b.style?x(\"62\",\"\"):void 0)}\nfunction re(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}\nfunction se(a,b){a=9===a.nodeType||11===a.nodeType?a:a.ownerDocument;var c=Id(a);b=sa[b];for(var d=0;d<b.length;d++){var e=b[d];if(!c.hasOwnProperty(e)||!c[e]){switch(e){case \"scroll\":Ed(\"scroll\",a);break;case \"focus\":case \"blur\":Ed(\"focus\",a);Ed(\"blur\",a);c.blur=!0;c.focus=!0;break;case \"cancel\":case \"close\":Ob(e)&&Ed(e,a);break;case \"invalid\":case \"submit\":case \"reset\":break;default:-1===ab.indexOf(e)&&E(e,a)}c[e]=!0}}}function te(){}var ue=null,ve=null;\nfunction we(a,b){switch(a){case \"button\":case \"input\":case \"select\":case \"textarea\":return!!b.autoFocus}return!1}function xe(a,b){return\"textarea\"===a||\"option\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}\nvar ye=\"function\"===typeof setTimeout?setTimeout:void 0,ze=\"function\"===typeof clearTimeout?clearTimeout:void 0,Ae=r.unstable_scheduleCallback,Be=r.unstable_cancelCallback;\nfunction Ce(a,b,c,d,e){a[Ga]=e;\"input\"===c&&\"radio\"===e.type&&null!=e.name&&xc(a,e);re(c,d);d=re(c,e);for(var f=0;f<b.length;f+=2){var g=b[f],h=b[f+1];\"style\"===g?oe(a,h):\"dangerouslySetInnerHTML\"===g?je(a,h):\"children\"===g?ke(a,h):tc(a,g,h,d)}switch(c){case \"input\":yc(a,e);break;case \"textarea\":de(a,e);break;case \"select\":b=a._wrapperState.wasMultiple,a._wrapperState.wasMultiple=!!e.multiple,c=e.value,null!=c?ae(a,!!e.multiple,c,!1):b!==!!e.multiple&&(null!=e.defaultValue?ae(a,!!e.multiple,e.defaultValue,\n!0):ae(a,!!e.multiple,e.multiple?[]:\"\",!1))}}function De(a){for(a=a.nextSibling;a&&1!==a.nodeType&&3!==a.nodeType;)a=a.nextSibling;return a}function Ee(a){for(a=a.firstChild;a&&1!==a.nodeType&&3!==a.nodeType;)a=a.nextSibling;return a}new Set;var Fe=[],Ge=-1;function F(a){0>Ge||(a.current=Fe[Ge],Fe[Ge]=null,Ge--)}function G(a,b){Ge++;Fe[Ge]=a.current;a.current=b}var He={},H={current:He},I={current:!1},Ie=He;\nfunction Je(a,b){var c=a.type.contextTypes;if(!c)return He;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function J(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Ke(a){F(I,a);F(H,a)}function Le(a){F(I,a);F(H,a)}\nfunction Me(a,b,c){H.current!==He?x(\"168\"):void 0;G(H,b,a);G(I,c,a)}function Ne(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)e in a?void 0:x(\"108\",ic(b)||\"Unknown\",e);return n({},c,d)}function Oe(a){var b=a.stateNode;b=b&&b.__reactInternalMemoizedMergedChildContext||He;Ie=H.current;G(H,b,a);G(I,I.current,a);return!0}\nfunction Pe(a,b,c){var d=a.stateNode;d?void 0:x(\"169\");c?(b=Ne(a,b,Ie),d.__reactInternalMemoizedMergedChildContext=b,F(I,a),F(H,a),G(H,b,a)):F(I,a);G(I,c,a)}var Qe=null,Re=null;function Se(a){return function(b){try{return a(b)}catch(c){}}}\nfunction Te(a){if(\"undefined\"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)return!1;var b=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(b.isDisabled||!b.supportsFiber)return!0;try{var c=b.inject(a);Qe=Se(function(a){return b.onCommitFiberRoot(c,a)});Re=Se(function(a){return b.onCommitFiberUnmount(c,a)})}catch(d){}return!0}\nfunction Ue(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.contextDependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.effectTag=0;this.lastEffect=this.firstEffect=this.nextEffect=null;this.childExpirationTime=this.expirationTime=0;this.alternate=null}function K(a,b,c,d){return new Ue(a,b,c,d)}\nfunction Ve(a){a=a.prototype;return!(!a||!a.isReactComponent)}function We(a){if(\"function\"===typeof a)return Ve(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===cc)return 11;if(a===ec)return 14}return 2}\nfunction Xe(a,b){var c=a.alternate;null===c?(c=K(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.effectTag=0,c.nextEffect=null,c.firstEffect=null,c.lastEffect=null);c.childExpirationTime=a.childExpirationTime;c.expirationTime=a.expirationTime;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;c.contextDependencies=a.contextDependencies;c.sibling=a.sibling;\nc.index=a.index;c.ref=a.ref;return c}\nfunction Ye(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)Ve(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case Xb:return Ze(c.children,e,f,b);case bc:return $e(c,e|3,f,b);case Yb:return $e(c,e|2,f,b);case Zb:return a=K(12,c,b,e|4),a.elementType=Zb,a.type=Zb,a.expirationTime=f,a;case dc:return a=K(13,c,b,e),a.elementType=dc,a.type=dc,a.expirationTime=f,a;default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case $b:g=10;break a;case ac:g=9;break a;case cc:g=11;break a;case ec:g=\n14;break a;case fc:g=16;d=null;break a}x(\"130\",null==a?a:typeof a,\"\")}b=K(g,c,b,e);b.elementType=a;b.type=d;b.expirationTime=f;return b}function Ze(a,b,c,d){a=K(7,a,d,b);a.expirationTime=c;return a}function $e(a,b,c,d){a=K(8,a,d,b);b=0===(b&1)?Yb:bc;a.elementType=b;a.type=b;a.expirationTime=c;return a}function af(a,b,c){a=K(6,a,null,b);a.expirationTime=c;return a}\nfunction bf(a,b,c){b=K(4,null!==a.children?a.children:[],a.key,b);b.expirationTime=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}function cf(a,b){a.didError=!1;var c=a.earliestPendingTime;0===c?a.earliestPendingTime=a.latestPendingTime=b:c<b?a.earliestPendingTime=b:a.latestPendingTime>b&&(a.latestPendingTime=b);df(b,a)}\nfunction ef(a,b){a.didError=!1;if(0===b)a.earliestPendingTime=0,a.latestPendingTime=0,a.earliestSuspendedTime=0,a.latestSuspendedTime=0,a.latestPingedTime=0;else{b<a.latestPingedTime&&(a.latestPingedTime=0);var c=a.latestPendingTime;0!==c&&(c>b?a.earliestPendingTime=a.latestPendingTime=0:a.earliestPendingTime>b&&(a.earliestPendingTime=a.latestPendingTime));c=a.earliestSuspendedTime;0===c?cf(a,b):b<a.latestSuspendedTime?(a.earliestSuspendedTime=0,a.latestSuspendedTime=0,a.latestPingedTime=0,cf(a,b)):\nb>c&&cf(a,b)}df(0,a)}function ff(a,b){a.didError=!1;a.latestPingedTime>=b&&(a.latestPingedTime=0);var c=a.earliestPendingTime,d=a.latestPendingTime;c===b?a.earliestPendingTime=d===b?a.latestPendingTime=0:d:d===b&&(a.latestPendingTime=c);c=a.earliestSuspendedTime;d=a.latestSuspendedTime;0===c?a.earliestSuspendedTime=a.latestSuspendedTime=b:c<b?a.earliestSuspendedTime=b:d>b&&(a.latestSuspendedTime=b);df(b,a)}\nfunction gf(a,b){var c=a.earliestPendingTime;a=a.earliestSuspendedTime;c>b&&(b=c);a>b&&(b=a);return b}function df(a,b){var c=b.earliestSuspendedTime,d=b.latestSuspendedTime,e=b.earliestPendingTime,f=b.latestPingedTime;e=0!==e?e:f;0===e&&(0===a||d<a)&&(e=d);a=e;0!==a&&c>a&&(a=c);b.nextExpirationTimeToWorkOn=e;b.expirationTime=a}function L(a,b){if(a&&a.defaultProps){b=n({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c])}return b}\nfunction hf(a){var b=a._result;switch(a._status){case 1:return b;case 2:throw b;case 0:throw b;default:a._status=0;b=a._ctor;b=b();b.then(function(b){0===a._status&&(b=b.default,a._status=1,a._result=b)},function(b){0===a._status&&(a._status=2,a._result=b)});switch(a._status){case 1:return a._result;case 2:throw a._result;}a._result=b;throw b;}}var jf=(new aa.Component).refs;\nfunction kf(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:n({},b,c);a.memoizedState=c;d=a.updateQueue;null!==d&&0===a.expirationTime&&(d.baseState=c)}\nvar tf={isMounted:function(a){return(a=a._reactInternalFiber)?2===ed(a):!1},enqueueSetState:function(a,b,c){a=a._reactInternalFiber;var d=lf();d=mf(d,a);var e=nf(d);e.payload=b;void 0!==c&&null!==c&&(e.callback=c);of();pf(a,e);qf(a,d)},enqueueReplaceState:function(a,b,c){a=a._reactInternalFiber;var d=lf();d=mf(d,a);var e=nf(d);e.tag=rf;e.payload=b;void 0!==c&&null!==c&&(e.callback=c);of();pf(a,e);qf(a,d)},enqueueForceUpdate:function(a,b){a=a._reactInternalFiber;var c=lf();c=mf(c,a);var d=nf(c);d.tag=\nsf;void 0!==b&&null!==b&&(d.callback=b);of();pf(a,d);qf(a,c)}};function uf(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!dd(c,d)||!dd(e,f):!0}\nfunction vf(a,b,c){var d=!1,e=He;var f=b.contextType;\"object\"===typeof f&&null!==f?f=M(f):(e=J(b)?Ie:H.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Je(a,e):He);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=tf;a.stateNode=b;b._reactInternalFiber=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction wf(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&tf.enqueueReplaceState(b,b.state,null)}\nfunction xf(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs=jf;var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=M(f):(f=J(b)?Ie:H.current,e.context=Je(a,f));f=a.updateQueue;null!==f&&(yf(a,f,c,e,d),e.state=a.memoizedState);f=b.getDerivedStateFromProps;\"function\"===typeof f&&(kf(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==\ntypeof e.componentWillMount||(b=e.state,\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&tf.enqueueReplaceState(e,e.state,null),f=a.updateQueue,null!==f&&(yf(a,f,c,e,d),e.state=a.memoizedState));\"function\"===typeof e.componentDidMount&&(a.effectTag|=4)}var zf=Array.isArray;\nfunction Af(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;var d=void 0;c&&(1!==c.tag?x(\"309\"):void 0,d=c.stateNode);d?void 0:x(\"147\",a);var e=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===e)return b.ref;b=function(a){var b=d.refs;b===jf&&(b=d.refs={});null===a?delete b[e]:b[e]=a};b._stringRef=e;return b}\"string\"!==typeof a?x(\"284\"):void 0;c._owner?void 0:x(\"290\",a)}return a}\nfunction Bf(a,b){\"textarea\"!==a.type&&x(\"31\",\"[object Object]\"===Object.prototype.toString.call(b)?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":b,\"\")}\nfunction Cf(a){function b(b,c){if(a){var d=b.lastEffect;null!==d?(d.nextEffect=c,b.lastEffect=c):b.firstEffect=b.lastEffect=c;c.nextEffect=null;c.effectTag=8}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b,c){a=Xe(a,b,c);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.effectTag=\n2,c):d;b.effectTag=2;return c}function g(b){a&&null===b.alternate&&(b.effectTag=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=af(c,a.mode,d),b.return=a,b;b=e(b,c,d);b.return=a;return b}function l(a,b,c,d){if(null!==b&&b.elementType===c.type)return d=e(b,c.props,d),d.ref=Af(a,b,c),d.return=a,d;d=Ye(c.type,c.key,c.props,null,a.mode,d);d.ref=Af(a,b,c);d.return=a;return d}function k(a,b,c,d){if(null===b||4!==b.tag||b.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==\nc.implementation)return b=bf(c,a.mode,d),b.return=a,b;b=e(b,c.children||[],d);b.return=a;return b}function m(a,b,c,d,f){if(null===b||7!==b.tag)return b=Ze(c,a.mode,d,f),b.return=a,b;b=e(b,c,d);b.return=a;return b}function p(a,b,c){if(\"string\"===typeof b||\"number\"===typeof b)return b=af(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case Vb:return c=Ye(b.type,b.key,b.props,null,a.mode,c),c.ref=Af(a,null,b),c.return=a,c;case Wb:return b=bf(b,a.mode,c),b.return=a,b}if(zf(b)||\nhc(b))return b=Ze(b,a.mode,c,null),b.return=a,b;Bf(a,b)}return null}function t(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case Vb:return c.key===e?c.type===Xb?m(a,b,c.props.children,d,e):l(a,b,c,d):null;case Wb:return c.key===e?k(a,b,c,d):null}if(zf(c)||hc(c))return null!==e?null:m(a,b,c,d,null);Bf(a,c)}return null}function A(a,b,c,d,e){if(\"string\"===typeof d||\"number\"===typeof d)return a=\na.get(c)||null,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case Vb:return a=a.get(null===d.key?c:d.key)||null,d.type===Xb?m(b,a,d.props.children,e,d.key):l(b,a,d,e);case Wb:return a=a.get(null===d.key?c:d.key)||null,k(b,a,d,e)}if(zf(d)||hc(d))return a=a.get(c)||null,m(b,a,d,e,null);Bf(b,d)}return null}function v(e,g,h,k){for(var l=null,m=null,q=g,u=g=0,B=null;null!==q&&u<h.length;u++){q.index>u?(B=q,q=null):B=q.sibling;var w=t(e,q,h[u],k);if(null===w){null===q&&(q=B);break}a&&\nq&&null===w.alternate&&b(e,q);g=f(w,g,u);null===m?l=w:m.sibling=w;m=w;q=B}if(u===h.length)return c(e,q),l;if(null===q){for(;u<h.length;u++)if(q=p(e,h[u],k))g=f(q,g,u),null===m?l=q:m.sibling=q,m=q;return l}for(q=d(e,q);u<h.length;u++)if(B=A(q,e,u,h[u],k))a&&null!==B.alternate&&q.delete(null===B.key?u:B.key),g=f(B,g,u),null===m?l=B:m.sibling=B,m=B;a&&q.forEach(function(a){return b(e,a)});return l}function R(e,g,h,k){var l=hc(h);\"function\"!==typeof l?x(\"150\"):void 0;h=l.call(h);null==h?x(\"151\"):void 0;\nfor(var m=l=null,q=g,u=g=0,B=null,w=h.next();null!==q&&!w.done;u++,w=h.next()){q.index>u?(B=q,q=null):B=q.sibling;var v=t(e,q,w.value,k);if(null===v){q||(q=B);break}a&&q&&null===v.alternate&&b(e,q);g=f(v,g,u);null===m?l=v:m.sibling=v;m=v;q=B}if(w.done)return c(e,q),l;if(null===q){for(;!w.done;u++,w=h.next())w=p(e,w.value,k),null!==w&&(g=f(w,g,u),null===m?l=w:m.sibling=w,m=w);return l}for(q=d(e,q);!w.done;u++,w=h.next())w=A(q,e,u,w.value,k),null!==w&&(a&&null!==w.alternate&&q.delete(null===w.key?u:\nw.key),g=f(w,g,u),null===m?l=w:m.sibling=w,m=w);a&&q.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===Xb&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case Vb:a:{l=f.key;for(k=d;null!==k;){if(k.key===l)if(7===k.tag?f.type===Xb:k.elementType===f.type){c(a,k.sibling);d=e(k,f.type===Xb?f.props.children:f.props,h);d.ref=Af(a,k,f);d.return=a;a=d;break a}else{c(a,k);break}else b(a,k);k=\nk.sibling}f.type===Xb?(d=Ze(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Ye(f.type,f.key,f.props,null,a.mode,h),h.ref=Af(a,d,f),h.return=a,a=h)}return g(a);case Wb:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[],h);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=bf(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\n\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f,h),d.return=a,a=d):(c(a,d),d=af(f,a.mode,h),d.return=a,a=d),g(a);if(zf(f))return v(a,d,f,h);if(hc(f))return R(a,d,f,h);l&&Bf(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 0:h=a.type,x(\"152\",h.displayName||h.name||\"Component\")}return c(a,d)}}var Df=Cf(!0),Ef=Cf(!1),Ff={},N={current:Ff},Gf={current:Ff},Hf={current:Ff};function If(a){a===Ff?x(\"174\"):void 0;return a}\nfunction Jf(a,b){G(Hf,b,a);G(Gf,a,a);G(N,Ff,a);var c=b.nodeType;switch(c){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:he(null,\"\");break;default:c=8===c?b.parentNode:b,b=c.namespaceURI||null,c=c.tagName,b=he(b,c)}F(N,a);G(N,b,a)}function Kf(a){F(N,a);F(Gf,a);F(Hf,a)}function Lf(a){If(Hf.current);var b=If(N.current);var c=he(b,a.type);b!==c&&(G(Gf,a,a),G(N,c,a))}function Mf(a){Gf.current===a&&(F(N,a),F(Gf,a))}\nvar Nf=0,Of=2,Pf=4,Qf=8,Rf=16,Sf=32,Tf=64,Uf=128,Vf=Tb.ReactCurrentDispatcher,Wf=0,Xf=null,O=null,P=null,Yf=null,Q=null,Zf=null,$f=0,ag=null,bg=0,cg=!1,dg=null,eg=0;function fg(){x(\"321\")}function gg(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!bd(a[c],b[c]))return!1;return!0}\nfunction hg(a,b,c,d,e,f){Wf=f;Xf=b;P=null!==a?a.memoizedState:null;Vf.current=null===P?ig:jg;b=c(d,e);if(cg){do cg=!1,eg+=1,P=null!==a?a.memoizedState:null,Zf=Yf,ag=Q=O=null,Vf.current=jg,b=c(d,e);while(cg);dg=null;eg=0}Vf.current=kg;a=Xf;a.memoizedState=Yf;a.expirationTime=$f;a.updateQueue=ag;a.effectTag|=bg;a=null!==O&&null!==O.next;Wf=0;Zf=Q=Yf=P=O=Xf=null;$f=0;ag=null;bg=0;a?x(\"300\"):void 0;return b}function lg(){Vf.current=kg;Wf=0;Zf=Q=Yf=P=O=Xf=null;$f=0;ag=null;bg=0;cg=!1;dg=null;eg=0}\nfunction mg(){var a={memoizedState:null,baseState:null,queue:null,baseUpdate:null,next:null};null===Q?Yf=Q=a:Q=Q.next=a;return Q}function ng(){if(null!==Zf)Q=Zf,Zf=Q.next,O=P,P=null!==O?O.next:null;else{null===P?x(\"310\"):void 0;O=P;var a={memoizedState:O.memoizedState,baseState:O.baseState,queue:O.queue,baseUpdate:O.baseUpdate,next:null};Q=null===Q?Yf=a:Q.next=a;P=O.next}return Q}function og(a,b){return\"function\"===typeof b?b(a):b}\nfunction pg(a){var b=ng(),c=b.queue;null===c?x(\"311\"):void 0;c.lastRenderedReducer=a;if(0<eg){var d=c.dispatch;if(null!==dg){var e=dg.get(c);if(void 0!==e){dg.delete(c);var f=b.memoizedState;do f=a(f,e.action),e=e.next;while(null!==e);bd(f,b.memoizedState)||(qg=!0);b.memoizedState=f;b.baseUpdate===c.last&&(b.baseState=f);c.lastRenderedState=f;return[f,d]}}return[b.memoizedState,d]}d=c.last;var g=b.baseUpdate;f=b.baseState;null!==g?(null!==d&&(d.next=null),d=g.next):d=null!==d?d.next:null;if(null!==\nd){var h=e=null,l=d,k=!1;do{var m=l.expirationTime;m<Wf?(k||(k=!0,h=g,e=f),m>$f&&($f=m)):f=l.eagerReducer===a?l.eagerState:a(f,l.action);g=l;l=l.next}while(null!==l&&l!==d);k||(h=g,e=f);bd(f,b.memoizedState)||(qg=!0);b.memoizedState=f;b.baseUpdate=h;b.baseState=e;c.lastRenderedState=f}return[b.memoizedState,c.dispatch]}\nfunction rg(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};null===ag?(ag={lastEffect:null},ag.lastEffect=a.next=a):(b=ag.lastEffect,null===b?ag.lastEffect=a.next=a:(c=b.next,b.next=a,a.next=c,ag.lastEffect=a));return a}function sg(a,b,c,d){var e=mg();bg|=a;e.memoizedState=rg(b,c,void 0,void 0===d?null:d)}\nfunction tg(a,b,c,d){var e=ng();d=void 0===d?null:d;var f=void 0;if(null!==O){var g=O.memoizedState;f=g.destroy;if(null!==d&&gg(d,g.deps)){rg(Nf,c,f,d);return}}bg|=a;e.memoizedState=rg(b,c,f,d)}function ug(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function vg(){}\nfunction wg(a,b,c){25>eg?void 0:x(\"301\");var d=a.alternate;if(a===Xf||null!==d&&d===Xf)if(cg=!0,a={expirationTime:Wf,action:c,eagerReducer:null,eagerState:null,next:null},null===dg&&(dg=new Map),c=dg.get(b),void 0===c)dg.set(b,a);else{for(b=c;null!==b.next;)b=b.next;b.next=a}else{of();var e=lf();e=mf(e,a);var f={expirationTime:e,action:c,eagerReducer:null,eagerState:null,next:null},g=b.last;if(null===g)f.next=f;else{var h=g.next;null!==h&&(f.next=h);g.next=f}b.last=f;if(0===a.expirationTime&&(null===\nd||0===d.expirationTime)&&(d=b.lastRenderedReducer,null!==d))try{var l=b.lastRenderedState,k=d(l,c);f.eagerReducer=d;f.eagerState=k;if(bd(k,l))return}catch(m){}finally{}qf(a,e)}}\nvar kg={readContext:M,useCallback:fg,useContext:fg,useEffect:fg,useImperativeHandle:fg,useLayoutEffect:fg,useMemo:fg,useReducer:fg,useRef:fg,useState:fg,useDebugValue:fg},ig={readContext:M,useCallback:function(a,b){mg().memoizedState=[a,void 0===b?null:b];return a},useContext:M,useEffect:function(a,b){return sg(516,Uf|Tf,a,b)},useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return sg(4,Pf|Sf,ug.bind(null,b,a),c)},useLayoutEffect:function(a,b){return sg(4,Pf|Sf,a,b)},\nuseMemo:function(a,b){var c=mg();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=mg();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={last:null,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};a=a.dispatch=wg.bind(null,Xf,a);return[d.memoizedState,a]},useRef:function(a){var b=mg();a={current:a};return b.memoizedState=a},useState:function(a){var b=mg();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={last:null,dispatch:null,\nlastRenderedReducer:og,lastRenderedState:a};a=a.dispatch=wg.bind(null,Xf,a);return[b.memoizedState,a]},useDebugValue:vg},jg={readContext:M,useCallback:function(a,b){var c=ng();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&gg(b,d[1]))return d[0];c.memoizedState=[a,b];return a},useContext:M,useEffect:function(a,b){return tg(516,Uf|Tf,a,b)},useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return tg(4,Pf|Sf,ug.bind(null,b,a),c)},useLayoutEffect:function(a,\nb){return tg(4,Pf|Sf,a,b)},useMemo:function(a,b){var c=ng();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&gg(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a},useReducer:pg,useRef:function(){return ng().memoizedState},useState:function(a){return pg(og,a)},useDebugValue:vg},xg=null,yg=null,zg=!1;\nfunction Ag(a,b){var c=K(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.effectTag=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function Bg(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction Cg(a){if(zg){var b=yg;if(b){var c=b;if(!Bg(a,b)){b=De(c);if(!b||!Bg(a,b)){a.effectTag|=2;zg=!1;xg=a;return}Ag(xg,c)}xg=a;yg=Ee(b)}else a.effectTag|=2,zg=!1,xg=a}}function Dg(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&18!==a.tag;)a=a.return;xg=a}function Eg(a){if(a!==xg)return!1;if(!zg)return Dg(a),zg=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!xe(b,a.memoizedProps))for(b=yg;b;)Ag(a,b),b=De(b);Dg(a);yg=xg?De(a.stateNode):null;return!0}function Fg(){yg=xg=null;zg=!1}\nvar Gg=Tb.ReactCurrentOwner,qg=!1;function S(a,b,c,d){b.child=null===a?Ef(b,null,c,d):Df(b,a.child,c,d)}function Hg(a,b,c,d,e){c=c.render;var f=b.ref;Ig(b,e);d=hg(a,b,c,d,f,e);if(null!==a&&!qg)return b.updateQueue=a.updateQueue,b.effectTag&=-517,a.expirationTime<=e&&(a.expirationTime=0),Jg(a,b,e);b.effectTag|=1;S(a,b,d,e);return b.child}\nfunction Kg(a,b,c,d,e,f){if(null===a){var g=c.type;if(\"function\"===typeof g&&!Ve(g)&&void 0===g.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=g,Lg(a,b,g,d,e,f);a=Ye(c.type,null,d,null,b.mode,f);a.ref=b.ref;a.return=b;return b.child=a}g=a.child;if(e<f&&(e=g.memoizedProps,c=c.compare,c=null!==c?c:dd,c(e,d)&&a.ref===b.ref))return Jg(a,b,f);b.effectTag|=1;a=Xe(g,d,f);a.ref=b.ref;a.return=b;return b.child=a}\nfunction Lg(a,b,c,d,e,f){return null!==a&&dd(a.memoizedProps,d)&&a.ref===b.ref&&(qg=!1,e<f)?Jg(a,b,f):Mg(a,b,c,d,f)}function Ng(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.effectTag|=128}function Mg(a,b,c,d,e){var f=J(c)?Ie:H.current;f=Je(b,f);Ig(b,e);c=hg(a,b,c,d,f,e);if(null!==a&&!qg)return b.updateQueue=a.updateQueue,b.effectTag&=-517,a.expirationTime<=e&&(a.expirationTime=0),Jg(a,b,e);b.effectTag|=1;S(a,b,c,e);return b.child}\nfunction Og(a,b,c,d,e){if(J(c)){var f=!0;Oe(b)}else f=!1;Ig(b,e);if(null===b.stateNode)null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2),vf(b,c,d,e),xf(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var l=g.context,k=c.contextType;\"object\"===typeof k&&null!==k?k=M(k):(k=J(c)?Ie:H.current,k=Je(b,k));var m=c.getDerivedStateFromProps,p=\"function\"===typeof m||\"function\"===typeof g.getSnapshotBeforeUpdate;p||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\n\"function\"!==typeof g.componentWillReceiveProps||(h!==d||l!==k)&&wf(b,g,d,k);Pg=!1;var t=b.memoizedState;l=g.state=t;var A=b.updateQueue;null!==A&&(yf(b,A,d,g,e),l=b.memoizedState);h!==d||t!==l||I.current||Pg?(\"function\"===typeof m&&(kf(b,c,m,d),l=b.memoizedState),(h=Pg||uf(b,c,h,d,t,l,k))?(p||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&\ng.UNSAFE_componentWillMount()),\"function\"===typeof g.componentDidMount&&(b.effectTag|=4)):(\"function\"===typeof g.componentDidMount&&(b.effectTag|=4),b.memoizedProps=d,b.memoizedState=l),g.props=d,g.state=l,g.context=k,d=h):(\"function\"===typeof g.componentDidMount&&(b.effectTag|=4),d=!1)}else g=b.stateNode,h=b.memoizedProps,g.props=b.type===b.elementType?h:L(b.type,h),l=g.context,k=c.contextType,\"object\"===typeof k&&null!==k?k=M(k):(k=J(c)?Ie:H.current,k=Je(b,k)),m=c.getDerivedStateFromProps,(p=\"function\"===\ntypeof m||\"function\"===typeof g.getSnapshotBeforeUpdate)||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==d||l!==k)&&wf(b,g,d,k),Pg=!1,l=b.memoizedState,t=g.state=l,A=b.updateQueue,null!==A&&(yf(b,A,d,g,e),t=b.memoizedState),h!==d||l!==t||I.current||Pg?(\"function\"===typeof m&&(kf(b,c,m,d),t=b.memoizedState),(m=Pg||uf(b,c,h,d,l,t,k))?(p||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===\ntypeof g.componentWillUpdate&&g.componentWillUpdate(d,t,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&g.UNSAFE_componentWillUpdate(d,t,k)),\"function\"===typeof g.componentDidUpdate&&(b.effectTag|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.effectTag|=256)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&l===a.memoizedState||(b.effectTag|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&l===a.memoizedState||(b.effectTag|=256),b.memoizedProps=d,b.memoizedState=\nt),g.props=d,g.state=t,g.context=k,d=m):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&l===a.memoizedState||(b.effectTag|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&l===a.memoizedState||(b.effectTag|=256),d=!1);return Qg(a,b,c,d,f,e)}\nfunction Qg(a,b,c,d,e,f){Ng(a,b);var g=0!==(b.effectTag&64);if(!d&&!g)return e&&Pe(b,c,!1),Jg(a,b,f);d=b.stateNode;Gg.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.effectTag|=1;null!==a&&g?(b.child=Df(b,a.child,null,f),b.child=Df(b,null,h,f)):S(a,b,h,f);b.memoizedState=d.state;e&&Pe(b,c,!0);return b.child}function Rg(a){var b=a.stateNode;b.pendingContext?Me(a,b.pendingContext,b.pendingContext!==b.context):b.context&&Me(a,b.context,!1);Jf(a,b.containerInfo)}\nfunction Sg(a,b,c){var d=b.mode,e=b.pendingProps,f=b.memoizedState;if(0===(b.effectTag&64)){f=null;var g=!1}else f={timedOutAt:null!==f?f.timedOutAt:0},g=!0,b.effectTag&=-65;if(null===a)if(g){var h=e.fallback;a=Ze(null,d,0,null);0===(b.mode&1)&&(a.child=null!==b.memoizedState?b.child.child:b.child);d=Ze(h,d,c,null);a.sibling=d;c=a;c.return=d.return=b}else c=d=Ef(b,null,e.children,c);else null!==a.memoizedState?(d=a.child,h=d.sibling,g?(c=e.fallback,e=Xe(d,d.pendingProps,0),0===(b.mode&1)&&(g=null!==\nb.memoizedState?b.child.child:b.child,g!==d.child&&(e.child=g)),d=e.sibling=Xe(h,c,h.expirationTime),c=e,e.childExpirationTime=0,c.return=d.return=b):c=d=Df(b,d.child,e.children,c)):(h=a.child,g?(g=e.fallback,e=Ze(null,d,0,null),e.child=h,0===(b.mode&1)&&(e.child=null!==b.memoizedState?b.child.child:b.child),d=e.sibling=Ze(g,d,c,null),d.effectTag|=2,c=e,e.childExpirationTime=0,c.return=d.return=b):d=c=Df(b,h,e.children,c)),b.stateNode=a.stateNode;b.memoizedState=f;b.child=c;return d}\nfunction Jg(a,b,c){null!==a&&(b.contextDependencies=a.contextDependencies);if(b.childExpirationTime<c)return null;null!==a&&b.child!==a.child?x(\"153\"):void 0;if(null!==b.child){a=b.child;c=Xe(a,a.pendingProps,a.expirationTime);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=Xe(a,a.pendingProps,a.expirationTime),c.return=b;c.sibling=null}return b.child}\nfunction Tg(a,b,c){var d=b.expirationTime;if(null!==a)if(a.memoizedProps!==b.pendingProps||I.current)qg=!0;else{if(d<c){qg=!1;switch(b.tag){case 3:Rg(b);Fg();break;case 5:Lf(b);break;case 1:J(b.type)&&Oe(b);break;case 4:Jf(b,b.stateNode.containerInfo);break;case 10:Ug(b,b.memoizedProps.value);break;case 13:if(null!==b.memoizedState){d=b.child.childExpirationTime;if(0!==d&&d>=c)return Sg(a,b,c);b=Jg(a,b,c);return null!==b?b.sibling:null}}return Jg(a,b,c)}}else qg=!1;b.expirationTime=0;switch(b.tag){case 2:d=\nb.elementType;null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2);a=b.pendingProps;var e=Je(b,H.current);Ig(b,c);e=hg(null,b,d,a,e,c);b.effectTag|=1;if(\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;lg();if(J(d)){var f=!0;Oe(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;var g=d.getDerivedStateFromProps;\"function\"===typeof g&&kf(b,d,g,a);e.updater=tf;b.stateNode=e;e._reactInternalFiber=b;xf(b,d,a,c);b=Qg(null,b,d,!0,f,\nc)}else b.tag=0,S(null,b,e,c),b=b.child;return b;case 16:e=b.elementType;null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2);f=b.pendingProps;a=hf(e);b.type=a;e=b.tag=We(a);f=L(a,f);g=void 0;switch(e){case 0:g=Mg(null,b,a,f,c);break;case 1:g=Og(null,b,a,f,c);break;case 11:g=Hg(null,b,a,f,c);break;case 14:g=Kg(null,b,a,L(a.type,f),d,c);break;default:x(\"306\",a,\"\")}return g;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:L(d,e),Mg(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,\ne=b.elementType===d?e:L(d,e),Og(a,b,d,e,c);case 3:Rg(b);d=b.updateQueue;null===d?x(\"282\"):void 0;e=b.memoizedState;e=null!==e?e.element:null;yf(b,d,b.pendingProps,null,c);d=b.memoizedState.element;if(d===e)Fg(),b=Jg(a,b,c);else{e=b.stateNode;if(e=(null===a||null===a.child)&&e.hydrate)yg=Ee(b.stateNode.containerInfo),xg=b,e=zg=!0;e?(b.effectTag|=2,b.child=Ef(b,null,d,c)):(S(a,b,d,c),Fg());b=b.child}return b;case 5:return Lf(b),null===a&&Cg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,\ng=e.children,xe(d,e)?g=null:null!==f&&xe(d,f)&&(b.effectTag|=16),Ng(a,b),1!==c&&b.mode&1&&e.hidden?(b.expirationTime=b.childExpirationTime=1,b=null):(S(a,b,g,c),b=b.child),b;case 6:return null===a&&Cg(b),null;case 13:return Sg(a,b,c);case 4:return Jf(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Df(b,null,d,c):S(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:L(d,e),Hg(a,b,d,e,c);case 7:return S(a,b,b.pendingProps,c),b.child;case 8:return S(a,b,b.pendingProps.children,\nc),b.child;case 12:return S(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;g=b.memoizedProps;f=e.value;Ug(b,f);if(null!==g){var h=g.value;f=bd(h,f)?0:(\"function\"===typeof d._calculateChangedBits?d._calculateChangedBits(h,f):1073741823)|0;if(0===f){if(g.children===e.children&&!I.current){b=Jg(a,b,c);break a}}else for(h=b.child,null!==h&&(h.return=b);null!==h;){var l=h.contextDependencies;if(null!==l){g=h.child;for(var k=l.first;null!==k;){if(k.context===d&&0!==\n(k.observedBits&f)){1===h.tag&&(k=nf(c),k.tag=sf,pf(h,k));h.expirationTime<c&&(h.expirationTime=c);k=h.alternate;null!==k&&k.expirationTime<c&&(k.expirationTime=c);k=c;for(var m=h.return;null!==m;){var p=m.alternate;if(m.childExpirationTime<k)m.childExpirationTime=k,null!==p&&p.childExpirationTime<k&&(p.childExpirationTime=k);else if(null!==p&&p.childExpirationTime<k)p.childExpirationTime=k;else break;m=m.return}l.expirationTime<c&&(l.expirationTime=c);break}k=k.next}}else g=10===h.tag?h.type===b.type?\nnull:h.child:h.child;if(null!==g)g.return=h;else for(g=h;null!==g;){if(g===b){g=null;break}h=g.sibling;if(null!==h){h.return=g.return;g=h;break}g=g.return}h=g}}S(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,f=b.pendingProps,d=f.children,Ig(b,c),e=M(e,f.unstable_observedBits),d=d(e),b.effectTag|=1,S(a,b,d,c),b.child;case 14:return e=b.type,f=L(e,b.pendingProps),f=L(e.type,f),Kg(a,b,e,f,d,c);case 15:return Lg(a,b,b.type,b.pendingProps,d,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===\nd?e:L(d,e),null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2),b.tag=1,J(d)?(a=!0,Oe(b)):a=!1,Ig(b,c),vf(b,d,e,c),xf(b,d,e,c),Qg(null,b,d,!0,a,c)}x(\"156\")}var Vg={current:null},Wg=null,Xg=null,Yg=null;function Ug(a,b){var c=a.type._context;G(Vg,c._currentValue,a);c._currentValue=b}function Zg(a){var b=Vg.current;F(Vg,a);a.type._context._currentValue=b}function Ig(a,b){Wg=a;Yg=Xg=null;var c=a.contextDependencies;null!==c&&c.expirationTime>=b&&(qg=!0);a.contextDependencies=null}\nfunction M(a,b){if(Yg!==a&&!1!==b&&0!==b){if(\"number\"!==typeof b||1073741823===b)Yg=a,b=1073741823;b={context:a,observedBits:b,next:null};null===Xg?(null===Wg?x(\"308\"):void 0,Xg=b,Wg.contextDependencies={first:b,expirationTime:0}):Xg=Xg.next=b}return a._currentValue}var $g=0,rf=1,sf=2,ah=3,Pg=!1;function bh(a){return{baseState:a,firstUpdate:null,lastUpdate:null,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}\nfunction ch(a){return{baseState:a.baseState,firstUpdate:a.firstUpdate,lastUpdate:a.lastUpdate,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function nf(a){return{expirationTime:a,tag:$g,payload:null,callback:null,next:null,nextEffect:null}}function dh(a,b){null===a.lastUpdate?a.firstUpdate=a.lastUpdate=b:(a.lastUpdate.next=b,a.lastUpdate=b)}\nfunction pf(a,b){var c=a.alternate;if(null===c){var d=a.updateQueue;var e=null;null===d&&(d=a.updateQueue=bh(a.memoizedState))}else d=a.updateQueue,e=c.updateQueue,null===d?null===e?(d=a.updateQueue=bh(a.memoizedState),e=c.updateQueue=bh(c.memoizedState)):d=a.updateQueue=ch(e):null===e&&(e=c.updateQueue=ch(d));null===e||d===e?dh(d,b):null===d.lastUpdate||null===e.lastUpdate?(dh(d,b),dh(e,b)):(dh(d,b),e.lastUpdate=b)}\nfunction eh(a,b){var c=a.updateQueue;c=null===c?a.updateQueue=bh(a.memoizedState):fh(a,c);null===c.lastCapturedUpdate?c.firstCapturedUpdate=c.lastCapturedUpdate=b:(c.lastCapturedUpdate.next=b,c.lastCapturedUpdate=b)}function fh(a,b){var c=a.alternate;null!==c&&b===c.updateQueue&&(b=a.updateQueue=ch(b));return b}\nfunction gh(a,b,c,d,e,f){switch(c.tag){case rf:return a=c.payload,\"function\"===typeof a?a.call(f,d,e):a;case ah:a.effectTag=a.effectTag&-2049|64;case $g:a=c.payload;e=\"function\"===typeof a?a.call(f,d,e):a;if(null===e||void 0===e)break;return n({},d,e);case sf:Pg=!0}return d}\nfunction yf(a,b,c,d,e){Pg=!1;b=fh(a,b);for(var f=b.baseState,g=null,h=0,l=b.firstUpdate,k=f;null!==l;){var m=l.expirationTime;m<e?(null===g&&(g=l,f=k),h<m&&(h=m)):(k=gh(a,b,l,k,c,d),null!==l.callback&&(a.effectTag|=32,l.nextEffect=null,null===b.lastEffect?b.firstEffect=b.lastEffect=l:(b.lastEffect.nextEffect=l,b.lastEffect=l)));l=l.next}m=null;for(l=b.firstCapturedUpdate;null!==l;){var p=l.expirationTime;p<e?(null===m&&(m=l,null===g&&(f=k)),h<p&&(h=p)):(k=gh(a,b,l,k,c,d),null!==l.callback&&(a.effectTag|=\n32,l.nextEffect=null,null===b.lastCapturedEffect?b.firstCapturedEffect=b.lastCapturedEffect=l:(b.lastCapturedEffect.nextEffect=l,b.lastCapturedEffect=l)));l=l.next}null===g&&(b.lastUpdate=null);null===m?b.lastCapturedUpdate=null:a.effectTag|=32;null===g&&null===m&&(f=k);b.baseState=f;b.firstUpdate=g;b.firstCapturedUpdate=m;a.expirationTime=h;a.memoizedState=k}\nfunction hh(a,b,c){null!==b.firstCapturedUpdate&&(null!==b.lastUpdate&&(b.lastUpdate.next=b.firstCapturedUpdate,b.lastUpdate=b.lastCapturedUpdate),b.firstCapturedUpdate=b.lastCapturedUpdate=null);ih(b.firstEffect,c);b.firstEffect=b.lastEffect=null;ih(b.firstCapturedEffect,c);b.firstCapturedEffect=b.lastCapturedEffect=null}function ih(a,b){for(;null!==a;){var c=a.callback;if(null!==c){a.callback=null;var d=b;\"function\"!==typeof c?x(\"191\",c):void 0;c.call(d)}a=a.nextEffect}}\nfunction jh(a,b){return{value:a,source:b,stack:jc(b)}}function kh(a){a.effectTag|=4}var lh=void 0,mh=void 0,nh=void 0,oh=void 0;lh=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};mh=function(){};\nnh=function(a,b,c,d,e){var f=a.memoizedProps;if(f!==d){var g=b.stateNode;If(N.current);a=null;switch(c){case \"input\":f=vc(g,f);d=vc(g,d);a=[];break;case \"option\":f=$d(g,f);d=$d(g,d);a=[];break;case \"select\":f=n({},f,{value:void 0});d=n({},d,{value:void 0});a=[];break;case \"textarea\":f=be(g,f);d=be(g,d);a=[];break;default:\"function\"!==typeof f.onClick&&\"function\"===typeof d.onClick&&(g.onclick=te)}qe(c,d);g=c=void 0;var h=null;for(c in f)if(!d.hasOwnProperty(c)&&f.hasOwnProperty(c)&&null!=f[c])if(\"style\"===\nc){var l=f[c];for(g in l)l.hasOwnProperty(g)&&(h||(h={}),h[g]=\"\")}else\"dangerouslySetInnerHTML\"!==c&&\"children\"!==c&&\"suppressContentEditableWarning\"!==c&&\"suppressHydrationWarning\"!==c&&\"autoFocus\"!==c&&(ra.hasOwnProperty(c)?a||(a=[]):(a=a||[]).push(c,null));for(c in d){var k=d[c];l=null!=f?f[c]:void 0;if(d.hasOwnProperty(c)&&k!==l&&(null!=k||null!=l))if(\"style\"===c)if(l){for(g in l)!l.hasOwnProperty(g)||k&&k.hasOwnProperty(g)||(h||(h={}),h[g]=\"\");for(g in k)k.hasOwnProperty(g)&&l[g]!==k[g]&&(h||\n(h={}),h[g]=k[g])}else h||(a||(a=[]),a.push(c,h)),h=k;else\"dangerouslySetInnerHTML\"===c?(k=k?k.__html:void 0,l=l?l.__html:void 0,null!=k&&l!==k&&(a=a||[]).push(c,\"\"+k)):\"children\"===c?l===k||\"string\"!==typeof k&&\"number\"!==typeof k||(a=a||[]).push(c,\"\"+k):\"suppressContentEditableWarning\"!==c&&\"suppressHydrationWarning\"!==c&&(ra.hasOwnProperty(c)?(null!=k&&se(e,c),a||l===k||(a=[])):(a=a||[]).push(c,k))}h&&(a=a||[]).push(\"style\",h);e=a;(b.updateQueue=e)&&kh(b)}};oh=function(a,b,c,d){c!==d&&kh(b)};\nvar ph=\"function\"===typeof WeakSet?WeakSet:Set;function qh(a,b){var c=b.source,d=b.stack;null===d&&null!==c&&(d=jc(c));null!==c&&ic(c.type);b=b.value;null!==a&&1===a.tag&&ic(a.type);try{console.error(b)}catch(e){setTimeout(function(){throw e;})}}function rh(a){var b=a.ref;if(null!==b)if(\"function\"===typeof b)try{b(null)}catch(c){sh(a,c)}else b.current=null}\nfunction th(a,b,c){c=c.updateQueue;c=null!==c?c.lastEffect:null;if(null!==c){var d=c=c.next;do{if((d.tag&a)!==Nf){var e=d.destroy;d.destroy=void 0;void 0!==e&&e()}(d.tag&b)!==Nf&&(e=d.create,d.destroy=e());d=d.next}while(d!==c)}}\nfunction uh(a,b){for(var c=a;;){if(5===c.tag){var d=c.stateNode;if(b)d.style.display=\"none\";else{d=c.stateNode;var e=c.memoizedProps.style;e=void 0!==e&&null!==e&&e.hasOwnProperty(\"display\")?e.display:null;d.style.display=ne(\"display\",e)}}else if(6===c.tag)c.stateNode.nodeValue=b?\"\":c.memoizedProps;else if(13===c.tag&&null!==c.memoizedState){d=c.child.sibling;d.return=c;c=d;continue}else if(null!==c.child){c.child.return=c;c=c.child;continue}if(c===a)break;for(;null===c.sibling;){if(null===c.return||\nc.return===a)return;c=c.return}c.sibling.return=c.return;c=c.sibling}}\nfunction vh(a){\"function\"===typeof Re&&Re(a);switch(a.tag){case 0:case 11:case 14:case 15:var b=a.updateQueue;if(null!==b&&(b=b.lastEffect,null!==b)){var c=b=b.next;do{var d=c.destroy;if(void 0!==d){var e=a;try{d()}catch(f){sh(e,f)}}c=c.next}while(c!==b)}break;case 1:rh(a);b=a.stateNode;if(\"function\"===typeof b.componentWillUnmount)try{b.props=a.memoizedProps,b.state=a.memoizedState,b.componentWillUnmount()}catch(f){sh(a,f)}break;case 5:rh(a);break;case 4:wh(a)}}\nfunction xh(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction yh(a){a:{for(var b=a.return;null!==b;){if(xh(b)){var c=b;break a}b=b.return}x(\"160\");c=void 0}var d=b=void 0;switch(c.tag){case 5:b=c.stateNode;d=!1;break;case 3:b=c.stateNode.containerInfo;d=!0;break;case 4:b=c.stateNode.containerInfo;d=!0;break;default:x(\"161\")}c.effectTag&16&&(ke(b,\"\"),c.effectTag&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||xh(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.effectTag&\n2)continue b;if(null===c.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.effectTag&2)){c=c.stateNode;break a}}for(var e=a;;){if(5===e.tag||6===e.tag)if(c)if(d){var f=b,g=e.stateNode,h=c;8===f.nodeType?f.parentNode.insertBefore(g,h):f.insertBefore(g,h)}else b.insertBefore(e.stateNode,c);else d?(g=b,h=e.stateNode,8===g.nodeType?(f=g.parentNode,f.insertBefore(h,g)):(f=g,f.appendChild(h)),g=g._reactRootContainer,null!==g&&void 0!==g||null!==f.onclick||(f.onclick=te)):b.appendChild(e.stateNode);\nelse if(4!==e.tag&&null!==e.child){e.child.return=e;e=e.child;continue}if(e===a)break;for(;null===e.sibling;){if(null===e.return||e.return===a)return;e=e.return}e.sibling.return=e.return;e=e.sibling}}\nfunction wh(a){for(var b=a,c=!1,d=void 0,e=void 0;;){if(!c){c=b.return;a:for(;;){null===c?x(\"160\"):void 0;switch(c.tag){case 5:d=c.stateNode;e=!1;break a;case 3:d=c.stateNode.containerInfo;e=!0;break a;case 4:d=c.stateNode.containerInfo;e=!0;break a}c=c.return}c=!0}if(5===b.tag||6===b.tag){a:for(var f=b,g=f;;)if(vh(g),null!==g.child&&4!==g.tag)g.child.return=g,g=g.child;else{if(g===f)break;for(;null===g.sibling;){if(null===g.return||g.return===f)break a;g=g.return}g.sibling.return=g.return;g=g.sibling}e?\n(f=d,g=b.stateNode,8===f.nodeType?f.parentNode.removeChild(g):f.removeChild(g)):d.removeChild(b.stateNode)}else if(4===b.tag){if(null!==b.child){d=b.stateNode.containerInfo;e=!0;b.child.return=b;b=b.child;continue}}else if(vh(b),null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return;b=b.return;4===b.tag&&(c=!1)}b.sibling.return=b.return;b=b.sibling}}\nfunction zh(a,b){switch(b.tag){case 0:case 11:case 14:case 15:th(Pf,Qf,b);break;case 1:break;case 5:var c=b.stateNode;if(null!=c){var d=b.memoizedProps;a=null!==a?a.memoizedProps:d;var e=b.type,f=b.updateQueue;b.updateQueue=null;null!==f&&Ce(c,f,e,a,d,b)}break;case 6:null===b.stateNode?x(\"162\"):void 0;b.stateNode.nodeValue=b.memoizedProps;break;case 3:break;case 12:break;case 13:c=b.memoizedState;d=void 0;a=b;null===c?d=!1:(d=!0,a=b.child,0===c.timedOutAt&&(c.timedOutAt=lf()));null!==a&&uh(a,d);c=\nb.updateQueue;if(null!==c){b.updateQueue=null;var g=b.stateNode;null===g&&(g=b.stateNode=new ph);c.forEach(function(a){var c=Ah.bind(null,b,a);g.has(a)||(g.add(a),a.then(c,c))})}break;case 17:break;default:x(\"163\")}}var Bh=\"function\"===typeof WeakMap?WeakMap:Map;function Ch(a,b,c){c=nf(c);c.tag=ah;c.payload={element:null};var d=b.value;c.callback=function(){Dh(d);qh(a,b)};return c}\nfunction Eh(a,b,c){c=nf(c);c.tag=ah;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){return d(e)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){\"function\"!==typeof d&&(null===Fh?Fh=new Set([this]):Fh.add(this));var c=b.value,e=b.stack;qh(a,b);this.componentDidCatch(c,{componentStack:null!==e?e:\"\"})});return c}\nfunction Gh(a){switch(a.tag){case 1:J(a.type)&&Ke(a);var b=a.effectTag;return b&2048?(a.effectTag=b&-2049|64,a):null;case 3:return Kf(a),Le(a),b=a.effectTag,0!==(b&64)?x(\"285\"):void 0,a.effectTag=b&-2049|64,a;case 5:return Mf(a),null;case 13:return b=a.effectTag,b&2048?(a.effectTag=b&-2049|64,a):null;case 18:return null;case 4:return Kf(a),null;case 10:return Zg(a),null;default:return null}}\nvar Hh=Tb.ReactCurrentDispatcher,Ih=Tb.ReactCurrentOwner,Jh=1073741822,Kh=!1,T=null,Lh=null,U=0,Mh=-1,Nh=!1,V=null,Oh=!1,Ph=null,Qh=null,Rh=null,Fh=null;function Sh(){if(null!==T)for(var a=T.return;null!==a;){var b=a;switch(b.tag){case 1:var c=b.type.childContextTypes;null!==c&&void 0!==c&&Ke(b);break;case 3:Kf(b);Le(b);break;case 5:Mf(b);break;case 4:Kf(b);break;case 10:Zg(b)}a=a.return}Lh=null;U=0;Mh=-1;Nh=!1;T=null}\nfunction Th(){for(;null!==V;){var a=V.effectTag;a&16&&ke(V.stateNode,\"\");if(a&128){var b=V.alternate;null!==b&&(b=b.ref,null!==b&&(\"function\"===typeof b?b(null):b.current=null))}switch(a&14){case 2:yh(V);V.effectTag&=-3;break;case 6:yh(V);V.effectTag&=-3;zh(V.alternate,V);break;case 4:zh(V.alternate,V);break;case 8:a=V,wh(a),a.return=null,a.child=null,a.memoizedState=null,a.updateQueue=null,a=a.alternate,null!==a&&(a.return=null,a.child=null,a.memoizedState=null,a.updateQueue=null)}V=V.nextEffect}}\nfunction Uh(){for(;null!==V;){if(V.effectTag&256)a:{var a=V.alternate,b=V;switch(b.tag){case 0:case 11:case 15:th(Of,Nf,b);break a;case 1:if(b.effectTag&256&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===b.type?c:L(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}break a;case 3:case 5:case 6:case 4:case 17:break a;default:x(\"163\")}}V=V.nextEffect}}\nfunction Vh(a,b){for(;null!==V;){var c=V.effectTag;if(c&36){var d=V.alternate,e=V,f=b;switch(e.tag){case 0:case 11:case 15:th(Rf,Sf,e);break;case 1:var g=e.stateNode;if(e.effectTag&4)if(null===d)g.componentDidMount();else{var h=e.elementType===e.type?d.memoizedProps:L(e.type,d.memoizedProps);g.componentDidUpdate(h,d.memoizedState,g.__reactInternalSnapshotBeforeUpdate)}d=e.updateQueue;null!==d&&hh(e,d,g,f);break;case 3:d=e.updateQueue;if(null!==d){g=null;if(null!==e.child)switch(e.child.tag){case 5:g=\ne.child.stateNode;break;case 1:g=e.child.stateNode}hh(e,d,g,f)}break;case 5:f=e.stateNode;null===d&&e.effectTag&4&&we(e.type,e.memoizedProps)&&f.focus();break;case 6:break;case 4:break;case 12:break;case 13:break;case 17:break;default:x(\"163\")}}c&128&&(e=V.ref,null!==e&&(f=V.stateNode,\"function\"===typeof e?e(f):e.current=f));c&512&&(Ph=a);V=V.nextEffect}}\nfunction Wh(a,b){Rh=Qh=Ph=null;var c=W;W=!0;do{if(b.effectTag&512){var d=!1,e=void 0;try{var f=b;th(Uf,Nf,f);th(Nf,Tf,f)}catch(g){d=!0,e=g}d&&sh(b,e)}b=b.nextEffect}while(null!==b);W=c;c=a.expirationTime;0!==c&&Xh(a,c);X||W||Yh(1073741823,!1)}function of(){null!==Qh&&Be(Qh);null!==Rh&&Rh()}\nfunction Zh(a,b){Oh=Kh=!0;a.current===b?x(\"177\"):void 0;var c=a.pendingCommitExpirationTime;0===c?x(\"261\"):void 0;a.pendingCommitExpirationTime=0;var d=b.expirationTime,e=b.childExpirationTime;ef(a,e>d?e:d);Ih.current=null;d=void 0;1<b.effectTag?null!==b.lastEffect?(b.lastEffect.nextEffect=b,d=b.firstEffect):d=b:d=b.firstEffect;ue=Bd;ve=Pd();Bd=!1;for(V=d;null!==V;){e=!1;var f=void 0;try{Uh()}catch(h){e=!0,f=h}e&&(null===V?x(\"178\"):void 0,sh(V,f),null!==V&&(V=V.nextEffect))}for(V=d;null!==V;){e=!1;\nf=void 0;try{Th()}catch(h){e=!0,f=h}e&&(null===V?x(\"178\"):void 0,sh(V,f),null!==V&&(V=V.nextEffect))}Qd(ve);ve=null;Bd=!!ue;ue=null;a.current=b;for(V=d;null!==V;){e=!1;f=void 0;try{Vh(a,c)}catch(h){e=!0,f=h}e&&(null===V?x(\"178\"):void 0,sh(V,f),null!==V&&(V=V.nextEffect))}if(null!==d&&null!==Ph){var g=Wh.bind(null,a,d);Qh=r.unstable_runWithPriority(r.unstable_NormalPriority,function(){return Ae(g)});Rh=g}Kh=Oh=!1;\"function\"===typeof Qe&&Qe(b.stateNode);c=b.expirationTime;b=b.childExpirationTime;b=\nb>c?b:c;0===b&&(Fh=null);$h(a,b)}\nfunction ai(a){for(;;){var b=a.alternate,c=a.return,d=a.sibling;if(0===(a.effectTag&1024)){T=a;a:{var e=b;b=a;var f=U;var g=b.pendingProps;switch(b.tag){case 2:break;case 16:break;case 15:case 0:break;case 1:J(b.type)&&Ke(b);break;case 3:Kf(b);Le(b);g=b.stateNode;g.pendingContext&&(g.context=g.pendingContext,g.pendingContext=null);if(null===e||null===e.child)Eg(b),b.effectTag&=-3;mh(b);break;case 5:Mf(b);var h=If(Hf.current);f=b.type;if(null!==e&&null!=b.stateNode)nh(e,b,f,g,h),e.ref!==b.ref&&(b.effectTag|=\n128);else if(g){var l=If(N.current);if(Eg(b)){g=b;e=g.stateNode;var k=g.type,m=g.memoizedProps,p=h;e[Fa]=g;e[Ga]=m;f=void 0;h=k;switch(h){case \"iframe\":case \"object\":E(\"load\",e);break;case \"video\":case \"audio\":for(k=0;k<ab.length;k++)E(ab[k],e);break;case \"source\":E(\"error\",e);break;case \"img\":case \"image\":case \"link\":E(\"error\",e);E(\"load\",e);break;case \"form\":E(\"reset\",e);E(\"submit\",e);break;case \"details\":E(\"toggle\",e);break;case \"input\":wc(e,m);E(\"invalid\",e);se(p,\"onChange\");break;case \"select\":e._wrapperState=\n{wasMultiple:!!m.multiple};E(\"invalid\",e);se(p,\"onChange\");break;case \"textarea\":ce(e,m),E(\"invalid\",e),se(p,\"onChange\")}qe(h,m);k=null;for(f in m)m.hasOwnProperty(f)&&(l=m[f],\"children\"===f?\"string\"===typeof l?e.textContent!==l&&(k=[\"children\",l]):\"number\"===typeof l&&e.textContent!==\"\"+l&&(k=[\"children\",\"\"+l]):ra.hasOwnProperty(f)&&null!=l&&se(p,f));switch(h){case \"input\":Rb(e);Ac(e,m,!0);break;case \"textarea\":Rb(e);ee(e,m);break;case \"select\":case \"option\":break;default:\"function\"===typeof m.onClick&&\n(e.onclick=te)}f=k;g.updateQueue=f;g=null!==f?!0:!1;g&&kh(b)}else{m=b;p=f;e=g;k=9===h.nodeType?h:h.ownerDocument;l===fe.html&&(l=ge(p));l===fe.html?\"script\"===p?(e=k.createElement(\"div\"),e.innerHTML=\"<script>\\x3c/script>\",k=e.removeChild(e.firstChild)):\"string\"===typeof e.is?k=k.createElement(p,{is:e.is}):(k=k.createElement(p),\"select\"===p&&(p=k,e.multiple?p.multiple=!0:e.size&&(p.size=e.size))):k=k.createElementNS(l,p);e=k;e[Fa]=m;e[Ga]=g;lh(e,b,!1,!1);p=e;k=f;m=g;var t=h,A=re(k,m);switch(k){case \"iframe\":case \"object\":E(\"load\",\np);h=m;break;case \"video\":case \"audio\":for(h=0;h<ab.length;h++)E(ab[h],p);h=m;break;case \"source\":E(\"error\",p);h=m;break;case \"img\":case \"image\":case \"link\":E(\"error\",p);E(\"load\",p);h=m;break;case \"form\":E(\"reset\",p);E(\"submit\",p);h=m;break;case \"details\":E(\"toggle\",p);h=m;break;case \"input\":wc(p,m);h=vc(p,m);E(\"invalid\",p);se(t,\"onChange\");break;case \"option\":h=$d(p,m);break;case \"select\":p._wrapperState={wasMultiple:!!m.multiple};h=n({},m,{value:void 0});E(\"invalid\",p);se(t,\"onChange\");break;case \"textarea\":ce(p,\nm);h=be(p,m);E(\"invalid\",p);se(t,\"onChange\");break;default:h=m}qe(k,h);l=void 0;var v=k,R=p,u=h;for(l in u)if(u.hasOwnProperty(l)){var q=u[l];\"style\"===l?oe(R,q):\"dangerouslySetInnerHTML\"===l?(q=q?q.__html:void 0,null!=q&&je(R,q)):\"children\"===l?\"string\"===typeof q?(\"textarea\"!==v||\"\"!==q)&&ke(R,q):\"number\"===typeof q&&ke(R,\"\"+q):\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&\"autoFocus\"!==l&&(ra.hasOwnProperty(l)?null!=q&&se(t,l):null!=q&&tc(R,l,q,A))}switch(k){case \"input\":Rb(p);\nAc(p,m,!1);break;case \"textarea\":Rb(p);ee(p,m);break;case \"option\":null!=m.value&&p.setAttribute(\"value\",\"\"+uc(m.value));break;case \"select\":h=p;h.multiple=!!m.multiple;p=m.value;null!=p?ae(h,!!m.multiple,p,!1):null!=m.defaultValue&&ae(h,!!m.multiple,m.defaultValue,!0);break;default:\"function\"===typeof h.onClick&&(p.onclick=te)}(g=we(f,g))&&kh(b);b.stateNode=e}null!==b.ref&&(b.effectTag|=128)}else null===b.stateNode?x(\"166\"):void 0;break;case 6:e&&null!=b.stateNode?oh(e,b,e.memoizedProps,g):(\"string\"!==\ntypeof g&&(null===b.stateNode?x(\"166\"):void 0),e=If(Hf.current),If(N.current),Eg(b)?(g=b,f=g.stateNode,e=g.memoizedProps,f[Fa]=g,(g=f.nodeValue!==e)&&kh(b)):(f=b,g=(9===e.nodeType?e:e.ownerDocument).createTextNode(g),g[Fa]=b,f.stateNode=g));break;case 11:break;case 13:g=b.memoizedState;if(0!==(b.effectTag&64)){b.expirationTime=f;T=b;break a}g=null!==g;f=null!==e&&null!==e.memoizedState;null!==e&&!g&&f&&(e=e.child.sibling,null!==e&&(h=b.firstEffect,null!==h?(b.firstEffect=e,e.nextEffect=h):(b.firstEffect=\nb.lastEffect=e,e.nextEffect=null),e.effectTag=8));if(g||f)b.effectTag|=4;break;case 7:break;case 8:break;case 12:break;case 4:Kf(b);mh(b);break;case 10:Zg(b);break;case 9:break;case 14:break;case 17:J(b.type)&&Ke(b);break;case 18:break;default:x(\"156\")}T=null}b=a;if(1===U||1!==b.childExpirationTime){g=0;for(f=b.child;null!==f;)e=f.expirationTime,h=f.childExpirationTime,e>g&&(g=e),h>g&&(g=h),f=f.sibling;b.childExpirationTime=g}if(null!==T)return T;null!==c&&0===(c.effectTag&1024)&&(null===c.firstEffect&&\n(c.firstEffect=a.firstEffect),null!==a.lastEffect&&(null!==c.lastEffect&&(c.lastEffect.nextEffect=a.firstEffect),c.lastEffect=a.lastEffect),1<a.effectTag&&(null!==c.lastEffect?c.lastEffect.nextEffect=a:c.firstEffect=a,c.lastEffect=a))}else{a=Gh(a,U);if(null!==a)return a.effectTag&=1023,a;null!==c&&(c.firstEffect=c.lastEffect=null,c.effectTag|=1024)}if(null!==d)return d;if(null!==c)a=c;else break}return null}\nfunction bi(a){var b=Tg(a.alternate,a,U);a.memoizedProps=a.pendingProps;null===b&&(b=ai(a));Ih.current=null;return b}\nfunction ci(a,b){Kh?x(\"243\"):void 0;of();Kh=!0;var c=Hh.current;Hh.current=kg;var d=a.nextExpirationTimeToWorkOn;if(d!==U||a!==Lh||null===T)Sh(),Lh=a,U=d,T=Xe(Lh.current,null,U),a.pendingCommitExpirationTime=0;var e=!1;do{try{if(b)for(;null!==T&&!di();)T=bi(T);else for(;null!==T;)T=bi(T)}catch(u){if(Yg=Xg=Wg=null,lg(),null===T)e=!0,Dh(u);else{null===T?x(\"271\"):void 0;var f=T,g=f.return;if(null===g)e=!0,Dh(u);else{a:{var h=a,l=g,k=f,m=u;g=U;k.effectTag|=1024;k.firstEffect=k.lastEffect=null;if(null!==\nm&&\"object\"===typeof m&&\"function\"===typeof m.then){var p=m;m=l;var t=-1,A=-1;do{if(13===m.tag){var v=m.alternate;if(null!==v&&(v=v.memoizedState,null!==v)){A=10*(1073741822-v.timedOutAt);break}v=m.pendingProps.maxDuration;if(\"number\"===typeof v)if(0>=v)t=0;else if(-1===t||v<t)t=v}m=m.return}while(null!==m);m=l;do{if(v=13===m.tag)v=void 0===m.memoizedProps.fallback?!1:null===m.memoizedState;if(v){l=m.updateQueue;null===l?(l=new Set,l.add(p),m.updateQueue=l):l.add(p);if(0===(m.mode&1)){m.effectTag|=\n64;k.effectTag&=-1957;1===k.tag&&(null===k.alternate?k.tag=17:(g=nf(1073741823),g.tag=sf,pf(k,g)));k.expirationTime=1073741823;break a}k=h;l=g;var R=k.pingCache;null===R?(R=k.pingCache=new Bh,v=new Set,R.set(p,v)):(v=R.get(p),void 0===v&&(v=new Set,R.set(p,v)));v.has(l)||(v.add(l),k=ei.bind(null,k,p,l),p.then(k,k));-1===t?h=1073741823:(-1===A&&(A=10*(1073741822-gf(h,g))-5E3),h=A+t);0<=h&&Mh<h&&(Mh=h);m.effectTag|=2048;m.expirationTime=g;break a}m=m.return}while(null!==m);m=Error((ic(k.type)||\"A React component\")+\n\" suspended while rendering, but no fallback UI was specified.\\n\\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.\"+jc(k))}Nh=!0;m=jh(m,k);h=l;do{switch(h.tag){case 3:h.effectTag|=2048;h.expirationTime=g;g=Ch(h,m,g);eh(h,g);break a;case 1:if(t=m,A=h.type,k=h.stateNode,0===(h.effectTag&64)&&(\"function\"===typeof A.getDerivedStateFromError||null!==k&&\"function\"===typeof k.componentDidCatch&&(null===Fh||!Fh.has(k)))){h.effectTag|=2048;\nh.expirationTime=g;g=Eh(h,t,g);eh(h,g);break a}}h=h.return}while(null!==h)}T=ai(f);continue}}}break}while(1);Kh=!1;Hh.current=c;Yg=Xg=Wg=null;lg();if(e)Lh=null,a.finishedWork=null;else if(null!==T)a.finishedWork=null;else{c=a.current.alternate;null===c?x(\"281\"):void 0;Lh=null;if(Nh){e=a.latestPendingTime;f=a.latestSuspendedTime;g=a.latestPingedTime;if(0!==e&&e<d||0!==f&&f<d||0!==g&&g<d){ff(a,d);fi(a,c,d,a.expirationTime,-1);return}if(!a.didError&&b){a.didError=!0;d=a.nextExpirationTimeToWorkOn=d;\nb=a.expirationTime=1073741823;fi(a,c,d,b,-1);return}}b&&-1!==Mh?(ff(a,d),b=10*(1073741822-gf(a,d)),b<Mh&&(Mh=b),b=10*(1073741822-lf()),b=Mh-b,fi(a,c,d,a.expirationTime,0>b?0:b)):(a.pendingCommitExpirationTime=d,a.finishedWork=c)}}\nfunction sh(a,b){for(var c=a.return;null!==c;){switch(c.tag){case 1:var d=c.stateNode;if(\"function\"===typeof c.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===Fh||!Fh.has(d))){a=jh(b,a);a=Eh(c,a,1073741823);pf(c,a);qf(c,1073741823);return}break;case 3:a=jh(b,a);a=Ch(c,a,1073741823);pf(c,a);qf(c,1073741823);return}c=c.return}3===a.tag&&(c=jh(b,a),c=Ch(a,c,1073741823),pf(a,c),qf(a,1073741823))}\nfunction mf(a,b){var c=r.unstable_getCurrentPriorityLevel(),d=void 0;if(0===(b.mode&1))d=1073741823;else if(Kh&&!Oh)d=U;else{switch(c){case r.unstable_ImmediatePriority:d=1073741823;break;case r.unstable_UserBlockingPriority:d=1073741822-10*(((1073741822-a+15)/10|0)+1);break;case r.unstable_NormalPriority:d=1073741822-25*(((1073741822-a+500)/25|0)+1);break;case r.unstable_LowPriority:case r.unstable_IdlePriority:d=1;break;default:x(\"313\")}null!==Lh&&d===U&&--d}c===r.unstable_UserBlockingPriority&&\n(0===gi||d<gi)&&(gi=d);return d}function ei(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);if(null!==Lh&&U===c)Lh=null;else if(b=a.earliestSuspendedTime,d=a.latestSuspendedTime,0!==b&&c<=b&&c>=d){a.didError=!1;b=a.latestPingedTime;if(0===b||b>c)a.latestPingedTime=c;df(c,a);c=a.expirationTime;0!==c&&Xh(a,c)}}function Ah(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=lf();b=mf(b,a);a=hi(a,b);null!==a&&(cf(a,b),b=a.expirationTime,0!==b&&Xh(a,b))}\nfunction hi(a,b){a.expirationTime<b&&(a.expirationTime=b);var c=a.alternate;null!==c&&c.expirationTime<b&&(c.expirationTime=b);var d=a.return,e=null;if(null===d&&3===a.tag)e=a.stateNode;else for(;null!==d;){c=d.alternate;d.childExpirationTime<b&&(d.childExpirationTime=b);null!==c&&c.childExpirationTime<b&&(c.childExpirationTime=b);if(null===d.return&&3===d.tag){e=d.stateNode;break}d=d.return}return e}\nfunction qf(a,b){a=hi(a,b);null!==a&&(!Kh&&0!==U&&b>U&&Sh(),cf(a,b),Kh&&!Oh&&Lh===a||Xh(a,a.expirationTime),ii>ji&&(ii=0,x(\"185\")))}function ki(a,b,c,d,e){return r.unstable_runWithPriority(r.unstable_ImmediatePriority,function(){return a(b,c,d,e)})}var li=null,Y=null,mi=0,ni=void 0,W=!1,oi=null,Z=0,gi=0,pi=!1,qi=null,X=!1,ri=!1,si=null,ti=r.unstable_now(),ui=1073741822-(ti/10|0),vi=ui,ji=50,ii=0,wi=null;function xi(){ui=1073741822-((r.unstable_now()-ti)/10|0)}\nfunction yi(a,b){if(0!==mi){if(b<mi)return;null!==ni&&r.unstable_cancelCallback(ni)}mi=b;a=r.unstable_now()-ti;ni=r.unstable_scheduleCallback(zi,{timeout:10*(1073741822-b)-a})}function fi(a,b,c,d,e){a.expirationTime=d;0!==e||di()?0<e&&(a.timeoutHandle=ye(Ai.bind(null,a,b,c),e)):(a.pendingCommitExpirationTime=c,a.finishedWork=b)}function Ai(a,b,c){a.pendingCommitExpirationTime=c;a.finishedWork=b;xi();vi=ui;Bi(a,c)}function $h(a,b){a.expirationTime=b;a.finishedWork=null}\nfunction lf(){if(W)return vi;Ci();if(0===Z||1===Z)xi(),vi=ui;return vi}function Xh(a,b){null===a.nextScheduledRoot?(a.expirationTime=b,null===Y?(li=Y=a,a.nextScheduledRoot=a):(Y=Y.nextScheduledRoot=a,Y.nextScheduledRoot=li)):b>a.expirationTime&&(a.expirationTime=b);W||(X?ri&&(oi=a,Z=1073741823,Di(a,1073741823,!1)):1073741823===b?Yh(1073741823,!1):yi(a,b))}\nfunction Ci(){var a=0,b=null;if(null!==Y)for(var c=Y,d=li;null!==d;){var e=d.expirationTime;if(0===e){null===c||null===Y?x(\"244\"):void 0;if(d===d.nextScheduledRoot){li=Y=d.nextScheduledRoot=null;break}else if(d===li)li=e=d.nextScheduledRoot,Y.nextScheduledRoot=e,d.nextScheduledRoot=null;else if(d===Y){Y=c;Y.nextScheduledRoot=li;d.nextScheduledRoot=null;break}else c.nextScheduledRoot=d.nextScheduledRoot,d.nextScheduledRoot=null;d=c.nextScheduledRoot}else{e>a&&(a=e,b=d);if(d===Y)break;if(1073741823===\na)break;c=d;d=d.nextScheduledRoot}}oi=b;Z=a}var Ei=!1;function di(){return Ei?!0:r.unstable_shouldYield()?Ei=!0:!1}function zi(){try{if(!di()&&null!==li){xi();var a=li;do{var b=a.expirationTime;0!==b&&ui<=b&&(a.nextExpirationTimeToWorkOn=ui);a=a.nextScheduledRoot}while(a!==li)}Yh(0,!0)}finally{Ei=!1}}\nfunction Yh(a,b){Ci();if(b)for(xi(),vi=ui;null!==oi&&0!==Z&&a<=Z&&!(Ei&&ui>Z);)Di(oi,Z,ui>Z),Ci(),xi(),vi=ui;else for(;null!==oi&&0!==Z&&a<=Z;)Di(oi,Z,!1),Ci();b&&(mi=0,ni=null);0!==Z&&yi(oi,Z);ii=0;wi=null;if(null!==si)for(a=si,si=null,b=0;b<a.length;b++){var c=a[b];try{c._onComplete()}catch(d){pi||(pi=!0,qi=d)}}if(pi)throw a=qi,qi=null,pi=!1,a;}function Bi(a,b){W?x(\"253\"):void 0;oi=a;Z=b;Di(a,b,!1);Yh(1073741823,!1)}\nfunction Di(a,b,c){W?x(\"245\"):void 0;W=!0;if(c){var d=a.finishedWork;null!==d?Fi(a,d,b):(a.finishedWork=null,d=a.timeoutHandle,-1!==d&&(a.timeoutHandle=-1,ze(d)),ci(a,c),d=a.finishedWork,null!==d&&(di()?a.finishedWork=d:Fi(a,d,b)))}else d=a.finishedWork,null!==d?Fi(a,d,b):(a.finishedWork=null,d=a.timeoutHandle,-1!==d&&(a.timeoutHandle=-1,ze(d)),ci(a,c),d=a.finishedWork,null!==d&&Fi(a,d,b));W=!1}\nfunction Fi(a,b,c){var d=a.firstBatch;if(null!==d&&d._expirationTime>=c&&(null===si?si=[d]:si.push(d),d._defer)){a.finishedWork=b;a.expirationTime=0;return}a.finishedWork=null;a===wi?ii++:(wi=a,ii=0);r.unstable_runWithPriority(r.unstable_ImmediatePriority,function(){Zh(a,b)})}function Dh(a){null===oi?x(\"246\"):void 0;oi.expirationTime=0;pi||(pi=!0,qi=a)}function Gi(a,b){var c=X;X=!0;try{return a(b)}finally{(X=c)||W||Yh(1073741823,!1)}}\nfunction Hi(a,b){if(X&&!ri){ri=!0;try{return a(b)}finally{ri=!1}}return a(b)}function Ii(a,b,c){X||W||0===gi||(Yh(gi,!1),gi=0);var d=X;X=!0;try{return r.unstable_runWithPriority(r.unstable_UserBlockingPriority,function(){return a(b,c)})}finally{(X=d)||W||Yh(1073741823,!1)}}\nfunction Ji(a,b,c,d,e){var f=b.current;a:if(c){c=c._reactInternalFiber;b:{2===ed(c)&&1===c.tag?void 0:x(\"170\");var g=c;do{switch(g.tag){case 3:g=g.stateNode.context;break b;case 1:if(J(g.type)){g=g.stateNode.__reactInternalMemoizedMergedChildContext;break b}}g=g.return}while(null!==g);x(\"171\");g=void 0}if(1===c.tag){var h=c.type;if(J(h)){c=Ne(c,h,g);break a}}c=g}else c=He;null===b.context?b.context=c:b.pendingContext=c;b=e;e=nf(d);e.payload={element:a};b=void 0===b?null:b;null!==b&&(e.callback=b);\nof();pf(f,e);qf(f,d);return d}function Ki(a,b,c,d){var e=b.current,f=lf();e=mf(f,e);return Ji(a,b,c,e,d)}function Li(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function Mi(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:Wb,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\nAb=function(a,b,c){switch(b){case \"input\":yc(a,c);b=c.name;if(\"radio\"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+b)+'][type=\"radio\"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Ka(d);e?void 0:x(\"90\");Sb(d);yc(d,e)}}}break;case \"textarea\":de(a,c);break;case \"select\":b=c.value,null!=b&&ae(a,!!c.multiple,b,!1)}};\nfunction Ni(a){var b=1073741822-25*(((1073741822-lf()+500)/25|0)+1);b>=Jh&&(b=Jh-1);this._expirationTime=Jh=b;this._root=a;this._callbacks=this._next=null;this._hasChildren=this._didComplete=!1;this._children=null;this._defer=!0}Ni.prototype.render=function(a){this._defer?void 0:x(\"250\");this._hasChildren=!0;this._children=a;var b=this._root._internalRoot,c=this._expirationTime,d=new Oi;Ji(a,b,null,c,d._onCommit);return d};\nNi.prototype.then=function(a){if(this._didComplete)a();else{var b=this._callbacks;null===b&&(b=this._callbacks=[]);b.push(a)}};\nNi.prototype.commit=function(){var a=this._root._internalRoot,b=a.firstBatch;this._defer&&null!==b?void 0:x(\"251\");if(this._hasChildren){var c=this._expirationTime;if(b!==this){this._hasChildren&&(c=this._expirationTime=b._expirationTime,this.render(this._children));for(var d=null,e=b;e!==this;)d=e,e=e._next;null===d?x(\"251\"):void 0;d._next=e._next;this._next=b;a.firstBatch=this}this._defer=!1;Bi(a,c);b=this._next;this._next=null;b=a.firstBatch=b;null!==b&&b._hasChildren&&b.render(b._children)}else this._next=\nnull,this._defer=!1};Ni.prototype._onComplete=function(){if(!this._didComplete){this._didComplete=!0;var a=this._callbacks;if(null!==a)for(var b=0;b<a.length;b++)(0,a[b])()}};function Oi(){this._callbacks=null;this._didCommit=!1;this._onCommit=this._onCommit.bind(this)}Oi.prototype.then=function(a){if(this._didCommit)a();else{var b=this._callbacks;null===b&&(b=this._callbacks=[]);b.push(a)}};\nOi.prototype._onCommit=function(){if(!this._didCommit){this._didCommit=!0;var a=this._callbacks;if(null!==a)for(var b=0;b<a.length;b++){var c=a[b];\"function\"!==typeof c?x(\"191\",c):void 0;c()}}};\nfunction Pi(a,b,c){b=K(3,null,null,b?3:0);a={current:b,containerInfo:a,pendingChildren:null,pingCache:null,earliestPendingTime:0,latestPendingTime:0,earliestSuspendedTime:0,latestSuspendedTime:0,latestPingedTime:0,didError:!1,pendingCommitExpirationTime:0,finishedWork:null,timeoutHandle:-1,context:null,pendingContext:null,hydrate:c,nextExpirationTimeToWorkOn:0,expirationTime:0,firstBatch:null,nextScheduledRoot:null};this._internalRoot=b.stateNode=a}\nPi.prototype.render=function(a,b){var c=this._internalRoot,d=new Oi;b=void 0===b?null:b;null!==b&&d.then(b);Ki(a,c,null,d._onCommit);return d};Pi.prototype.unmount=function(a){var b=this._internalRoot,c=new Oi;a=void 0===a?null:a;null!==a&&c.then(a);Ki(null,b,null,c._onCommit);return c};Pi.prototype.legacy_renderSubtreeIntoContainer=function(a,b,c){var d=this._internalRoot,e=new Oi;c=void 0===c?null:c;null!==c&&e.then(c);Ki(b,d,a,e._onCommit);return e};\nPi.prototype.createBatch=function(){var a=new Ni(this),b=a._expirationTime,c=this._internalRoot,d=c.firstBatch;if(null===d)c.firstBatch=a,a._next=null;else{for(c=null;null!==d&&d._expirationTime>=b;)c=d,d=d._next;a._next=d;null!==c&&(c._next=a)}return a};function Qi(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}Gb=Gi;Hb=Ii;Ib=function(){W||0===gi||(Yh(gi,!1),gi=0)};\nfunction Ri(a,b){b||(b=a?9===a.nodeType?a.documentElement:a.firstChild:null,b=!(!b||1!==b.nodeType||!b.hasAttribute(\"data-reactroot\")));if(!b)for(var c;c=a.lastChild;)a.removeChild(c);return new Pi(a,!1,b)}\nfunction Si(a,b,c,d,e){var f=c._reactRootContainer;if(f){if(\"function\"===typeof e){var g=e;e=function(){var a=Li(f._internalRoot);g.call(a)}}null!=a?f.legacy_renderSubtreeIntoContainer(a,b,e):f.render(b,e)}else{f=c._reactRootContainer=Ri(c,d);if(\"function\"===typeof e){var h=e;e=function(){var a=Li(f._internalRoot);h.call(a)}}Hi(function(){null!=a?f.legacy_renderSubtreeIntoContainer(a,b,e):f.render(b,e)})}return Li(f._internalRoot)}\nfunction Ti(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;Qi(b)?void 0:x(\"200\");return Mi(a,b,null,c)}\nvar Vi={createPortal:Ti,findDOMNode:function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternalFiber;void 0===b&&(\"function\"===typeof a.render?x(\"188\"):x(\"268\",Object.keys(a)));a=hd(b);a=null===a?null:a.stateNode;return a},hydrate:function(a,b,c){Qi(b)?void 0:x(\"200\");return Si(null,a,b,!0,c)},render:function(a,b,c){Qi(b)?void 0:x(\"200\");return Si(null,a,b,!1,c)},unstable_renderSubtreeIntoContainer:function(a,b,c,d){Qi(c)?void 0:x(\"200\");null==a||void 0===a._reactInternalFiber?\nx(\"38\"):void 0;return Si(a,b,c,!1,d)},unmountComponentAtNode:function(a){Qi(a)?void 0:x(\"40\");return a._reactRootContainer?(Hi(function(){Si(null,null,a,!1,function(){a._reactRootContainer=null})}),!0):!1},unstable_createPortal:function(){return Ti.apply(void 0,arguments)},unstable_batchedUpdates:Gi,unstable_interactiveUpdates:Ii,flushSync:function(a,b){W?x(\"187\"):void 0;var c=X;X=!0;try{return ki(a,b)}finally{X=c,Yh(1073741823,!1)}},unstable_createRoot:Ui,unstable_flushControlled:function(a){var b=\nX;X=!0;try{ki(a)}finally{(X=b)||W||Yh(1073741823,!1)}},__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:{Events:[Ia,Ja,Ka,Ba.injectEventPluginsByName,pa,Qa,function(a){ya(a,Pa)},Eb,Fb,Dd,Da]}};function Ui(a,b){Qi(a)?void 0:x(\"299\",\"unstable_createRoot\");return new Pi(a,!0,null!=b&&!0===b.hydrate)}\n(function(a){var b=a.findFiberByHostInstance;return Te(n({},a,{overrideProps:null,currentDispatcherRef:Tb.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=hd(a);return null===a?null:a.stateNode},findFiberByHostInstance:function(a){return b?b(a):null}}))})({findFiberByHostInstance:Ha,bundleType:0,version:\"16.8.6\",rendererPackageName:\"react-dom\"});var Wi={default:Vi},Xi=Wi&&Vi||Wi;module.exports=Xi.default||Xi;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","/** @license React v0.13.6\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';Object.defineProperty(exports,\"__esModule\",{value:!0});var d=null,e=!1,g=3,k=-1,l=-1,m=!1,n=!1;function p(){if(!m){var a=d.expirationTime;n?q():n=!0;r(t,a)}}\nfunction u(){var a=d,b=d.next;if(d===b)d=null;else{var c=d.previous;d=c.next=b;b.previous=c}a.next=a.previous=null;c=a.callback;b=a.expirationTime;a=a.priorityLevel;var f=g,Q=l;g=a;l=b;try{var h=c()}finally{g=f,l=Q}if(\"function\"===typeof h)if(h={callback:h,priorityLevel:a,expirationTime:b,next:null,previous:null},null===d)d=h.next=h.previous=h;else{c=null;a=d;do{if(a.expirationTime>=b){c=a;break}a=a.next}while(a!==d);null===c?c=d:c===d&&(d=h,p());b=c.previous;b.next=c.previous=h;h.next=c;h.previous=\nb}}function v(){if(-1===k&&null!==d&&1===d.priorityLevel){m=!0;try{do u();while(null!==d&&1===d.priorityLevel)}finally{m=!1,null!==d?p():n=!1}}}function t(a){m=!0;var b=e;e=a;try{if(a)for(;null!==d;){var c=exports.unstable_now();if(d.expirationTime<=c){do u();while(null!==d&&d.expirationTime<=c)}else break}else if(null!==d){do u();while(null!==d&&!w())}}finally{m=!1,e=b,null!==d?p():n=!1,v()}}\nvar x=Date,y=\"function\"===typeof setTimeout?setTimeout:void 0,z=\"function\"===typeof clearTimeout?clearTimeout:void 0,A=\"function\"===typeof requestAnimationFrame?requestAnimationFrame:void 0,B=\"function\"===typeof cancelAnimationFrame?cancelAnimationFrame:void 0,C,D;function E(a){C=A(function(b){z(D);a(b)});D=y(function(){B(C);a(exports.unstable_now())},100)}\nif(\"object\"===typeof performance&&\"function\"===typeof performance.now){var F=performance;exports.unstable_now=function(){return F.now()}}else exports.unstable_now=function(){return x.now()};var r,q,w,G=null;\"undefined\"!==typeof window?G=window:\"undefined\"!==typeof global&&(G=global);\nif(G&&G._schedMock){var H=G._schedMock;r=H[0];q=H[1];w=H[2];exports.unstable_now=H[3]}else if(\"undefined\"===typeof window||\"function\"!==typeof MessageChannel){var I=null,J=function(a){if(null!==I)try{I(a)}finally{I=null}};r=function(a){null!==I?setTimeout(r,0,a):(I=a,setTimeout(J,0,!1))};q=function(){I=null};w=function(){return!1}}else{\"undefined\"!==typeof console&&(\"function\"!==typeof A&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\"),\n\"function\"!==typeof B&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\"));var K=null,L=!1,M=-1,N=!1,O=!1,P=0,R=33,S=33;w=function(){return P<=exports.unstable_now()};var T=new MessageChannel,U=T.port2;T.port1.onmessage=function(){L=!1;var a=K,b=M;K=null;M=-1;var c=exports.unstable_now(),f=!1;if(0>=P-c)if(-1!==b&&b<=c)f=!0;else{N||(N=!0,E(V));K=a;M=b;return}if(null!==a){O=!0;try{a(f)}finally{O=!1}}};\nvar V=function(a){if(null!==K){E(V);var b=a-P+S;b<S&&R<S?(8>b&&(b=8),S=b<R?R:b):R=b;P=a+S;L||(L=!0,U.postMessage(void 0))}else N=!1};r=function(a,b){K=a;M=b;O||0>b?U.postMessage(void 0):N||(N=!0,E(V))};q=function(){K=null;L=!1;M=-1}}exports.unstable_ImmediatePriority=1;exports.unstable_UserBlockingPriority=2;exports.unstable_NormalPriority=3;exports.unstable_IdlePriority=5;exports.unstable_LowPriority=4;\nexports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=g,f=k;g=a;k=exports.unstable_now();try{return b()}finally{g=c,k=f,v()}};exports.unstable_next=function(a){switch(g){case 1:case 2:case 3:var b=3;break;default:b=g}var c=g,f=k;g=b;k=exports.unstable_now();try{return a()}finally{g=c,k=f,v()}};\nexports.unstable_scheduleCallback=function(a,b){var c=-1!==k?k:exports.unstable_now();if(\"object\"===typeof b&&null!==b&&\"number\"===typeof b.timeout)b=c+b.timeout;else switch(g){case 1:b=c+-1;break;case 2:b=c+250;break;case 5:b=c+1073741823;break;case 4:b=c+1E4;break;default:b=c+5E3}a={callback:a,priorityLevel:g,expirationTime:b,next:null,previous:null};if(null===d)d=a.next=a.previous=a,p();else{c=null;var f=d;do{if(f.expirationTime>b){c=f;break}f=f.next}while(f!==d);null===c?c=d:c===d&&(d=a,p());\nb=c.previous;b.next=c.previous=a;a.next=c;a.previous=b}return a};exports.unstable_cancelCallback=function(a){var b=a.next;if(null!==b){if(b===a)d=null;else{a===d&&(d=b);var c=a.previous;c.next=b;b.previous=c}a.next=a.previous=null}};exports.unstable_wrapCallback=function(a){var b=g;return function(){var c=g,f=k;g=b;k=exports.unstable_now();try{return a.apply(this,arguments)}finally{g=c,k=f,v()}}};exports.unstable_getCurrentPriorityLevel=function(){return g};\nexports.unstable_shouldYield=function(){return!e&&(null!==d&&d.expirationTime<l||w())};exports.unstable_continueExecution=function(){null!==d&&p()};exports.unstable_pauseExecution=function(){};exports.unstable_getFirstCallbackNode=function(){return d};\n","var 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","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports['default'] = autoBind;\nvar wontBind = ['constructor', 'render', 'componentWillMount', 'componentDidMount', 'componentWillReceiveProps', 'shouldComponentUpdate', 'componentWillUpdate', 'componentDidUpdate', 'componentWillUnmount'];\n\nvar toBind = [];\n\nfunction autoBind(context) {\n if (context === undefined) {\n console.error('Autobind error: No context provided.');\n return;\n }\n\n var objPrototype = Object.getPrototypeOf(context);\n\n if (arguments.length > 1) {\n // If a list of methods to bind is provided, use it.\n toBind = Array.prototype.slice.call(arguments, 1);\n } else {\n // If no list of methods to bind is provided, bind all available methods in class.\n toBind = Object.getOwnPropertyNames(objPrototype);\n }\n\n toBind.forEach(function (method) {\n var descriptor = Object.getOwnPropertyDescriptor(objPrototype, method);\n\n if (descriptor === undefined) {\n console.warn('Autobind: \"' + method + '\" method not found in class.');\n return;\n }\n\n // Return if it's special case function or if not a function at all\n if (wontBind.indexOf(method) !== -1 || typeof descriptor.value !== 'function') {\n return;\n }\n\n Object.defineProperty(objPrototype, method, boundMethod(objPrototype, method, descriptor));\n });\n}\n\n/**\n* From autobind-decorator (https://github.com/andreypopp/autobind-decorator/tree/master)\n* Return a descriptor removing the value and returning a getter\n* The getter will return a .bind version of the function\n* and memoize the result against a symbol on the instance\n*/\nfunction boundMethod(objPrototype, method, descriptor) {\n var fn = descriptor.value;\n\n return {\n configurable: true,\n get: function get() {\n if (this === objPrototype || this.hasOwnProperty(method)) {\n return fn;\n }\n\n var boundFn = fn.bind(this);\n Object.defineProperty(this, method, {\n value: boundFn,\n configurable: true,\n writable: true\n });\n return boundFn;\n }\n };\n}\nmodule.exports = exports['default'];\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/*!\n * jQuery JavaScript Library v3.4.1\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2019-05-01T21:04Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar document = window.document;\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar concat = arr.concat;\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n // Support: Chrome <=57, Firefox <=52\n // In some browsers, typeof returns \"function\" for HTML <object> elements\n // (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n // We don't want to classify *any* DOM node as a function.\n return typeof obj === \"function\" && typeof obj.nodeType !== \"number\";\n };\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.4.1\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// Support: Android <=4.0 only\n\t// Make sure we trim BOM and NBSP\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a global context\n\tglobalEval: function( code, options ) {\n\t\tDOMEval( code, { nonce: options && options.nonce } );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Support: Android <=4.0 only\n\ttrim: function( text ) {\n\t\treturn text == null ?\n\t\t\t\"\" :\n\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\nfunction( i, name ) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.4\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2019-04-08\n */\n(function( window ) {\n\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ({}).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpush_native = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = \"(?:\\\\\\\\.|[\\\\w-]|[^\\0-\\\\xa0])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace +\n\t\t\"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trhtml = /HTML$/i,\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\n\tfunescape = function( _, escaped, escapedWhitespace ) {\n\t\tvar high = \"0x\" + escaped - 0x10000;\n\t\t// NaN means non-codepoint\n\t\t// Support: Firefox<24\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\n\t\treturn high !== high || escapedWhitespace ?\n\t\t\tescaped :\n\t\t\thigh < 0 ?\n\t\t\t\t// BMP codepoint\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t(arr = slice.call( preferredDoc.childNodes )),\n\t\tpreferredDoc.childNodes\n\t);\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpush_native.apply( target, slice.call(els) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\n\t\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\t\tsetDocument( context );\n\t\t}\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( (m = match[1]) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( (elem = context.getElementById( m )) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && (elem = newContext.getElementById( m )) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[2] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t(!rbuggyQSA || !rbuggyQSA.test( selector )) &&\n\n\t\t\t\t// Support: IE 8 only\n\t\t\t\t// Exclude object elements\n\t\t\t\t(nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\") ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 && rdescend.test( selector ) ) {\n\n\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\tif ( (nid = context.getAttribute( \"id\" )) ) {\n\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", (nid = expando) );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[i] = \"#\" + nid + \" \" + toSelector( groups[i] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn (cache[ key + \" \" ] = value);\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement(\"fieldset\");\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split(\"|\"),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[i] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( (cur = cur.nextSibling) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\tvar namespace = elem.namespaceURI,\n\t\tdocElem = (elem.ownerDocument || elem).documentElement;\n\n\t// Support: IE <=8\n\t// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n\t// https://bugs.jquery.com/ticket/4833\n\treturn !rhtml.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9-11, Edge\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\tif ( preferredDoc !== document &&\n\t\t(subWindow = document.defaultView) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert(function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute(\"className\");\n\t});\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert(function( el ) {\n\t\tel.appendChild( document.createComment(\"\") );\n\t\treturn !el.getElementsByTagName(\"*\").length;\n\t});\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert(function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t});\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute(\"id\") === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode(\"id\");\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode(\"id\");\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( (elem = elems[i++]) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode(\"id\");\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[\"TAG\"] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( (elem = results[i++]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[\"CLASS\"] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( (support.qsa = rnative.test( document.querySelectorAll )) ) {\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( el ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"<a id='\" + expando + \"'></a>\" +\n\t\t\t\t\"<select id='\" + expando + \"-\\r\\\\' msallowcapture=''>\" +\n\t\t\t\t\"<option selected=''></option></select>\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll(\"[msallowcapture^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push(\"~=\");\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( el ) {\n\t\t\tel.innerHTML = \"<a href='' disabled='disabled'></a>\" +\n\t\t\t\t\"<select disabled='disabled'><option/></select>\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement(\"input\");\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll(\"[name=d]\").length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll(\":enabled\").length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll(\":disabled\").length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll(\"*,:x\");\n\t\t\trbuggyQSA.push(\",.*:\");\n\t\t});\n\t}\n\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector) )) ) {\n\n\t\tassert(function( el ) {\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t});\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t));\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( (b = b.parentNode) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\tif ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\t\t\treturn a === document ? -1 :\n\t\t\t\tb === document ? 1 :\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[i] === bp[i] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\t// Set document vars if needed\n\tif ( ( context.ownerDocument || context ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn (sel + \"\").replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( (elem = results[i++]) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( (node = elem[i++]) ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[1] = match[1].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[3] || match[4] || match[5] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[3] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[3] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[6] && match[2];\n\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[4] || match[5] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() { return true; } :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\" );\n\t\t\t\t});\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction(function( selector ) {\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[0] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t}),\n\n\t\t\"has\": markFunction(function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t}),\n\n\t\t\"contains\": markFunction(function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t}),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ?\n\t\t\t\targument + length :\n\t\t\t\targument > length ?\n\t\t\t\t\tlength :\n\t\t\t\t\targument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( (tokens = []) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push({\n\t\t\t\tvalue: matched,\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\n\t\t\t});\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push({\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t});\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[i].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( (oldCache = uniqueCache[ key ]) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", outermost ),\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context === document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching elements by id\n\t\t\tfor ( ; i !== len && (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\tif ( !context && elem.ownerDocument !== document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (matcher = setMatchers[j++]) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[0] = match[0].slice( 0 );\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {\n\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[i];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( (seed = find(\n\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\n\t\t\t\t)) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert(function( el ) {\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement(\"fieldset\") ) & 1;\n});\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert(function( el ) {\n\tel.innerHTML = \"<a href='#'></a>\";\n\treturn el.firstChild.getAttribute(\"href\") === \"#\" ;\n}) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert(function( el ) {\n\tel.innerHTML = \"<input/>\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n}) ) {\n\taddHandle( \"value\", function( elem, name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert(function( el ) {\n\treturn el.getAttribute(\"disabled\") == null;\n}) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\tnull;\n\t\t}\n\t});\n}\n\nreturn Sizzle;\n\n})( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n};\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( typeof elem.contentDocument !== \"undefined\" ) {\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the master Deferred\n\t\t\tmaster = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tmaster.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( master.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn master.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), master.reject );\n\t\t}\n\n\t\treturn master.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\tvalue :\n\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (#9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\nvar swap = function( elem, options, callback, args ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.apply( elem, args || [] );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// Support: IE <=9 only\n\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting <tbody> or other required elements.\n\tthead: [ 1, \"<table>\", \"</table>\" ],\n\tcol: [ 2, \"<table><colgroup>\", \"</colgroup></table>\" ],\n\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\n// Support: IE <=9 only\nwrapMap.optgroup = wrapMap.option;\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"<textarea>x</textarea>\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n} )();\n\n\nvar\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 - 11+\n// focus() and blur() are asynchronous, except when they are no-op.\n// So expect focus to be synchronous when the element is already active,\n// and blur to be synchronous when the element is not already active.\n// (focus and blur are always synchronous in other supported browsers,\n// this just defines when we can count on it).\nfunction expectSync( elem, type ) {\n\treturn ( elem === safeActiveElement() ) === ( type === \"focus\" );\n}\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = {};\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tvar event = jQuery.event.fix( nativeEvent );\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\t\t\thandlers = ( dataPriv.get( this, \"events\" ) || {} )[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG <use> instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", returnTrue );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, expectSync ) {\n\n\t// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !expectSync ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar notAsync, result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\t// Saved data should be false in such cases, but might be a leftover capture object\n\t\t\t\t// from an async native handler (gh-4350)\n\t\t\t\tif ( !saved.length ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t// focus() and blur() are asynchronous\n\t\t\t\t\tnotAsync = expectSync( this, type );\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tif ( saved !== result || notAsync ) {\n\t\t\t\t\t\tdataPriv.set( this, type, false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = {};\n\t\t\t\t\t}\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\treturn result.value;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering the\n\t\t\t\t// native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved.length ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, {\n\t\t\t\t\tvalue: jQuery.event.trigger(\n\n\t\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t\t// Extend with the prototype to reset the above stopImmediatePropagation()\n\t\t\t\t\t\tjQuery.extend( saved[ 0 ], jQuery.Event.prototype ),\n\t\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\t\tthis\n\t\t\t\t\t)\n\t\t\t\t} );\n\n\t\t\t\t// Abort handling of the native event\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (#504, #13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\n\twhich: function( event ) {\n\t\tvar button = event.button;\n\n\t\t// Add which for key events\n\t\tif ( event.which == null && rkeyEvent.test( event.type ) ) {\n\t\t\treturn event.charCode != null ? event.charCode : event.keyCode;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\tif ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {\n\t\t\tif ( button & 1 ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\tif ( button & 2 ) {\n\t\t\t\treturn 3;\n\t\t\t}\n\n\t\t\tif ( button & 4 ) {\n\t\t\t\treturn 2;\n\t\t\t}\n\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn event.which;\n\t}\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, expectSync );\n\n\t\t\t// Return false to allow normal processing in the caller\n\t\t\treturn false;\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t/* eslint-disable max-len */\n\n\t// See https://github.com/eslint/eslint/issues/3229\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)[^>]*)\\/>/gi,\n\n\t/* eslint-enable */\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /<script|<style|<link/i,\n\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.access( src );\n\t\tpdataCur = dataPriv.set( dest, pdataOld );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdelete pdataCur.handle;\n\t\t\tpdataCur.events = {};\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = concat.apply( [], args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html.replace( rxhtmlTag, \"<$1></$2>\" );\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, #12537)\n\t// .css('--customProperty) (#3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trcustomProp = /^--/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t// This happens for inline elements with no explicit setting (gh-3571)\n\t// Support: Android <=4.1 - 4.3 only\n\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t// Support: IE 9-11 only\n\t// Also use offsetWidth/offsetHeight for when box sizing is unreliable\n\t// We use getClientRects() to check for hidden/disconnected.\n\t// In those cases, the computed value can be trusted to be border-box\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\t\tval === \"auto\" ||\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"gridArea\": true,\n\t\t\"gridColumn\": true,\n\t\t\"gridColumnEnd\": true,\n\t\t\"gridColumnStart\": true,\n\t\t\"gridRow\": true,\n\t\t\"gridRowEnd\": true,\n\t\t\"gridRowStart\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t\t} ) :\n\t\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\t\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue && type !== false ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = classesToArray( value );\n\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || {} )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = Date.now();\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {\n\t\txml = undefined;\n\t}\n\n\tif ( !xml || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\tjQuery.error( \"Invalid XML: \" + data );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} )\n\t\t.filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} )\n\t\t.map( function( i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\toriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce++ ) + uncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\n\njQuery._evalUrl = function( url, options ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"<script>\" )\n\t\t\t\t\t.attr( s.scriptAttrs || {} )\n\t\t\t\t\t.prop( { charset: s.scriptCharset, src: s.url } )\n\t\t\t\t\t.on( \"load error\", callback = function( evt ) {\n\t\t\t\t\t\tscript.remove();\n\t\t\t\t\t\tcallback = null;\n\t\t\t\t\t\tif ( evt ) {\n\t\t\t\t\t\t\tcomplete( evt.type === \"error\" ? 404 : 200, evt.type );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\tdocument.head.appendChild( script[ 0 ] );\n\t\t\t},\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup( {\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n} );\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t\"url\" :\n\t\t\ttypeof s.data === \"string\" &&\n\t\t\t\t( s.contentType || \"\" )\n\t\t\t\t\t.indexOf( \"application/x-www-form-urlencoded\" ) === 0 &&\n\t\t\t\trjsonp.test( s.data ) && \"data\"\n\t\t);\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( jsonProp || s.dataTypes[ 0 ] === \"jsonp\" ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\n\t\t// Insert callback into url or form data\n\t\tif ( jsonProp ) {\n\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( s.jsonp !== false ) {\n\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[ \"script json\" ] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// Force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\toverwritten = window[ callbackName ];\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always( function() {\n\n\t\t\t// If previous value didn't exist - remove it\n\t\t\tif ( overwritten === undefined ) {\n\t\t\t\tjQuery( window ).removeProp( callbackName );\n\n\t\t\t// Otherwise restore preexisting value\n\t\t\t} else {\n\t\t\t\twindow[ callbackName ] = overwritten;\n\t\t\t}\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\n\t\t\t\t// Make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// Save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t} );\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Support: Safari 8 only\n// In Safari 8 documents created via document.implementation.createHTMLDocument\n// collapse sibling forms: the second one becomes a child of the first one.\n// Because of that, this security measure has to be disabled in Safari 8.\n// https://bugs.webkit.org/show_bug.cgi?id=137337\nsupport.createHTMLDocument = ( function() {\n\tvar body = document.implementation.createHTMLDocument( \"\" ).body;\n\tbody.innerHTML = \"<form></form><form></form>\";\n\treturn body.childNodes.length === 2;\n} )();\n\n\n// Argument \"data\" should be string of html\n// context (optional): If specified, the fragment will be created in this context,\n// defaults to document\n// keepScripts (optional): If true, will include scripts passed in the html string\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( typeof data !== \"string\" ) {\n\t\treturn [];\n\t}\n\tif ( typeof context === \"boolean\" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\n\tvar base, parsed, scripts;\n\n\tif ( !context ) {\n\n\t\t// Stop scripts or inline event handlers from being executed immediately\n\t\t// by using document.implementation\n\t\tif ( support.createHTMLDocument ) {\n\t\t\tcontext = document.implementation.createHTMLDocument( \"\" );\n\n\t\t\t// Set the base href for the created document\n\t\t\t// so any parsed elements with URLs\n\t\t\t// are based on the document's URL (gh-2965)\n\t\t\tbase = context.createElement( \"base\" );\n\t\t\tbase.href = document.location.href;\n\t\t\tcontext.head.appendChild( base );\n\t\t} else {\n\t\t\tcontext = document;\n\t\t}\n\t}\n\n\tparsed = rsingleTag.exec( data );\n\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[ 1 ] ) ];\n\t}\n\n\tparsed = buildFragment( [ data ], context, scripts );\n\n\tif ( scripts && scripts.length ) {\n\t\tjQuery( scripts ).remove();\n\t}\n\n\treturn jQuery.merge( [], parsed.childNodes );\n};\n\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf( \" \" );\n\n\tif ( off > -1 ) {\n\t\tselector = stripAndCollapse( url.slice( off ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax( {\n\t\t\turl: url,\n\n\t\t\t// If \"type\" variable is undefined, then \"GET\" method will be used.\n\t\t\t// Make value of this field explicit since\n\t\t\t// user can override it through ajaxSetup method\n\t\t\ttype: type || \"GET\",\n\t\t\tdataType: \"html\",\n\t\t\tdata: params\n\t\t} ).done( function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\t\t\t\tjQuery( \"<div>\" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t// If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n\t\t// but they are ignored because response was set above.\n\t\t// If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n\t\t} ).always( callback && function( jqXHR, status ) {\n\t\t\tself.each( function() {\n\t\t\t\tcallback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t} );\n\t\t} );\n\t}\n\n\treturn this;\n};\n\n\n\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( [\n\t\"ajaxStart\",\n\t\"ajaxStop\",\n\t\"ajaxComplete\",\n\t\"ajaxError\",\n\t\"ajaxSuccess\",\n\t\"ajaxSend\"\n], function( i, type ) {\n\tjQuery.fn[ type ] = function( fn ) {\n\t\treturn this.on( type, fn );\n\t};\n} );\n\n\n\n\njQuery.expr.pseudos.animated = function( elem ) {\n\treturn jQuery.grep( jQuery.timers, function( fn ) {\n\t\treturn elem === fn.elem;\n\t} ).length;\n};\n\n\n\n\njQuery.offset = {\n\tsetOffset: function( elem, options, i ) {\n\t\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\n\t\t\tposition = jQuery.css( elem, \"position\" ),\n\t\t\tcurElem = jQuery( elem ),\n\t\t\tprops = {};\n\n\t\t// Set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tcurOffset = curElem.offset();\n\t\tcurCSSTop = jQuery.css( elem, \"top\" );\n\t\tcurCSSLeft = jQuery.css( elem, \"left\" );\n\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) &&\n\t\t\t( curCSSTop + curCSSLeft ).indexOf( \"auto\" ) > -1;\n\n\t\t// Need to be able to calculate position if either\n\t\t// top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( isFunction( options ) ) {\n\n\t\t\t// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n\t\t\toptions = options.call( elem, i, jQuery.extend( {}, curOffset ) );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend( {\n\n\t// offset() relates an element's border box to the document origin\n\toffset: function( options ) {\n\n\t\t// Preserve chaining for setter\n\t\tif ( arguments.length ) {\n\t\t\treturn options === undefined ?\n\t\t\t\tthis :\n\t\t\t\tthis.each( function( i ) {\n\t\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t\t} );\n\t\t}\n\n\t\tvar rect, win,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Return zeros for disconnected and hidden (display: none) elements (gh-2310)\n\t\t// Support: IE <=11 only\n\t\t// Running getBoundingClientRect on a\n\t\t// disconnected node in IE throws an error\n\t\tif ( !elem.getClientRects().length ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\t// Get document-relative position by adding viewport scroll to viewport-relative gBCR\n\t\trect = elem.getBoundingClientRect();\n\t\twin = elem.ownerDocument.defaultView;\n\t\treturn {\n\t\t\ttop: rect.top + win.pageYOffset,\n\t\t\tleft: rect.left + win.pageXOffset\n\t\t};\n\t},\n\n\t// position() relates an element's margin box to its offset parent's padding box\n\t// This corresponds to the behavior of CSS absolute positioning\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset, doc,\n\t\t\telem = this[ 0 ],\n\t\t\tparentOffset = { top: 0, left: 0 };\n\n\t\t// position:fixed elements are offset from the viewport, which itself always has zero offset\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\n\t\t\t// Assume position:fixed implies availability of getBoundingClientRect\n\t\t\toffset = elem.getBoundingClientRect();\n\n\t\t} else {\n\t\t\toffset = this.offset();\n\n\t\t\t// Account for the *real* offset parent, which can be the document or its root element\n\t\t\t// when a statically positioned element is identified\n\t\t\tdoc = elem.ownerDocument;\n\t\t\toffsetParent = elem.offsetParent || doc.documentElement;\n\t\t\twhile ( offsetParent &&\n\t\t\t\t( offsetParent === doc.body || offsetParent === doc.documentElement ) &&\n\t\t\t\tjQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\n\t\t\t\toffsetParent = offsetParent.parentNode;\n\t\t\t}\n\t\t\tif ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {\n\n\t\t\t\t// Incorporate borders into its offset, since they are outside its content origin\n\t\t\t\tparentOffset = jQuery( offsetParent ).offset();\n\t\t\t\tparentOffset.top += jQuery.css( offsetParent, \"borderTopWidth\", true );\n\t\t\t\tparentOffset.left += jQuery.css( offsetParent, \"borderLeftWidth\", true );\n\t\t\t}\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\treturn {\n\t\t\ttop: offset.top - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true )\n\t\t};\n\t},\n\n\t// This method will return documentElement in the following cases:\n\t// 1) For the element inside the iframe without offsetParent, this method will return\n\t// documentElement of the parent window\n\t// 2) For the hidden or detached element\n\t// 3) For body or html element, i.e. in case of the html node - it will return itself\n\t//\n\t// but those exceptions were never presented as a real life use-cases\n\t// and might be considered as more preferable results.\n\t//\n\t// This logic, however, is not guaranteed and can change at any point in the future\n\toffsetParent: function() {\n\t\treturn this.map( function() {\n\t\t\tvar offsetParent = this.offsetParent;\n\n\t\t\twhile ( offsetParent && jQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\n\t\t\treturn offsetParent || documentElement;\n\t\t} );\n\t}\n} );\n\n// Create scrollLeft and scrollTop methods\njQuery.each( { scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\" }, function( method, prop ) {\n\tvar top = \"pageYOffset\" === prop;\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\n\t\t\t// Coalesce documents and windows\n\t\t\tvar win;\n\t\t\tif ( isWindow( elem ) ) {\n\t\t\t\twin = elem;\n\t\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t\twin = elem.defaultView;\n\t\t\t}\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? win[ prop ] : elem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : win.pageXOffset,\n\t\t\t\t\ttop ? val : win.pageYOffset\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length );\n\t};\n} );\n\n// Support: Safari <=7 - 9.1, Chrome <=37 - 49\n// Add the top/left cssHooks using jQuery.fn.position\n// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347\n// getComputedStyle returns percent when specified for top/left/bottom/right;\n// rather than make the css module depend on the offset module, just check for it here\njQuery.each( [ \"top\", \"left\" ], function( i, prop ) {\n\tjQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,\n\t\tfunction( elem, computed ) {\n\t\t\tif ( computed ) {\n\t\t\t\tcomputed = curCSS( elem, prop );\n\n\t\t\t\t// If curCSS returns percentage, fallback to offset\n\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\tjQuery( elem ).position()[ prop ] + \"px\" :\n\t\t\t\t\tcomputed;\n\t\t\t}\n\t\t}\n\t);\n} );\n\n\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( { padding: \"inner\" + name, content: type, \"\": \"outer\" + name },\n\t\tfunction( defaultExtra, funcName ) {\n\n\t\t// Margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( isWindow( elem ) ) {\n\n\t\t\t\t\t// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n\t\t\t\t\treturn funcName.indexOf( \"outer\" ) === 0 ?\n\t\t\t\t\t\telem[ \"inner\" + name ] :\n\t\t\t\t\t\telem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n\t\t\t\t\t// whichever is greatest\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable );\n\t\t};\n\t} );\n} );\n\n\njQuery.each( ( \"blur focus focusin focusout resize scroll click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup contextmenu\" ).split( \" \" ),\n\tfunction( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.on( name, null, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n} );\n\njQuery.fn.extend( {\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n} );\n\n\n\n\njQuery.fn.extend( {\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ?\n\t\t\tthis.off( selector, \"**\" ) :\n\t\t\tthis.off( types, selector || \"**\", fn );\n\t}\n} );\n\n// Bind a function to a context, optionally partially applying any\n// arguments.\n// jQuery.proxy is deprecated to promote standards (specifically Function#bind)\n// However, it is not slated for removal any time soon\njQuery.proxy = function( fn, context ) {\n\tvar tmp, args, proxy;\n\n\tif ( typeof context === \"string\" ) {\n\t\ttmp = fn[ context ];\n\t\tcontext = fn;\n\t\tfn = tmp;\n\t}\n\n\t// Quick check to determine if target is callable, in the spec\n\t// this throws a TypeError, but we will just return undefined.\n\tif ( !isFunction( fn ) ) {\n\t\treturn undefined;\n\t}\n\n\t// Simulated bind\n\targs = slice.call( arguments, 2 );\n\tproxy = function() {\n\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t};\n\n\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\treturn proxy;\n};\n\njQuery.holdReady = function( hold ) {\n\tif ( hold ) {\n\t\tjQuery.readyWait++;\n\t} else {\n\t\tjQuery.ready( true );\n\t}\n};\njQuery.isArray = Array.isArray;\njQuery.parseJSON = JSON.parse;\njQuery.nodeName = nodeName;\njQuery.isFunction = isFunction;\njQuery.isWindow = isWindow;\njQuery.camelCase = camelCase;\njQuery.type = toType;\n\njQuery.now = Date.now;\n\njQuery.isNumeric = function( obj ) {\n\n\t// As of jQuery 3.0, isNumeric is limited to\n\t// strings and numbers (primitives or objects)\n\t// that can be coerced to finite numbers (gh-2662)\n\tvar type = jQuery.type( obj );\n\treturn ( type === \"number\" || type === \"string\" ) &&\n\n\t\t// parseFloat NaNs numeric-cast false positives (\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t!isNaN( obj - parseFloat( obj ) );\n};\n\n\n\n\n// Register as a named AMD module, since jQuery can be concatenated with other\n// files that may use define, but not via a proper concatenation script that\n// understands anonymous AMD modules. A named AMD is safest and most robust\n// way to register. Lowercase jquery is used because AMD module names are\n// derived from file names, and jQuery is normally delivered in a lowercase\n// file name. Do this after creating the global so that if an AMD module wants\n// to call noConflict to hide this version of jQuery, it will work.\n\n// Note that for maximum portability, libraries that are not jQuery should\n// declare themselves as anonymous modules, and avoid setting a global if an\n// AMD loader is present. jQuery is a special case. For more information, see\n// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\nif ( typeof define === \"function\" && define.amd ) {\n\tdefine( \"jquery\", [], function() {\n\t\treturn jQuery;\n\t} );\n}\n\n\n\n\nvar\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$;\n\njQuery.noConflict = function( deep ) {\n\tif ( window.$ === jQuery ) {\n\t\twindow.$ = _$;\n\t}\n\n\tif ( deep && window.jQuery === jQuery ) {\n\t\twindow.jQuery = _jQuery;\n\t}\n\n\treturn jQuery;\n};\n\n// Expose jQuery and $ identifiers, even in AMD\n// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (#13566)\nif ( !noGlobal ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\n\n\n\nreturn jQuery;\n} );\n","module.exports = function() {\n\tthrow new Error(\"define cannot be used indirect\");\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-dom-server.browser.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom-server.browser.development.js');\n}\n","/** @license React v16.8.6\n * react-dom-server.browser.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var p=require(\"object-assign\"),q=require(\"react\");function aa(a,b,d,c,f,e,h,g){if(!a){a=void 0;if(void 0===b)a=Error(\"Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.\");else{var D=[d,c,f,e,h,g],B=0;a=Error(b.replace(/%s/g,function(){return D[B++]}));a.name=\"Invariant Violation\"}a.framesToPop=1;throw a;}}\nfunction r(a){for(var b=arguments.length-1,d=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=0;c<b;c++)d+=\"&args[]=\"+encodeURIComponent(arguments[c+1]);aa(!1,\"Minified React error #\"+a+\"; visit %s for the full message or use the non-minified dev environment for full errors and additional helpful warnings. \",d)}\nvar v=\"function\"===typeof Symbol&&Symbol.for,ba=v?Symbol.for(\"react.portal\"):60106,x=v?Symbol.for(\"react.fragment\"):60107,ca=v?Symbol.for(\"react.strict_mode\"):60108,da=v?Symbol.for(\"react.profiler\"):60114,z=v?Symbol.for(\"react.provider\"):60109,ea=v?Symbol.for(\"react.context\"):60110,fa=v?Symbol.for(\"react.concurrent_mode\"):60111,ha=v?Symbol.for(\"react.forward_ref\"):60112,A=v?Symbol.for(\"react.suspense\"):60113,ia=v?Symbol.for(\"react.memo\"):60115,ja=v?Symbol.for(\"react.lazy\"):60116;\nfunction C(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case fa:return\"ConcurrentMode\";case x:return\"Fragment\";case ba:return\"Portal\";case da:return\"Profiler\";case ca:return\"StrictMode\";case A:return\"Suspense\"}if(\"object\"===typeof a)switch(a.$$typeof){case ea:return\"Context.Consumer\";case z:return\"Context.Provider\";case ha:var b=a.render;b=b.displayName||b.name||\"\";return a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\")\":\n\"ForwardRef\");case ia:return C(a.type);case ja:if(a=1===a._status?a._result:null)return C(a)}return null}var E=q.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;E.hasOwnProperty(\"ReactCurrentDispatcher\")||(E.ReactCurrentDispatcher={current:null});var ka={};function F(a,b){for(var d=a._threadCount|0;d<=b;d++)a[d]=a._currentValue2,a._threadCount=d+1}\nfunction la(a,b,d){var c=a.contextType;if(\"object\"===typeof c&&null!==c)return F(c,d),c[d];if(a=a.contextTypes){d={};for(var f in a)d[f]=b[f];b=d}else b=ka;return b}for(var G=new Uint16Array(16),H=0;15>H;H++)G[H]=H+1;G[15]=0;\nvar ma=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,na=Object.prototype.hasOwnProperty,oa={},pa={};\nfunction qa(a){if(na.call(pa,a))return!0;if(na.call(oa,a))return!1;if(ma.test(a))return pa[a]=!0;oa[a]=!0;return!1}function ra(a,b,d,c){if(null!==d&&0===d.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(c)return!1;if(null!==d)return!d.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction sa(a,b,d,c){if(null===b||\"undefined\"===typeof b||ra(a,b,d,c))return!0;if(c)return!1;if(null!==d)switch(d.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function I(a,b,d,c,f){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=c;this.attributeNamespace=f;this.mustUseProperty=d;this.propertyName=a;this.type=b}var J={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){J[a]=new I(a,0,!1,a,null)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];J[b]=new I(b,1,!1,a[1],null)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){J[a]=new I(a,2,!1,a.toLowerCase(),null)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){J[a]=new I(a,2,!1,a,null)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){J[a]=new I(a,3,!1,a.toLowerCase(),null)});[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){J[a]=new I(a,3,!0,a,null)});\n[\"capture\",\"download\"].forEach(function(a){J[a]=new I(a,4,!1,a,null)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){J[a]=new I(a,6,!1,a,null)});[\"rowSpan\",\"start\"].forEach(function(a){J[a]=new I(a,5,!1,a.toLowerCase(),null)});var K=/[\\-:]([a-z])/g;function L(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(K,\nL);J[b]=new I(b,1,!1,a,null)});\"xlink:actuate xlink:arcrole xlink:href xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(K,L);J[b]=new I(b,1,!1,a,\"http://www.w3.org/1999/xlink\")});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(K,L);J[b]=new I(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\")});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){J[a]=new I(a,1,!1,a.toLowerCase(),null)});var ta=/[\"'&<>]/;\nfunction M(a){if(\"boolean\"===typeof a||\"number\"===typeof a)return\"\"+a;a=\"\"+a;var b=ta.exec(a);if(b){var d=\"\",c,f=0;for(c=b.index;c<a.length;c++){switch(a.charCodeAt(c)){case 34:b=\""\";break;case 38:b=\"&\";break;case 39:b=\"'\";break;case 60:b=\"<\";break;case 62:b=\">\";break;default:continue}f!==c&&(d+=a.substring(f,c));f=c+1;d+=b}a=f!==c?d+a.substring(f,c):d}return a}var N=null,O=null,P=null,Q=!1,S=!1,T=null,U=0;function V(){null===N?r(\"321\"):void 0;return N}\nfunction ua(){0<U&&r(\"312\");return{memoizedState:null,queue:null,next:null}}function W(){null===P?null===O?(Q=!1,O=P=ua()):(Q=!0,P=O):null===P.next?(Q=!1,P=P.next=ua()):(Q=!0,P=P.next);return P}function va(a,b,d,c){for(;S;)S=!1,U+=1,P=null,d=a(b,c);O=N=null;U=0;P=T=null;return d}function wa(a,b){return\"function\"===typeof b?b(a):b}\nfunction xa(a,b,d){N=V();P=W();if(Q){var c=P.queue;b=c.dispatch;if(null!==T&&(d=T.get(c),void 0!==d)){T.delete(c);c=P.memoizedState;do c=a(c,d.action),d=d.next;while(null!==d);P.memoizedState=c;return[c,b]}return[P.memoizedState,b]}a=a===wa?\"function\"===typeof b?b():b:void 0!==d?d(b):b;P.memoizedState=a;a=P.queue={last:null,dispatch:null};a=a.dispatch=ya.bind(null,N,a);return[P.memoizedState,a]}\nfunction ya(a,b,d){25>U?void 0:r(\"301\");if(a===N)if(S=!0,a={action:d,next:null},null===T&&(T=new Map),d=T.get(b),void 0===d)T.set(b,a);else{for(b=d;null!==b.next;)b=b.next;b.next=a}}function za(){}\nvar X=0,Aa={readContext:function(a){var b=X;F(a,b);return a[b]},useContext:function(a){V();var b=X;F(a,b);return a[b]},useMemo:function(a,b){N=V();P=W();b=void 0===b?null:b;if(null!==P){var d=P.memoizedState;if(null!==d&&null!==b){a:{var c=d[1];if(null===c)c=!1;else{for(var f=0;f<c.length&&f<b.length;f++){var e=b[f],h=c[f];if((e!==h||0===e&&1/e!==1/h)&&(e===e||h===h)){c=!1;break a}}c=!0}}if(c)return d[0]}}a=a();P.memoizedState=[a,b];return a},useReducer:xa,useRef:function(a){N=V();P=W();var b=P.memoizedState;\nreturn null===b?(a={current:a},P.memoizedState=a):b},useState:function(a){return xa(wa,a)},useLayoutEffect:function(){},useCallback:function(a){return a},useImperativeHandle:za,useEffect:za,useDebugValue:za},Ba={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};function Ca(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}\nvar Da={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},Ea=p({menuitem:!0},Da),Y={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,\ngridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},Fa=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(Y).forEach(function(a){Fa.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);Y[b]=Y[a]})});\nvar Ga=/([A-Z])/g,Ha=/^ms-/,Z=q.Children.toArray,Ia=E.ReactCurrentDispatcher,Ja={listing:!0,pre:!0,textarea:!0},Ka=/^[a-zA-Z][a-zA-Z:_\\.\\-\\d]*$/,La={},Ma={};function Na(a){if(void 0===a||null===a)return a;var b=\"\";q.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}var Oa=Object.prototype.hasOwnProperty,Pa={children:null,dangerouslySetInnerHTML:null,suppressContentEditableWarning:null,suppressHydrationWarning:null};function Qa(a,b){void 0===a&&r(\"152\",C(b)||\"Component\")}\nfunction Ra(a,b,d){function c(c,f){var e=la(f,b,d),g=[],h=!1,l={isMounted:function(){return!1},enqueueForceUpdate:function(){if(null===g)return null},enqueueReplaceState:function(a,b){h=!0;g=[b]},enqueueSetState:function(a,b){if(null===g)return null;g.push(b)}},k=void 0;if(f.prototype&&f.prototype.isReactComponent){if(k=new f(c.props,e,l),\"function\"===typeof f.getDerivedStateFromProps){var t=f.getDerivedStateFromProps.call(null,c.props,k.state);null!=t&&(k.state=p({},k.state,t))}}else if(N={},k=f(c.props,\ne,l),k=va(f,c.props,k,e),null==k||null==k.render){a=k;Qa(a,f);return}k.props=c.props;k.context=e;k.updater=l;l=k.state;void 0===l&&(k.state=l=null);if(\"function\"===typeof k.UNSAFE_componentWillMount||\"function\"===typeof k.componentWillMount)if(\"function\"===typeof k.componentWillMount&&\"function\"!==typeof f.getDerivedStateFromProps&&k.componentWillMount(),\"function\"===typeof k.UNSAFE_componentWillMount&&\"function\"!==typeof f.getDerivedStateFromProps&&k.UNSAFE_componentWillMount(),g.length){l=g;var m=\nh;g=null;h=!1;if(m&&1===l.length)k.state=l[0];else{t=m?l[0]:k.state;var u=!0;for(m=m?1:0;m<l.length;m++){var w=l[m];w=\"function\"===typeof w?w.call(k,t,c.props,e):w;null!=w&&(u?(u=!1,t=p({},t,w)):p(t,w))}k.state=t}}else g=null;a=k.render();Qa(a,f);c=void 0;if(\"function\"===typeof k.getChildContext&&(e=f.childContextTypes,\"object\"===typeof e)){c=k.getChildContext();for(var R in c)R in e?void 0:r(\"108\",C(f)||\"Unknown\",R)}c&&(b=p({},b,c))}for(;q.isValidElement(a);){var f=a,e=f.type;if(\"function\"!==typeof e)break;\nc(f,e)}return{child:a,context:b}}\nvar Sa=function(){function a(b,d){if(!(this instanceof a))throw new TypeError(\"Cannot call a class as a function\");q.isValidElement(b)?b.type!==x?b=[b]:(b=b.props.children,b=q.isValidElement(b)?[b]:Z(b)):b=Z(b);b={type:null,domNamespace:Ba.html,children:b,childIndex:0,context:ka,footer:\"\"};var c=G[0];if(0===c){var f=G;c=f.length;var e=2*c;65536>=e?void 0:r(\"304\");var h=new Uint16Array(e);h.set(f);G=h;G[0]=c+1;for(f=c;f<e-1;f++)G[f]=f+1;G[e-1]=0}else G[0]=G[c];this.threadID=c;this.stack=[b];this.exhausted=\n!1;this.currentSelectValue=null;this.previousWasTextNode=!1;this.makeStaticMarkup=d;this.suspenseDepth=0;this.contextIndex=-1;this.contextStack=[];this.contextValueStack=[]}a.prototype.destroy=function(){if(!this.exhausted){this.exhausted=!0;this.clearProviders();var a=this.threadID;G[a]=G[0];G[0]=a}};a.prototype.pushProvider=function(a){var b=++this.contextIndex,c=a.type._context,f=this.threadID;F(c,f);var e=c[f];this.contextStack[b]=c;this.contextValueStack[b]=e;c[f]=a.props.value};a.prototype.popProvider=\nfunction(){var a=this.contextIndex,d=this.contextStack[a],c=this.contextValueStack[a];this.contextStack[a]=null;this.contextValueStack[a]=null;this.contextIndex--;d[this.threadID]=c};a.prototype.clearProviders=function(){for(var a=this.contextIndex;0<=a;a--)this.contextStack[a][this.threadID]=this.contextValueStack[a]};a.prototype.read=function(a){if(this.exhausted)return null;var b=X;X=this.threadID;var c=Ia.current;Ia.current=Aa;try{for(var f=[\"\"],e=!1;f[0].length<a;){if(0===this.stack.length){this.exhausted=\n!0;var h=this.threadID;G[h]=G[0];G[0]=h;break}var g=this.stack[this.stack.length-1];if(e||g.childIndex>=g.children.length){var D=g.footer;\"\"!==D&&(this.previousWasTextNode=!1);this.stack.pop();if(\"select\"===g.type)this.currentSelectValue=null;else if(null!=g.type&&null!=g.type.type&&g.type.type.$$typeof===z)this.popProvider(g.type);else if(g.type===A){this.suspenseDepth--;var B=f.pop();if(e){e=!1;var n=g.fallbackFrame;n?void 0:r(\"303\");this.stack.push(n);continue}else f[this.suspenseDepth]+=B}f[this.suspenseDepth]+=\nD}else{var l=g.children[g.childIndex++],k=\"\";try{k+=this.render(l,g.context,g.domNamespace)}catch(t){throw t;}finally{}f.length<=this.suspenseDepth&&f.push(\"\");f[this.suspenseDepth]+=k}}return f[0]}finally{Ia.current=c,X=b}};a.prototype.render=function(a,d,c){if(\"string\"===typeof a||\"number\"===typeof a){c=\"\"+a;if(\"\"===c)return\"\";if(this.makeStaticMarkup)return M(c);if(this.previousWasTextNode)return\"\\x3c!-- --\\x3e\"+M(c);this.previousWasTextNode=!0;return M(c)}d=Ra(a,d,this.threadID);a=d.child;d=d.context;\nif(null===a||!1===a)return\"\";if(!q.isValidElement(a)){if(null!=a&&null!=a.$$typeof){var b=a.$$typeof;b===ba?r(\"257\"):void 0;r(\"258\",b.toString())}a=Z(a);this.stack.push({type:null,domNamespace:c,children:a,childIndex:0,context:d,footer:\"\"});return\"\"}b=a.type;if(\"string\"===typeof b)return this.renderDOM(a,d,c);switch(b){case ca:case fa:case da:case x:return a=Z(a.props.children),this.stack.push({type:null,domNamespace:c,children:a,childIndex:0,context:d,footer:\"\"}),\"\";case A:r(\"294\")}if(\"object\"===\ntypeof b&&null!==b)switch(b.$$typeof){case ha:N={};var e=b.render(a.props,a.ref);e=va(b.render,a.props,e,a.ref);e=Z(e);this.stack.push({type:null,domNamespace:c,children:e,childIndex:0,context:d,footer:\"\"});return\"\";case ia:return a=[q.createElement(b.type,p({ref:a.ref},a.props))],this.stack.push({type:null,domNamespace:c,children:a,childIndex:0,context:d,footer:\"\"}),\"\";case z:return b=Z(a.props.children),c={type:a,domNamespace:c,children:b,childIndex:0,context:d,footer:\"\"},this.pushProvider(a),this.stack.push(c),\n\"\";case ea:b=a.type;e=a.props;var h=this.threadID;F(b,h);b=Z(e.children(b[h]));this.stack.push({type:a,domNamespace:c,children:b,childIndex:0,context:d,footer:\"\"});return\"\";case ja:r(\"295\")}r(\"130\",null==b?b:typeof b,\"\")};a.prototype.renderDOM=function(a,d,c){var b=a.type.toLowerCase();c===Ba.html&&Ca(b);La.hasOwnProperty(b)||(Ka.test(b)?void 0:r(\"65\",b),La[b]=!0);var e=a.props;if(\"input\"===b)e=p({type:void 0},e,{defaultChecked:void 0,defaultValue:void 0,value:null!=e.value?e.value:e.defaultValue,\nchecked:null!=e.checked?e.checked:e.defaultChecked});else if(\"textarea\"===b){var h=e.value;if(null==h){h=e.defaultValue;var g=e.children;null!=g&&(null!=h?r(\"92\"):void 0,Array.isArray(g)&&(1>=g.length?void 0:r(\"93\"),g=g[0]),h=\"\"+g);null==h&&(h=\"\")}e=p({},e,{value:void 0,children:\"\"+h})}else if(\"select\"===b)this.currentSelectValue=null!=e.value?e.value:e.defaultValue,e=p({},e,{value:void 0});else if(\"option\"===b){g=this.currentSelectValue;var D=Na(e.children);if(null!=g){var B=null!=e.value?e.value+\n\"\":D;h=!1;if(Array.isArray(g))for(var n=0;n<g.length;n++){if(\"\"+g[n]===B){h=!0;break}}else h=\"\"+g===B;e=p({selected:void 0,children:void 0},e,{selected:h,children:D})}}if(h=e)Ea[b]&&(null!=h.children||null!=h.dangerouslySetInnerHTML?r(\"137\",b,\"\"):void 0),null!=h.dangerouslySetInnerHTML&&(null!=h.children?r(\"60\"):void 0,\"object\"===typeof h.dangerouslySetInnerHTML&&\"__html\"in h.dangerouslySetInnerHTML?void 0:r(\"61\")),null!=h.style&&\"object\"!==typeof h.style?r(\"62\",\"\"):void 0;h=e;g=this.makeStaticMarkup;\nD=1===this.stack.length;B=\"<\"+a.type;for(y in h)if(Oa.call(h,y)){var l=h[y];if(null!=l){if(\"style\"===y){n=void 0;var k=\"\",t=\"\";for(n in l)if(l.hasOwnProperty(n)){var m=0===n.indexOf(\"--\"),u=l[n];if(null!=u){var w=n;if(Ma.hasOwnProperty(w))w=Ma[w];else{var R=w.replace(Ga,\"-$1\").toLowerCase().replace(Ha,\"-ms-\");w=Ma[w]=R}k+=t+w+\":\";t=n;m=null==u||\"boolean\"===typeof u||\"\"===u?\"\":m||\"number\"!==typeof u||0===u||Y.hasOwnProperty(t)&&Y[t]?(\"\"+u).trim():u+\"px\";k+=m;t=\";\"}}l=k||null}n=null;b:if(m=b,u=h,-1===\nm.indexOf(\"-\"))m=\"string\"===typeof u.is;else switch(m){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":m=!1;break b;default:m=!0}if(m)Pa.hasOwnProperty(y)||(n=y,n=qa(n)&&null!=l?n+\"=\"+('\"'+M(l)+'\"'):\"\");else{m=y;n=l;l=J.hasOwnProperty(m)?J[m]:null;if(u=\"style\"!==m)u=null!==l?0===l.type:!(2<m.length)||\"o\"!==m[0]&&\"O\"!==m[0]||\"n\"!==m[1]&&\"N\"!==m[1]?!1:!0;u||sa(m,n,l,!1)?n=\"\":null!==\nl?(m=l.attributeName,l=l.type,n=3===l||4===l&&!0===n?m+'=\"\"':m+\"=\"+('\"'+M(n)+'\"')):n=qa(m)?m+\"=\"+('\"'+M(n)+'\"'):\"\"}n&&(B+=\" \"+n)}}g||D&&(B+=' data-reactroot=\"\"');var y=B;h=\"\";Da.hasOwnProperty(b)?y+=\"/>\":(y+=\">\",h=\"</\"+a.type+\">\");a:{g=e.dangerouslySetInnerHTML;if(null!=g){if(null!=g.__html){g=g.__html;break a}}else if(g=e.children,\"string\"===typeof g||\"number\"===typeof g){g=M(g);break a}g=null}null!=g?(e=[],Ja[b]&&\"\\n\"===g.charAt(0)&&(y+=\"\\n\"),y+=g):e=Z(e.children);a=a.type;c=null==c||\"http://www.w3.org/1999/xhtml\"===\nc?Ca(a):\"http://www.w3.org/2000/svg\"===c&&\"foreignObject\"===a?\"http://www.w3.org/1999/xhtml\":c;this.stack.push({domNamespace:c,type:b,children:e,childIndex:0,context:d,footer:h});this.previousWasTextNode=!1;return y};return a}(),Ta={renderToString:function(a){a=new Sa(a,!1);try{return a.read(Infinity)}finally{a.destroy()}},renderToStaticMarkup:function(a){a=new Sa(a,!0);try{return a.read(Infinity)}finally{a.destroy()}},renderToNodeStream:function(){r(\"207\")},renderToStaticNodeStream:function(){r(\"208\")},\nversion:\"16.8.6\"},Ua={default:Ta},Va=Ua&&Ta||Ua;module.exports=Va.default||Va;\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nexports.__esModule = true;\nvar React = require(\"react\");\nvar ReactDOM = require(\"react-dom\");\nvar pick_react_known_prop_1 = require(\"pick-react-known-prop\");\nvar ConfigUtils_1 = require(\"./ConfigUtils\");\nvar Utils_1 = require(\"./Utils\");\n/* tslint:disable-next-line */\nvar Tabulator = require('tabulator-tables');\nvar default_1 = /** @class */ (function (_super) {\n __extends(default_1, _super);\n function default_1() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = {\n data: []\n };\n _this.ref = null;\n _this.htmlProps = null;\n _this.mainId = \"tabulator-\" + +new Date() + \"-\" + Math.floor(Math.random() * 9999999); // random id\n _this.table = null; // will be set once Tabulator instantiated\n _this.pickValidHTMLProps = function () {\n // run once\n if (!_this.htmlProps) {\n _this.htmlProps = pick_react_known_prop_1.pickHTMLProps(_this.props); // pick valid html props\n delete _this.htmlProps['data']; // don't render data & columns as attributes\n delete _this.htmlProps['columns'];\n }\n };\n return _this;\n }\n default_1.prototype.componentDidMount = function () {\n var domEle = ReactDOM.findDOMNode(this.ref); // mounted DOM element\n var that = this;\n var _a = this.props, columns = _a.columns, data = _a.data, options = _a.options;\n var propOptions = ConfigUtils_1.propsToOptions(this.props);\n new Tabulator(domEle, __assign({ columns: columns }, propOptions, { layout: 'fitColumns', // fit columns to width of table (optional)\n tableBuilding: function () {\n that.table = this; // keep table instance\n that.props.tableBuilding ? that.props.tableBuilding() : '';\n },\n dataLoaded: function () {\n that.props.dataLoaded ? that.props.dataLoaded() : '';\n } }, options, { data: data }));\n // await table.setData(data);\n // console.log('- componentDidMount');\n if (data && data.length > 0) {\n this.setState({ data: data });\n }\n };\n default_1.prototype.componentWillUnmount = function () {\n this.table.destroy();\n };\n // this is for React 15.x only\n default_1.prototype.componentWillReceiveProps = function (props) {\n var _this = this;\n if (!Utils_1.isSameArray(this.state.data, props.data)) {\n // console.log('- componentWillReceiveProps');\n this.setState({ data: props.data }, function () {\n _this.table.setData(_this.state.data);\n });\n }\n };\n default_1.prototype.render = function () {\n var _this = this;\n // console.log('*** render');\n this.pickValidHTMLProps();\n var className = this.props.className;\n return React.createElement(\"div\", __assign({ ref: function (ref) { return (_this.ref = ref); }, \"data-instance\": this.mainId }, this.htmlProps, { className: className }));\n };\n return default_1;\n}(React.Component));\nexports[\"default\"] = default_1;\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nexports.__esModule = true;\nvar _a;\nvar React = require(\"react\");\nvar ReactTabulator_1 = require(\"./ReactTabulator\");\nvar DateEditor_1 = require(\"./editors/DateEditor\");\nvar MultiSelectEditor_1 = require(\"./editors/MultiSelectEditor\");\nvar MultiValueFormatter_1 = require(\"./formatters/MultiValueFormatter\");\nvar Utils_1 = require(\"./Utils\");\nfunction SimpleButton(props) {\n var cellData = props.cell._cell.row.data;\n return React.createElement(\"button\", { onClick: function () { return alert(cellData.name); } }, \"Show\");\n}\nvar columns = [\n { title: 'Name', field: 'name', width: 150 },\n { title: 'Age', field: 'age', align: 'left', formatter: 'progress' },\n { title: 'Favourite Color', field: 'color' },\n { title: 'Date Of Birth', field: 'dob' },\n { title: 'Rating', field: 'rating', align: 'center', formatter: 'star' },\n { title: 'Passed?', field: 'passed', align: 'center', formatter: 'tickCross' },\n { title: 'Custom', field: 'custom', align: 'center', formatter: Utils_1.reactFormatter(React.createElement(SimpleButton, null)) },\n];\nvar data = [\n { id: 1, name: 'Oli Bob', age: '12', color: 'red', dob: '01/01/1980', rating: 5, passed: true, pets: ['cat', 'dog'] },\n { id: 2, name: 'Mary May', age: '1', color: 'green', dob: '12/05/1989', rating: 4, passed: true, pets: ['cat'] },\n { id: 3, name: 'Christine Lobowski', age: '42', color: 'green', dob: '10/05/1985', rating: 4, passed: false },\n { id: 4, name: 'Brendon Philips', age: '125', color: 'red', dob: '01/08/1980', rating: 4.5, passed: true },\n { id: 5, name: 'Margret Marmajuke', age: '16', color: 'yellow', dob: '07/01/1999', rating: 4, passed: false },\n {\n id: 6,\n name: 'Van Ng',\n age: '37',\n color: 'green',\n dob: '06/10/1982',\n rating: 4,\n passed: true,\n pets: ['dog', 'fish']\n },\n { id: 7, name: 'Duc Ng', age: '37', color: 'yellow', dob: '10/10/1982', rating: 4, passed: true, pets: ['dog'] }\n];\n// Editable Example:\nvar colorOptions = (_a = {}, _a[''] = ' ', _a.red = 'red', _a.green = 'green', _a.yellow = 'yellow', _a);\nvar petOptions = [{ id: 'cat', name: 'cat' }, { id: 'dog', name: 'dog' }, { id: 'fish', name: 'fish' }];\nvar editableColumns = [\n { title: 'Name', field: 'name', width: 150, editor: 'input', headerFilter: 'input' },\n { title: 'Age', field: 'age', align: 'left', formatter: 'progress', editor: 'progress' },\n {\n title: 'Favourite Color',\n field: 'color',\n editor: 'select',\n editorParams: { allowEmpty: true, showListOnEmpty: true, values: colorOptions },\n headerFilter: 'select',\n headerFilterParams: { values: colorOptions }\n },\n { title: 'Date Of Birth', field: 'dob', editor: DateEditor_1[\"default\"], editorParams: { format: 'MM/dd/yyyy' } },\n {\n title: 'Pets',\n field: 'pets',\n editor: MultiSelectEditor_1[\"default\"],\n editorParams: { values: petOptions },\n formatter: MultiValueFormatter_1[\"default\"],\n formatterParams: { style: 'PILL' }\n },\n { title: 'Passed?', field: 'passed', align: 'center', formatter: 'tickCross', editor: true }\n];\nvar default_1 = /** @class */ (function (_super) {\n __extends(default_1, _super);\n function default_1() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = {\n data: []\n };\n _this.ref = null;\n _this.rowClick = function (e, row) {\n console.log('ref table: ', _this.ref.table); // this is the Tabulator table instance\n console.log('rowClick id: ${row.getData().id}', row, e);\n };\n _this.setData = function () {\n _this.setState({ data: data });\n };\n _this.clearData = function () {\n _this.setState({ data: [] });\n };\n return _this;\n }\n default_1.prototype.render = function () {\n var _this = this;\n var options = {\n height: 150,\n movableRows: true\n };\n return (React.createElement(\"div\", null,\n React.createElement(ReactTabulator_1[\"default\"], { ref: function (ref) { return (_this.ref = ref); }, columns: columns, data: data, rowClick: this.rowClick, options: options, \"data-custom-attr\": \"test-custom-attribute\", className: \"custom-css-class\" }),\n React.createElement(\"h3\", null,\n \"Asynchronous data: (e.g. fetch) - \",\n React.createElement(\"button\", { onClick: this.setData }, \"Set Data\"),\n ' ',\n React.createElement(\"button\", { onClick: this.clearData }, \"Clear\")),\n React.createElement(ReactTabulator_1[\"default\"], { columns: columns, data: this.state.data }),\n React.createElement(\"h3\", null, \"Editable Table\"),\n React.createElement(ReactTabulator_1[\"default\"], { columns: editableColumns, data: data, cellEdited: function (cell) { return console.log('cellEdited', cell); }, dataEdited: function (newData) { return console.log('dataEdited', newData); }, footerElement: React.createElement(\"span\", null, \"Footer\") }),\n React.createElement(\"p\", null,\n React.createElement(\"a\", { href: \"https://github.com/ngduc/react-tabulator\", target: \"_blank\" }, \"Back to: Github Repo: react-tabulator\")),\n React.createElement(\"p\", null,\n React.createElement(\"a\", { href: \"http://tabulator.info/examples/4.0\", target: \"_blank\" }, \"More Tabulator's Examples\"))));\n };\n return default_1;\n}(React.Component));\nexports[\"default\"] = default_1;\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nexports.__esModule = true;\nvar React = require(\"react\");\nvar react_dom_1 = require(\"react-dom\");\nvar date_fns_1 = require(\"date-fns\");\nvar DEFAULT_DATE_INPUT_FORMAT = 'yyyy-MM-dd';\nvar inputCss = {\n width: '100%',\n height: '100%',\n fontSize: '1em',\n fontFamily: 'inherit'\n};\nvar Editor = /** @class */ (function (_super) {\n __extends(Editor, _super);\n function Editor() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = { value: '' };\n _this.ref = null;\n _this.format = _this.props.editorParams.format || 'MM/dd/yyyy'; // TODO: detect from user locale & set default.\n _this.setValueOnSuccess = function (value) {\n if (value === void 0) { value = _this.state.value; }\n var success = _this.props.success;\n var result = value;\n if (result.indexOf('-') > 0) {\n // value is \"yyyy-MM-dd\" => parse it\n result = date_fns_1.format(value, _this.format);\n }\n success(result);\n };\n _this.onChange = function (ev) {\n var value = ev.target.value;\n _this.setState({ value: value });\n };\n _this.onKeyPress = function (ev) {\n var cancel = _this.props.cancel;\n if (ev.keyCode === 13) {\n _this.setValueOnSuccess();\n }\n else if (ev.keyCode === 27) {\n cancel();\n }\n };\n _this.onBlur = function () {\n _this.setValueOnSuccess();\n };\n return _this;\n }\n Editor.prototype.componentDidMount = function () {\n var _this = this;\n this.props.onRendered(function () {\n var value = _this.props.cell.getValue();\n _this.setState({ value: value });\n _this.ref.focus();\n });\n };\n Editor.prototype.render = function () {\n var _this = this;\n var cell = this.props.cell;\n var valueDt = date_fns_1.parse(cell.getValue(), this.format, new Date(), { awareOfUnicodeTokens: true });\n var value = date_fns_1.format(valueDt, DEFAULT_DATE_INPUT_FORMAT);\n return (React.createElement(\"input\", { type: \"date\", ref: function (r) { return (_this.ref = r); }, defaultValue: value, \n // value={value}\n onBlur: this.onBlur, onChange: this.onChange, onKeyUp: this.onKeyPress, style: inputCss }));\n };\n return Editor;\n}(React.Component));\nfunction default_1(cell, onRendered, success, cancel, editorParams) {\n var container = document.createElement('div');\n container.style.height = '100%';\n react_dom_1.render(React.createElement(Editor, { cell: cell, onRendered: onRendered, success: success, cancel: cancel, editorParams: editorParams }), container);\n return container;\n}\nexports[\"default\"] = default_1;\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nexports.__esModule = true;\nvar React = require(\"react\");\nvar react_dom_1 = require(\"react-dom\");\nvar Utils_1 = require(\"../Utils\");\n// import { parse, format } from 'date-fns';\n// import ReactTags from 'react-tag-autocomplete';\nvar ReactTags = require('react-tag-autocomplete');\nvar DEFAULT_DATE_INPUT_FORMAT = 'yyyy-MM-dd';\nvar inputCss = {\n width: '100%',\n height: '100%',\n fontSize: '1em',\n fontFamily: 'inherit'\n};\nvar Editor = /** @class */ (function (_super) {\n __extends(Editor, _super);\n function Editor() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = { value: '', values: [], autofocus: false };\n _this.ref = null;\n _this.setValueOnSuccess = function (values) {\n if (values === void 0) { values = _this.state.values; }\n var _a = _this.props, success = _a.success, cancel = _a.cancel;\n // console.log('setValueOnSuccess: ', values);\n success(values);\n // cancel();\n };\n _this.handleDelete = function (i) {\n // console.log('- handleDelete ', i);\n var values = _this.state.values;\n var newValues = values.filter(function (item, index) { return index !== i; });\n _this.setState({ values: newValues }, function () {\n _this.setValueOnSuccess(newValues);\n });\n };\n _this.handleAddition = function (item) {\n var values = _this.state.values;\n if (item.name) {\n // console.log('- handleAddition: ', item);\n values.push({ id: item.name, name: item.name });\n _this.setState({ values: values }, function () {\n _this.setValueOnSuccess(values);\n });\n }\n };\n // order: handleBlur => sucess() => grid's cellEdited => grid's dataEdited => handleAddition\n _this.handleBlur = function () {\n var cancel = _this.props.cancel;\n var newValue = _this.ref.input.input.value;\n if (newValue) {\n // console.log(111, newValue, this.ref);\n var values = Utils_1.clone(_this.state.values);\n values.push({ id: newValue, name: newValue });\n // console.log('- handleBlur ', values);\n _this.setValueOnSuccess(values);\n }\n else {\n cancel();\n }\n var el = react_dom_1.findDOMNode(_this.ref);\n if (el && el.parentElement.parentElement.parentElement) {\n el.parentElement.parentElement.parentElement.style.overflow = 'hidden';\n }\n // console.log('- handleBlur END');\n };\n return _this;\n }\n Editor.prototype.componentDidMount = function () {\n var _this = this;\n this.props.onRendered(function () {\n var el = react_dom_1.findDOMNode(_this.ref);\n el.style.zIndex = 1;\n el.parentElement.parentElement.parentElement.style.overflow = 'inherit';\n el.querySelector('input').focus();\n var values = (_this.props.cell.getValue() || []).map(function (item) {\n return typeof item === 'string' ? { id: item, name: item } : item;\n });\n _this.setState({ values: values });\n });\n };\n Editor.prototype.render = function () {\n var _this = this;\n var editorParams = this.props.editorParams;\n var values = this.state.values;\n var suggestions = editorParams.values;\n return (React.createElement(\"div\", null,\n React.createElement(ReactTags, { ref: function (ref) { return (_this.ref = ref); }, placeholder: \"Select or Type\", tags: values, suggestions: suggestions, allowNew: true, autoresize: true, autofocus: this.state.autofocus, handleAddition: this.handleAddition, handleDelete: this.handleDelete, handleBlur: this.handleBlur, minQueryLength: 0 })));\n };\n return Editor;\n}(React.Component));\nfunction default_1(cell, onRendered, success, cancel, editorParams) {\n var container = document.createElement('div');\n container.style.height = '100%';\n react_dom_1.render(React.createElement(Editor, { cell: cell, onRendered: onRendered, success: success, cancel: cancel, editorParams: editorParams }), container);\n return container;\n}\nexports[\"default\"] = default_1;\n","'use strict'\n\nvar React = require('react')\nvar PropTypes = require('prop-types')\nvar Tag = require('./Tag')\nvar Input = require('./Input')\nvar Suggestions = require('./Suggestions')\n\nvar KEYS = {\n ENTER: 13,\n TAB: 9,\n BACKSPACE: 8,\n UP_ARROW: 38,\n DOWN_ARROW: 40\n}\n\nvar CLASS_NAMES = {\n root: 'react-tags',\n rootFocused: 'is-focused',\n selected: 'react-tags__selected',\n selectedTag: 'react-tags__selected-tag',\n selectedTagName: 'react-tags__selected-tag-name',\n search: 'react-tags__search',\n searchInput: 'react-tags__search-input',\n suggestions: 'react-tags__suggestions',\n suggestionActive: 'is-active',\n suggestionDisabled: 'is-disabled'\n}\n\nvar ReactTags = (function (superclass) {\n function ReactTags (props) {\n superclass.call(this, props)\n\n this.state = {\n query: '',\n focused: false,\n expandable: false,\n selectedIndex: -1,\n classNames: Object.assign({}, CLASS_NAMES, this.props.classNames)\n }\n\n this.inputEventHandlers = {\n // Provide a no-op function to the input component to avoid warnings\n // <https://github.com/i-like-robots/react-tags/issues/135>\n // <https://github.com/facebook/react/issues/13835>\n onChange: function () {},\n onBlur: this.handleBlur.bind(this),\n onFocus: this.handleFocus.bind(this),\n onInput: this.handleInput.bind(this),\n onKeyDown: this.handleKeyDown.bind(this)\n }\n }\n\n if ( superclass ) ReactTags.__proto__ = superclass;\n ReactTags.prototype = Object.create( superclass && superclass.prototype );\n ReactTags.prototype.constructor = ReactTags;\n\n ReactTags.prototype.componentWillReceiveProps = function componentWillReceiveProps (newProps) {\n this.setState({\n classNames: Object.assign({}, CLASS_NAMES, newProps.classNames)\n })\n };\n\n ReactTags.prototype.handleInput = function handleInput (e) {\n var query = e.target.value\n\n if (this.props.handleInputChange) {\n this.props.handleInputChange(query)\n }\n\n this.setState({ query: query })\n };\n\n ReactTags.prototype.handleKeyDown = function handleKeyDown (e) {\n var ref = this.state;\n var query = ref.query;\n var selectedIndex = ref.selectedIndex;\n var ref$1 = this.props;\n var delimiters = ref$1.delimiters;\n var delimiterChars = ref$1.delimiterChars;\n\n // when one of the terminating keys is pressed, add current query to the tags.\n if (delimiters.indexOf(e.keyCode) > -1 || delimiterChars.indexOf(e.key) > -1) {\n if (query || selectedIndex > -1) {\n e.preventDefault()\n }\n\n this.handleDelimiter()\n }\n\n // when backspace key is pressed and query is blank, delete the last tag\n if (e.keyCode === KEYS.BACKSPACE && query.length === 0 && this.props.allowBackspace) {\n this.deleteTag(this.props.tags.length - 1)\n }\n\n if (e.keyCode === KEYS.UP_ARROW) {\n e.preventDefault()\n\n // if last item, cycle to the bottom\n if (selectedIndex <= 0) {\n this.setState({ selectedIndex: this.suggestions.state.options.length - 1 })\n } else {\n this.setState({ selectedIndex: selectedIndex - 1 })\n }\n }\n\n if (e.keyCode === KEYS.DOWN_ARROW) {\n e.preventDefault()\n\n this.setState({ selectedIndex: (selectedIndex + 1) % this.suggestions.state.options.length })\n }\n };\n\n ReactTags.prototype.handleDelimiter = function handleDelimiter () {\n var ref = this.state;\n var query = ref.query;\n var selectedIndex = ref.selectedIndex;\n\n if (query.length >= this.props.minQueryLength) {\n // Check if the user typed in an existing suggestion.\n var match = this.suggestions.state.options.findIndex(function (suggestion) {\n return suggestion.name.search(new RegExp((\"^\" + query + \"$\"), 'i')) === 0\n })\n\n var index = selectedIndex === -1 ? match : selectedIndex\n\n if (index > -1) {\n this.addTag(this.suggestions.state.options[index])\n } else if (this.props.allowNew) {\n this.addTag({ name: query })\n }\n }\n };\n\n ReactTags.prototype.handleClick = function handleClick (e) {\n if (document.activeElement !== e.target) {\n this.input.input.focus()\n }\n };\n\n ReactTags.prototype.handleBlur = function handleBlur () {\n this.setState({ focused: false, selectedIndex: -1 })\n\n if (this.props.handleBlur) {\n this.props.handleBlur()\n }\n\n if (this.props.addOnBlur) {\n this.handleDelimiter()\n }\n };\n\n ReactTags.prototype.handleFocus = function handleFocus () {\n this.setState({ focused: true })\n\n if (this.props.handleFocus) {\n this.props.handleFocus()\n }\n };\n\n ReactTags.prototype.addTag = function addTag (tag) {\n if (tag.disabled) {\n return\n }\n\n if (typeof this.props.handleValidate === 'function' && !this.props.handleValidate(tag)) {\n return\n }\n\n this.props.handleAddition(tag)\n\n // reset the state\n this.setState({\n query: '',\n selectedIndex: -1\n })\n };\n\n ReactTags.prototype.deleteTag = function deleteTag (i) {\n this.props.handleDelete(i)\n\n if (this.props.clearInputOnDelete && this.state.query !== '') {\n this.setState({ query: '' })\n }\n };\n\n ReactTags.prototype.render = function render () {\n var this$1 = this;\n\n var listboxId = 'ReactTags-listbox'\n\n var TagComponent = this.props.tagComponent || Tag\n\n var tags = this.props.tags.map(function (tag, i) { return (\n React.createElement( TagComponent, {\n key: i, tag: tag, classNames: this$1.state.classNames, onDelete: this$1.deleteTag.bind(this$1, i) })\n ); })\n\n var expandable = this.state.focused && this.state.query.length >= this.props.minQueryLength\n var classNames = [this.state.classNames.root]\n\n this.state.focused && classNames.push(this.state.classNames.rootFocused)\n\n return (\n React.createElement( 'div', { className: classNames.join(' '), onClick: this.handleClick.bind(this) },\n React.createElement( 'div', { className: this.state.classNames.selected, 'aria-live': 'polite', 'aria-relevant': 'additions removals' },\n tags\n ),\n React.createElement( 'div', { className: this.state.classNames.search },\n React.createElement( Input, Object.assign({}, this.state, { inputAttributes: this.props.inputAttributes, inputEventHandlers: this.inputEventHandlers, ref: function (c) { this$1.input = c }, listboxId: listboxId, autofocus: this.props.autofocus, autoresize: this.props.autoresize, expandable: expandable, placeholder: this.props.placeholder })),\n React.createElement( Suggestions, Object.assign({}, this.state, { ref: function (c) { this$1.suggestions = c }, listboxId: listboxId, expandable: expandable, suggestions: this.props.suggestions, suggestionsFilter: this.props.suggestionsFilter, addTag: this.addTag.bind(this), maxSuggestionsLength: this.props.maxSuggestionsLength }))\n )\n )\n )\n };\n\n return ReactTags;\n}(React.Component));\n\nReactTags.defaultProps = {\n tags: [],\n placeholder: 'Add new tag',\n suggestions: [],\n suggestionsFilter: null,\n autofocus: true,\n autoresize: true,\n delimiters: [KEYS.TAB, KEYS.ENTER],\n delimiterChars: [],\n minQueryLength: 2,\n maxSuggestionsLength: 6,\n allowNew: false,\n allowBackspace: true,\n tagComponent: null,\n inputAttributes: {},\n addOnBlur: false,\n clearInputOnDelete: true\n}\n\nReactTags.propTypes = {\n tags: PropTypes.arrayOf(PropTypes.object),\n placeholder: PropTypes.string,\n suggestions: PropTypes.arrayOf(PropTypes.object),\n suggestionsFilter: PropTypes.func,\n autofocus: PropTypes.bool,\n autoresize: PropTypes.bool,\n delimiters: PropTypes.arrayOf(PropTypes.number),\n delimiterChars: PropTypes.arrayOf(PropTypes.string),\n handleDelete: PropTypes.func.isRequired,\n handleAddition: PropTypes.func.isRequired,\n handleInputChange: PropTypes.func,\n handleFocus: PropTypes.func,\n handleBlur: PropTypes.func,\n handleValidate: PropTypes.func,\n minQueryLength: PropTypes.number,\n maxSuggestionsLength: PropTypes.number,\n classNames: PropTypes.object,\n allowNew: PropTypes.bool,\n allowBackspace: PropTypes.bool,\n tagComponent: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.element\n ]),\n inputAttributes: PropTypes.object,\n addOnBlur: PropTypes.bool,\n clearInputOnDelete: PropTypes.bool\n}\n\nmodule.exports = ReactTags\n","'use strict'\n\nvar React = require('react')\n\nmodule.exports = function (props) { return (\n React.createElement( 'button', { type: 'button', className: props.classNames.selectedTag, title: 'Click to remove tag', onClick: props.onDelete },\n React.createElement( 'span', { className: props.classNames.selectedTagName }, props.tag.name)\n )\n); }\n","'use strict'\n\nvar React = require('react')\n\nvar SIZER_STYLES = {\n position: 'absolute',\n width: 0,\n height: 0,\n visibility: 'hidden',\n overflow: 'scroll',\n whiteSpace: 'pre'\n}\n\nvar STYLE_PROPS = [\n 'fontSize',\n 'fontFamily',\n 'fontWeight',\n 'fontStyle',\n 'letterSpacing'\n]\n\nvar Input = (function (superclass) {\n function Input (props) {\n superclass.call(this, props)\n this.state = { inputWidth: null }\n }\n\n if ( superclass ) Input.__proto__ = superclass;\n Input.prototype = Object.create( superclass && superclass.prototype );\n Input.prototype.constructor = Input;\n\n Input.prototype.componentDidMount = function componentDidMount () {\n if (this.props.autoresize) {\n this.copyInputStyles()\n this.updateInputWidth()\n }\n\n if (this.props.autofocus) {\n this.input.focus()\n }\n };\n\n Input.prototype.componentDidUpdate = function componentDidUpdate () {\n this.updateInputWidth()\n };\n\n Input.prototype.copyInputStyles = function copyInputStyles () {\n var this$1 = this;\n\n var inputStyle = window.getComputedStyle(this.input)\n\n STYLE_PROPS.forEach(function (prop) {\n this$1.sizer.style[prop] = inputStyle[prop]\n })\n };\n\n Input.prototype.updateInputWidth = function updateInputWidth () {\n var inputWidth\n\n if (this.props.autoresize) {\n // scrollWidth is designed to be fast not accurate.\n // +2 is completely arbitrary but does the job.\n inputWidth = Math.ceil(this.sizer.scrollWidth) + 2\n }\n\n if (inputWidth !== this.state.inputWidth) {\n this.setState({ inputWidth: inputWidth })\n }\n };\n\n Input.prototype.render = function render () {\n var this$1 = this;\n\n var ref = this.props;\n var inputAttributes = ref.inputAttributes;\n var inputEventHandlers = ref.inputEventHandlers;\n var query = ref.query;\n var placeholder = ref.placeholder;\n var expandable = ref.expandable;\n var listboxId = ref.listboxId;\n var selectedIndex = ref.selectedIndex;\n\n return (\n React.createElement( 'div', { className: this.props.classNames.searchInput },\n React.createElement( 'input', Object.assign({},\n inputAttributes, inputEventHandlers, { ref: function (c) { this$1.input = c }, value: query, placeholder: placeholder, role: 'combobox', 'aria-autocomplete': 'list', 'aria-label': placeholder, 'aria-owns': listboxId, 'aria-activedescendant': selectedIndex > -1 ? (listboxId + \"-\" + selectedIndex) : null, 'aria-expanded': expandable, style: { width: this.state.inputWidth } })),\n React.createElement( 'div', { ref: function (c) { this$1.sizer = c }, style: SIZER_STYLES }, query || placeholder)\n )\n )\n };\n\n return Input;\n}(React.Component));\n\nmodule.exports = Input\n","'use strict'\n\nvar React = require('react')\n\nfunction escapeForRegExp (query) {\n return query.replace(/[-\\\\^$*+?.()|[\\]{}]/g, '\\\\$&')\n}\n\nfunction markIt (input, query) {\n if (query) {\n var regex = RegExp(escapeForRegExp(query), 'gi')\n input = input.replace(regex, '<mark>$&</mark>')\n }\n\n return {\n __html: input\n }\n}\n\nfunction filterSuggestions (query, suggestions, length, suggestionsFilter) {\n if (!suggestionsFilter) {\n var regex = new RegExp((\"(?:^|\\\\s)\" + (escapeForRegExp(query))), 'i')\n suggestionsFilter = function (item) { return regex.test(item.name); }\n }\n\n return suggestions.filter(function (item) { return suggestionsFilter(item, query); }).slice(0, length)\n}\n\nvar Suggestions = (function (superclass) {\n function Suggestions (props) {\n superclass.call(this, props)\n\n this.state = {\n options: filterSuggestions(this.props.query, this.props.suggestions, this.props.maxSuggestionsLength, this.props.suggestionsFilter)\n }\n }\n\n if ( superclass ) Suggestions.__proto__ = superclass;\n Suggestions.prototype = Object.create( superclass && superclass.prototype );\n Suggestions.prototype.constructor = Suggestions;\n\n Suggestions.prototype.componentWillReceiveProps = function componentWillReceiveProps (newProps) {\n this.setState({\n options: filterSuggestions(newProps.query, newProps.suggestions, newProps.maxSuggestionsLength, newProps.suggestionsFilter)\n })\n };\n\n Suggestions.prototype.handleMouseDown = function handleMouseDown (item, e) {\n // focus is shifted on mouse down but calling preventDefault prevents this\n e.preventDefault()\n this.props.addTag(item)\n };\n\n Suggestions.prototype.render = function render () {\n var this$1 = this;\n\n if (!this.props.expandable || !this.state.options.length) {\n return null\n }\n\n var options = this.state.options.map(function (item, i) {\n var key = (this$1.props.listboxId) + \"-\" + i\n var classNames = []\n\n if (this$1.props.selectedIndex === i) {\n classNames.push(this$1.props.classNames.suggestionActive)\n }\n\n if (item.disabled) {\n classNames.push(this$1.props.classNames.suggestionDisabled)\n }\n\n return (\n React.createElement( 'li', {\n id: key, key: key, role: 'option', className: classNames.join(' '), 'aria-disabled': item.disabled === true, onMouseDown: this$1.handleMouseDown.bind(this$1, item) },\n React.createElement( 'span', { dangerouslySetInnerHTML: markIt(item.name, this$1.props.query) })\n )\n )\n })\n\n return (\n React.createElement( 'div', { className: this.props.classNames.suggestions },\n React.createElement( 'ul', { role: 'listbox', id: this.props.listboxId }, options)\n )\n )\n };\n\n return Suggestions;\n}(React.Component));\n\nmodule.exports = Suggestions\n","\"use strict\";\nexports.__esModule = true;\nvar React = require(\"react\");\nvar react_dom_1 = require(\"react-dom\");\nvar createCellEl = function () {\n var el = document.createElement('div');\n el.style.height = '100%';\n return el;\n};\n// example: { title: 'Pets', field: 'pets', formatter: MultiValueFormatter, formatterParams: { style: 'PILL' } }\n// default style: comma separated plain text\n// other styles: PILL\nfunction default_1(cell, formatterParams, onRendered) {\n var style = formatterParams.style || ''; // comma separated plain text\n var arr = cell.getValue() || [];\n var content = arr && arr.length > 0 && typeof arr[0] === 'string' ? React.createElement(\"span\", null, arr.join(', ')) : React.createElement(\"span\", null);\n if (style === 'PILL') {\n // TODO: use React.Fragment here to remove unnecessary div. (but will break React 15 example in Codesandbox)\n content = (React.createElement(\"div\", null, arr.map(function (item) {\n return typeof item === 'string' ? React.createElement(\"span\", { key: item }, item) : React.createElement(\"span\", { key: item.name }, item.name);\n })));\n }\n var el = createCellEl();\n el.className = 'multi-value-formatter-content';\n el.title = arr && arr.length > 0 && typeof arr[0] === 'string' ? arr.join(', ') : '';\n react_dom_1.render(content, el);\n return el;\n}\nexports[\"default\"] = default_1;\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = filterEvents;\n\nvar _contains = _interopRequireDefault(require(\"../query/contains\"));\n\nvar _querySelectorAll = _interopRequireDefault(require(\"../query/querySelectorAll\"));\n\nfunction filterEvents(selector, handler) {\n return function filterHandler(e) {\n var top = e.currentTarget,\n target = e.target,\n matches = (0, _querySelectorAll.default)(top, selector);\n if (matches.some(function (match) {\n return (0, _contains.default)(match, target);\n })) handler.call(this, e);\n };\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = activeElement;\n\nvar _ownerDocument = _interopRequireDefault(require(\"./ownerDocument\"));\n\nfunction activeElement(doc) {\n if (doc === void 0) {\n doc = (0, _ownerDocument.default)();\n }\n\n try {\n return doc.activeElement;\n } catch (e) {\n /* ie throws if no active element */\n }\n}\n\nmodule.exports = exports[\"default\"];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactIs = require('react-is');\n\nvar _createChainableTypeChecker = require('./utils/createChainableTypeChecker');\n\nvar _createChainableTypeChecker2 = _interopRequireDefault(_createChainableTypeChecker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction elementType(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n\n if (_react2.default.isValidElement(propValue)) {\n return new Error('Invalid ' + location + ' `' + propFullName + '` of type ReactElement ' + ('supplied to `' + componentName + '`,expected an element type (a string ') + ', component class, or function component).');\n }\n\n if (!(0, _reactIs.isValidElementType)(propValue)) {\n return new Error('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected an element type (a string ') + ', component class, or function component).');\n }\n\n return null;\n}\n\nexports.default = (0, _createChainableTypeChecker2.default)(elementType);\nmodule.exports = exports['default'];","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/** @license React v16.8.6\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';Object.defineProperty(exports,\"__esModule\",{value:!0});\nvar b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?Symbol.for(\"react.memo\"):\n60115,r=b?Symbol.for(\"react.lazy\"):60116;function t(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case h:return a;default:return u}}case r:case q:case d:return u}}}function v(a){return t(a)===m}exports.typeOf=t;exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;\nexports.Fragment=e;exports.Lazy=r;exports.Memo=q;exports.Portal=d;exports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||\"object\"===typeof a&&null!==a&&(a.$$typeof===r||a.$$typeof===q||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n)};exports.isAsyncMode=function(a){return v(a)||t(a)===l};exports.isConcurrentMode=v;exports.isContextConsumer=function(a){return t(a)===k};\nexports.isContextProvider=function(a){return t(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return t(a)===n};exports.isFragment=function(a){return t(a)===e};exports.isLazy=function(a){return t(a)===r};exports.isMemo=function(a){return t(a)===q};exports.isPortal=function(a){return t(a)===d};exports.isProfiler=function(a){return t(a)===g};exports.isStrictMode=function(a){return t(a)===f};\nexports.isSuspense=function(a){return t(a)===p};\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _addClass = _interopRequireDefault(require(\"./addClass\"));\n\nexports.addClass = _addClass.default;\n\nvar _removeClass = _interopRequireDefault(require(\"./removeClass\"));\n\nexports.removeClass = _removeClass.default;\n\nvar _hasClass = _interopRequireDefault(require(\"./hasClass\"));\n\nexports.hasClass = _hasClass.default;\nvar _default = {\n addClass: _addClass.default,\n removeClass: _removeClass.default,\n hasClass: _hasClass.default\n};\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = addClass;\n\nvar _hasClass = _interopRequireDefault(require(\"./hasClass\"));\n\nfunction addClass(element, className) {\n if (element.classList) element.classList.add(className);else if (!(0, _hasClass.default)(element, className)) if (typeof element.className === 'string') element.className = element.className + ' ' + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + ' ' + className);\n}\n\nmodule.exports = exports[\"default\"];","'use strict';\n\nfunction replaceClassName(origClass, classToRemove) {\n return origClass.replace(new RegExp('(^|\\\\s)' + classToRemove + '(?:\\\\s|$)', 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n\nmodule.exports = function removeClass(element, className) {\n if (element.classList) element.classList.remove(className);else if (typeof element.className === 'string') element.className = replaceClassName(element.className, className);else element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n};","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = hyphenateStyleName;\n\nvar _hyphenate = _interopRequireDefault(require(\"./hyphenate\"));\n\n/**\n * Copyright 2013-2014, Facebook, Inc.\n * All rights reserved.\n * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/hyphenateStyleName.js\n */\nvar msPattern = /^ms-/;\n\nfunction hyphenateStyleName(string) {\n return (0, _hyphenate.default)(string).replace(msPattern, '-ms-');\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = hyphenate;\nvar rUpper = /([A-Z])/g;\n\nfunction hyphenate(string) {\n return string.replace(rUpper, '-$1').toLowerCase();\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = _getComputedStyle;\n\nvar _camelizeStyle = _interopRequireDefault(require(\"../util/camelizeStyle\"));\n\nvar rposition = /^(top|right|bottom|left)$/;\nvar rnumnonpx = /^([+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|))(?!px)[a-z%]+$/i;\n\nfunction _getComputedStyle(node) {\n if (!node) throw new TypeError('No Element passed to `getComputedStyle()`');\n var doc = node.ownerDocument;\n return 'defaultView' in doc ? doc.defaultView.opener ? node.ownerDocument.defaultView.getComputedStyle(node, null) : window.getComputedStyle(node, null) : {\n //ie 8 \"magic\" from: https://github.com/jquery/jquery/blob/1.11-stable/src/css/curCSS.js#L72\n getPropertyValue: function getPropertyValue(prop) {\n var style = node.style;\n prop = (0, _camelizeStyle.default)(prop);\n if (prop == 'float') prop = 'styleFloat';\n var current = node.currentStyle[prop] || null;\n if (current == null && style && style[prop]) current = style[prop];\n\n if (rnumnonpx.test(current) && !rposition.test(prop)) {\n // Remember the original values\n var left = style.left;\n var runStyle = node.runtimeStyle;\n var rsLeft = runStyle && runStyle.left; // Put in the new values to get a computed value out\n\n if (rsLeft) runStyle.left = node.currentStyle.left;\n style.left = prop === 'fontSize' ? '1em' : current;\n current = style.pixelLeft + 'px'; // Revert the changed values\n\n style.left = left;\n if (rsLeft) runStyle.left = rsLeft;\n }\n\n return current;\n }\n };\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = removeStyle;\n\nfunction removeStyle(node, key) {\n return 'removeProperty' in node.style ? node.style.removeProperty(key) : node.style.removeAttribute(key);\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = isTransform;\nvar supportedTransforms = /^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i;\n\nfunction isTransform(property) {\n return !!(property && supportedTransforms.test(property));\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = isOverflowing;\n\nvar _isWindow = _interopRequireDefault(require(\"dom-helpers/query/isWindow\"));\n\nvar _ownerDocument = _interopRequireDefault(require(\"dom-helpers/ownerDocument\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction isBody(node) {\n return node && node.tagName.toLowerCase() === 'body';\n}\n\nfunction bodyIsOverflowing(node) {\n var doc = (0, _ownerDocument.default)(node);\n var win = (0, _isWindow.default)(doc);\n return doc.body.clientWidth < win.innerWidth;\n}\n\nfunction isOverflowing(container) {\n var win = (0, _isWindow.default)(container);\n return win || isBody(container) ? bodyIsOverflowing(container) : container.scrollHeight > container.clientHeight;\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = getWindow;\n\nfunction getWindow(node) {\n return node === node.window ? node : node.nodeType === 9 ? node.defaultView || node.parentWindow : false;\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.ariaHidden = ariaHidden;\nexports.hideSiblings = hideSiblings;\nexports.showSiblings = showSiblings;\nvar BLACKLIST = ['template', 'script', 'style'];\n\nvar isHidable = function isHidable(_ref) {\n var nodeType = _ref.nodeType,\n tagName = _ref.tagName;\n return nodeType === 1 && BLACKLIST.indexOf(tagName.toLowerCase()) === -1;\n};\n\nvar siblings = function siblings(container, exclude, cb) {\n exclude = [].concat(exclude);\n [].forEach.call(container.children, function (node) {\n if (exclude.indexOf(node) === -1 && isHidable(node)) {\n cb(node);\n }\n });\n};\n\nfunction ariaHidden(show, node) {\n if (!node) return;\n\n if (show) {\n node.setAttribute('aria-hidden', 'true');\n } else {\n node.removeAttribute('aria-hidden');\n }\n}\n\nfunction hideSiblings(container, _ref2) {\n var root = _ref2.root,\n backdrop = _ref2.backdrop;\n siblings(container, [root, backdrop], function (node) {\n return ariaHidden(true, node);\n });\n}\n\nfunction showSiblings(container, _ref3) {\n var root = _ref3.root,\n backdrop = _ref3.backdrop;\n siblings(container, [root, backdrop], function (node) {\n return ariaHidden(false, node);\n });\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _componentOrElement = _interopRequireDefault(require(\"prop-types-extra/lib/componentOrElement\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _WaitForContainer = _interopRequireDefault(require(\"./WaitForContainer\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\n * The `<Portal/>` component renders its children into a new \"subtree\" outside of current component hierarchy.\n * You can think of it as a declarative `appendChild()`, or jQuery's `$.fn.appendTo()`.\n * The children of `<Portal/>` component will be appended to the `container` specified.\n */\nvar Portal =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Portal, _React$Component);\n\n function Portal() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = Portal.prototype;\n\n _proto.render = function render() {\n var _this = this;\n\n return this.props.children ? _react.default.createElement(_WaitForContainer.default, {\n container: this.props.container,\n onContainerResolved: this.props.onRendered\n }, function (container) {\n return _reactDom.default.createPortal(_this.props.children, container);\n }) : null;\n };\n\n return Portal;\n}(_react.default.Component);\n\nPortal.displayName = 'Portal';\nPortal.propTypes = {\n /**\n * A Node, Component instance, or function that returns either. The `container` will have the Portal children\n * appended to it.\n */\n container: _propTypes.default.oneOfType([_componentOrElement.default, _propTypes.default.func]),\n onRendered: _propTypes.default.func\n};\nvar _default = Portal;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _componentOrElement = _interopRequireDefault(require(\"prop-types-extra/lib/componentOrElement\"));\n\nvar _inDOM = _interopRequireDefault(require(\"dom-helpers/util/inDOM\"));\n\nvar _ownerDocument = _interopRequireDefault(require(\"dom-helpers/ownerDocument\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _getContainer = _interopRequireDefault(require(\"./utils/getContainer\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar propTypes = {\n /**\n * A Node, Component instance, or function that returns either. The `container` will have the Portal children\n * appended to it.\n */\n container: _propTypes.default.oneOfType([_componentOrElement.default, _propTypes.default.func]),\n onContainerResolved: _propTypes.default.func\n};\n\nvar WaitForContainer =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(WaitForContainer, _React$Component);\n\n function WaitForContainer() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n if (!_inDOM.default) return _assertThisInitialized(_this);\n var container = _this.props.container;\n if (typeof container === 'function') container = container();\n\n if (container && !_reactDom.default.findDOMNode(container)) {\n // The container is a React component that has not yet been rendered.\n // Don't set the container node yet.\n return _assertThisInitialized(_this);\n }\n\n _this.setContainer(container);\n\n return _this;\n }\n\n var _proto = WaitForContainer.prototype;\n\n _proto.UNSAFE_componentWillReceiveProps = function UNSAFE_componentWillReceiveProps(nextProps) {\n if (nextProps.container !== this.props.container) {\n this.setContainer(nextProps.container);\n }\n };\n\n _proto.componentDidMount = function componentDidMount() {\n if (!this._container) {\n this.setContainer(this.props.container);\n this.forceUpdate(this.props.onContainerResolved);\n } else if (this.props.onContainerResolved) {\n this.props.onContainerResolved();\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this._container = null;\n };\n\n _proto.setContainer = function setContainer(container) {\n this._container = (0, _getContainer.default)(container, (0, _ownerDocument.default)().body);\n };\n\n _proto.render = function render() {\n return this._container ? this.props.children(this._container) : null;\n };\n\n return WaitForContainer;\n}(_react.default.Component);\n\nWaitForContainer.propTypes = propTypes;\nvar _default = WaitForContainer;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = _default;\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _ownerDocument = _interopRequireDefault(require(\"dom-helpers/ownerDocument\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _default(componentOrElement) {\n return (0, _ownerDocument.default)(_reactDom.default.findDOMNode(componentOrElement));\n}\n\nmodule.exports = exports.default;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = all;\n\nvar _createChainableTypeChecker = require('./utils/createChainableTypeChecker');\n\nvar _createChainableTypeChecker2 = _interopRequireDefault(_createChainableTypeChecker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction all() {\n for (var _len = arguments.length, validators = Array(_len), _key = 0; _key < _len; _key++) {\n validators[_key] = arguments[_key];\n }\n\n function allPropTypes() {\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var error = null;\n\n validators.forEach(function (validator) {\n if (error != null) {\n return;\n }\n\n var result = validator.apply(undefined, args);\n if (result != null) {\n error = result;\n }\n });\n\n return error;\n }\n\n return (0, _createChainableTypeChecker2.default)(allPropTypes);\n}\nmodule.exports = exports['default'];","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","export default function toInteger (dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN\n }\n\n var number = Number(dirtyNumber)\n\n if (isNaN(number)) {\n return number\n }\n\n return number < 0 ? Math.ceil(number) : Math.floor(number)\n}\n","var MILLISECONDS_IN_MINUTE = 60000\n\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport default function getTimezoneOffsetInMilliseconds (dirtyDate) {\n var date = new Date(dirtyDate.getTime())\n var baseTimezoneOffset = date.getTimezoneOffset()\n date.setSeconds(0, 0)\n var millisecondsPartOfTimezoneOffset = date.getTime() % MILLISECONDS_IN_MINUTE\n\n return baseTimezoneOffset * MILLISECONDS_IN_MINUTE + millisecondsPartOfTimezoneOffset\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js'\n\nvar MILLISECONDS_IN_HOUR = 3600000\nvar MILLISECONDS_IN_MINUTE = 60000\nvar DEFAULT_ADDITIONAL_DIGITS = 2\n\nvar patterns = {\n dateTimeDelimeter: /[T ]/,\n plainTime: /:/,\n timeZoneDelimeter: /[Z ]/i,\n\n // year tokens\n YY: /^(\\d{2})$/,\n YYY: [\n /^([+-]\\d{2})$/, // 0 additional digits\n /^([+-]\\d{3})$/, // 1 additional digit\n /^([+-]\\d{4})$/ // 2 additional digits\n ],\n YYYY: /^(\\d{4})/,\n YYYYY: [\n /^([+-]\\d{4})/, // 0 additional digits\n /^([+-]\\d{5})/, // 1 additional digit\n /^([+-]\\d{6})/ // 2 additional digits\n ],\n\n // date tokens\n MM: /^-(\\d{2})$/,\n DDD: /^-?(\\d{3})$/,\n MMDD: /^-?(\\d{2})-?(\\d{2})$/,\n Www: /^-?W(\\d{2})$/,\n WwwD: /^-?W(\\d{2})-?(\\d{1})$/,\n\n HH: /^(\\d{2}([.,]\\d*)?)$/,\n HHMM: /^(\\d{2}):?(\\d{2}([.,]\\d*)?)$/,\n HHMMSS: /^(\\d{2}):?(\\d{2}):?(\\d{2}([.,]\\d*)?)$/,\n\n // timezone tokens\n timezone: /([Z+-].*)$/,\n timezoneZ: /^(Z)$/,\n timezoneHH: /^([+-])(\\d{2})$/,\n timezoneHHMM: /^([+-])(\\d{2}):?(\\d{2})$/\n}\n\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If an argument is a string, the function tries to parse it.\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n * If the function cannot parse the string or the values are invalid, it returns Invalid Date.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n * All *date-fns* functions will throw `RangeError` if `options.additionalDigits` is not 0, 1, 2 or undefined.\n *\n * @param {Date|String|Number} argument - the value to convert\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * var result = toDate('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * var result = toDate('+02014101', {additionalDigits: 1})\n * //=> Fri Apr 11 2014 00:00:00\n */\nexport default function toDate (argument, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n if (argument === null) {\n return new Date(NaN)\n }\n\n var options = dirtyOptions || {}\n\n var additionalDigits = options.additionalDigits == null ? DEFAULT_ADDITIONAL_DIGITS : toInteger(options.additionalDigits)\n if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {\n throw new RangeError('additionalDigits must be 0, 1 or 2')\n }\n\n // Clone the date\n if (argument instanceof Date ||\n (typeof argument === 'object' && Object.prototype.toString.call(argument) === '[object Date]')\n ) {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime())\n } else if (typeof argument === 'number' || Object.prototype.toString.call(argument) === '[object Number]') {\n return new Date(argument)\n } else if (!(typeof argument === 'string' || Object.prototype.toString.call(argument) === '[object String]')) {\n return new Date(NaN)\n }\n\n var dateStrings = splitDateString(argument)\n\n var parseYearResult = parseYear(dateStrings.date, additionalDigits)\n var year = parseYearResult.year\n var restDateString = parseYearResult.restDateString\n\n var date = parseDate(restDateString, year)\n\n if (isNaN(date)) {\n return new Date(NaN)\n }\n\n if (date) {\n var timestamp = date.getTime()\n var time = 0\n var offset\n\n if (dateStrings.time) {\n time = parseTime(dateStrings.time)\n\n if (isNaN(time)) {\n return new Date(NaN)\n }\n }\n\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone)\n if (isNaN(offset)) {\n return new Date(NaN)\n }\n } else {\n // get offset accurate to hour in timezones that change offset\n offset = getTimezoneOffsetInMilliseconds(new Date(timestamp + time))\n offset = getTimezoneOffsetInMilliseconds(new Date(timestamp + time + offset))\n }\n\n return new Date(timestamp + time + offset)\n } else {\n return new Date(NaN)\n }\n}\n\nfunction splitDateString (dateString) {\n var dateStrings = {}\n var array = dateString.split(patterns.dateTimeDelimeter)\n var timeString\n\n if (patterns.plainTime.test(array[0])) {\n dateStrings.date = null\n timeString = array[0]\n } else {\n dateStrings.date = array[0]\n timeString = array[1]\n if (patterns.timeZoneDelimeter.test(dateStrings.date)) {\n dateStrings.date = dateString.split(patterns.timeZoneDelimeter)[0]\n timeString = dateString.substr(dateStrings.date.length, dateString.length)\n }\n }\n\n if (timeString) {\n var token = patterns.timezone.exec(timeString)\n if (token) {\n dateStrings.time = timeString.replace(token[1], '')\n dateStrings.timezone = token[1]\n } else {\n dateStrings.time = timeString\n }\n }\n\n return dateStrings\n}\n\nfunction parseYear (dateString, additionalDigits) {\n var patternYYY = patterns.YYY[additionalDigits]\n var patternYYYYY = patterns.YYYYY[additionalDigits]\n\n var token\n\n // YYYY or ±YYYYY\n token = patterns.YYYY.exec(dateString) || patternYYYYY.exec(dateString)\n if (token) {\n var yearString = token[1]\n return {\n year: parseInt(yearString, 10),\n restDateString: dateString.slice(yearString.length)\n }\n }\n\n // YY or ±YYY\n token = patterns.YY.exec(dateString) || patternYYY.exec(dateString)\n if (token) {\n var centuryString = token[1]\n return {\n year: parseInt(centuryString, 10) * 100,\n restDateString: dateString.slice(centuryString.length)\n }\n }\n\n // Invalid ISO-formatted year\n return {\n year: null\n }\n}\n\nfunction parseDate (dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) {\n return null\n }\n\n var token\n var date\n var month\n var week\n\n // YYYY\n if (dateString.length === 0) {\n date = new Date(0)\n date.setUTCFullYear(year)\n return date\n }\n\n // YYYY-MM\n token = patterns.MM.exec(dateString)\n if (token) {\n date = new Date(0)\n month = parseInt(token[1], 10) - 1\n\n if (!validateDate(year, month)) {\n return new Date(NaN)\n }\n\n date.setUTCFullYear(year, month)\n return date\n }\n\n // YYYY-DDD or YYYYDDD\n token = patterns.DDD.exec(dateString)\n if (token) {\n date = new Date(0)\n var dayOfYear = parseInt(token[1], 10)\n\n if (!validateDayOfYearDate(year, dayOfYear)) {\n return new Date(NaN)\n }\n\n date.setUTCFullYear(year, 0, dayOfYear)\n return date\n }\n\n // YYYY-MM-DD or YYYYMMDD\n token = patterns.MMDD.exec(dateString)\n if (token) {\n date = new Date(0)\n month = parseInt(token[1], 10) - 1\n var day = parseInt(token[2], 10)\n\n if (!validateDate(year, month, day)) {\n return new Date(NaN)\n }\n\n date.setUTCFullYear(year, month, day)\n return date\n }\n\n // YYYY-Www or YYYYWww\n token = patterns.Www.exec(dateString)\n if (token) {\n week = parseInt(token[1], 10) - 1\n\n if (!validateWeekDate(year, week)) {\n return new Date(NaN)\n }\n\n return dayOfISOWeekYear(year, week)\n }\n\n // YYYY-Www-D or YYYYWwwD\n token = patterns.WwwD.exec(dateString)\n if (token) {\n week = parseInt(token[1], 10) - 1\n var dayOfWeek = parseInt(token[2], 10) - 1\n\n if (!validateWeekDate(year, week, dayOfWeek)) {\n return new Date(NaN)\n }\n\n return dayOfISOWeekYear(year, week, dayOfWeek)\n }\n\n // Invalid ISO-formatted date\n return null\n}\n\nfunction parseTime (timeString) {\n var token\n var hours\n var minutes\n\n // hh\n token = patterns.HH.exec(timeString)\n if (token) {\n hours = parseFloat(token[1].replace(',', '.'))\n\n if (!validateTime(hours)) {\n return NaN\n }\n\n return (hours % 24) * MILLISECONDS_IN_HOUR\n }\n\n // hh:mm or hhmm\n token = patterns.HHMM.exec(timeString)\n if (token) {\n hours = parseInt(token[1], 10)\n minutes = parseFloat(token[2].replace(',', '.'))\n\n if (!validateTime(hours, minutes)) {\n return NaN\n }\n\n return (hours % 24) * MILLISECONDS_IN_HOUR +\n minutes * MILLISECONDS_IN_MINUTE\n }\n\n // hh:mm:ss or hhmmss\n token = patterns.HHMMSS.exec(timeString)\n if (token) {\n hours = parseInt(token[1], 10)\n minutes = parseInt(token[2], 10)\n var seconds = parseFloat(token[3].replace(',', '.'))\n\n if (!validateTime(hours, minutes, seconds)) {\n return NaN\n }\n\n return (hours % 24) * MILLISECONDS_IN_HOUR +\n minutes * MILLISECONDS_IN_MINUTE +\n seconds * 1000\n }\n\n // Invalid ISO-formatted time\n return null\n}\n\nfunction parseTimezone (timezoneString) {\n var token\n var absoluteOffset\n\n // Z\n token = patterns.timezoneZ.exec(timezoneString)\n if (token) {\n return 0\n }\n\n var hours\n\n // ±hh\n token = patterns.timezoneHH.exec(timezoneString)\n if (token) {\n hours = parseInt(token[2], 10)\n\n if (!validateTimezone(hours)) {\n return NaN\n }\n\n absoluteOffset = hours * MILLISECONDS_IN_HOUR\n return (token[1] === '+') ? -absoluteOffset : absoluteOffset\n }\n\n // ±hh:mm or ±hhmm\n token = patterns.timezoneHHMM.exec(timezoneString)\n if (token) {\n hours = parseInt(token[2], 10)\n var minutes = parseInt(token[3], 10)\n\n if (!validateTimezone(hours, minutes)) {\n return NaN\n }\n\n absoluteOffset = hours * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE\n return (token[1] === '+') ? -absoluteOffset : absoluteOffset\n }\n\n return 0\n}\n\nfunction dayOfISOWeekYear (isoWeekYear, week, day) {\n week = week || 0\n day = day || 0\n var date = new Date(0)\n date.setUTCFullYear(isoWeekYear, 0, 4)\n var fourthOfJanuaryDay = date.getUTCDay() || 7\n var diff = week * 7 + day + 1 - fourthOfJanuaryDay\n date.setUTCDate(date.getUTCDate() + diff)\n return date\n}\n\n// Validation functions\n\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\nvar DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\n\nfunction isLeapYearIndex (year) {\n return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0)\n}\n\nfunction validateDate (year, month, date) {\n if (month < 0 || month > 11) {\n return false\n }\n\n if (date != null) {\n if (date < 1) {\n return false\n }\n\n var isLeapYear = isLeapYearIndex(year)\n if (isLeapYear && date > DAYS_IN_MONTH_LEAP_YEAR[month]) {\n return false\n }\n if (!isLeapYear && date > DAYS_IN_MONTH[month]) {\n return false\n }\n }\n\n return true\n}\n\nfunction validateDayOfYearDate (year, dayOfYear) {\n if (dayOfYear < 1) {\n return false\n }\n\n var isLeapYear = isLeapYearIndex(year)\n if (isLeapYear && dayOfYear > 366) {\n return false\n }\n if (!isLeapYear && dayOfYear > 365) {\n return false\n }\n\n return true\n}\n\nfunction validateWeekDate (year, week, day) {\n if (week < 0 || week > 52) {\n return false\n }\n\n if (day != null && (day < 0 || day > 6)) {\n return false\n }\n\n return true\n}\n\nfunction validateTime (hours, minutes, seconds) {\n if (hours != null && (hours < 0 || hours >= 25)) {\n return false\n }\n\n if (minutes != null && (minutes < 0 || minutes >= 60)) {\n return false\n }\n\n if (seconds != null && (seconds < 0 || seconds >= 60)) {\n return false\n }\n\n return true\n}\n\nfunction validateTimezone (hours, minutes) {\n if (minutes != null && (minutes < 0 || minutes > 59)) {\n return false\n }\n\n return true\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be added\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the days added\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * var result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nexport default function addDays (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var amount = toInteger(dirtyAmount)\n date.setDate(date.getDate() + amount)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * var result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nexport default function addMilliseconds (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var timestamp = toDate(dirtyDate, dirtyOptions).getTime()\n var amount = toInteger(dirtyAmount)\n return new Date(timestamp + amount)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addMilliseconds from '../addMilliseconds/index.js'\n\nvar MILLISECONDS_IN_HOUR = 3600000\n\n/**\n * @name addHours\n * @category Hour Helpers\n * @summary Add the specified number of hours to the given date.\n *\n * @description\n * Add the specified number of hours to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of hours to be added\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the hours added\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Add 2 hours to 10 July 2014 23:00:00:\n * var result = addHours(new Date(2014, 6, 10, 23, 0), 2)\n * //=> Fri Jul 11 2014 01:00:00\n */\nexport default function addHours (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount)\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_HOUR, dirtyOptions)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {Date} the start of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * var result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * var result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), {weekStartsOn: 1})\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function startOfWeek (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn)\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn)\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n var date = toDate(dirtyDate, options)\n var day = date.getDay()\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn\n\n date.setDate(date.getDate() - diff)\n date.setHours(0, 0, 0, 0)\n return date\n}\n","export default function cloneObject (dirtyObject) {\n dirtyObject = dirtyObject || {}\n var object = {}\n\n for (var property in dirtyObject) {\n if (dirtyObject.hasOwnProperty(property)) {\n object[property] = dirtyObject[property]\n }\n }\n\n return object\n}\n","import startOfWeek from '../startOfWeek/index.js'\nimport cloneObject from '../_lib/cloneObject/index.js'\n\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the start of an ISO week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * var result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function startOfISOWeek (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var startOfWeekOptions = cloneObject(dirtyOptions)\n startOfWeekOptions.weekStartsOn = 1\n return startOfWeek(dirtyDate, startOfWeekOptions)\n}\n","import toDate from '../toDate/index.js'\nimport startOfISOWeek from '../startOfISOWeek/index.js'\n\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the ISO week-numbering year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * var result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\nexport default function getISOWeekYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var year = date.getFullYear()\n\n var fourthOfJanuaryOfNextYear = new Date(0)\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4)\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0)\n var startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear, dirtyOptions)\n\n var fourthOfJanuaryOfThisYear = new Date(0)\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4)\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0)\n var startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear, dirtyOptions)\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year\n } else {\n return year - 1\n }\n}\n","import getISOWeekYear from '../getISOWeekYear/index.js'\nimport startOfISOWeek from '../startOfISOWeek/index.js'\n\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the start of an ISO week-numbering year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * var result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport default function startOfISOWeekYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var year = getISOWeekYear(dirtyDate, dirtyOptions)\n var fourthOfJanuary = new Date(0)\n fourthOfJanuary.setFullYear(year, 0, 4)\n fourthOfJanuary.setHours(0, 0, 0, 0)\n var date = startOfISOWeek(fourthOfJanuary, dirtyOptions)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the start of a day\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * var result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport default function startOfDay (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n date.setHours(0, 0, 0, 0)\n return date\n}\n","import getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js'\nimport startOfDay from '../startOfDay/index.js'\n\nvar MILLISECONDS_IN_DAY = 86400000\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of calendar days\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * var result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * var result = differenceInCalendarDays(\n * new Date(2011, 6, 2, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport default function differenceInCalendarDays (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var startOfDayLeft = startOfDay(dirtyDateLeft, dirtyOptions)\n var startOfDayRight = startOfDay(dirtyDateRight, dirtyOptions)\n\n var timestampLeft = startOfDayLeft.getTime() -\n getTimezoneOffsetInMilliseconds(startOfDayLeft)\n var timestampRight = startOfDayRight.getTime() -\n getTimezoneOffsetInMilliseconds(startOfDayRight)\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a day is not constant\n // (e.g. it's different in the day of the daylight saving time clock shift)\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_DAY)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\nimport startOfISOWeekYear from '../startOfISOWeekYear/index.js'\nimport differenceInCalendarDays from '../differenceInCalendarDays/index.js'\n\n/**\n * @name setISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Set the ISO week-numbering year to the given date.\n *\n * @description\n * Set the ISO week-numbering year to the given date,\n * saving the week number and the weekday number.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} isoWeekYear - the ISO week-numbering year of the new date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the ISO week-numbering year setted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Set ISO week-numbering year 2007 to 29 December 2008:\n * var result = setISOWeekYear(new Date(2008, 11, 29), 2007)\n * //=> Mon Jan 01 2007 00:00:00\n */\nexport default function setISOWeekYear (dirtyDate, dirtyISOWeekYear, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var isoWeekYear = toInteger(dirtyISOWeekYear)\n var diff = differenceInCalendarDays(date, startOfISOWeekYear(date, dirtyOptions), dirtyOptions)\n var fourthOfJanuary = new Date(0)\n fourthOfJanuary.setFullYear(isoWeekYear, 0, 4)\n fourthOfJanuary.setHours(0, 0, 0, 0)\n date = startOfISOWeekYear(fourthOfJanuary, dirtyOptions)\n date.setDate(date.getDate() + diff)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport getISOWeekYear from '../getISOWeekYear/index.js'\nimport setISOWeekYear from '../setISOWeekYear/index.js'\n\n/**\n * @name addISOWeekYears\n * @category ISO Week-Numbering Year Helpers\n * @summary Add the specified number of ISO week-numbering years to the given date.\n *\n * @description\n * Add the specified number of ISO week-numbering years to the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of ISO week-numbering years to be added\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the ISO week-numbering years added\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Add 5 ISO week-numbering years to 2 July 2010:\n * var result = addISOWeekYears(new Date(2010, 6, 2), 5)\n * //=> Fri Jun 26 2015 00:00:00\n */\nexport default function addISOWeekYears (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount)\n return setISOWeekYear(dirtyDate, getISOWeekYear(dirtyDate, dirtyOptions) + amount, dirtyOptions)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addMilliseconds from '../addMilliseconds/index.js'\n\nvar MILLISECONDS_IN_MINUTE = 60000\n\n/**\n * @name addMinutes\n * @category Minute Helpers\n * @summary Add the specified number of minutes to the given date.\n *\n * @description\n * Add the specified number of minutes to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes to be added\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the minutes added\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Add 30 minutes to 10 July 2014 12:00:00:\n * var result = addMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 12:30:00\n */\nexport default function addMinutes (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount)\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_MINUTE, dirtyOptions)\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getDaysInMonth\n * @category Month Helpers\n * @summary Get the number of days in a month of the given date.\n *\n * @description\n * Get the number of days in a month of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of days in a month\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many days are in February 2000?\n * var result = getDaysInMonth(new Date(2000, 1))\n * //=> 29\n */\nexport default function getDaysInMonth (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var year = date.getFullYear()\n var monthIndex = date.getMonth()\n var lastDayOfMonth = new Date(0)\n lastDayOfMonth.setFullYear(year, monthIndex + 1, 0)\n lastDayOfMonth.setHours(0, 0, 0, 0)\n return lastDayOfMonth.getDate()\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\nimport getDaysInMonth from '../getDaysInMonth/index.js'\n\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be added\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the months added\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * var result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n */\nexport default function addMonths (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var amount = toInteger(dirtyAmount)\n var desiredMonth = date.getMonth() + amount\n var dateWithDesiredMonth = new Date(0)\n dateWithDesiredMonth.setFullYear(date.getFullYear(), desiredMonth, 1)\n dateWithDesiredMonth.setHours(0, 0, 0, 0)\n var daysInMonth = getDaysInMonth(dateWithDesiredMonth, dirtyOptions)\n // Set the last day of the new month\n // if the original date was the last day of the longer month\n date.setMonth(desiredMonth, Math.min(daysInMonth, date.getDate()))\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addMonths from '../addMonths/index.js'\n\n/**\n * @name addQuarters\n * @category Quarter Helpers\n * @summary Add the specified number of year quarters to the given date.\n *\n * @description\n * Add the specified number of year quarters to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of quarters to be added\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the quarters added\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Add 1 quarter to 1 September 2014:\n * var result = addQuarters(new Date(2014, 8, 1), 1)\n * //=> Mon Dec 01 2014 00:00:00\n */\nexport default function addQuarters (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount)\n var months = amount * 3\n return addMonths(dirtyDate, months, dirtyOptions)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addMilliseconds from '../addMilliseconds/index.js'\n\n/**\n * @name addSeconds\n * @category Second Helpers\n * @summary Add the specified number of seconds to the given date.\n *\n * @description\n * Add the specified number of seconds to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of seconds to be added\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the seconds added\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Add 30 seconds to 10 July 2014 12:45:00:\n * var result = addSeconds(new Date(2014, 6, 10, 12, 45, 0), 30)\n * //=> Thu Jul 10 2014 12:45:30\n */\nexport default function addSeconds (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount)\n return addMilliseconds(dirtyDate, amount * 1000, dirtyOptions)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addDays from '../addDays/index.js'\n\n/**\n * @name addWeeks\n * @category Week Helpers\n * @summary Add the specified number of weeks to the given date.\n *\n * @description\n * Add the specified number of week to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be added\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the weeks added\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Add 4 weeks to 1 September 2014:\n * var result = addWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Sep 29 2014 00:00:00\n */\nexport default function addWeeks (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount)\n var days = amount * 7\n return addDays(dirtyDate, days, dirtyOptions)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addMonths from '../addMonths/index.js'\n\n/**\n * @name addYears\n * @category Year Helpers\n * @summary Add the specified number of years to the given date.\n *\n * @description\n * Add the specified number of years to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be added\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the years added\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Add 5 years to 1 September 2014:\n * var result = addYears(new Date(2014, 8, 1), 5)\n * //=> Sun Sep 01 2019 00:00:00\n */\nexport default function addYears (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount)\n return addMonths(dirtyDate, amount * 12, dirtyOptions)\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name areIntervalsOverlapping\n * @category Interval Helpers\n * @summary Is the given time interval overlapping with another time interval?\n *\n * @description\n * Is the given time interval overlapping with another time interval?\n *\n * @param {Interval} intervalLeft - the first interval to compare. See [Interval]{@link docs/types/Interval}\n * @param {Interval} intervalRight - the second interval to compare. See [Interval]{@link docs/types/Interval}\n * @param {Options} [options] - the object with options. See [Options]{@link docs/types/Options}\n * @returns {Boolean} whether the time intervals are overlapping\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // For overlapping time intervals:\n * areIntervalsOverlapping(\n * {start: new Date(2014, 0, 10), end: new Date(2014, 0, 20)},\n * {start: new Date(2014, 0, 17), end: new Date(2014, 0, 21)}\n * )\n * //=> true\n *\n * @example\n * // For non-overlapping time intervals:\n * areIntervalsOverlapping(\n * {start: new Date(2014, 0, 10), end: new Date(2014, 0, 20)},\n * {start: new Date(2014, 0, 21), end: new Date(2014, 0, 22)}\n * )\n * //=> false\n */\nexport default function areIntervalsOverlapping (dirtyIntervalLeft, dirtyIntervalRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var intervalLeft = dirtyIntervalLeft || {}\n var intervalRight = dirtyIntervalRight || {}\n var leftStartTime = toDate(intervalLeft.start, dirtyOptions).getTime()\n var leftEndTime = toDate(intervalLeft.end, dirtyOptions).getTime()\n var rightStartTime = toDate(intervalRight.start, dirtyOptions).getTime()\n var rightEndTime = toDate(intervalRight.end, dirtyOptions).getTime()\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(leftStartTime <= leftEndTime && rightStartTime <= rightEndTime)) {\n throw new RangeError('Invalid interval')\n }\n\n return leftStartTime < rightEndTime && rightStartTime < leftEndTime\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name closestIndexTo\n * @category Common Helpers\n * @summary Return an index of the closest date from the array comparing to the given date.\n *\n * @description\n * Return an index of the closest date from the array comparing to the given date.\n *\n * @param {Date|String|Number} dateToCompare - the date to compare with\n * @param {Date[]|String[]|Number[]} datesArray - the array to search\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} an index of the date closest to the given date\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Which date is closer to 6 September 2015?\n * var dateToCompare = new Date(2015, 8, 6)\n * var datesArray = [\n * new Date(2015, 0, 1),\n * new Date(2016, 0, 1),\n * new Date(2017, 0, 1)\n * ]\n * var result = closestIndexTo(dateToCompare, datesArray)\n * //=> 1\n */\nexport default function closestIndexTo (dirtyDateToCompare, dirtyDatesArray, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateToCompare = toDate(dirtyDateToCompare, dirtyOptions)\n\n if (isNaN(dateToCompare)) {\n return NaN\n }\n\n var timeToCompare = dateToCompare.getTime()\n\n var datesArray\n // `dirtyDatesArray` is undefined or null\n if (dirtyDatesArray == null) {\n datesArray = []\n\n // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n } else if (typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray\n\n // If `dirtyDatesArray` is Array-like Object, convert to Array. Otherwise, make it empty Array\n } else {\n datesArray = Array.prototype.slice.call(dirtyDatesArray)\n }\n\n var result\n var minDistance\n datesArray.forEach(function (dirtyDate, index) {\n var currentDate = toDate(dirtyDate, dirtyOptions)\n\n if (isNaN(currentDate)) {\n result = NaN\n minDistance = NaN\n return\n }\n\n var distance = Math.abs(timeToCompare - currentDate.getTime())\n if (result == null || distance < minDistance) {\n result = index\n minDistance = distance\n }\n })\n\n return result\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name closestTo\n * @category Common Helpers\n * @summary Return a date from the array closest to the given date.\n *\n * @description\n * Return a date from the array closest to the given date.\n *\n * @param {Date|String|Number} dateToCompare - the date to compare with\n * @param {Date[]|String[]|Number[]} datesArray - the array to search\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the date from the array closest to the given date\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Which date is closer to 6 September 2015: 1 January 2000 or 1 January 2030?\n * var dateToCompare = new Date(2015, 8, 6)\n * var result = closestTo(dateToCompare, [\n * new Date(2000, 0, 1),\n * new Date(2030, 0, 1)\n * ])\n * //=> Tue Jan 01 2030 00:00:00\n */\nexport default function closestTo (dirtyDateToCompare, dirtyDatesArray, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateToCompare = toDate(dirtyDateToCompare, dirtyOptions)\n\n if (isNaN(dateToCompare)) {\n return new Date(NaN)\n }\n\n var timeToCompare = dateToCompare.getTime()\n\n var datesArray\n // `dirtyDatesArray` is undefined or null\n if (dirtyDatesArray == null) {\n datesArray = []\n\n // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n } else if (typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray\n\n // If `dirtyDatesArray` is Array-like Object, convert to Array. Otherwise, make it empty Array\n } else {\n datesArray = Array.prototype.slice.call(dirtyDatesArray)\n }\n\n var result\n var minDistance\n datesArray.forEach(function (dirtyDate) {\n var currentDate = toDate(dirtyDate, dirtyOptions)\n\n if (isNaN(currentDate)) {\n result = new Date(NaN)\n minDistance = NaN\n return\n }\n\n var distance = Math.abs(timeToCompare - currentDate.getTime())\n if (result == null || distance < minDistance) {\n result = currentDate\n minDistance = distance\n }\n })\n\n return result\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name compareAsc\n * @category Common Helpers\n * @summary Compare the two dates and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return 1 if the first date is after the second,\n * -1 if the first date is before the second or 0 if dates are equal.\n *\n * @param {Date|String|Number} dateLeft - the first date to compare\n * @param {Date|String|Number} dateRight - the second date to compare\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the result of the comparison\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989:\n * var result = compareAsc(\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * )\n * //=> -1\n *\n * @example\n * // Sort the array of dates:\n * var result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareAsc)\n * //=> [\n * // Wed Feb 11 1987 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Sun Jul 02 1995 00:00:00\n * // ]\n */\nexport default function compareAsc (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeft = toDate(dirtyDateLeft, dirtyOptions)\n var dateRight = toDate(dirtyDateRight, dirtyOptions)\n\n var diff = dateLeft.getTime() - dateRight.getTime()\n\n if (diff < 0) {\n return -1\n } else if (diff > 0) {\n return 1\n // Return 0 if diff is 0; return NaN if diff is NaN\n } else {\n return diff\n }\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name compareDesc\n * @category Common Helpers\n * @summary Compare the two dates reverse chronologically and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return -1 if the first date is after the second,\n * 1 if the first date is before the second or 0 if dates are equal.\n *\n * @param {Date|String|Number} dateLeft - the first date to compare\n * @param {Date|String|Number} dateRight - the second date to compare\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the result of the comparison\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989 reverse chronologically:\n * var result = compareDesc(\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * )\n * //=> 1\n *\n * @example\n * // Sort the array of dates in reverse chronological order:\n * var result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareDesc)\n * //=> [\n * // Sun Jul 02 1995 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Wed Feb 11 1987 00:00:00\n * // ]\n */\nexport default function compareDesc (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeft = toDate(dirtyDateLeft, dirtyOptions)\n var dateRight = toDate(dirtyDateRight, dirtyOptions)\n\n var diff = dateLeft.getTime() - dateRight.getTime()\n\n if (diff > 0) {\n return -1\n } else if (diff < 0) {\n return 1\n // Return 0 if diff is 0; return NaN if diff is NaN\n } else {\n return diff\n }\n}\n","import getISOWeekYear from '../getISOWeekYear/index.js'\n\n/**\n * @name differenceInCalendarISOWeekYears\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the number of calendar ISO week-numbering years between the given dates.\n *\n * @description\n * Get the number of calendar ISO week-numbering years between the given dates.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of calendar ISO week-numbering years\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many calendar ISO week-numbering years are 1 January 2010 and 1 January 2012?\n * var result = differenceInCalendarISOWeekYears(\n * new Date(2012, 0, 1),\n * new Date(2010, 0, 1)\n * )\n * //=> 2\n */\nexport default function differenceInCalendarISOWeekYears (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n return getISOWeekYear(dirtyDateLeft, dirtyOptions) - getISOWeekYear(dirtyDateRight, dirtyOptions)\n}\n","import getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js'\nimport startOfISOWeek from '../startOfISOWeek/index.js'\n\nvar MILLISECONDS_IN_WEEK = 604800000\n\n/**\n * @name differenceInCalendarISOWeeks\n * @category ISO Week Helpers\n * @summary Get the number of calendar ISO weeks between the given dates.\n *\n * @description\n * Get the number of calendar ISO weeks between the given dates.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of calendar ISO weeks\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many calendar ISO weeks are between 6 July 2014 and 21 July 2014?\n * var result = differenceInCalendarISOWeeks(\n * new Date(2014, 6, 21),\n * new Date(2014, 6, 6)\n * )\n * //=> 3\n */\nexport default function differenceInCalendarISOWeeks (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var startOfISOWeekLeft = startOfISOWeek(dirtyDateLeft, dirtyOptions)\n var startOfISOWeekRight = startOfISOWeek(dirtyDateRight, dirtyOptions)\n\n var timestampLeft = startOfISOWeekLeft.getTime() -\n getTimezoneOffsetInMilliseconds(startOfISOWeekLeft)\n var timestampRight = startOfISOWeekRight.getTime() -\n getTimezoneOffsetInMilliseconds(startOfISOWeekRight)\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_WEEK)\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name differenceInCalendarMonths\n * @category Month Helpers\n * @summary Get the number of calendar months between the given dates.\n *\n * @description\n * Get the number of calendar months between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of calendar months\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * var result = differenceInCalendarMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 8\n */\nexport default function differenceInCalendarMonths (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeft = toDate(dirtyDateLeft, dirtyOptions)\n var dateRight = toDate(dirtyDateRight, dirtyOptions)\n\n var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear()\n var monthDiff = dateLeft.getMonth() - dateRight.getMonth()\n\n return yearDiff * 12 + monthDiff\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getQuarter\n * @category Quarter Helpers\n * @summary Get the year quarter of the given date.\n *\n * @description\n * Get the year quarter of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the quarter\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Which quarter is 2 July 2014?\n * var result = getQuarter(new Date(2014, 6, 2))\n * //=> 3\n */\nexport default function getQuarter (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var quarter = Math.floor(date.getMonth() / 3) + 1\n return quarter\n}\n","import getQuarter from '../getQuarter/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name differenceInCalendarQuarters\n * @category Quarter Helpers\n * @summary Get the number of calendar quarters between the given dates.\n *\n * @description\n * Get the number of calendar quarters between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of calendar quarters\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many calendar quarters are between 31 December 2013 and 2 July 2014?\n * var result = differenceInCalendarQuarters(\n * new Date(2014, 6, 2),\n * new Date(2013, 11, 31)\n * )\n * //=> 3\n */\nexport default function differenceInCalendarQuarters (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeft = toDate(dirtyDateLeft, dirtyOptions)\n var dateRight = toDate(dirtyDateRight, dirtyOptions)\n\n var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear()\n var quarterDiff = getQuarter(dateLeft, dirtyOptions) - getQuarter(dateRight, dirtyOptions)\n\n return yearDiff * 4 + quarterDiff\n}\n","import getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js'\nimport startOfWeek from '../startOfWeek/index.js'\n\nvar MILLISECONDS_IN_WEEK = 604800000\n\n/**\n * @name differenceInCalendarWeeks\n * @category Week Helpers\n * @summary Get the number of calendar weeks between the given dates.\n *\n * @description\n * Get the number of calendar weeks between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {Number} the number of calendar weeks\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // How many calendar weeks are between 5 July 2014 and 20 July 2014?\n * var result = differenceInCalendarWeeks(\n * new Date(2014, 6, 20),\n * new Date(2014, 6, 5)\n * )\n * //=> 3\n *\n * @example\n * // If the week starts on Monday,\n * // how many calendar weeks are between 5 July 2014 and 20 July 2014?\n * var result = differenceInCalendarWeeks(\n * new Date(2014, 6, 20),\n * new Date(2014, 6, 5),\n * {weekStartsOn: 1}\n * )\n * //=> 2\n */\nexport default function differenceInCalendarWeeks (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var startOfWeekLeft = startOfWeek(dirtyDateLeft, dirtyOptions)\n var startOfWeekRight = startOfWeek(dirtyDateRight, dirtyOptions)\n\n var timestampLeft = startOfWeekLeft.getTime() -\n getTimezoneOffsetInMilliseconds(startOfWeekLeft)\n var timestampRight = startOfWeekRight.getTime() -\n getTimezoneOffsetInMilliseconds(startOfWeekRight)\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_WEEK)\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name differenceInCalendarYears\n * @category Year Helpers\n * @summary Get the number of calendar years between the given dates.\n *\n * @description\n * Get the number of calendar years between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of calendar years\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many calendar years are between 31 December 2013 and 11 February 2015?\n * var result = differenceInCalendarYears(\n * new Date(2015, 1, 11),\n * new Date(2013, 11, 31)\n * )\n * //=> 2\n */\nexport default function differenceInCalendarYears (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeft = toDate(dirtyDateLeft, dirtyOptions)\n var dateRight = toDate(dirtyDateRight, dirtyOptions)\n\n return dateLeft.getFullYear() - dateRight.getFullYear()\n}\n","import toDate from '../toDate/index.js'\nimport differenceInCalendarDays from '../differenceInCalendarDays/index.js'\nimport compareAsc from '../compareAsc/index.js'\n\n/**\n * @name differenceInDays\n * @category Day Helpers\n * @summary Get the number of full days between the given dates.\n *\n * @description\n * Get the number of full day periods between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of full days\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many full days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * var result = differenceInDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 365\n * // How many days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * var result = differenceInDays(\n * new Date(2011, 6, 2, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 0\n*/\nexport default function differenceInDays (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeft = toDate(dirtyDateLeft, dirtyOptions)\n var dateRight = toDate(dirtyDateRight, dirtyOptions)\n\n var sign = compareAsc(dateLeft, dateRight, dirtyOptions)\n var difference = Math.abs(differenceInCalendarDays(dateLeft, dateRight, dirtyOptions))\n\n dateLeft.setDate(dateLeft.getDate() - sign * difference)\n\n // Math.abs(diff in full days - diff in calendar days) === 1 if last calendar day is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastDayNotFull = compareAsc(dateLeft, dateRight, dirtyOptions) === -sign\n var result = sign * (difference - isLastDayNotFull)\n // Prevent negative zero\n return result === 0 ? 0 : result\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name differenceInMilliseconds\n * @category Millisecond Helpers\n * @summary Get the number of milliseconds between the given dates.\n *\n * @description\n * Get the number of milliseconds between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of milliseconds\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many milliseconds are between\n * // 2 July 2014 12:30:20.600 and 2 July 2014 12:30:21.700?\n * var result = differenceInMilliseconds(\n * new Date(2014, 6, 2, 12, 30, 21, 700),\n * new Date(2014, 6, 2, 12, 30, 20, 600)\n * )\n * //=> 1100\n */\nexport default function differenceInMilliseconds (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeft = toDate(dirtyDateLeft, dirtyOptions)\n var dateRight = toDate(dirtyDateRight, dirtyOptions)\n return dateLeft.getTime() - dateRight.getTime()\n}\n","import differenceInMilliseconds from '../differenceInMilliseconds/index.js'\n\nvar MILLISECONDS_IN_HOUR = 3600000\n\n/**\n * @name differenceInHours\n * @category Hour Helpers\n * @summary Get the number of hours between the given dates.\n *\n * @description\n * Get the number of hours between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of hours\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many hours are between 2 July 2014 06:50:00 and 2 July 2014 19:00:00?\n * var result = differenceInHours(\n * new Date(2014, 6, 2, 19, 0),\n * new Date(2014, 6, 2, 6, 50)\n * )\n * //=> 12\n */\nexport default function differenceInHours (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var diff = differenceInMilliseconds(dirtyDateLeft, dirtyDateRight, dirtyOptions) / MILLISECONDS_IN_HOUR\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addISOWeekYears from '../addISOWeekYears/index.js'\n\n/**\n * @name subISOWeekYears\n * @category ISO Week-Numbering Year Helpers\n * @summary Subtract the specified number of ISO week-numbering years from the given date.\n *\n * @description\n * Subtract the specified number of ISO week-numbering years from the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of ISO week-numbering years to be subtracted\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the ISO week-numbering years subtracted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Subtract 5 ISO week-numbering years from 1 September 2014:\n * var result = subISOWeekYears(new Date(2014, 8, 1), 5)\n * //=> Mon Aug 31 2009 00:00:00\n */\nexport default function subISOWeekYears (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount)\n return addISOWeekYears(dirtyDate, -amount, dirtyOptions)\n}\n","import toDate from '../toDate/index.js'\nimport differenceInCalendarISOWeekYears from '../differenceInCalendarISOWeekYears/index.js'\nimport compareAsc from '../compareAsc/index.js'\nimport subISOWeekYears from '../subISOWeekYears/index.js'\n\n/**\n * @name differenceInISOWeekYears\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the number of full ISO week-numbering years between the given dates.\n *\n * @description\n * Get the number of full ISO week-numbering years between the given dates.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of full ISO week-numbering years\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many full ISO week-numbering years are between 1 January 2010 and 1 January 2012?\n * var result = differenceInISOWeekYears(\n * new Date(2012, 0, 1),\n * new Date(2010, 0, 1)\n * )\n * //=> 1\n */\nexport default function differenceInISOWeekYears (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeft = toDate(dirtyDateLeft, dirtyOptions)\n var dateRight = toDate(dirtyDateRight, dirtyOptions)\n\n var sign = compareAsc(dateLeft, dateRight, dirtyOptions)\n var difference = Math.abs(differenceInCalendarISOWeekYears(dateLeft, dateRight, dirtyOptions))\n dateLeft = subISOWeekYears(dateLeft, sign * difference, dirtyOptions)\n\n // Math.abs(diff in full ISO years - diff in calendar ISO years) === 1\n // if last calendar ISO year is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastISOWeekYearNotFull = compareAsc(dateLeft, dateRight, dirtyOptions) === -sign\n var result = sign * (difference - isLastISOWeekYearNotFull)\n // Prevent negative zero\n return result === 0 ? 0 : result\n}\n","import differenceInMilliseconds from '../differenceInMilliseconds/index.js'\n\nvar MILLISECONDS_IN_MINUTE = 60000\n\n/**\n * @name differenceInMinutes\n * @category Minute Helpers\n * @summary Get the number of minutes between the given dates.\n *\n * @description\n * Get the number of minutes between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of minutes\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many minutes are between 2 July 2014 12:07:59 and 2 July 2014 12:20:00?\n * var result = differenceInMinutes(\n * new Date(2014, 6, 2, 12, 20, 0),\n * new Date(2014, 6, 2, 12, 7, 59)\n * )\n * //=> 12\n */\nexport default function differenceInMinutes (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var diff = differenceInMilliseconds(dirtyDateLeft, dirtyDateRight, dirtyOptions) / MILLISECONDS_IN_MINUTE\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff)\n}\n","import toDate from '../toDate/index.js'\nimport differenceInCalendarMonths from '../differenceInCalendarMonths/index.js'\nimport compareAsc from '../compareAsc/index.js'\n\n/**\n * @name differenceInMonths\n * @category Month Helpers\n * @summary Get the number of full months between the given dates.\n *\n * @description\n * Get the number of full months between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of full months\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many full months are between 31 January 2014 and 1 September 2014?\n * var result = differenceInMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 7\n */\nexport default function differenceInMonths (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeft = toDate(dirtyDateLeft, dirtyOptions)\n var dateRight = toDate(dirtyDateRight, dirtyOptions)\n\n var sign = compareAsc(dateLeft, dateRight, dirtyOptions)\n var difference = Math.abs(differenceInCalendarMonths(dateLeft, dateRight, dirtyOptions))\n dateLeft.setMonth(dateLeft.getMonth() - sign * difference)\n\n // Math.abs(diff in full months - diff in calendar months) === 1 if last calendar month is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastMonthNotFull = compareAsc(dateLeft, dateRight, dirtyOptions) === -sign\n var result = sign * (difference - isLastMonthNotFull)\n // Prevent negative zero\n return result === 0 ? 0 : result\n}\n","import differenceInMonths from '../differenceInMonths/index.js'\n\n/**\n * @name differenceInQuarters\n * @category Quarter Helpers\n * @summary Get the number of full quarters between the given dates.\n *\n * @description\n * Get the number of full quarters between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of full quarters\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many full quarters are between 31 December 2013 and 2 July 2014?\n * var result = differenceInQuarters(\n * new Date(2014, 6, 2),\n * new Date(2013, 11, 31)\n * )\n * //=> 2\n */\nexport default function differenceInQuarters (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var diff = differenceInMonths(dirtyDateLeft, dirtyDateRight, dirtyOptions) / 3\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff)\n}\n","import differenceInMilliseconds from '../differenceInMilliseconds/index.js'\n\n/**\n * @name differenceInSeconds\n * @category Second Helpers\n * @summary Get the number of seconds between the given dates.\n *\n * @description\n * Get the number of seconds between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of seconds\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many seconds are between\n * // 2 July 2014 12:30:07.999 and 2 July 2014 12:30:20.000?\n * var result = differenceInSeconds(\n * new Date(2014, 6, 2, 12, 30, 20, 0),\n * new Date(2014, 6, 2, 12, 30, 7, 999)\n * )\n * //=> 12\n */\nexport default function differenceInSeconds (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var diff = differenceInMilliseconds(dirtyDateLeft, dirtyDateRight, dirtyOptions) / 1000\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff)\n}\n","import differenceInDays from '../differenceInDays/index.js'\n\n/**\n * @name differenceInWeeks\n * @category Week Helpers\n * @summary Get the number of full weeks between the given dates.\n *\n * @description\n * Get the number of full weeks between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of full weeks\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many full weeks are between 5 July 2014 and 20 July 2014?\n * var result = differenceInWeeks(\n * new Date(2014, 6, 20),\n * new Date(2014, 6, 5)\n * )\n * //=> 2\n */\nexport default function differenceInWeeks (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var diff = differenceInDays(dirtyDateLeft, dirtyDateRight, dirtyOptions) / 7\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff)\n}\n","import toDate from '../toDate/index.js'\nimport differenceInCalendarYears from '../differenceInCalendarYears/index.js'\nimport compareAsc from '../compareAsc/index.js'\n\n/**\n * @name differenceInYears\n * @category Year Helpers\n * @summary Get the number of full years between the given dates.\n *\n * @description\n * Get the number of full years between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of full years\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many full years are between 31 December 2013 and 11 February 2015?\n * var result = differenceInYears(\n * new Date(2015, 1, 11),\n * new Date(2013, 11, 31)\n * )\n * //=> 1\n */\nexport default function differenceInYears (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeft = toDate(dirtyDateLeft, dirtyOptions)\n var dateRight = toDate(dirtyDateRight, dirtyOptions)\n\n var sign = compareAsc(dateLeft, dateRight, dirtyOptions)\n var difference = Math.abs(differenceInCalendarYears(dateLeft, dateRight, dirtyOptions))\n dateLeft.setFullYear(dateLeft.getFullYear() - sign * difference)\n\n // Math.abs(diff in full years - diff in calendar years) === 1 if last calendar year is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastYearNotFull = compareAsc(dateLeft, dateRight, dirtyOptions) === -sign\n var result = sign * (difference - isLastYearNotFull)\n // Prevent negative zero\n return result === 0 ? 0 : result\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name eachDayOfInterval\n * @category Interval Helpers\n * @summary Return the array of dates within the specified time interval.\n *\n * @description\n * Return the array of dates within the specified time interval.\n *\n * @param {Interval} interval - the interval. See [Interval]{@link docs/types/Interval}\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date[]} the array with starts of days from the day of the interval start to the day of the interval end\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Each day between 6 October 2014 and 10 October 2014:\n * var result = eachDayOfInterval({\n * start: new Date(2014, 9, 6),\n * end: new Date(2014, 9, 10)\n * })\n * //=> [\n * // Mon Oct 06 2014 00:00:00,\n * // Tue Oct 07 2014 00:00:00,\n * // Wed Oct 08 2014 00:00:00,\n * // Thu Oct 09 2014 00:00:00,\n * // Fri Oct 10 2014 00:00:00\n * // ]\n */\nexport default function eachDayOfInterval (dirtyInterval, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var interval = dirtyInterval || {}\n var startDate = toDate(interval.start, dirtyOptions)\n var endDate = toDate(interval.end, dirtyOptions)\n\n var endTime = endDate.getTime()\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(startDate.getTime() <= endTime)) {\n throw new RangeError('Invalid interval')\n }\n\n var dates = []\n\n var currentDate = startDate\n currentDate.setHours(0, 0, 0, 0)\n\n while (currentDate.getTime() <= endTime) {\n dates.push(toDate(currentDate, dirtyOptions))\n currentDate.setDate(currentDate.getDate() + 1)\n }\n\n return dates\n}\n","import toDate from '../toDate/index.js'\nimport startOfWeek from '../startOfWeek/index.js'\nimport addWeeks from '../addWeeks/index.js'\n\n/**\n * @name eachWeekOfInterval\n * @category Interval Helpers\n * @summary Return the array of weeks within the specified time interval.\n *\n * @description\n * Return the array of weeks within the specified time interval.\n *\n * @param {Interval} interval - the interval. See [Interval]{@link docs/types/Interval}\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date[]} the array with starts of weeks from the week of the interval start to the week of the interval end\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.weekStartsOn` must be 0, 1, ..., 6\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Each week between 6 October 2014 and 23 November 2014:\n * var result = eachWeekOfInterval({\n * start: new Date(2014, 9, 6),\n * end: new Date(2014, 10, 23)\n * })\n * //=> [ 2014-10-05T00:00:00.000Z,\n * // 2014-10-12T00:00:00.000Z,\n * // 2014-10-19T00:00:00.000Z,\n * // 2014-10-26T00:00:00.000Z,\n * // 2014-11-02T00:00:00.000Z,\n * // 2014-11-09T00:00:00.000Z,\n * // 2014-11-16T00:00:00.000Z,\n * // 2014-11-23T00:00:00.000Z\n * // ]\n */\nexport default function eachWeekOfInterval (dirtyInterval, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var interval = dirtyInterval || {}\n var startDate = toDate(interval.start, dirtyOptions)\n var endDate = toDate(interval.end, dirtyOptions)\n\n var endTime = endDate.getTime()\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(startDate.getTime() <= endTime)) {\n throw new RangeError('Invalid interval')\n }\n\n var startDateWeek = startOfWeek(startDate, dirtyOptions)\n var endDateWeek = startOfWeek(endDate, dirtyOptions)\n\n // Some timezones switch DST at midnight, making start of day unreliable in these timezones, 3pm is a safe bet\n startDateWeek.setHours(15)\n endDateWeek.setHours(15)\n\n endTime = endDateWeek.getTime()\n\n var weeks = []\n\n var currentWeek = startDateWeek\n\n while (currentWeek.getTime() <= endTime) {\n currentWeek.setHours(0)\n weeks.push(toDate(currentWeek, dirtyOptions))\n currentWeek = addWeeks(currentWeek, 1)\n currentWeek.setHours(15)\n }\n\n return weeks\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isSunday\n * @category Weekday Helpers\n * @summary Is the given date Sunday?\n *\n * @description\n * Is the given date Sunday?\n *\n * @param {Date|String|Number} date - the date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the date is Sunday\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Is 21 September 2014 Sunday?\n * var result = isSunday(new Date(2014, 8, 21))\n * //=> true\n */\nexport default function isSunday (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n return toDate(dirtyDate, dirtyOptions).getDay() === 0\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isWeekend\n * @category Weekday Helpers\n * @summary Does the given date fall on a weekend?\n *\n * @description\n * Does the given date fall on a weekend?\n *\n * @param {Date|String|Number} date - the date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the date falls on a weekend\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Does 5 October 2014 fall on a weekend?\n * var result = isWeekend(new Date(2014, 9, 5))\n * //=> true\n */\nexport default function isWeekend (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var day = date.getDay()\n return day === 0 || day === 6\n}\n","import toDate from '../toDate/index.js'\nimport toInteger from '../_lib/toInteger/index.js'\nimport eachDayOfInterval from '../eachDayOfInterval/index.js'\nimport isSunday from '../isSunday/index.js'\nimport isWeekend from '../isWeekend/index.js'\n\n/**\n * @name eachWeekendOfInterval\n * @category Interval Helpers\n * @summary List all the Saturdays and Sundays in the given date interval.\n *\n * @description\n * Get all the Saturdays and Sundays in the given date interval.\n *\n * @param {Interval} interval - the given interval. See [Interval]{@link docs/types/Interval}\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {Date[]} an array containing all the Saturdays and Sundays\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Lists all Saturdays and Sundays in the given date interval\n * var result = eachWeekendOfInterval({\n * start: new Date(2022, 8, 17),\n * end: new Date(2022, 8, 30)\n * })\n * //=> [\n * 2022-09-17T22:00:00.000Z,\n * 2022-09-23T22:00:00.000Z,\n * 2022-09-24T22:00:00.000Z\n * ]\n *\n * @example\n * // Lists all Saturdays and Sundays in the given date interval\n * var result = eachWeekendOfInterval({\n * start: new Date(2016, 2, 25),\n * end: new Date(2016, 2, 5)\n * })\n * //=> RangeError: Invalid interval\n */\nexport default function eachWeekendOfInterval(dirtyInterval, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeWeekStartsOn =\n locale && locale.options && locale.options.weekStartsOn\n var defaultWeekStartsOn =\n localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn)\n var weekStartsOn =\n options.weekStartsOn == null\n ? defaultWeekStartsOn\n : toInteger(options.weekStartsOn)\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n var interval = dirtyInterval || {}\n var startDate = toDate(interval.start, dirtyOptions)\n var endDate = toDate(interval.end, dirtyOptions)\n var endTime = endDate.getTime()\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(startDate.getTime() <= endTime)) {\n throw new RangeError('Invalid interval')\n }\n\n var dateInterval = eachDayOfInterval(interval)\n var weekends = []\n var index = 0\n while (index++ < dateInterval.length) {\n var date = dateInterval[index]\n if (isWeekend(date)) {\n weekends.push(new Date(date))\n if (isSunday(date)) {\n index = index + 5\n }\n }\n }\n return weekends\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name startOfMonth\n * @category Month Helpers\n * @summary Return the start of a month for the given date.\n *\n * @description\n * Return the start of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the start of a month\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The start of a month for 2 September 2014 11:55:00:\n * var result = startOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function startOfMonth (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n date.setDate(1)\n date.setHours(0, 0, 0, 0)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the end of a month\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * var result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nexport default function endOfMonth (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var month = date.getMonth()\n date.setFullYear(date.getFullYear(), month + 1, 0)\n date.setHours(23, 59, 59, 999)\n return date\n}\n","import eachWeekendOfInterval from '../eachWeekendOfInterval/index.js'\nimport startOfMonth from '../startOfMonth/index.js'\nimport endOfMonth from '../endOfMonth/index.js'\n\n/**\n * @name eachWeekendOfMonth\n * @category Month Helpers\n * @summary List all the Saturdays and Sundays in the given month.\n *\n * @description\n * Get all the Saturdays and Sundays in the given month.\n *\n * @param {Date|String|Number} date - the given month\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date[]} an array containing all the Saturdays and Sundays\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Lists all Saturdays and Sundays in the given month\n * var result = eachWeekendOfMonth(new Date(2020, 1, 1))\n * //=> [\n * 2020-02-01T23:00:00.000Z,\n * 2020-02-07T23:00:00.000Z,\n * 2020-02-08T23:00:00.000Z,\n * ...\n * 2020-02-28T23:00:00.000Z\n * ]\n */\nexport default function eachWeekendOfMonth(dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var startDate = startOfMonth(dirtyDate, dirtyOptions)\n var endDate = endOfMonth(dirtyDate, dirtyOptions)\n return eachWeekendOfInterval({ start: startDate, end: endDate })\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the start of a year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * var result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nexport default function startOfYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var cleanDate = toDate(dirtyDate, dirtyOptions)\n var date = new Date(0)\n date.setFullYear(cleanDate.getFullYear(), 0, 1)\n date.setHours(0, 0, 0, 0)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name endOfYear\n * @category Year Helpers\n * @summary Return the end of a year for the given date.\n *\n * @description\n * Return the end of a year for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the end of a year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The end of a year for 2 September 2014 11:55:00:\n * var result = endOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Dec 31 2014 23:59:59.999\n */\nexport default function endOfYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var year = date.getFullYear()\n date.setFullYear(year + 1, 0, 0)\n date.setHours(23, 59, 59, 999)\n return date\n}\n","import eachWeekendOfInterval from '../eachWeekendOfInterval/index.js'\nimport startOfYear from '../startOfYear/index.js'\nimport endOfYear from '../endOfYear/index.js'\n\n/**\n * @name eachWeekendOfYear\n * @category Year Helpers\n * @summary List all the Saturdays and Sundays in the year.\n *\n * @description\n * Get all the Saturdays and Sundays in the year.\n *\n * @param {Date|String|Number} date - the given year\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date[]} an array containing all the Saturdays and Sundays\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Lists all Saturdays and Sundays in the year\n * var result = eachWeekendOfYear(new Date(2020, 1, 1))\n * //=> [\n * 2020-01-03T23:00:00.000Z,\n * 2020-01-04T23:00:00.000Z,\n * 2020-01-10T23:00:00.000Z,\n * ...\n * 2020-12-26T23:00:00.000Z\n * ]\n */\nexport default function eachWeekendOfYear(dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var startDate = startOfYear(dirtyDate, dirtyOptions)\n var endDate = endOfYear(dirtyDate, dirtyOptions)\n return eachWeekendOfInterval({ start: startDate, end: endDate })\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name endOfDay\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the end of a day\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * var result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\nexport default function endOfDay (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n date.setHours(23, 59, 59, 999)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name endOfDecade\n * @category Decade Helpers\n * @summary Return the end of a decade for the given date.\n *\n * @description\n * Return the end of a decade for the given date.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the end of a decade\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The end of a decade for 12 May 1984 00:00:00:\n * var result = endOfDecade(new Date(1984, 4, 12, 00, 00, 00))\n * //=> Dec 31 1989 23:59:59.999\n */\nexport default function endOfDecade (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var year = date.getFullYear()\n var decade = 9 + Math.floor(year / 10) * 10\n date.setFullYear(decade, 11, 31)\n date.setHours(23, 59, 59, 999)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name endOfHour\n * @category Hour Helpers\n * @summary Return the end of an hour for the given date.\n *\n * @description\n * Return the end of an hour for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the end of an hour\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The end of an hour for 2 September 2014 11:55:00:\n * var result = endOfHour(new Date(2014, 8, 2, 11, 55))\n * //=> Tue Sep 02 2014 11:59:59.999\n */\nexport default function endOfHour (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n date.setMinutes(59, 59, 999)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name endOfWeek\n * @category Week Helpers\n * @summary Return the end of a week for the given date.\n *\n * @description\n * Return the end of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {Date} the end of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The end of a week for 2 September 2014 11:55:00:\n * var result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 23:59:59.999\n *\n * @example\n * // If the week starts on Monday, the end of the week for 2 September 2014 11:55:00:\n * var result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0), {weekStartsOn: 1})\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nexport default function endOfWeek (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var options = dirtyOptions || {}\n\n var locale = options.locale\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn)\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn)\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n var date = toDate(dirtyDate, options)\n var day = date.getDay()\n var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn)\n\n date.setDate(date.getDate() + diff)\n date.setHours(23, 59, 59, 999)\n return date\n}\n","import endOfWeek from '../endOfWeek/index.js'\nimport cloneObject from '../_lib/cloneObject/index.js'\n\n/**\n * @name endOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the end of an ISO week for the given date.\n *\n * @description\n * Return the end of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the end of an ISO week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The end of an ISO week for 2 September 2014 11:55:00:\n * var result = endOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nexport default function endOfISOWeek (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var endOfWeekOptions = cloneObject(dirtyOptions)\n endOfWeekOptions.weekStartsOn = 1\n return endOfWeek(dirtyDate, endOfWeekOptions)\n}\n","import getISOWeekYear from '../getISOWeekYear/index.js'\nimport startOfISOWeek from '../startOfISOWeek/index.js'\n\n/**\n * @name endOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the end of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the end of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the end of an ISO week-numbering year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The end of an ISO week-numbering year for 2 July 2005:\n * var result = endOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Sun Jan 01 2006 23:59:59.999\n */\nexport default function endOfISOWeekYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var year = getISOWeekYear(dirtyDate, dirtyOptions)\n var fourthOfJanuaryOfNextYear = new Date(0)\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4)\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0)\n var date = startOfISOWeek(fourthOfJanuaryOfNextYear, dirtyOptions)\n date.setMilliseconds(date.getMilliseconds() - 1)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name endOfMinute\n * @category Minute Helpers\n * @summary Return the end of a minute for the given date.\n *\n * @description\n * Return the end of a minute for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the end of a minute\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The end of a minute for 1 December 2014 22:15:45.400:\n * var result = endOfMinute(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:59.999\n */\nexport default function endOfMinute (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n date.setSeconds(59, 999)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name endOfQuarter\n * @category Quarter Helpers\n * @summary Return the end of a year quarter for the given date.\n *\n * @description\n * Return the end of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the end of a quarter\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The end of a quarter for 2 September 2014 11:55:00:\n * var result = endOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nexport default function endOfQuarter (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var currentMonth = date.getMonth()\n var month = currentMonth - currentMonth % 3 + 3\n date.setMonth(month, 0)\n date.setHours(23, 59, 59, 999)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name endOfSecond\n * @category Second Helpers\n * @summary Return the end of a second for the given date.\n *\n * @description\n * Return the end of a second for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the end of a second\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The end of a second for 1 December 2014 22:15:45.400:\n * var result = endOfSecond(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:45.999\n */\nexport default function endOfSecond (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n date.setMilliseconds(999)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {*} date - the date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // For the valid date:\n * var result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * var result = isValid('2014-02-31')\n * //=> true\n *\n * @example\n * // For the invalid date:\n * var result = isValid(new Date(''))\n * //=> false\n */\nexport default function isValid (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n return !isNaN(date)\n}\n","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n\n halfAMinute: 'half a minute',\n\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n}\n\nexport default function formatDistance (token, count, options) {\n options = options || {}\n\n var result\n if (typeof formatDistanceLocale[token] === 'string') {\n result = formatDistanceLocale[token]\n } else if (count === 1) {\n result = formatDistanceLocale[token].one\n } else {\n result = formatDistanceLocale[token].other.replace('{{count}}', count)\n }\n\n if (options.addSuffix) {\n if (options.comparison > 0) {\n return 'in ' + result\n } else {\n return result + ' ago'\n }\n }\n\n return result\n}\n","export default function buildFormatLongFn (args) {\n return function (dirtyOptions) {\n var options = dirtyOptions || {}\n var width = options.width ? String(options.width) : args.defaultWidth\n var format = args.formats[width] || args.formats[args.defaultWidth]\n return format\n }\n}\n","import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index.js'\n\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n}\n\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n}\n\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n}\n\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n}\n\nexport default formatLong\n","var formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n}\n\nexport default function formatRelative (token, date, baseDate, options) {\n return formatRelativeLocale[token]\n}\n","export default function buildLocalizeFn (args) {\n return function (dirtyIndex, dirtyOptions) {\n var options = dirtyOptions || {}\n var width = options.width ? String(options.width) : args.defaultWidth\n var context = options.context ? String(options.context) : 'standalone'\n\n var valuesArray\n if (context === 'formatting' && args.formattingValues) {\n valuesArray = args.formattingValues[width] || args.formattingValues[args.defaultFormattingWidth]\n } else {\n valuesArray = args.values[width] || args.values[args.defaultWidth]\n }\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex\n return valuesArray[index]\n }\n}\n","export default function buildMatchFn (args) {\n return function (dirtyString, dirtyOptions) {\n var string = String(dirtyString)\n var options = dirtyOptions || {}\n var width = options.width\n\n var matchPattern = (width && args.matchPatterns[width]) || args.matchPatterns[args.defaultMatchWidth]\n var matchResult = string.match(matchPattern)\n\n if (!matchResult) {\n return null\n }\n var matchedString = matchResult[0]\n\n var parsePatterns = (width && args.parsePatterns[width]) || args.parsePatterns[args.defaultParseWidth]\n\n var value\n if (Object.prototype.toString.call(parsePatterns) === '[object Array]') {\n value = parsePatterns.findIndex(function (pattern) {\n return pattern.test(string)\n })\n } else {\n value = findKey(parsePatterns, function (pattern) {\n return pattern.test(string)\n })\n }\n\n value = args.valueCallback ? args.valueCallback(value) : value\n value = options.valueCallback ? options.valueCallback(value) : value\n\n return {\n value: value,\n rest: string.slice(matchedString.length)\n }\n }\n}\n\nfunction findKey (object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key\n }\n }\n}\n","import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index.js'\nimport buildMatchFn from '../../../_lib/buildMatchFn/index.js'\n\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i\nvar parseOrdinalNumberPattern = /\\d+/i\n\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n}\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n}\n\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n}\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n}\n\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n}\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n}\n\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n}\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n}\n\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n}\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n}\n\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function (value) {\n return parseInt(value, 10)\n }\n }),\n\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function (index) {\n return index + 1\n }\n }),\n\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n}\n\nexport default match\n","export default function buildMatchPatternFn (args) {\n return function (dirtyString, dirtyOptions) {\n var string = String(dirtyString)\n var options = dirtyOptions || {}\n\n var matchResult = string.match(args.matchPattern)\n if (!matchResult) {\n return null\n }\n var matchedString = matchResult[0]\n\n var parseResult = string.match(args.parsePattern)\n if (!parseResult) {\n return null\n }\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0]\n value = options.valueCallback ? options.valueCallback(value) : value\n\n return {\n value: value,\n rest: string.slice(matchedString.length)\n }\n }\n}\n","import formatDistance from './_lib/formatDistance/index.js'\nimport formatLong from './_lib/formatLong/index.js'\nimport formatRelative from './_lib/formatRelative/index.js'\nimport localize from './_lib/localize/index.js'\nimport match from './_lib/match/index.js'\n\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1\n }\n}\n\nexport default locale\n","import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index.js'\n\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n}\n\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n}\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n}\n\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n}\n\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n}\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n}\n\nfunction ordinalNumber (dirtyNumber, dirtyOptions) {\n var number = Number(dirtyNumber)\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`:\n //\n // var options = dirtyOptions || {}\n // var unit = String(options.unit)\n //\n // where `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'\n\n var rem100 = number % 100\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st'\n case 2:\n return number + 'nd'\n case 3:\n return number + 'rd'\n }\n }\n return number + 'th'\n}\n\nvar localize = {\n ordinalNumber: ordinalNumber,\n\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function (quarter) {\n return Number(quarter) - 1\n }\n }),\n\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaulFormattingWidth: 'wide'\n })\n}\n\nexport default localize\n","import toDate from '../../toDate/index.js'\n\nvar MILLISECONDS_IN_DAY = 86400000\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function getUTCDayOfYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var timestamp = date.getTime()\n date.setUTCMonth(0, 1)\n date.setUTCHours(0, 0, 0, 0)\n var startOfYearTimestamp = date.getTime()\n var difference = timestamp - startOfYearTimestamp\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1\n}\n","import toDate from '../../toDate/index.js'\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function startOfUTCISOWeek (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var weekStartsOn = 1\n\n var date = toDate(dirtyDate, dirtyOptions)\n var day = date.getUTCDay()\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn\n\n date.setUTCDate(date.getUTCDate() - diff)\n date.setUTCHours(0, 0, 0, 0)\n return date\n}\n","import toDate from '../../toDate/index.js'\nimport startOfUTCISOWeek from '../startOfUTCISOWeek/index.js'\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function getUTCISOWeekYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var year = date.getUTCFullYear()\n\n var fourthOfJanuaryOfNextYear = new Date(0)\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4)\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0)\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear, dirtyOptions)\n\n var fourthOfJanuaryOfThisYear = new Date(0)\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4)\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0)\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear, dirtyOptions)\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year\n } else {\n return year - 1\n }\n}\n","import toDate from '../../toDate/index.js'\nimport startOfUTCISOWeek from '../startOfUTCISOWeek/index.js'\nimport startOfUTCISOWeekYear from '../startOfUTCISOWeekYear/index.js'\n\nvar MILLISECONDS_IN_WEEK = 604800000\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function getUTCISOWeek (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var diff = startOfUTCISOWeek(date, dirtyOptions).getTime() - startOfUTCISOWeekYear(date, dirtyOptions).getTime()\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1\n}\n","import getUTCISOWeekYear from '../getUTCISOWeekYear/index.js'\nimport startOfUTCISOWeek from '../startOfUTCISOWeek/index.js'\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function startOfUTCISOWeekYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var year = getUTCISOWeekYear(dirtyDate, dirtyOptions)\n var fourthOfJanuary = new Date(0)\n fourthOfJanuary.setUTCFullYear(year, 0, 4)\n fourthOfJanuary.setUTCHours(0, 0, 0, 0)\n var date = startOfUTCISOWeek(fourthOfJanuary, dirtyOptions)\n return date\n}\n","import toInteger from '../toInteger/index.js'\nimport toDate from '../../toDate/index.js'\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function startOfUTCWeek (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn)\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn)\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n var date = toDate(dirtyDate, options)\n var day = date.getUTCDay()\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn\n\n date.setUTCDate(date.getUTCDate() - diff)\n date.setUTCHours(0, 0, 0, 0)\n return date\n}\n","import toInteger from '../toInteger/index.js'\nimport toDate from '../../toDate/index.js'\nimport startOfUTCWeek from '../startOfUTCWeek/index.js'\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function getUTCWeekYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var year = date.getUTCFullYear()\n\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeFirstWeekContainsDate = locale &&\n locale.options &&\n locale.options.firstWeekContainsDate\n var defaultFirstWeekContainsDate =\n localeFirstWeekContainsDate == null\n ? 1\n : toInteger(localeFirstWeekContainsDate)\n var firstWeekContainsDate =\n options.firstWeekContainsDate == null\n ? defaultFirstWeekContainsDate\n : toInteger(options.firstWeekContainsDate)\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively')\n }\n\n var firstWeekOfNextYear = new Date(0)\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate)\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0)\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, dirtyOptions)\n\n var firstWeekOfThisYear = new Date(0)\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate)\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0)\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, dirtyOptions)\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year\n } else {\n return year - 1\n }\n}\n","import toDate from '../../toDate/index.js'\nimport startOfUTCWeek from '../startOfUTCWeek/index.js'\nimport startOfUTCWeekYear from '../startOfUTCWeekYear/index.js'\n\nvar MILLISECONDS_IN_WEEK = 604800000\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function getUTCWeek (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var diff = startOfUTCWeek(date, dirtyOptions).getTime() - startOfUTCWeekYear(date, dirtyOptions).getTime()\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1\n}\n","import toInteger from '../toInteger/index.js'\nimport getUTCWeekYear from '../getUTCWeekYear/index.js'\nimport startOfUTCWeek from '../startOfUTCWeek/index.js'\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function startOfUTCWeekYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeFirstWeekContainsDate = locale &&\n locale.options &&\n locale.options.firstWeekContainsDate\n var defaultFirstWeekContainsDate =\n localeFirstWeekContainsDate == null\n ? 1\n : toInteger(localeFirstWeekContainsDate)\n var firstWeekContainsDate =\n options.firstWeekContainsDate == null\n ? defaultFirstWeekContainsDate\n : toInteger(options.firstWeekContainsDate)\n\n var year = getUTCWeekYear(dirtyDate, dirtyOptions)\n var firstWeek = new Date(0)\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate)\n firstWeek.setUTCHours(0, 0, 0, 0)\n var date = startOfUTCWeek(firstWeek, dirtyOptions)\n return date\n}\n","import getUTCDayOfYear from '../../../_lib/getUTCDayOfYear/index.js'\nimport getUTCISOWeek from '../../../_lib/getUTCISOWeek/index.js'\nimport getUTCISOWeekYear from '../../../_lib/getUTCISOWeekYear/index.js'\nimport getUTCWeek from '../../../_lib/getUTCWeek/index.js'\nimport getUTCWeekYear from '../../../_lib/getUTCWeekYear/index.js'\n\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n}\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n // Era\n G: function (date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {width: 'abbreviated'})\n // A, B\n case 'GGGGG':\n return localize.era(era, {width: 'narrow'})\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return localize.era(era, {width: 'wide'})\n }\n },\n\n // Year\n y: function (date, token, localize, options) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n var signedYear = date.getUTCFullYear()\n\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear\n\n // Two digit year\n if (token === 'yy') {\n var twoDigitYear = year % 100\n return addLeadingZeros(twoDigitYear, 2)\n }\n\n // Ordinal number\n if (token === 'yo') {\n return localize.ordinalNumber(year, {unit: 'year'})\n }\n\n // Padding\n return addLeadingZeros(year, token.length)\n },\n\n // Local week-numbering year\n Y: function (date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options)\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear\n\n // Two digit year\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100\n return addLeadingZeros(twoDigitYear, 2)\n }\n\n // Ordinal number\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {unit: 'year'})\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length)\n },\n\n // ISO week-numbering year\n R: function (date, token, localize, options) {\n var isoWeekYear = getUTCISOWeekYear(date, options)\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length)\n },\n\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function (date, token, localize, options) {\n var year = date.getUTCFullYear()\n return addLeadingZeros(year, token.length)\n },\n\n // Quarter\n Q: function (date, token, localize, options) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3)\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter)\n // 01, 02, 03, 04\n case 'QQ':\n return addLeadingZeros(quarter, 2)\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return localize.ordinalNumber(quarter, {unit: 'quarter'})\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return localize.quarter(quarter, {width: 'abbreviated', context: 'formatting'})\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return localize.quarter(quarter, {width: 'narrow', context: 'formatting'})\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {width: 'wide', context: 'formatting'})\n }\n },\n\n // Stand-alone quarter\n q: function (date, token, localize, options) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3)\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter)\n // 01, 02, 03, 04\n case 'qq':\n return addLeadingZeros(quarter, 2)\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return localize.ordinalNumber(quarter, {unit: 'quarter'})\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return localize.quarter(quarter, {width: 'abbreviated', context: 'standalone'})\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return localize.quarter(quarter, {width: 'narrow', context: 'standalone'})\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return localize.quarter(quarter, {width: 'wide', context: 'standalone'})\n }\n },\n\n // Month\n M: function (date, token, localize, options) {\n var month = date.getUTCMonth()\n switch (token) {\n // 1, 2, ..., 12\n case 'M':\n return String(month + 1)\n // 01, 02, ..., 12\n case 'MM':\n return addLeadingZeros(month + 1, 2)\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return localize.ordinalNumber(month + 1, {unit: 'month'})\n // Jan, Feb, ..., Dec\n case 'MMM':\n return localize.month(month, {width: 'abbreviated', context: 'formatting'})\n // J, F, ..., D\n case 'MMMMM':\n return localize.month(month, {width: 'narrow', context: 'formatting'})\n // January, February, ..., December\n case 'MMMM':\n default:\n return localize.month(month, {width: 'wide', context: 'formatting'})\n }\n },\n\n // Stand-alone month\n L: function (date, token, localize, options) {\n var month = date.getUTCMonth()\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1)\n // 01, 02, ..., 12\n case 'LL':\n return addLeadingZeros(month + 1, 2)\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return localize.ordinalNumber(month + 1, {unit: 'month'})\n // Jan, Feb, ..., Dec\n case 'LLL':\n return localize.month(month, {width: 'abbreviated', context: 'standalone'})\n // J, F, ..., D\n case 'LLLLL':\n return localize.month(month, {width: 'narrow', context: 'standalone'})\n // January, February, ..., December\n case 'LLLL':\n default:\n return localize.month(month, {width: 'wide', context: 'standalone'})\n }\n },\n\n // Local week of year\n w: function (date, token, localize, options) {\n var week = getUTCWeek(date, options)\n\n if (token === 'wo') {\n return localize.ordinalNumber(week, {unit: 'week'})\n }\n\n return addLeadingZeros(week, token.length)\n },\n\n // ISO week of year\n I: function (date, token, localize, options) {\n var isoWeek = getUTCISOWeek(date, options)\n\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {unit: 'week'})\n }\n\n return addLeadingZeros(isoWeek, token.length)\n },\n\n // Day of the month\n d: function (date, token, localize, options) {\n var dayOfMonth = date.getUTCDate()\n\n if (token === 'do') {\n return localize.ordinalNumber(dayOfMonth, {unit: 'date'})\n }\n\n return addLeadingZeros(dayOfMonth, token.length)\n },\n\n // Day of year\n D: function (date, token, localize, options) {\n var dayOfYear = getUTCDayOfYear(date, options)\n\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {unit: 'dayOfYear'})\n }\n\n return addLeadingZeros(dayOfYear, token.length)\n },\n\n // Day of week\n E: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay()\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {width: 'abbreviated', context: 'formatting'})\n // T\n case 'EEEEE':\n return localize.day(dayOfWeek, {width: 'narrow', context: 'formatting'})\n // Tu\n case 'EEEEEE':\n return localize.day(dayOfWeek, {width: 'short', context: 'formatting'})\n // Tuesday\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {width: 'wide', context: 'formatting'})\n }\n },\n\n // Local day of week\n e: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay()\n var localDayOfWeek = ((dayOfWeek - options.weekStartsOn + 8) % 7) || 7\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek)\n // Padded numerical value\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2)\n // 1st, 2nd, ..., 7th\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {unit: 'day'})\n case 'eee':\n return localize.day(dayOfWeek, {width: 'abbreviated', context: 'formatting'})\n // T\n case 'eeeee':\n return localize.day(dayOfWeek, {width: 'narrow', context: 'formatting'})\n // Tu\n case 'eeeeee':\n return localize.day(dayOfWeek, {width: 'short', context: 'formatting'})\n // Tuesday\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {width: 'wide', context: 'formatting'})\n }\n },\n\n // Stand-alone local day of week\n c: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay()\n var localDayOfWeek = ((dayOfWeek - options.weekStartsOn + 8) % 7) || 7\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek)\n // Padded numberical value\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length)\n // 1st, 2nd, ..., 7th\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {unit: 'day'})\n case 'ccc':\n return localize.day(dayOfWeek, {width: 'abbreviated', context: 'standalone'})\n // T\n case 'ccccc':\n return localize.day(dayOfWeek, {width: 'narrow', context: 'standalone'})\n // Tu\n case 'cccccc':\n return localize.day(dayOfWeek, {width: 'short', context: 'standalone'})\n // Tuesday\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {width: 'wide', context: 'standalone'})\n }\n },\n\n // ISO day of week\n i: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay()\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek)\n // 02\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length)\n // 2nd\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {unit: 'day'})\n // Tue\n case 'iii':\n return localize.day(dayOfWeek, {width: 'abbreviated', context: 'formatting'})\n // T\n case 'iiiii':\n return localize.day(dayOfWeek, {width: 'narrow', context: 'formatting'})\n // Tu\n case 'iiiiii':\n return localize.day(dayOfWeek, {width: 'short', context: 'formatting'})\n // Tuesday\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {width: 'wide', context: 'formatting'})\n }\n },\n\n // AM or PM\n a: function (date, token, localize) {\n var hours = date.getUTCHours()\n var dayPeriodEnumValue = (hours / 12) >= 1 ? 'pm' : 'am'\n\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'abbreviated', context: 'formatting'})\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'narrow', context: 'formatting'})\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'wide', context: 'formatting'})\n }\n },\n\n // AM, PM, midnight, noon\n b: function (date, token, localize) {\n var hours = date.getUTCHours()\n var dayPeriodEnumValue\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight\n } else {\n dayPeriodEnumValue = (hours / 12) >= 1 ? 'pm' : 'am'\n }\n\n switch (token) {\n case 'b':\n case 'bb':\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'abbreviated', context: 'formatting'})\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'narrow', context: 'formatting'})\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'wide', context: 'formatting'})\n }\n },\n\n // in the morning, in the afternoon, in the evening, at night\n B: function (date, token, localize) {\n var hours = date.getUTCHours()\n var dayPeriodEnumValue\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night\n }\n\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'abbreviated', context: 'formatting'})\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'narrow', context: 'formatting'})\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'wide', context: 'formatting'})\n }\n },\n\n // Hour [1-12]\n h: function (date, token, localize, options) {\n var hours = date.getUTCHours() % 12\n\n if (hours === 0) {\n hours = 12\n }\n\n if (token === 'ho') {\n return localize.ordinalNumber(hours, {unit: 'hour'})\n }\n\n return addLeadingZeros(hours, token.length)\n },\n\n // Hour [0-23]\n H: function (date, token, localize, options) {\n var hours = date.getUTCHours()\n\n if (token === 'Ho') {\n return localize.ordinalNumber(hours, {unit: 'hour'})\n }\n\n return addLeadingZeros(hours, token.length)\n },\n\n // Hour [0-11]\n K: function (date, token, localize, options) {\n var hours = date.getUTCHours() % 12\n\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {unit: 'hour'})\n }\n\n return addLeadingZeros(hours, token.length)\n },\n\n // Hour [1-24]\n k: function (date, token, localize, options) {\n var hours = date.getUTCHours()\n\n if (hours === 0) {\n hours = 24\n }\n\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {unit: 'hour'})\n }\n\n return addLeadingZeros(hours, token.length)\n },\n\n // Minute\n m: function (date, token, localize, options) {\n var minutes = date.getUTCMinutes()\n\n if (token === 'mo') {\n return localize.ordinalNumber(minutes, {unit: 'minute'})\n }\n\n return addLeadingZeros(minutes, token.length)\n },\n\n // Second\n s: function (date, token, localize, options) {\n var seconds = date.getUTCSeconds()\n\n if (token === 'so') {\n return localize.ordinalNumber(seconds, {unit: 'second'})\n }\n\n return addLeadingZeros(seconds, token.length)\n },\n\n // Fraction of second\n S: function (date, token, localize, options) {\n var numberOfDigits = token.length\n var milliseconds = date.getUTCMilliseconds()\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3))\n return addLeadingZeros(fractionalSeconds, numberOfDigits)\n },\n\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, localize, options) {\n var originalDate = options._originalDate || date\n var timezoneOffset = originalDate.getTimezoneOffset()\n\n if (timezoneOffset === 0) {\n return 'Z'\n }\n\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset)\n\n // Hours, minutes and optional seconds without `:` delimeter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case 'XXXX':\n case 'XX': // Hours and minutes without `:` delimeter\n return formatTimezone(timezoneOffset)\n\n // Hours, minutes and optional seconds with `:` delimeter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimeter\n default:\n return formatTimezone(timezoneOffset, ':')\n }\n },\n\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, localize, options) {\n var originalDate = options._originalDate || date\n var timezoneOffset = originalDate.getTimezoneOffset()\n\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset)\n\n // Hours, minutes and optional seconds without `:` delimeter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case 'xxxx':\n case 'xx': // Hours and minutes without `:` delimeter\n return formatTimezone(timezoneOffset)\n\n // Hours, minutes and optional seconds with `:` delimeter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimeter\n default:\n return formatTimezone(timezoneOffset, ':')\n }\n },\n\n // Timezone (GMT)\n O: function (date, token, localize, options) {\n var originalDate = options._originalDate || date\n var timezoneOffset = originalDate.getTimezoneOffset()\n\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':')\n // Long\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':')\n }\n },\n\n // Timezone (specific non-location)\n z: function (date, token, localize, options) {\n var originalDate = options._originalDate || date\n var timezoneOffset = originalDate.getTimezoneOffset()\n\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':')\n // Long\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':')\n }\n },\n\n // Seconds timestamp\n t: function (date, token, localize, options) {\n var originalDate = options._originalDate || date\n var timestamp = Math.floor(originalDate.getTime() / 1000)\n return addLeadingZeros(timestamp, token.length)\n },\n\n // Milliseconds timestamp\n T: function (date, token, localize, options) {\n var originalDate = options._originalDate || date\n var timestamp = originalDate.getTime()\n return addLeadingZeros(timestamp, token.length)\n }\n}\n\nfunction addLeadingZeros (number, targetLength) {\n var sign = number < 0 ? '-' : ''\n var output = Math.abs(number).toString()\n while (output.length < targetLength) {\n output = '0' + output\n }\n return sign + output\n}\n\nfunction formatTimezone (offset, dirtyDelimeter) {\n var delimeter = dirtyDelimeter || ''\n var sign = offset > 0 ? '-' : '+'\n var absOffset = Math.abs(offset)\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2)\n var minutes = addLeadingZeros(absOffset % 60, 2)\n return sign + hours + delimeter + minutes\n}\n\nfunction formatTimezoneWithOptionalMinutes (offset, dirtyDelimeter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+'\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2)\n }\n return formatTimezone(offset, dirtyDelimeter)\n}\n\nfunction formatTimezoneShort (offset, dirtyDelimeter) {\n var sign = offset > 0 ? '-' : '+'\n var absOffset = Math.abs(offset)\n var hours = Math.floor(absOffset / 60)\n var minutes = absOffset % 60\n if (minutes === 0) {\n return sign + String(hours)\n }\n var delimeter = dirtyDelimeter || ''\n return sign + String(hours) + delimeter + addLeadingZeros(minutes, 2)\n}\n\nexport default formatters\n","function dateLongFormatter (pattern, formatLong, options) {\n switch (pattern) {\n case 'P':\n return formatLong.date({width: 'short'})\n case 'PP':\n return formatLong.date({width: 'medium'})\n case 'PPP':\n return formatLong.date({width: 'long'})\n case 'PPPP':\n default:\n return formatLong.date({width: 'full'})\n }\n}\n\nfunction timeLongFormatter (pattern, formatLong, options) {\n switch (pattern) {\n case 'p':\n return formatLong.time({width: 'short'})\n case 'pp':\n return formatLong.time({width: 'medium'})\n case 'ppp':\n return formatLong.time({width: 'long'})\n case 'pppp':\n default:\n return formatLong.time({width: 'full'})\n }\n}\n\nfunction dateTimeLongFormatter (pattern, formatLong, options) {\n var matchResult = pattern.match(/(P+)(p+)?/)\n var datePattern = matchResult[1]\n var timePattern = matchResult[2]\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong, options)\n }\n\n var dateTimeFormat\n\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({width: 'short'})\n break\n case 'PP':\n dateTimeFormat = formatLong.dateTime({width: 'medium'})\n break\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({width: 'long'})\n break\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({width: 'full'})\n break\n }\n\n return dateTimeFormat\n .replace('{{date}}', dateLongFormatter(datePattern, formatLong, options))\n .replace('{{time}}', timeLongFormatter(timePattern, formatLong, options))\n}\n\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n}\n\nexport default longFormatters\n","import toInteger from '../_lib/toInteger/index.js'\nimport addMilliseconds from '../addMilliseconds/index.js'\n\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * var result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\nexport default function subMilliseconds (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount)\n return addMilliseconds(dirtyDate, -amount, dirtyOptions)\n}\n","export var protectedTokens = ['D', 'DD', 'YY', 'YYYY']\n\nexport function isProtectedToken(token) {\n return protectedTokens.indexOf(token) !== -1\n}\n\nexport function throwProtectedError(token) {\n throw new RangeError(\n '`options.awareOfUnicodeTokens` must be set to `true` to use `' +\n token +\n '` token; see: https://git.io/fxCyr'\n )\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js'\nimport toDate from '../toDate/index.js'\nimport isValid from '../isValid/index.js'\nimport defaultLocale from '../locale/en-US/index.js'\nimport formatters from './_lib/formatters/index.js'\nimport longFormatters from './_lib/longFormatters/index.js'\nimport subMilliseconds from '../subMilliseconds/index.js'\nimport {\n isProtectedToken,\n throwProtectedError\n} from '../_lib/protectedTokens/index.js'\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g\n\nvar escapedStringRegExp = /^'(.*?)'?$/\nvar doubleQuoteRegExp = /''/g\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 8 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 8 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Su | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Su | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Su, Sa | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Su | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Su | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | AM, PM | a..aaa | AM, PM | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bbb | AM, PM, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 1, 2, ..., 11, 0 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 0001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 05/29/1453 | 7 |\n * | | PP | May 29, 1453 | 7 |\n * | | PPP | May 29th, 1453 | 7 |\n * | | PPPP | Sunday, May 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 05/29/1453, 12:00 AM | 7 |\n * | | PPpp | May 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | May 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Sunday, May 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. These tokens are often confused with others. See: https://git.io/fxCyr\n *\n * @param {Date|String|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {Boolean} [options.awareOfUnicodeTokens=false] - if true, allows usage of Unicode tokens causes confusion:\n * - Some of the day of year tokens (`D`, `DD`) that are confused with the day of month tokens (`d`, `dd`).\n * - Some of the local week-numbering year tokens (`YY`, `YYYY`) that are confused with the calendar year tokens (`yy`, `yyyy`).\n * See: https://git.io/fxCyr\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.awareOfUnicodeTokens` must be set to `true` to use `XX` token; see: https://git.io/fxCyr\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * var result = format(\n * new Date(2014, 1, 11),\n * 'MM/dd/yyyy'\n * )\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * var result = format(\n * new Date(2014, 6, 2),\n * \"do 'de' MMMM yyyy\",\n * {locale: eoLocale}\n * )\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * var result = format(\n * new Date(2014, 6, 2, 15),\n * \"h 'o''clock'\"\n * )\n * //=> \"3 o'clock\"\n */\nexport default function format(dirtyDate, dirtyFormatStr, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var formatStr = String(dirtyFormatStr)\n var options = dirtyOptions || {}\n\n var locale = options.locale || defaultLocale\n\n var localeFirstWeekContainsDate =\n locale.options && locale.options.firstWeekContainsDate\n var defaultFirstWeekContainsDate =\n localeFirstWeekContainsDate == null\n ? 1\n : toInteger(localeFirstWeekContainsDate)\n var firstWeekContainsDate =\n options.firstWeekContainsDate == null\n ? defaultFirstWeekContainsDate\n : toInteger(options.firstWeekContainsDate)\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError(\n 'firstWeekContainsDate must be between 1 and 7 inclusively'\n )\n }\n\n var localeWeekStartsOn = locale.options && locale.options.weekStartsOn\n var defaultWeekStartsOn =\n localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn)\n var weekStartsOn =\n options.weekStartsOn == null\n ? defaultWeekStartsOn\n : toInteger(options.weekStartsOn)\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property')\n }\n\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property')\n }\n\n var originalDate = toDate(dirtyDate, options)\n\n if (!isValid(originalDate, options)) {\n return 'Invalid Date'\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate)\n var utcDate = subMilliseconds(originalDate, timezoneOffset, options)\n\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n }\n\n var result = formatStr\n .match(longFormattingTokensRegExp)\n .map(function(substring) {\n var firstCharacter = substring[0]\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter]\n return longFormatter(substring, locale.formatLong, formatterOptions)\n }\n return substring\n })\n .join('')\n .match(formattingTokensRegExp)\n .map(function(substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\"\n }\n\n var firstCharacter = substring[0]\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring)\n }\n\n var formatter = formatters[firstCharacter]\n if (formatter) {\n if (!options.awareOfUnicodeTokens && isProtectedToken(substring)) {\n throwProtectedError(substring)\n }\n return formatter(utcDate, substring, locale.localize, formatterOptions)\n }\n\n return substring\n })\n .join('')\n\n return result\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\")\n}\n","import getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js'\nimport compareAsc from '../compareAsc/index.js'\nimport toDate from '../toDate/index.js'\nimport differenceInSeconds from '../differenceInSeconds/index.js'\nimport differenceInMonths from '../differenceInMonths/index.js'\nimport cloneObject from '../_lib/cloneObject/index.js'\nimport defaultLocale from '../locale/en-US/index.js'\n\nvar MINUTES_IN_DAY = 1440\nvar MINUTES_IN_ALMOST_TWO_DAYS = 2520\nvar MINUTES_IN_MONTH = 43200\nvar MINUTES_IN_TWO_MONTHS = 86400\n\n/**\n * @name formatDistance\n * @category Common Helpers\n * @summary Return the distance between the given dates in words.\n *\n * @description\n * Return the distance between the given dates in words.\n *\n * | Distance between dates | Result |\n * |-------------------------------------------------------------------|---------------------|\n * | 0 ... 30 secs | less than a minute |\n * | 30 secs ... 1 min 30 secs | 1 minute |\n * | 1 min 30 secs ... 44 mins 30 secs | [2..44] minutes |\n * | 44 mins ... 30 secs ... 89 mins 30 secs | about 1 hour |\n * | 89 mins 30 secs ... 23 hrs 59 mins 30 secs | about [2..24] hours |\n * | 23 hrs 59 mins 30 secs ... 41 hrs 59 mins 30 secs | 1 day |\n * | 41 hrs 59 mins 30 secs ... 29 days 23 hrs 59 mins 30 secs | [2..30] days |\n * | 29 days 23 hrs 59 mins 30 secs ... 44 days 23 hrs 59 mins 30 secs | about 1 month |\n * | 44 days 23 hrs 59 mins 30 secs ... 59 days 23 hrs 59 mins 30 secs | about 2 months |\n * | 59 days 23 hrs 59 mins 30 secs ... 1 yr | [2..12] months |\n * | 1 yr ... 1 yr 3 months | about 1 year |\n * | 1 yr 3 months ... 1 yr 9 month s | over 1 year |\n * | 1 yr 9 months ... 2 yrs | almost 2 years |\n * | N yrs ... N yrs 3 months | about N years |\n * | N yrs 3 months ... N yrs 9 months | over N years |\n * | N yrs 9 months ... N+1 yrs | almost N+1 years |\n *\n * With `options.includeSeconds == true`:\n * | Distance between dates | Result |\n * |------------------------|----------------------|\n * | 0 secs ... 5 secs | less than 5 seconds |\n * | 5 secs ... 10 secs | less than 10 seconds |\n * | 10 secs ... 20 secs | less than 20 seconds |\n * | 20 secs ... 40 secs | half a minute |\n * | 40 secs ... 60 secs | less than a minute |\n * | 60 secs ... 90 secs | 1 minute |\n *\n * @param {Date|String|Number} date - the date\n * @param {Date|String|Number} baseDate - the date to compare with\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {Boolean} [options.includeSeconds=false] - distances less than a minute are more detailed\n * @param {Boolean} [options.addSuffix=false] - result indicates if the second date is earlier or later than the first\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the distance in words\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.locale` must contain `formatDistance` property\n *\n * @example\n * // What is the distance between 2 July 2014 and 1 January 2015?\n * var result = formatDistance(\n * new Date(2014, 6, 2),\n * new Date(2015, 0, 1)\n * )\n * //=> '6 months'\n *\n * @example\n * // What is the distance between 1 January 2015 00:00:15\n * // and 1 January 2015 00:00:00, including seconds?\n * var result = formatDistance(\n * new Date(2015, 0, 1, 0, 0, 15),\n * new Date(2015, 0, 1, 0, 0, 0),\n * {includeSeconds: true}\n * )\n * //=> 'less than 20 seconds'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, with a suffix?\n * var result = formatDistance(\n * new Date(2015, 0, 1),\n * new Date(2016, 0, 1),\n * {addSuffix: true}\n * )\n * //=> 'about 1 year ago'\n *\n * @example\n * // What is the distance between 1 August 2016 and 1 January 2015 in Esperanto?\n * import { eoLocale } from 'date-fns/locale/eo'\n * var result = formatDistance(\n * new Date(2016, 7, 1),\n * new Date(2015, 0, 1),\n * {locale: eoLocale}\n * )\n * //=> 'pli ol 1 jaro'\n */\nexport default function formatDistance (dirtyDate, dirtyBaseDate, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var options = dirtyOptions || {}\n var locale = options.locale || defaultLocale\n\n if (!locale.formatDistance) {\n throw new RangeError('locale must contain formatDistance property')\n }\n\n var comparison = compareAsc(dirtyDate, dirtyBaseDate, options)\n\n if (isNaN(comparison)) {\n return 'Invalid Date'\n }\n\n var localizeOptions = cloneObject(options)\n localizeOptions.addSuffix = Boolean(options.addSuffix)\n localizeOptions.comparison = comparison\n\n var dateLeft\n var dateRight\n if (comparison > 0) {\n dateLeft = toDate(dirtyBaseDate, options)\n dateRight = toDate(dirtyDate, options)\n } else {\n dateLeft = toDate(dirtyDate, options)\n dateRight = toDate(dirtyBaseDate, options)\n }\n\n var seconds = differenceInSeconds(dateRight, dateLeft, options)\n var offsetInSeconds = (getTimezoneOffsetInMilliseconds(dateRight) - getTimezoneOffsetInMilliseconds(dateLeft)) / 1000\n var minutes = Math.round((seconds - offsetInSeconds) / 60)\n var months\n\n // 0 up to 2 mins\n if (minutes < 2) {\n if (options.includeSeconds) {\n if (seconds < 5) {\n return locale.formatDistance('lessThanXSeconds', 5, localizeOptions)\n } else if (seconds < 10) {\n return locale.formatDistance('lessThanXSeconds', 10, localizeOptions)\n } else if (seconds < 20) {\n return locale.formatDistance('lessThanXSeconds', 20, localizeOptions)\n } else if (seconds < 40) {\n return locale.formatDistance('halfAMinute', null, localizeOptions)\n } else if (seconds < 60) {\n return locale.formatDistance('lessThanXMinutes', 1, localizeOptions)\n } else {\n return locale.formatDistance('xMinutes', 1, localizeOptions)\n }\n } else {\n if (minutes === 0) {\n return locale.formatDistance('lessThanXMinutes', 1, localizeOptions)\n } else {\n return locale.formatDistance('xMinutes', minutes, localizeOptions)\n }\n }\n\n // 2 mins up to 0.75 hrs\n } else if (minutes < 45) {\n return locale.formatDistance('xMinutes', minutes, localizeOptions)\n\n // 0.75 hrs up to 1.5 hrs\n } else if (minutes < 90) {\n return locale.formatDistance('aboutXHours', 1, localizeOptions)\n\n // 1.5 hrs up to 24 hrs\n } else if (minutes < MINUTES_IN_DAY) {\n var hours = Math.round(minutes / 60)\n return locale.formatDistance('aboutXHours', hours, localizeOptions)\n\n // 1 day up to 1.75 days\n } else if (minutes < MINUTES_IN_ALMOST_TWO_DAYS) {\n return locale.formatDistance('xDays', 1, localizeOptions)\n\n // 1.75 days up to 30 days\n } else if (minutes < MINUTES_IN_MONTH) {\n var days = Math.round(minutes / MINUTES_IN_DAY)\n return locale.formatDistance('xDays', days, localizeOptions)\n\n // 1 month up to 2 months\n } else if (minutes < MINUTES_IN_TWO_MONTHS) {\n months = Math.round(minutes / MINUTES_IN_MONTH)\n return locale.formatDistance('aboutXMonths', months, localizeOptions)\n }\n\n months = differenceInMonths(dateRight, dateLeft, options)\n\n // 2 months up to 12 months\n if (months < 12) {\n var nearestMonth = Math.round(minutes / MINUTES_IN_MONTH)\n return locale.formatDistance('xMonths', nearestMonth, localizeOptions)\n\n // 1 year up to max Date\n } else {\n var monthsSinceStartOfYear = months % 12\n var years = Math.floor(months / 12)\n\n // N years up to 1 years 3 months\n if (monthsSinceStartOfYear < 3) {\n return locale.formatDistance('aboutXYears', years, localizeOptions)\n\n // N years 3 months up to N years 9 months\n } else if (monthsSinceStartOfYear < 9) {\n return locale.formatDistance('overXYears', years, localizeOptions)\n\n // N years 9 months up to N year 12 months\n } else {\n return locale.formatDistance('almostXYears', years + 1, localizeOptions)\n }\n }\n}\n","import getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js'\nimport compareAsc from '../compareAsc/index.js'\nimport toDate from '../toDate/index.js'\nimport differenceInSeconds from '../differenceInSeconds/index.js'\nimport cloneObject from '../_lib/cloneObject/index.js'\nimport defaultLocale from '../locale/en-US/index.js'\n\nvar MINUTES_IN_DAY = 1440\nvar MINUTES_IN_MONTH = 43200\nvar MINUTES_IN_YEAR = 525600\n\n/**\n * @name formatDistanceStrict\n * @category Common Helpers\n * @summary Return the distance between the given dates in words.\n *\n * @description\n * Return the distance between the given dates in words, using strict units.\n * This is like `formatDistance`, but does not use helpers like 'almost', 'over',\n * 'less than' and the like.\n *\n * | Distance between dates | Result |\n * |------------------------|---------------------|\n * | 0 ... 59 secs | [0..59] seconds |\n * | 1 ... 59 mins | [1..59] minutes |\n * | 1 ... 23 hrs | [1..23] hours |\n * | 1 ... 29 days | [1..29] days |\n * | 1 ... 11 months | [1..11] months |\n * | 1 ... N years | [1..N] years |\n *\n * @param {Date|String|Number} date - the date\n * @param {Date|String|Number} baseDate - the date to compare with\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {Boolean} [options.addSuffix=false] - result indicates if the second date is earlier or later than the first\n * @param {'second'|'minute'|'hour'|'day'|'month'|'year'} [options.unit] - if specified, will force a unit\n * @param {'floor'|'ceil'|'round'} [options.roundingMethod='round'] - which way to round partial units\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the distance in words\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.roundingMethod` must be 'floor', 'ceil' or 'round'\n * @throws {RangeError} `options.unit` must be 'second', 'minute', 'hour', 'day', 'month' or 'year'\n * @throws {RangeError} `options.locale` must contain `formatDistance` property\n *\n * @example\n * // What is the distance between 2 July 2014 and 1 January 2015?\n * var result = formatDistanceStrict(\n * new Date(2014, 6, 2),\n * new Date(2015, 0, 2)\n * )\n * //=> '6 months'\n *\n * @example\n * // What is the distance between 1 January 2015 00:00:15\n * // and 1 January 2015 00:00:00?\n * var result = formatDistanceStrict(\n * new Date(2015, 0, 1, 0, 0, 15),\n * new Date(2015, 0, 1, 0, 0, 0),\n * )\n * //=> '15 seconds'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, with a suffix?\n * var result = formatDistanceStrict(\n * new Date(2015, 0, 1),\n * new Date(2016, 0, 1),\n * {addSuffix: true}\n * )\n * //=> '1 year ago'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, in minutes?\n * var result = formatDistanceStrict(\n * new Date(2016, 0, 1),\n * new Date(2015, 0, 1),\n * {unit: 'minute'}\n * )\n * //=> '525600 minutes'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 28 January 2015, in months, rounded up?\n * var result = formatDistanceStrict(\n * new Date(2015, 0, 28),\n * new Date(2015, 0, 1),\n * {unit: 'month', roundingMethod: 'ceil'}\n * )\n * //=> '1 month'\n *\n * @example\n * // What is the distance between 1 August 2016 and 1 January 2015 in Esperanto?\n * import { eoLocale } from 'date-fns/locale/eo'\n * var result = formatDistanceStrict(\n * new Date(2016, 7, 1),\n * new Date(2015, 0, 1),\n * {locale: eoLocale}\n * )\n * //=> '1 jaro'\n */\nexport default function formatDistanceStrict (dirtyDate, dirtyBaseDate, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var options = dirtyOptions || {}\n var locale = options.locale || defaultLocale\n\n if (!locale.formatDistance) {\n throw new RangeError('locale must contain localize.formatDistance property')\n }\n\n var comparison = compareAsc(dirtyDate, dirtyBaseDate, options)\n\n if (isNaN(comparison)) {\n return 'Invalid Date'\n }\n\n var localizeOptions = cloneObject(options)\n localizeOptions.addSuffix = Boolean(options.addSuffix)\n localizeOptions.comparison = comparison\n\n var dateLeft\n var dateRight\n if (comparison > 0) {\n dateLeft = toDate(dirtyBaseDate, options)\n dateRight = toDate(dirtyDate, options)\n } else {\n dateLeft = toDate(dirtyDate, options)\n dateRight = toDate(dirtyBaseDate, options)\n }\n\n var roundingMethod = options.roundingMethod == null ? 'round' : String(options.roundingMethod)\n var roundingMethodFn\n\n if (roundingMethod === 'floor') {\n roundingMethodFn = Math.floor\n } else if (roundingMethod === 'ceil') {\n roundingMethodFn = Math.ceil\n } else if (roundingMethod === 'round') {\n roundingMethodFn = Math.round\n } else {\n throw new RangeError(\"roundingMethod must be 'floor', 'ceil' or 'round'\")\n }\n\n var seconds = differenceInSeconds(dateRight, dateLeft, dirtyOptions)\n var offsetInSeconds = (getTimezoneOffsetInMilliseconds(dateRight) - getTimezoneOffsetInMilliseconds(dateLeft)) / 1000\n var minutes = roundingMethodFn((seconds - offsetInSeconds) / 60)\n\n var unit\n if (options.unit == null) {\n if (minutes < 1) {\n unit = 'second'\n } else if (minutes < 60) {\n unit = 'minute'\n } else if (minutes < MINUTES_IN_DAY) {\n unit = 'hour'\n } else if (minutes < MINUTES_IN_MONTH) {\n unit = 'day'\n } else if (minutes < MINUTES_IN_YEAR) {\n unit = 'month'\n } else {\n unit = 'year'\n }\n } else {\n unit = String(options.unit)\n }\n\n // 0 up to 60 seconds\n if (unit === 'second') {\n return locale.formatDistance('xSeconds', seconds, localizeOptions)\n\n // 1 up to 60 mins\n } else if (unit === 'minute') {\n return locale.formatDistance('xMinutes', minutes, localizeOptions)\n\n // 1 up to 24 hours\n } else if (unit === 'hour') {\n var hours = roundingMethodFn(minutes / 60)\n return locale.formatDistance('xHours', hours, localizeOptions)\n\n // 1 up to 30 days\n } else if (unit === 'day') {\n var days = roundingMethodFn(minutes / MINUTES_IN_DAY)\n return locale.formatDistance('xDays', days, localizeOptions)\n\n // 1 up to 12 months\n } else if (unit === 'month') {\n var months = roundingMethodFn(minutes / MINUTES_IN_MONTH)\n return locale.formatDistance('xMonths', months, localizeOptions)\n\n // 1 year up to max Date\n } else if (unit === 'year') {\n var years = roundingMethodFn(minutes / MINUTES_IN_YEAR)\n return locale.formatDistance('xYears', years, localizeOptions)\n }\n\n throw new RangeError(\"unit must be 'second', 'minute', 'hour', 'day', 'month' or 'year'\")\n}\n","import getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js'\nimport toDate from '../toDate/index.js'\nimport format from '../format/index.js'\nimport differenceInCalendarDays from '../differenceInCalendarDays/index.js'\nimport defaultLocale from '../locale/en-US/index.js'\nimport subMilliseconds from '../subMilliseconds/index.js'\n\n/**\n * @name formatRelative\n * @category Common Helpers\n * @summary Represent the date in words relative to the given base date.\n *\n * @description\n * Represent the date in words relative to the given base date.\n *\n * | Distance to the base date | Result |\n * |---------------------------|---------------------------|\n * | Previous 6 days | last Sunday at 04:30 AM |\n * | Last day | yesterday at 04:30 AM |\n * | Same day | today at 04:30 AM |\n * | Next day | tomorrow at 04:30 AM |\n * | Next 6 days | Sunday at 04:30 AM |\n * | Other | 12/31/2017 |\n *\n * @param {Date|String|Number} date - the date to format\n * @param {Date|String|Number} baseDate - the date to compare with\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the date in words\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.locale` must contain `formatRelative` property\n */\nexport default function formatRelative (dirtyDate, dirtyBaseDate, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var baseDate = toDate(dirtyBaseDate, dirtyOptions)\n\n var options = dirtyOptions || {}\n var locale = options.locale || defaultLocale\n\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property')\n }\n\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property')\n }\n\n if (!locale.formatRelative) {\n throw new RangeError('locale must contain formatRelative property')\n }\n\n var diff = differenceInCalendarDays(date, baseDate, options)\n\n if (isNaN(diff)) {\n return 'Invalid Date'\n }\n\n var token\n if (diff < -6) {\n token = 'other'\n } else if (diff < -1) {\n token = 'lastWeek'\n } else if (diff < 0) {\n token = 'yesterday'\n } else if (diff < 1) {\n token = 'today'\n } else if (diff < 2) {\n token = 'tomorrow'\n } else if (diff < 7) {\n token = 'nextWeek'\n } else {\n token = 'other'\n }\n\n var utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date), options)\n var utcBaseDate = subMilliseconds(baseDate, getTimezoneOffsetInMilliseconds(baseDate), options)\n var formatStr = locale.formatRelative(token, utcDate, utcBaseDate, options)\n return format(date, formatStr, options)\n}\n","import toDate from '../toDate/index.js'\nimport toInteger from '../_lib/toInteger/index.js'\n\n/**\n * @name fromUnixTime\n * @category Timestamp Helpers\n * @summary Create a date from a Unix timestamp.\n *\n * @description\n * Create a date from a Unix timestamp.\n *\n * @param {Number} unixTime - the given Unix timestamp\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the date\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Create the date 29 February 2012 11:45:05:\n * var result = fromUnixTime(1330515905)\n * //=> Wed Feb 29 2012 11:45:05\n */\nexport default function fromUnixTime(dirtyUnixTime, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var unixTime = toInteger(dirtyUnixTime)\n\n return toDate(unixTime * 1000, dirtyOptions)\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getDate\n * @category Day Helpers\n * @summary Get the day of the month of the given date.\n *\n * @description\n * Get the day of the month of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the day of month\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Which day of the month is 29 February 2012?\n * var result = getDate(new Date(2012, 1, 29))\n * //=> 29\n */\nexport default function getDate (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var dayOfMonth = date.getDate()\n return dayOfMonth\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getDay\n * @category Weekday Helpers\n * @summary Get the day of the week of the given date.\n *\n * @description\n * Get the day of the week of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the day of week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Which day of the week is 29 February 2012?\n * var result = getDay(new Date(2012, 1, 29))\n * //=> 3\n */\nexport default function getDay (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var day = date.getDay()\n return day\n}\n","import toDate from '../toDate/index.js'\nimport startOfYear from '../startOfYear/index.js'\nimport differenceInCalendarDays from '../differenceInCalendarDays/index.js'\n\n/**\n * @name getDayOfYear\n * @category Day Helpers\n * @summary Get the day of the year of the given date.\n *\n * @description\n * Get the day of the year of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the day of year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Which day of the year is 2 July 2014?\n * var result = getDayOfYear(new Date(2014, 6, 2))\n * //=> 183\n */\nexport default function getDayOfYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var diff = differenceInCalendarDays(date, startOfYear(date, dirtyOptions), dirtyOptions)\n var dayOfYear = diff + 1\n return dayOfYear\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isLeapYear\n * @category Year Helpers\n * @summary Is the given date in the leap year?\n *\n * @description\n * Is the given date in the leap year?\n *\n * @param {Date|String|Number} date - the date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the date is in the leap year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Is 1 September 2012 in the leap year?\n * var result = isLeapYear(new Date(2012, 8, 1))\n * //=> true\n */\nexport default function isLeapYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var year = date.getFullYear()\n return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0)\n}\n","import toDate from '../toDate/index.js'\nimport isLeapYear from '../isLeapYear/index.js'\n\n/**\n * @name getDaysInYear\n * @category Year Helpers\n * @summary Get the number of days in a year of the given date.\n *\n * @description\n * Get the number of days in a year of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of days in a year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many days are in 2012?\n * var result = getDaysInYear(new Date(2012, 0, 1))\n * //=> 366\n */\nexport default function getDaysInYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n\n if (isNaN(date)) {\n return NaN\n }\n\n return isLeapYear(date, dirtyOptions) ? 366 : 365\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getDecade\n * @category Decade Helpers\n * @summary Get the decade of the given date.\n *\n * @description\n * Get the decade of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the year of decade\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Which decade belongs 27 November 1942?\n * var result = getDecade(new Date(1942, 10, 27))\n * //=> 1940\n */\nexport default function getDecade (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var year = date.getFullYear()\n var decade = Math.floor(year / 10) * 10\n return decade\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getHours\n * @category Hour Helpers\n * @summary Get the hours of the given date.\n *\n * @description\n * Get the hours of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the hours\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Get the hours of 29 February 2012 11:45:00:\n * var result = getHours(new Date(2012, 1, 29, 11, 45))\n * //=> 11\n */\nexport default function getHours (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var hours = date.getHours()\n return hours\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getISODay\n * @category Weekday Helpers\n * @summary Get the day of the ISO week of the given date.\n *\n * @description\n * Get the day of the ISO week of the given date,\n * which is 7 for Sunday, 1 for Monday etc.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the day of ISO week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Which day of the ISO week is 26 February 2012?\n * var result = getISODay(new Date(2012, 1, 26))\n * //=> 7\n */\nexport default function getISODay (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var day = date.getDay()\n\n if (day === 0) {\n day = 7\n }\n\n return day\n}\n","import toDate from '../toDate/index.js'\nimport startOfISOWeek from '../startOfISOWeek/index.js'\nimport startOfISOWeekYear from '../startOfISOWeekYear/index.js'\n\nvar MILLISECONDS_IN_WEEK = 604800000\n\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the ISO week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * var result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\nexport default function getISOWeek (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var diff = startOfISOWeek(date, dirtyOptions).getTime() - startOfISOWeekYear(date, dirtyOptions).getTime()\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1\n}\n","import startOfISOWeekYear from '../startOfISOWeekYear/index.js'\nimport addWeeks from '../addWeeks/index.js'\n\nvar MILLISECONDS_IN_WEEK = 604800000\n\n/**\n * @name getISOWeeksInYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the number of weeks in an ISO week-numbering year of the given date.\n *\n * @description\n * Get the number of weeks in an ISO week-numbering year of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of ISO weeks in a year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many weeks are in ISO week-numbering year 2015?\n * var result = getISOWeeksInYear(new Date(2015, 1, 11))\n * //=> 53\n */\nexport default function getISOWeeksInYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var thisYear = startOfISOWeekYear(dirtyDate, dirtyOptions)\n var nextYear = startOfISOWeekYear(addWeeks(thisYear, 60, dirtyOptions), dirtyOptions)\n var diff = nextYear.valueOf() - thisYear.valueOf()\n // Round the number of weeks to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK)\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getMilliseconds\n * @category Millisecond Helpers\n * @summary Get the milliseconds of the given date.\n *\n * @description\n * Get the milliseconds of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the milliseconds\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Get the milliseconds of 29 February 2012 11:45:05.123:\n * var result = getMilliseconds(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 123\n */\nexport default function getMilliseconds (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var milliseconds = date.getMilliseconds()\n return milliseconds\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getMinutes\n * @category Minute Helpers\n * @summary Get the minutes of the given date.\n *\n * @description\n * Get the minutes of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the minutes\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Get the minutes of 29 February 2012 11:45:05:\n * var result = getMinutes(new Date(2012, 1, 29, 11, 45, 5))\n * //=> 45\n */\nexport default function getMinutes (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var minutes = date.getMinutes()\n return minutes\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getMonth\n * @category Month Helpers\n * @summary Get the month of the given date.\n *\n * @description\n * Get the month of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the month\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Which month is 29 February 2012?\n * var result = getMonth(new Date(2012, 1, 29))\n * //=> 1\n */\nexport default function getMonth (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var month = date.getMonth()\n return month\n}\n","import toDate from '../toDate/index.js'\n\nvar MILLISECONDS_IN_DAY = 24 * 60 * 60 * 1000\n\n/**\n * @name getOverlappingDaysInIntervals\n * @category Interval Helpers\n * @summary Get the number of days that overlap in two time intervals\n *\n * @description\n * Get the number of days that overlap in two time intervals\n *\n * @param {Interval} intervalLeft - the first interval to compare. See [Interval]{@link docs/Interval}\n * @param {Interval} intervalRight - the second interval to compare. See [Interval]{@link docs/Interval}\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of days that overlap in two time intervals\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // For overlapping time intervals adds 1 for each started overlapping day:\n * getOverlappingDaysInIntervals(\n * {start: new Date(2014, 0, 10), end: new Date(2014, 0, 20)},\n * {start: new Date(2014, 0, 17), end: new Date(2014, 0, 21)}\n * )\n * //=> 3\n *\n * @example\n * // For non-overlapping time intervals returns 0:\n * getOverlappingDaysInIntervals(\n * {start: new Date(2014, 0, 10), end: new Date(2014, 0, 20)},\n * {start: new Date(2014, 0, 21), end: new Date(2014, 0, 22)}\n * )\n * //=> 0\n */\nexport default function getOverlappingDaysInIntervals (dirtyIntervalLeft, dirtyIntervalRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var intervalLeft = dirtyIntervalLeft || {}\n var intervalRight = dirtyIntervalRight || {}\n var leftStartTime = toDate(intervalLeft.start, dirtyOptions).getTime()\n var leftEndTime = toDate(intervalLeft.end, dirtyOptions).getTime()\n var rightStartTime = toDate(intervalRight.start, dirtyOptions).getTime()\n var rightEndTime = toDate(intervalRight.end, dirtyOptions).getTime()\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(leftStartTime <= leftEndTime && rightStartTime <= rightEndTime)) {\n throw new RangeError('Invalid interval')\n }\n\n var isOverlapping = leftStartTime < rightEndTime && rightStartTime < leftEndTime\n\n if (!isOverlapping) {\n return 0\n }\n\n var overlapStartDate = rightStartTime < leftStartTime\n ? leftStartTime\n : rightStartTime\n\n var overlapEndDate = rightEndTime > leftEndTime\n ? leftEndTime\n : rightEndTime\n\n var differenceInMs = overlapEndDate - overlapStartDate\n\n return Math.ceil(differenceInMs / MILLISECONDS_IN_DAY)\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getSeconds\n * @category Second Helpers\n * @summary Get the seconds of the given date.\n *\n * @description\n * Get the seconds of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the seconds\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Get the seconds of 29 February 2012 11:45:05.123:\n * var result = getSeconds(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 5\n */\nexport default function getSeconds (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var seconds = date.getSeconds()\n return seconds\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getTime\n * @category Timestamp Helpers\n * @summary Get the milliseconds timestamp of the given date.\n *\n * @description\n * Get the milliseconds timestamp of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the timestamp\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Get the timestamp of 29 February 2012 11:45:05.123:\n * var result = getTime(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 1330515905123\n */\nexport default function getTime (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var timestamp = date.getTime()\n return timestamp\n}\n","import getTime from '../getTime/index.js'\n\n/**\n * @name getUnixTime\n * @category Timestamp Helpers\n * @summary Get the seconds timestamp of the given date.\n *\n * @description\n * Get the seconds timestamp of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the timestamp\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Get the timestamp of 29 February 2012 11:45:05 CET:\n * var result = getUnixTime(new Date(2012, 1, 29, 11, 45, 5))\n * //=> 1330512305\n */\nexport default function getUnixTime(dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n return Math.floor(getTime(dirtyDate, dirtyOptions) / 1000)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\nimport startOfWeek from '../startOfWeek/index.js'\n\n/**\n * @name getWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Get the local week-numbering year of the given date.\n *\n * @description\n * Get the local week-numbering year of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Number} the local week-numbering year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // Which week numbering year is 26 December 2004 with the default settings?\n * var result = getWeekYear(new Date(2004, 11, 26))\n * //=> 2005\n *\n * @example\n * // Which week numbering year is 26 December 2004 if week starts on Saturday?\n * var result = getWeekYear(new Date(2004, 11, 26), {weekStartsOn: 6})\n * //=> 2004\n *\n * @example\n * // Which week numbering year is 26 December 2004 if the first week contains 4 January?\n * var result = getWeekYear(new Date(2004, 11, 26), {firstWeekContainsDate: 4})\n * //=> 2004\n */\nexport default function getWeekYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var year = date.getFullYear()\n\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeFirstWeekContainsDate = locale &&\n locale.options &&\n locale.options.firstWeekContainsDate\n var defaultFirstWeekContainsDate =\n localeFirstWeekContainsDate == null\n ? 1\n : toInteger(localeFirstWeekContainsDate)\n var firstWeekContainsDate =\n options.firstWeekContainsDate == null\n ? defaultFirstWeekContainsDate\n : toInteger(options.firstWeekContainsDate)\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively')\n }\n\n var firstWeekOfNextYear = new Date(0)\n firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate)\n firstWeekOfNextYear.setHours(0, 0, 0, 0)\n var startOfNextYear = startOfWeek(firstWeekOfNextYear, dirtyOptions)\n\n var firstWeekOfThisYear = new Date(0)\n firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate)\n firstWeekOfThisYear.setHours(0, 0, 0, 0)\n var startOfThisYear = startOfWeek(firstWeekOfThisYear, dirtyOptions)\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year\n } else {\n return year - 1\n }\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport getWeekYear from '../getWeekYear/index.js'\nimport startOfWeek from '../startOfWeek/index.js'\n\n/**\n * @name startOfWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Return the start of a local week-numbering year for the given date.\n *\n * @description\n * Return the start of a local week-numbering year.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Date} the start of a week-numbering year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // The start of an a week-numbering year for 2 July 2005 with default settings:\n * var result = startOfWeekYear(new Date(2005, 6, 2))\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // The start of a week-numbering year for 2 July 2005\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * var result = startOfWeekYear(new Date(2005, 6, 2), {weekStartsOn: 1, firstWeekContainsDate: 4})\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport default function startOfWeekYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeFirstWeekContainsDate = locale &&\n locale.options &&\n locale.options.firstWeekContainsDate\n var defaultFirstWeekContainsDate =\n localeFirstWeekContainsDate == null\n ? 1\n : toInteger(localeFirstWeekContainsDate)\n var firstWeekContainsDate =\n options.firstWeekContainsDate == null\n ? defaultFirstWeekContainsDate\n : toInteger(options.firstWeekContainsDate)\n\n var year = getWeekYear(dirtyDate, dirtyOptions)\n var firstWeek = new Date(0)\n firstWeek.setFullYear(year, 0, firstWeekContainsDate)\n firstWeek.setHours(0, 0, 0, 0)\n var date = startOfWeek(firstWeek, dirtyOptions)\n return date\n}\n","import toDate from '../toDate/index.js'\nimport startOfWeek from '../startOfWeek/index.js'\nimport startOfWeekYear from '../startOfWeekYear/index.js'\n\nvar MILLISECONDS_IN_WEEK = 604800000\n\n/**\n * @name getWeek\n * @category Week Helpers\n * @summary Get the local week index of the given date.\n *\n * @description\n * Get the local week index of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Number} the week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005 with default options?\n * var result = getISOWeek(new Date(2005, 0, 2))\n * //=> 2\n *\n * // Which week of the local week numbering year is 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January?\n * var result = getISOWeek(new Date(2005, 0, 2), {weekStartsOn: 1, firstWeekContainsDate: 4})\n * //=> 53\n */\n\nexport default function getWeek (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var diff = startOfWeek(date, dirtyOptions).getTime() - startOfWeekYear(date, dirtyOptions).getTime()\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport getDate from '../getDate/index.js'\nimport startOfMonth from '../startOfMonth/index.js'\nimport getDay from '../getDay/index.js'\n\n/**\n * @name getWeekOfMonth\n * @category Week Helpers\n * @summary Get the week of the month of the given date.\n *\n * @description\n * Get the week of the month of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Number} the week of month\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Which week of the month is 9 November 2017?\n * var result = getWeekOfMonth(new Date(2017, 10, 9))\n * //=> 2\n */\nexport default function getWeekOfMonth (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn)\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn)\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n var startWeekDay = getDay(startOfMonth(dirtyDate, dirtyOptions), dirtyOptions)\n var currentWeekDay = getDay(dirtyDate, dirtyOptions)\n\n var startWeekDayWithOptions = startWeekDay < weekStartsOn ? 7 - weekStartsOn : startWeekDay\n var diff = startWeekDayWithOptions > currentWeekDay ? 7 - weekStartsOn : 0\n\n return Math.ceil((getDate(dirtyDate, dirtyOptions) + diff) / 7)\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name lastDayOfMonth\n * @category Month Helpers\n * @summary Return the last day of a month for the given date.\n *\n * @description\n * Return the last day of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the last day of a month\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The last day of a month for 2 September 2014 11:55:00:\n * var result = lastDayOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 00:00:00\n */\nexport default function lastDayOfMonth (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var month = date.getMonth()\n date.setFullYear(date.getFullYear(), month + 1, 0)\n date.setHours(0, 0, 0, 0)\n return date\n}\n","import differenceInCalendarWeeks from '../differenceInCalendarWeeks/index.js'\nimport lastDayOfMonth from '../lastDayOfMonth/index.js'\nimport startOfMonth from '../startOfMonth/index.js'\n\n/**\n * @name getWeeksInMonth\n * @category Week Helpers\n * @summary Get the number of calendar weeks a month spans.\n *\n * @description\n * Get the number of calendar weeks the month in the given date spans.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {Number} the number of calendar weeks\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // How many calendar weeks does February 2015 span?\n * var result = getWeeksInMonth(\n * new Date(2015, 1, 8)\n * )\n * //=> 4\n *\n * @example\n * // If the week starts on Monday,\n * // how many calendar weeks does July 2017 span?\n * var result = getWeeksInMonth(\n * new Date(2017, 6, 5),\n * {weekStartsOn: 1}\n * )\n * //=> 6\n */\nexport default function getWeeksInMonth (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n return differenceInCalendarWeeks(\n lastDayOfMonth(dirtyDate, dirtyOptions),\n startOfMonth(dirtyDate, dirtyOptions),\n dirtyOptions\n ) + 1\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getYear\n * @category Year Helpers\n * @summary Get the year of the given date.\n *\n * @description\n * Get the year of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Which year is 2 July 2014?\n * var result = getYear(new Date(2014, 6, 2))\n * //=> 2014\n */\nexport default function getYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var year = date.getFullYear()\n return year\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isAfter\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * @param {Date|String|Number} date - the date that should be after the other one to return true\n * @param {Date|String|Number} dateToCompare - the date to compare with\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the first date is after the second date\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * var result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\nexport default function isAfter (dirtyDate, dirtyDateToCompare, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var dateToCompare = toDate(dirtyDateToCompare, dirtyOptions)\n return date.getTime() > dateToCompare.getTime()\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @param {Date|String|Number} date - the date that should be before the other one to return true\n * @param {Date|String|Number} dateToCompare - the date to compare with\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the first date is before the second date\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * var result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\nexport default function isBefore (dirtyDate, dirtyDateToCompare, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var dateToCompare = toDate(dirtyDateToCompare, dirtyOptions)\n return date.getTime() < dateToCompare.getTime()\n}\n","/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param {*} value - the value to check\n * @param {Options} [options] - the object with options. Unused; present for FP submodule compatibility sake. See [Options]{@link https://date-fns.org/docs/Options}\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * var result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * var result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * var result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * var result = isDate({})\n * //=> false\n */\nexport default function isDate (value) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n return (\n value instanceof Date ||\n (typeof value === 'object' &&\n Object.prototype.toString.call(value) === '[object Date]')\n )\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isEqual\n * @category Common Helpers\n * @summary Are the given dates equal?\n *\n * @description\n * Are the given dates equal?\n *\n * @param {Date|String|Number} dateLeft - the first date to compare\n * @param {Date|String|Number} dateRight - the second date to compare\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the dates are equal\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Are 2 July 2014 06:30:45.000 and 2 July 2014 06:30:45.500 equal?\n * var result = isEqual(\n * new Date(2014, 6, 2, 6, 30, 45, 0)\n * new Date(2014, 6, 2, 6, 30, 45, 500)\n * )\n * //=> false\n */\nexport default function isEqual (dirtyLeftDate, dirtyRightDate, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeft = toDate(dirtyLeftDate, dirtyOptions)\n var dateRight = toDate(dirtyRightDate, dirtyOptions)\n return dateLeft.getTime() === dateRight.getTime()\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isFirstDayOfMonth\n * @category Month Helpers\n * @summary Is the given date the first day of a month?\n *\n * @description\n * Is the given date the first day of a month?\n *\n * @param {Date|String|Number} date - the date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the date is the first day of a month\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Is 1 September 2014 the first day of a month?\n * var result = isFirstDayOfMonth(new Date(2014, 8, 1))\n * //=> true\n */\nexport default function isFirstDayOfMonth (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n return toDate(dirtyDate, dirtyOptions).getDate() === 1\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isFriday\n * @category Weekday Helpers\n * @summary Is the given date Friday?\n *\n * @description\n * Is the given date Friday?\n *\n * @param {Date|String|Number} date - the date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the date is Friday\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Is 26 September 2014 Friday?\n * var result = isFriday(new Date(2014, 8, 26))\n * //=> true\n */\nexport default function isFriday (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n return toDate(dirtyDate, dirtyOptions).getDay() === 5\n}\n","import toDate from '../toDate/index.js'\nimport endOfDay from '../endOfDay/index.js'\nimport endOfMonth from '../endOfMonth/index.js'\n\n/**\n * @name isLastDayOfMonth\n * @category Month Helpers\n * @summary Is the given date the last day of a month?\n *\n * @description\n * Is the given date the last day of a month?\n *\n * @param {Date|String|Number} date - the date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the date is the last day of a month\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Is 28 February 2014 the last day of a month?\n * var result = isLastDayOfMonth(new Date(2014, 1, 28))\n * //=> true\n */\nexport default function isLastDayOfMonth (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n return endOfDay(date, dirtyOptions).getTime() === endOfMonth(date, dirtyOptions).getTime()\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isMonday\n * @category Weekday Helpers\n * @summary Is the given date Monday?\n *\n * @description\n * Is the given date Monday?\n *\n * @param {Date|String|Number} date - the date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the date is Monday\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Is 22 September 2014 Monday?\n * var result = isMonday(new Date(2014, 8, 22))\n * //=> true\n */\nexport default function isMonday (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n return toDate(dirtyDate, dirtyOptions).getDay() === 1\n}\n","import startOfDay from '../startOfDay/index.js'\n\n/**\n * @name isSameDay\n * @category Day Helpers\n * @summary Are the given dates in the same day?\n *\n * @description\n * Are the given dates in the same day?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the dates are in the same day\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Are 4 September 06:00:00 and 4 September 18:00:00 in the same day?\n * var result = isSameDay(\n * new Date(2014, 8, 4, 6, 0),\n * new Date(2014, 8, 4, 18, 0)\n * )\n * //=> true\n */\nexport default function isSameDay (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeftStartOfDay = startOfDay(dirtyDateLeft, dirtyOptions)\n var dateRightStartOfDay = startOfDay(dirtyDateRight, dirtyOptions)\n\n return dateLeftStartOfDay.getTime() === dateRightStartOfDay.getTime()\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name startOfHour\n * @category Hour Helpers\n * @summary Return the start of an hour for the given date.\n *\n * @description\n * Return the start of an hour for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the start of an hour\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The start of an hour for 2 September 2014 11:55:00:\n * var result = startOfHour(new Date(2014, 8, 2, 11, 55))\n * //=> Tue Sep 02 2014 11:00:00\n */\nexport default function startOfHour (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n date.setMinutes(0, 0, 0)\n return date\n}\n","import startOfHour from '../startOfHour/index.js'\n\n/**\n * @name isSameHour\n * @category Hour Helpers\n * @summary Are the given dates in the same hour?\n *\n * @description\n * Are the given dates in the same hour?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the dates are in the same hour\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Are 4 September 2014 06:00:00 and 4 September 06:30:00 in the same hour?\n * var result = isSameHour(\n * new Date(2014, 8, 4, 6, 0),\n * new Date(2014, 8, 4, 6, 30)\n * )\n * //=> true\n */\nexport default function isSameHour (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeftStartOfHour = startOfHour(dirtyDateLeft, dirtyOptions)\n var dateRightStartOfHour = startOfHour(dirtyDateRight, dirtyOptions)\n\n return dateLeftStartOfHour.getTime() === dateRightStartOfHour.getTime()\n}\n","import startOfWeek from '../startOfWeek/index.js'\n\n/**\n * @name isSameWeek\n * @category Week Helpers\n * @summary Are the given dates in the same week?\n *\n * @description\n * Are the given dates in the same week?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {Boolean} the dates are in the same week\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // Are 31 August 2014 and 4 September 2014 in the same week?\n * var result = isSameWeek(\n * new Date(2014, 7, 31),\n * new Date(2014, 8, 4)\n * )\n * //=> true\n *\n * @example\n * // If week starts with Monday,\n * // are 31 August 2014 and 4 September 2014 in the same week?\n * var result = isSameWeek(\n * new Date(2014, 7, 31),\n * new Date(2014, 8, 4),\n * {weekStartsOn: 1}\n * )\n * //=> false\n */\nexport default function isSameWeek (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeftStartOfWeek = startOfWeek(dirtyDateLeft, dirtyOptions)\n var dateRightStartOfWeek = startOfWeek(dirtyDateRight, dirtyOptions)\n\n return dateLeftStartOfWeek.getTime() === dateRightStartOfWeek.getTime()\n}\n","import isSameWeek from '../isSameWeek/index.js'\nimport cloneObject from '../_lib/cloneObject/index.js'\n\n/**\n * @name isSameISOWeek\n * @category ISO Week Helpers\n * @summary Are the given dates in the same ISO week?\n *\n * @description\n * Are the given dates in the same ISO week?\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the dates are in the same ISO week\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Are 1 September 2014 and 7 September 2014 in the same ISO week?\n * var result = isSameISOWeek(\n * new Date(2014, 8, 1),\n * new Date(2014, 8, 7)\n * )\n * //=> true\n */\nexport default function isSameISOWeek (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var isSameWeekOptions = cloneObject(dirtyOptions)\n isSameWeekOptions.weekStartsOn = 1\n return isSameWeek(dirtyDateLeft, dirtyDateRight, isSameWeekOptions)\n}\n","import startOfISOWeekYear from '../startOfISOWeekYear/index.js'\n\n/**\n * @name isSameISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Are the given dates in the same ISO week-numbering year?\n *\n * @description\n * Are the given dates in the same ISO week-numbering year?\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the dates are in the same ISO week-numbering year\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Are 29 December 2003 and 2 January 2005 in the same ISO week-numbering year?\n * var result = isSameISOWeekYear(\n * new Date(2003, 11, 29),\n * new Date(2005, 0, 2)\n * )\n * //=> true\n */\nexport default function isSameISOWeekYear (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeftStartOfYear = startOfISOWeekYear(dirtyDateLeft, dirtyOptions)\n var dateRightStartOfYear = startOfISOWeekYear(dirtyDateRight, dirtyOptions)\n\n return dateLeftStartOfYear.getTime() === dateRightStartOfYear.getTime()\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name startOfMinute\n * @category Minute Helpers\n * @summary Return the start of a minute for the given date.\n *\n * @description\n * Return the start of a minute for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the start of a minute\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The start of a minute for 1 December 2014 22:15:45.400:\n * var result = startOfMinute(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:00\n */\nexport default function startOfMinute (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n date.setSeconds(0, 0)\n return date\n}\n","import startOfMinute from '../startOfMinute/index.js'\n\n/**\n * @name isSameMinute\n * @category Minute Helpers\n * @summary Are the given dates in the same minute?\n *\n * @description\n * Are the given dates in the same minute?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the dates are in the same minute\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Are 4 September 2014 06:30:00 and 4 September 2014 06:30:15\n * // in the same minute?\n * var result = isSameMinute(\n * new Date(2014, 8, 4, 6, 30),\n * new Date(2014, 8, 4, 6, 30, 15)\n * )\n * //=> true\n */\nexport default function isSameMinute (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeftStartOfMinute = startOfMinute(dirtyDateLeft, dirtyOptions)\n var dateRightStartOfMinute = startOfMinute(dirtyDateRight, dirtyOptions)\n\n return dateLeftStartOfMinute.getTime() === dateRightStartOfMinute.getTime()\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isSameMonth\n * @category Month Helpers\n * @summary Are the given dates in the same month?\n *\n * @description\n * Are the given dates in the same month?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the dates are in the same month\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same month?\n * var result = isSameMonth(\n * new Date(2014, 8, 2),\n * new Date(2014, 8, 25)\n * )\n * //=> true\n */\nexport default function isSameMonth (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeft = toDate(dirtyDateLeft, dirtyOptions)\n var dateRight = toDate(dirtyDateRight, dirtyOptions)\n return dateLeft.getFullYear() === dateRight.getFullYear() &&\n dateLeft.getMonth() === dateRight.getMonth()\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name startOfQuarter\n * @category Quarter Helpers\n * @summary Return the start of a year quarter for the given date.\n *\n * @description\n * Return the start of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the start of a quarter\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The start of a quarter for 2 September 2014 11:55:00:\n * var result = startOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Jul 01 2014 00:00:00\n */\nexport default function startOfQuarter (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var currentMonth = date.getMonth()\n var month = currentMonth - currentMonth % 3\n date.setMonth(month, 1)\n date.setHours(0, 0, 0, 0)\n return date\n}\n","import startOfQuarter from '../startOfQuarter/index.js'\n\n/**\n * @name isSameQuarter\n * @category Quarter Helpers\n * @summary Are the given dates in the same year quarter?\n *\n * @description\n * Are the given dates in the same year quarter?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the dates are in the same quarter\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Are 1 January 2014 and 8 March 2014 in the same quarter?\n * var result = isSameQuarter(\n * new Date(2014, 0, 1),\n * new Date(2014, 2, 8)\n * )\n * //=> true\n */\nexport default function isSameQuarter (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeftStartOfQuarter = startOfQuarter(dirtyDateLeft, dirtyOptions)\n var dateRightStartOfQuarter = startOfQuarter(dirtyDateRight, dirtyOptions)\n\n return dateLeftStartOfQuarter.getTime() === dateRightStartOfQuarter.getTime()\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name startOfSecond\n * @category Second Helpers\n * @summary Return the start of a second for the given date.\n *\n * @description\n * Return the start of a second for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the start of a second\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The start of a second for 1 December 2014 22:15:45.400:\n * var result = startOfSecond(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:45.000\n */\nexport default function startOfSecond (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n date.setMilliseconds(0)\n return date\n}\n","import startOfSecond from '../startOfSecond/index.js'\n\n/**\n * @name isSameSecond\n * @category Second Helpers\n * @summary Are the given dates in the same second?\n *\n * @description\n * Are the given dates in the same second?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the dates are in the same second\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Are 4 September 2014 06:30:15.000 and 4 September 2014 06:30.15.500\n * // in the same second?\n * var result = isSameSecond(\n * new Date(2014, 8, 4, 6, 30, 15),\n * new Date(2014, 8, 4, 6, 30, 15, 500)\n * )\n * //=> true\n */\nexport default function isSameSecond (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeftStartOfSecond = startOfSecond(dirtyDateLeft, dirtyOptions)\n var dateRightStartOfSecond = startOfSecond(dirtyDateRight, dirtyOptions)\n\n return dateLeftStartOfSecond.getTime() === dateRightStartOfSecond.getTime()\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isSameYear\n * @category Year Helpers\n * @summary Are the given dates in the same year?\n *\n * @description\n * Are the given dates in the same year?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the dates are in the same year\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same year?\n * var result = isSameYear(\n * new Date(2014, 8, 2),\n * new Date(2014, 8, 25)\n * )\n * //=> true\n */\nexport default function isSameYear (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeft = toDate(dirtyDateLeft, dirtyOptions)\n var dateRight = toDate(dirtyDateRight, dirtyOptions)\n return dateLeft.getFullYear() === dateRight.getFullYear()\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isSaturday\n * @category Weekday Helpers\n * @summary Is the given date Saturday?\n *\n * @description\n * Is the given date Saturday?\n *\n * @param {Date|String|Number} date - the date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the date is Saturday\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Is 27 September 2014 Saturday?\n * var result = isSaturday(new Date(2014, 8, 27))\n * //=> true\n */\nexport default function isSaturday (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n return toDate(dirtyDate, dirtyOptions).getDay() === 6\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isThursday\n * @category Weekday Helpers\n * @summary Is the given date Thursday?\n *\n * @description\n * Is the given date Thursday?\n *\n * @param {Date|String|Number} date - the date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the date is Thursday\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Is 25 September 2014 Thursday?\n * var result = isThursday(new Date(2014, 8, 25))\n * //=> true\n */\nexport default function isThursday (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n return toDate(dirtyDate, dirtyOptions).getDay() === 4\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isTuesday\n * @category Weekday Helpers\n * @summary Is the given date Tuesday?\n *\n * @description\n * Is the given date Tuesday?\n *\n * @param {Date|String|Number} date - the date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the date is Tuesday\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Is 23 September 2014 Tuesday?\n * var result = isTuesday(new Date(2014, 8, 23))\n * //=> true\n */\nexport default function isTuesday (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n return toDate(dirtyDate, dirtyOptions).getDay() === 2\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isWednesday\n * @category Weekday Helpers\n * @summary Is the given date Wednesday?\n *\n * @description\n * Is the given date Wednesday?\n *\n * @param {Date|String|Number} date - the date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the date is Wednesday\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Is 24 September 2014 Wednesday?\n * var result = isWednesday(new Date(2014, 8, 24))\n * //=> true\n */\nexport default function isWednesday (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n return toDate(dirtyDate, dirtyOptions).getDay() === 3\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isWithinInterval\n * @category Interval Helpers\n * @summary Is the given date within the interval?\n *\n * @description\n * Is the given date within the interval?\n *\n * @param {Date|String|Number} date - the date to check\n * @param {Interval} interval - the interval to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the date is within the interval\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // For the date within the interval:\n * isWithinInterval(\n * new Date(2014, 0, 3),\n * {start: new Date(2014, 0, 1), end: new Date(2014, 0, 7)}\n * )\n * //=> true\n *\n * @example\n * // For the date outside of the interval:\n * isWithinInterval(\n * new Date(2014, 0, 10),\n * {start: new Date(2014, 0, 1), end: new Date(2014, 0, 7)}\n * )\n * //=> false\n */\nexport default function isWithinInterval (dirtyDate, dirtyInterval, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var interval = dirtyInterval || {}\n var time = toDate(dirtyDate, dirtyOptions).getTime()\n var startTime = toDate(interval.start, dirtyOptions).getTime()\n var endTime = toDate(interval.end, dirtyOptions).getTime()\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(startTime <= endTime)) {\n throw new RangeError('Invalid interval')\n }\n\n return time >= startTime && time <= endTime\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name lastDayOfDecade\n * @category Decade Helpers\n * @summary Return the last day of a decade for the given date.\n *\n * @description\n * Return the last day of a decade for the given date.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the last day of a decade\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The last day of a decade for 21 December 2012 21:12:00:\n * var result = lastDayOfDecade(new Date(2012, 11, 21, 21, 12, 00))\n * //=> Wed Dec 31 2019 00:00:00\n */\nexport default function lastDayOfDecade (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var year = date.getFullYear()\n var decade = 9 + Math.floor(year / 10) * 10\n date.setFullYear(decade + 1, 0, 0)\n date.setHours(0, 0, 0, 0)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name lastDayOfWeek\n * @category Week Helpers\n * @summary Return the last day of a week for the given date.\n *\n * @description\n * Return the last day of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {Date} the last day of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The last day of a week for 2 September 2014 11:55:00:\n * var result = lastDayOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the last day of the week for 2 September 2014 11:55:00:\n * var result = lastDayOfWeek(new Date(2014, 8, 2, 11, 55, 0), {weekStartsOn: 1})\n * //=> Sun Sep 07 2014 00:00:00\n */\nexport default function lastDayOfWeek (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn)\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn)\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var day = date.getDay()\n var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn)\n\n date.setHours(0, 0, 0, 0)\n date.setDate(date.getDate() + diff)\n return date\n}\n","import lastDayOfWeek from '../lastDayOfWeek/index.js'\nimport cloneObject from '../_lib/cloneObject/index.js'\n\n/**\n * @name lastDayOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the last day of an ISO week for the given date.\n *\n * @description\n * Return the last day of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the last day of an ISO week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The last day of an ISO week for 2 September 2014 11:55:00:\n * var result = lastDayOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Sep 07 2014 00:00:00\n */\nexport default function lastDayOfISOWeek (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var lastDayOfWeekOptions = cloneObject(dirtyOptions)\n lastDayOfWeekOptions.weekStartsOn = 1\n return lastDayOfWeek(dirtyDate, lastDayOfWeekOptions)\n}\n","import getISOWeekYear from '../getISOWeekYear/index.js'\nimport startOfISOWeek from '../startOfISOWeek/index.js'\n\n/**\n * @name lastDayOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the last day of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the last day of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the end of an ISO week-numbering year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The last day of an ISO week-numbering year for 2 July 2005:\n * var result = lastDayOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Sun Jan 01 2006 00:00:00\n */\nexport default function lastDayOfISOWeekYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var year = getISOWeekYear(dirtyDate, dirtyOptions)\n var fourthOfJanuary = new Date(0)\n fourthOfJanuary.setFullYear(year + 1, 0, 4)\n fourthOfJanuary.setHours(0, 0, 0, 0)\n var date = startOfISOWeek(fourthOfJanuary, dirtyOptions)\n date.setDate(date.getDate() - 1)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name lastDayOfQuarter\n * @category Quarter Helpers\n * @summary Return the last day of a year quarter for the given date.\n *\n * @description\n * Return the last day of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the last day of a quarter\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The last day of a quarter for 2 September 2014 11:55:00:\n * var result = lastDayOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 00:00:00\n */\nexport default function lastDayOfQuarter (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var currentMonth = date.getMonth()\n var month = currentMonth - currentMonth % 3 + 3\n date.setMonth(month, 0)\n date.setHours(0, 0, 0, 0)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name lastDayOfYear\n * @category Year Helpers\n * @summary Return the last day of a year for the given date.\n *\n * @description\n * Return the last day of a year for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the last day of a year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The last day of a year for 2 September 2014 11:55:00:\n * var result = lastDayOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Dec 31 2014 00:00:00\n */\nexport default function lastDayOfYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var year = date.getFullYear()\n date.setFullYear(year + 1, 0, 0)\n date.setHours(0, 0, 0, 0)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name max\n * @category Common Helpers\n * @summary Return the latest of the given dates.\n *\n * @description\n * Return the latest of the given dates.\n *\n * @param {Date[]|String[]|Number[]} datesArray - the dates to compare\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the latest of the dates\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Which of these dates is the latest?\n * var result = max(\n * [\n * new Date(1989, 6, 10),\n * new Date(1987, 1, 11),\n * new Date(1995, 6, 2),\n * new Date(1990, 0, 1)\n * ]\n * )\n * //=> Sun Jul 02 1995 00:00:00\n */\nexport default function max (dirtyDatesArray, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var datesArray\n // `dirtyDatesArray` is undefined or null\n if (dirtyDatesArray == null) {\n datesArray = []\n\n // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n } else if (typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray\n\n // If `dirtyDatesArray` is Array-like Object, convert to Array. Otherwise, make it empty Array\n } else {\n datesArray = Array.prototype.slice.call(dirtyDatesArray)\n }\n\n var result\n datesArray.forEach(function (dirtyDate) {\n var currentDate = toDate(dirtyDate, dirtyOptions)\n\n if (result === undefined || result < currentDate || isNaN(currentDate)) {\n result = currentDate\n }\n })\n\n return result\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name min\n * @category Common Helpers\n * @summary Return the earliest of the given dates.\n *\n * @description\n * Return the earliest of the given dates.\n *\n * @param {Date[]|String[]|Number[]} datesArray - the dates to compare\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the earliest of the dates\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Which of these dates is the earliest?\n * var result = min(\n * [\n * new Date(1989, 6, 10),\n * new Date(1987, 1, 11),\n * new Date(1995, 6, 2),\n * new Date(1990, 0, 1)\n * ]\n * )\n * //=> Wed Feb 11 1987 00:00:00\n */\nexport default function min (dirtyDatesArray, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var datesArray\n // `dirtyDatesArray` is undefined or null\n if (dirtyDatesArray == null) {\n datesArray = []\n\n // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n } else if (typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray\n\n // If `dirtyDatesArray` is Array-like Object, convert to Array. Otherwise, make it empty Array\n } else {\n datesArray = Array.prototype.slice.call(dirtyDatesArray)\n }\n\n var result\n datesArray.forEach(function (dirtyDate) {\n var currentDate = toDate(dirtyDate, dirtyOptions)\n\n if (result === undefined || result > currentDate || isNaN(currentDate)) {\n result = currentDate\n }\n })\n\n return result\n}\n","import toInteger from '../toInteger/index.js'\nimport toDate from '../../toDate/index.js'\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function setUTCDay (dirtyDate, dirtyDay, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn)\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn)\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var day = toInteger(dirtyDay)\n\n var currentDay = date.getUTCDay()\n\n var remainder = day % 7\n var dayIndex = (remainder + 7) % 7\n\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay\n\n date.setUTCDate(date.getUTCDate() + diff)\n return date\n}\n","import getUTCWeekYear from '../../../_lib/getUTCWeekYear/index.js'\nimport setUTCDay from '../../../_lib/setUTCDay/index.js'\nimport setUTCWeek from '../../../_lib/setUTCWeek/index.js'\nimport startOfUTCWeek from '../../../_lib/startOfUTCWeek/index.js'\nimport setUTCISODay from '../../../_lib/setUTCISODay/index.js'\nimport setUTCISOWeek from '../../../_lib/setUTCISOWeek/index.js'\nimport startOfUTCISOWeek from '../../../_lib/startOfUTCISOWeek/index.js'\n\nvar MILLISECONDS_IN_HOUR = 3600000\nvar MILLISECONDS_IN_MINUTE = 60000\nvar MILLISECONDS_IN_SECOND = 1000\n\nvar numericPatterns = {\n month: /^(1[0-2]|0?\\d)/, // 0 to 12\n date: /^(3[0-1]|[0-2]?\\d)/, // 0 to 31\n dayOfYear: /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/, // 0 to 366\n week: /^(5[0-3]|[0-4]?\\d)/, // 0 to 53\n hour23h: /^(2[0-3]|[0-1]?\\d)/, // 0 to 23\n hour24h: /^(2[0-4]|[0-1]?\\d)/, // 0 to 24\n hour11h: /^(1[0-1]|0?\\d)/, // 0 to 11\n hour12h: /^(1[0-2]|0?\\d)/, // 0 to 12\n minute: /^[0-5]?\\d/, // 0 to 59\n second: /^[0-5]?\\d/, // 0 to 59\n\n singleDigit: /^\\d/, // 0 to 9\n twoDigits: /^\\d{1,2}/, // 0 to 99\n threeDigits: /^\\d{1,3}/, // 0 to 999\n fourDigits: /^\\d{1,4}/, // 0 to 9999\n\n anyDigitsSigned: /^-?\\d+/,\n singleDigitSigned: /^-?\\d/, // 0 to 9, -0 to -9\n twoDigitsSigned: /^-?\\d{1,2}/, // 0 to 99, -0 to -99\n threeDigitsSigned: /^-?\\d{1,3}/, // 0 to 999, -0 to -999\n fourDigitsSigned: /^-?\\d{1,4}/ // 0 to 9999, -0 to -9999\n}\n\nvar timezonePatterns = {\n basicOptionalMinutes: /^([+-])(\\d{2})(\\d{2})?|Z/,\n basic: /^([+-])(\\d{2})(\\d{2})|Z/,\n basicOptionalSeconds: /^([+-])(\\d{2})(\\d{2})((\\d{2}))?|Z/,\n extended: /^([+-])(\\d{2}):(\\d{2})|Z/,\n extendedOptionalSeconds: /^([+-])(\\d{2}):(\\d{2})(:(\\d{2}))?|Z/\n}\n\nfunction parseNumericPattern (pattern, string, valueCallback) {\n var matchResult = string.match(pattern)\n\n if (!matchResult) {\n return null\n }\n\n var value = parseInt(matchResult[0], 10)\n\n return {\n value: valueCallback ? valueCallback(value) : value,\n rest: string.slice(matchResult[0].length)\n }\n}\n\nfunction parseTimezonePattern (pattern, string) {\n var matchResult = string.match(pattern)\n\n if (!matchResult) {\n return null\n }\n\n // Input is 'Z'\n if (matchResult[0] === 'Z') {\n return {\n value: 0,\n rest: string.slice(1)\n }\n }\n\n var sign = matchResult[1] === '+' ? 1 : -1\n var hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0\n var minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0\n var seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0\n\n return {\n value: sign * (\n hours * MILLISECONDS_IN_HOUR +\n minutes * MILLISECONDS_IN_MINUTE +\n seconds * MILLISECONDS_IN_SECOND\n ),\n rest: string.slice(matchResult[0].length)\n }\n}\n\nfunction parseAnyDigitsSigned (string, valueCallback) {\n return parseNumericPattern(numericPatterns.anyDigitsSigned, string, valueCallback)\n}\n\nfunction parseNDigits (n, string, valueCallback) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigit, string, valueCallback)\n case 2:\n return parseNumericPattern(numericPatterns.twoDigits, string, valueCallback)\n case 3:\n return parseNumericPattern(numericPatterns.threeDigits, string, valueCallback)\n case 4:\n return parseNumericPattern(numericPatterns.fourDigits, string, valueCallback)\n default:\n return parseNumericPattern(new RegExp('^\\\\d{1,' + n + '}'), string, valueCallback)\n }\n}\n\nfunction parseNDigitsSigned (n, string, valueCallback) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigitSigned, string, valueCallback)\n case 2:\n return parseNumericPattern(numericPatterns.twoDigitsSigned, string, valueCallback)\n case 3:\n return parseNumericPattern(numericPatterns.threeDigitsSigned, string, valueCallback)\n case 4:\n return parseNumericPattern(numericPatterns.fourDigitsSigned, string, valueCallback)\n default:\n return parseNumericPattern(new RegExp('^-?\\\\d{1,' + n + '}'), string, valueCallback)\n }\n}\n\nfunction dayPeriodEnumToHours (enumValue) {\n switch (enumValue) {\n case 'morning':\n return 4\n case 'evening':\n return 17\n case 'pm':\n case 'noon':\n case 'afternoon':\n return 12\n case 'am':\n case 'midnight':\n case 'night':\n default:\n return 0\n }\n}\n\nfunction normalizeTwoDigitYear (twoDigitYear, currentYear) {\n var isCommonEra = currentYear > 0\n // Absolute number of the current year:\n // 1 -> 1 AC\n // 0 -> 1 BC\n // -1 -> 2 BC\n var absCurrentYear = isCommonEra ? currentYear : 1 - currentYear\n\n var result\n if (absCurrentYear <= 50) {\n result = twoDigitYear || 100\n } else {\n var rangeEnd = absCurrentYear + 50\n var rangeEndCentury = Math.floor(rangeEnd / 100) * 100\n var isPreviousCentury = twoDigitYear >= rangeEnd % 100\n result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0)\n }\n\n return isCommonEra ? result : 1 - result\n}\n\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\nvar DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\n\n// User for validation\nfunction isLeapYearIndex (year) {\n return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0)\n}\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O* | Timezone (GMT) |\n * | p | | P | |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z* | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `parse` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n */\nvar parsers = {\n // Era\n G: {\n priority: 140,\n parse: function (string, token, match, options) {\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return match.era(string, {width: 'abbreviated'}) ||\n match.era(string, {width: 'narrow'})\n // A, B\n case 'GGGGG':\n return match.era(string, {width: 'narrow'})\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return match.era(string, {width: 'wide'}) ||\n match.era(string, {width: 'abbreviated'}) ||\n match.era(string, {width: 'narrow'})\n }\n },\n set: function (date, value, options) {\n // Sets year 10 BC if BC, or 10 AC if AC\n date.setUTCFullYear(value === 1 ? 10 : -9, 0, 1)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // Year\n y: {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n priority: 130,\n parse: function (string, token, match, options) {\n var valueCallback = function (year) {\n return {\n year: year,\n isTwoDigitYear: token === 'yy'\n }\n }\n\n switch (token) {\n case 'y':\n return parseNDigits(4, string, valueCallback)\n case 'yo':\n return match.ordinalNumber(string, {unit: 'year', valueCallback: valueCallback})\n default:\n return parseNDigits(token.length, string, valueCallback)\n }\n },\n validate: function (date, value, options) {\n return value.isTwoDigitYear || value.year > 0\n },\n set: function (date, value, options) {\n var currentYear = getUTCWeekYear(date, options)\n\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear)\n date.setUTCFullYear(normalizedTwoDigitYear, 0, 1)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n\n var year = currentYear > 0 ? value.year : 1 - value.year\n date.setUTCFullYear(year, 0, 1)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // Local week-numbering year\n Y: {\n priority: 130,\n parse: function (string, token, match, options) {\n var valueCallback = function (year) {\n return {\n year: year,\n isTwoDigitYear: token === 'YY'\n }\n }\n\n switch (token) {\n case 'Y':\n return parseNDigits(4, string, valueCallback)\n case 'Yo':\n return match.ordinalNumber(string, {unit: 'year', valueCallback: valueCallback})\n default:\n return parseNDigits(token.length, string, valueCallback)\n }\n },\n validate: function (date, value, options) {\n return value.isTwoDigitYear || value.year > 0\n },\n set: function (date, value, options) {\n var currentYear = date.getUTCFullYear()\n\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear)\n date.setUTCFullYear(normalizedTwoDigitYear, 0, options.firstWeekContainsDate)\n date.setUTCHours(0, 0, 0, 0)\n return startOfUTCWeek(date, options)\n }\n\n var year = currentYear > 0 ? value.year : 1 - value.year\n date.setUTCFullYear(year, 0, options.firstWeekContainsDate)\n date.setUTCHours(0, 0, 0, 0)\n return startOfUTCWeek(date, options)\n }\n },\n\n // ISO week-numbering year\n R: {\n priority: 130,\n parse: function (string, token, match, options) {\n if (token === 'R') {\n return parseNDigitsSigned(4, string)\n }\n\n return parseNDigitsSigned(token.length, string)\n },\n set: function (date, value, options) {\n var firstWeekOfYear = new Date(0)\n firstWeekOfYear.setUTCFullYear(value, 0, 4)\n firstWeekOfYear.setUTCHours(0, 0, 0, 0)\n return startOfUTCISOWeek(firstWeekOfYear)\n }\n },\n\n // Extended year\n u: {\n priority: 130,\n parse: function (string, token, match, options) {\n if (token === 'u') {\n return parseNDigitsSigned(4, string)\n }\n\n return parseNDigitsSigned(token.length, string)\n },\n set: function (date, value, options) {\n date.setUTCFullYear(value, 0, 1)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // Quarter\n Q: {\n priority: 120,\n parse: function (string, token, match, options) {\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n case 'QQ': // 01, 02, 03, 04\n return parseNDigits(token.length, string)\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return match.ordinalNumber(string, {unit: 'quarter'})\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return match.quarter(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.quarter(string, {width: 'narrow', context: 'formatting'})\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return match.quarter(string, {width: 'narrow', context: 'formatting'})\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return match.quarter(string, {width: 'wide', context: 'formatting'}) ||\n match.quarter(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.quarter(string, {width: 'narrow', context: 'formatting'})\n }\n },\n validate: function (date, value, options) {\n return value >= 1 && value <= 4\n },\n set: function (date, value, options) {\n date.setUTCMonth((value - 1) * 3, 1)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // Stand-alone quarter\n q: {\n priority: 120,\n parse: function (string, token, match, options) {\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n case 'qq': // 01, 02, 03, 04\n return parseNDigits(token.length, string)\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return match.ordinalNumber(string, {unit: 'quarter'})\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return match.quarter(string, {width: 'abbreviated', context: 'standalone'}) ||\n match.quarter(string, {width: 'narrow', context: 'standalone'})\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return match.quarter(string, {width: 'narrow', context: 'standalone'})\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return match.quarter(string, {width: 'wide', context: 'standalone'}) ||\n match.quarter(string, {width: 'abbreviated', context: 'standalone'}) ||\n match.quarter(string, {width: 'narrow', context: 'standalone'})\n }\n },\n validate: function (date, value, options) {\n return value >= 1 && value <= 4\n },\n set: function (date, value, options) {\n date.setUTCMonth((value - 1) * 3, 1)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // Month\n M: {\n priority: 110,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n return value - 1\n }\n\n switch (token) {\n // 1, 2, ..., 12\n case 'M':\n return parseNumericPattern(numericPatterns.month, string, valueCallback)\n // 01, 02, ..., 12\n case 'MM':\n return parseNDigits(2, string, valueCallback)\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return match.ordinalNumber(string, {unit: 'month', valueCallback: valueCallback})\n // Jan, Feb, ..., Dec\n case 'MMM':\n return match.month(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.month(string, {width: 'narrow', context: 'formatting'})\n // J, F, ..., D\n case 'MMMMM':\n return match.month(string, {width: 'narrow', context: 'formatting'})\n // January, February, ..., December\n case 'MMMM':\n default:\n return match.month(string, {width: 'wide', context: 'formatting'}) ||\n match.month(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.month(string, {width: 'narrow', context: 'formatting'})\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 11\n },\n set: function (date, value, options) {\n date.setUTCMonth(value, 1)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // Stand-alone month\n L: {\n priority: 110,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n return value - 1\n }\n\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return parseNumericPattern(numericPatterns.month, string, valueCallback)\n // 01, 02, ..., 12\n case 'LL':\n return parseNDigits(2, string, valueCallback)\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return match.ordinalNumber(string, {unit: 'month', valueCallback: valueCallback})\n // Jan, Feb, ..., Dec\n case 'LLL':\n return match.month(string, {width: 'abbreviated', context: 'standalone'}) ||\n match.month(string, {width: 'narrow', context: 'standalone'})\n // J, F, ..., D\n case 'LLLLL':\n return match.month(string, {width: 'narrow', context: 'standalone'})\n // January, February, ..., December\n case 'LLLL':\n default:\n return match.month(string, {width: 'wide', context: 'standalone'}) ||\n match.month(string, {width: 'abbreviated', context: 'standalone'}) ||\n match.month(string, {width: 'narrow', context: 'standalone'})\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 11\n },\n set: function (date, value, options) {\n date.setUTCMonth(value, 1)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // Local week of year\n w: {\n priority: 100,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'w':\n return parseNumericPattern(numericPatterns.week, string)\n case 'wo':\n return match.ordinalNumber(string, {unit: 'week'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n return value >= 1 && value <= 53\n },\n set: function (date, value, options) {\n return startOfUTCWeek(setUTCWeek(date, value, options), options)\n }\n },\n\n // ISO week of year\n I: {\n priority: 100,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'I':\n return parseNumericPattern(numericPatterns.week, string)\n case 'Io':\n return match.ordinalNumber(string, {unit: 'week'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n return value >= 1 && value <= 53\n },\n set: function (date, value, options) {\n return startOfUTCISOWeek(setUTCISOWeek(date, value, options), options)\n }\n },\n\n // Day of the month\n d: {\n priority: 90,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'd':\n return parseNumericPattern(numericPatterns.date, string)\n case 'do':\n return match.ordinalNumber(string, {unit: 'date'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n var year = date.getUTCFullYear()\n var isLeapYear = isLeapYearIndex(year)\n var month = date.getUTCMonth()\n if (isLeapYear) {\n return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR[month]\n } else {\n return value >= 1 && value <= DAYS_IN_MONTH[month]\n }\n },\n set: function (date, value, options) {\n date.setUTCDate(value)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // Day of year\n D: {\n priority: 90,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'D':\n case 'DD':\n return parseNumericPattern(numericPatterns.dayOfYear, string)\n case 'Do':\n return match.ordinalNumber(string, {unit: 'date'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n var year = date.getUTCFullYear()\n var isLeapYear = isLeapYearIndex(year)\n if (isLeapYear) {\n return value >= 1 && value <= 366\n } else {\n return value >= 1 && value <= 365\n }\n },\n set: function (date, value, options) {\n date.setUTCMonth(0, value)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // Day of week\n E: {\n priority: 90,\n parse: function (string, token, match, options) {\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return match.day(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.day(string, {width: 'short', context: 'formatting'}) ||\n match.day(string, {width: 'narrow', context: 'formatting'})\n // T\n case 'EEEEE':\n return match.day(string, {width: 'narrow', context: 'formatting'})\n // Tu\n case 'EEEEEE':\n return match.day(string, {width: 'short', context: 'formatting'}) ||\n match.day(string, {width: 'narrow', context: 'formatting'})\n // Tuesday\n case 'EEEE':\n default:\n return match.day(string, {width: 'wide', context: 'formatting'}) ||\n match.day(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.day(string, {width: 'short', context: 'formatting'}) ||\n match.day(string, {width: 'narrow', context: 'formatting'})\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 6\n },\n set: function (date, value, options) {\n date = setUTCDay(date, value, options)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // Local day of week\n e: {\n priority: 90,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays\n }\n\n switch (token) {\n // 3\n case 'e':\n case 'ee': // 03\n return parseNDigits(token.length, string, valueCallback)\n // 3rd\n case 'eo':\n return match.ordinalNumber(string, {unit: 'day', valueCallback: valueCallback})\n // Tue\n case 'eee':\n return match.day(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.day(string, {width: 'short', context: 'formatting'}) ||\n match.day(string, {width: 'narrow', context: 'formatting'})\n // T\n case 'eeeee':\n return match.day(string, {width: 'narrow', context: 'formatting'})\n // Tu\n case 'eeeeee':\n return match.day(string, {width: 'short', context: 'formatting'}) ||\n match.day(string, {width: 'narrow', context: 'formatting'})\n // Tuesday\n case 'eeee':\n default:\n return match.day(string, {width: 'wide', context: 'formatting'}) ||\n match.day(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.day(string, {width: 'short', context: 'formatting'}) ||\n match.day(string, {width: 'narrow', context: 'formatting'})\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 6\n },\n set: function (date, value, options) {\n date = setUTCDay(date, value, options)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // Stand-alone local day of week\n c: {\n priority: 90,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays\n }\n\n switch (token) {\n // 3\n case 'c':\n case 'cc': // 03\n return parseNDigits(token.length, string, valueCallback)\n // 3rd\n case 'co':\n return match.ordinalNumber(string, {unit: 'day', valueCallback: valueCallback})\n // Tue\n case 'ccc':\n return match.day(string, {width: 'abbreviated', context: 'standalone'}) ||\n match.day(string, {width: 'short', context: 'standalone'}) ||\n match.day(string, {width: 'narrow', context: 'standalone'})\n // T\n case 'ccccc':\n return match.day(string, {width: 'narrow', context: 'standalone'})\n // Tu\n case 'cccccc':\n return match.day(string, {width: 'short', context: 'standalone'}) ||\n match.day(string, {width: 'narrow', context: 'standalone'})\n // Tuesday\n case 'cccc':\n default:\n return match.day(string, {width: 'wide', context: 'standalone'}) ||\n match.day(string, {width: 'abbreviated', context: 'standalone'}) ||\n match.day(string, {width: 'short', context: 'standalone'}) ||\n match.day(string, {width: 'narrow', context: 'standalone'})\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 6\n },\n set: function (date, value, options) {\n date = setUTCDay(date, value, options)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // ISO day of week\n i: {\n priority: 90,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n if (value === 0) {\n return 7\n }\n return value\n }\n\n switch (token) {\n // 2\n case 'i':\n case 'ii': // 02\n return parseNDigits(token.length, string)\n // 2nd\n case 'io':\n return match.ordinalNumber(string, {unit: 'day'})\n // Tue\n case 'iii':\n return match.day(string, {width: 'abbreviated', context: 'formatting', valueCallback: valueCallback}) ||\n match.day(string, {width: 'short', context: 'formatting', valueCallback: valueCallback}) ||\n match.day(string, {width: 'narrow', context: 'formatting', valueCallback: valueCallback})\n // T\n case 'iiiii':\n return match.day(string, {width: 'narrow', context: 'formatting', valueCallback: valueCallback})\n // Tu\n case 'iiiiii':\n return match.day(string, {width: 'short', context: 'formatting', valueCallback: valueCallback}) ||\n match.day(string, {width: 'narrow', context: 'formatting', valueCallback: valueCallback})\n // Tuesday\n case 'iiii':\n default:\n return match.day(string, {width: 'wide', context: 'formatting', valueCallback: valueCallback}) ||\n match.day(string, {width: 'abbreviated', context: 'formatting', valueCallback: valueCallback}) ||\n match.day(string, {width: 'short', context: 'formatting', valueCallback: valueCallback}) ||\n match.day(string, {width: 'narrow', context: 'formatting', valueCallback: valueCallback})\n }\n },\n validate: function (date, value, options) {\n return value >= 1 && value <= 7\n },\n set: function (date, value, options) {\n date = setUTCISODay(date, value, options)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // AM or PM\n a: {\n priority: 80,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return match.dayPeriod(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n case 'aaaaa':\n return match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n case 'aaaa':\n default:\n return match.dayPeriod(string, {width: 'wide', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n }\n },\n set: function (date, value, options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0)\n return date\n }\n },\n\n // AM, PM, midnight\n b: {\n priority: 80,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'b':\n case 'bb':\n case 'bbb':\n return match.dayPeriod(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n case 'bbbbb':\n return match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n case 'bbbb':\n default:\n return match.dayPeriod(string, {width: 'wide', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n }\n },\n set: function (date, value, options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0)\n return date\n }\n },\n\n // in the morning, in the afternoon, in the evening, at night\n B: {\n priority: 80,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return match.dayPeriod(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n case 'BBBBB':\n return match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n case 'BBBB':\n default:\n return match.dayPeriod(string, {width: 'wide', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n }\n },\n set: function (date, value, options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0)\n return date\n }\n },\n\n // Hour [1-12]\n h: {\n priority: 70,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'h':\n return parseNumericPattern(numericPatterns.hour12h, string)\n case 'ho':\n return match.ordinalNumber(string, {unit: 'hour'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n return value >= 1 && value <= 12\n },\n set: function (date, value, options) {\n var isPM = date.getUTCHours() >= 12\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0)\n } else if (!isPM && value === 12) {\n date.setUTCHours(0, 0, 0, 0)\n } else {\n date.setUTCHours(value, 0, 0, 0)\n }\n return date\n }\n },\n\n // Hour [0-23]\n H: {\n priority: 70,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'H':\n return parseNumericPattern(numericPatterns.hour23h, string)\n case 'Ho':\n return match.ordinalNumber(string, {unit: 'hour'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 23\n },\n set: function (date, value, options) {\n date.setUTCHours(value, 0, 0, 0)\n return date\n }\n },\n\n // Hour [0-11]\n K: {\n priority: 70,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'K':\n return parseNumericPattern(numericPatterns.hour11h, string)\n case 'Ko':\n return match.ordinalNumber(string, {unit: 'hour'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 11\n },\n set: function (date, value, options) {\n var isPM = date.getUTCHours() >= 12\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0)\n } else {\n date.setUTCHours(value, 0, 0, 0)\n }\n return date\n }\n },\n\n // Hour [1-24]\n k: {\n priority: 70,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'k':\n return parseNumericPattern(numericPatterns.hour24h, string)\n case 'ko':\n return match.ordinalNumber(string, {unit: 'hour'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n return value >= 1 && value <= 24\n },\n set: function (date, value, options) {\n var hours = value <= 24 ? value % 24 : value\n date.setUTCHours(hours, 0, 0, 0)\n return date\n }\n },\n\n // Minute\n m: {\n priority: 60,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'm':\n return parseNumericPattern(numericPatterns.minute, string)\n case 'mo':\n return match.ordinalNumber(string, {unit: 'minute'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 59\n },\n set: function (date, value, options) {\n date.setUTCMinutes(value, 0, 0)\n return date\n }\n },\n\n // Second\n s: {\n priority: 50,\n parse: function (string, token, match, options) {\n switch (token) {\n case 's':\n return parseNumericPattern(numericPatterns.second, string)\n case 'so':\n return match.ordinalNumber(string, {unit: 'second'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 59\n },\n set: function (date, value, options) {\n date.setUTCSeconds(value, 0)\n return date\n }\n },\n\n // Fraction of second\n S: {\n priority: 40,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n return Math.floor(value * Math.pow(10, -token.length + 3))\n }\n return parseNDigits(token.length, string, valueCallback)\n },\n set: function (date, value, options) {\n date.setUTCMilliseconds(value)\n return date\n }\n },\n\n // Timezone (ISO-8601. +00:00 is `'Z'`)\n X: {\n priority: 20,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'X':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, string)\n case 'XX':\n return parseTimezonePattern(timezonePatterns.basic, string)\n case 'XXXX':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, string)\n case 'XXXXX':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, string)\n case 'XXX':\n default:\n return parseTimezonePattern(timezonePatterns.extended, string)\n }\n },\n set: function (date, value, options) {\n return new Date(date.getTime() - value)\n }\n },\n\n // Timezone (ISO-8601)\n x: {\n priority: 20,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'x':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, string)\n case 'xx':\n return parseTimezonePattern(timezonePatterns.basic, string)\n case 'xxxx':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, string)\n case 'xxxxx':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, string)\n case 'xxx':\n default:\n return parseTimezonePattern(timezonePatterns.extended, string)\n }\n },\n set: function (date, value, options) {\n return new Date(date.getTime() - value)\n }\n },\n\n // Seconds timestamp\n t: {\n priority: 10,\n parse: function (string, token, match, options) {\n return parseAnyDigitsSigned(string)\n },\n set: function (date, value, options) {\n return new Date(value * 1000)\n }\n },\n\n // Milliseconds timestamp\n T: {\n priority: 10,\n parse: function (string, token, match, options) {\n return parseAnyDigitsSigned(string)\n },\n set: function (date, value, options) {\n return new Date(value)\n }\n }\n}\n\nexport default parsers\n","import toInteger from '../toInteger/index.js'\nimport toDate from '../../toDate/index.js'\nimport getUTCWeek from '../getUTCWeek/index.js'\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function setUTCWeek (dirtyDate, dirtyWeek, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var week = toInteger(dirtyWeek)\n var diff = getUTCWeek(date, dirtyOptions) - week\n date.setUTCDate(date.getUTCDate() - diff * 7)\n return date\n}\n","import toInteger from '../toInteger/index.js'\nimport toDate from '../../toDate/index.js'\nimport getUTCISOWeek from '../getUTCISOWeek/index.js'\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function setUTCISOWeek (dirtyDate, dirtyISOWeek, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var isoWeek = toInteger(dirtyISOWeek)\n var diff = getUTCISOWeek(date, dirtyOptions) - isoWeek\n date.setUTCDate(date.getUTCDate() - diff * 7)\n return date\n}\n","import toInteger from '../toInteger/index.js'\nimport toDate from '../../toDate/index.js'\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function setUTCISODay (dirtyDate, dirtyDay, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var day = toInteger(dirtyDay)\n\n if (day % 7 === 0) {\n day = day - 7\n }\n\n var weekStartsOn = 1\n var date = toDate(dirtyDate, dirtyOptions)\n var currentDay = date.getUTCDay()\n\n var remainder = day % 7\n var dayIndex = (remainder + 7) % 7\n\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay\n\n date.setUTCDate(date.getUTCDate() + diff)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js'\nimport toDate from '../toDate/index.js'\nimport subMilliseconds from '../subMilliseconds/index.js'\nimport defaultLocale from '../locale/en-US/index.js'\nimport parsers from './_lib/parsers/index.js'\nimport {\n isProtectedToken,\n throwProtectedError\n} from '../_lib/protectedTokens/index.js'\n\nvar TIMEZONE_UNIT_PRIORITY = 20\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g\n\nvar escapedStringRegExp = /^'(.*?)'?$/\nvar doubleQuoteRegExp = /''/g\n\nvar notWhitespaceRegExp = /\\S/\n\n/**\n * @name parse\n * @category Common Helpers\n * @summary Parse the date.\n *\n * @description\n * Return the date parsed from string using the given format string.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters in the format string wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the format string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 5 below the table).\n *\n * Accepted format string patterns:\n * | Unit |Prior| Pattern | Result examples | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era | 140 | G..GGG | AD, BC | |\n * | | | GGGG | Anno Domini, Before Christ | 2 |\n * | | | GGGGG | A, B | |\n * | Calendar year | 130 | y | 44, 1, 1900, 2017, 9999 | 4 |\n * | | | yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | yy | 44, 01, 00, 17 | 4 |\n * | | | yyy | 044, 001, 123, 999 | 4 |\n * | | | yyyy | 0044, 0001, 1900, 2017 | 4 |\n * | | | yyyyy | ... | 2,4 |\n * | Local week-numbering year | 130 | Y | 44, 1, 1900, 2017, 9000 | 4 |\n * | | | Yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | YY | 44, 01, 00, 17 | 4,6 |\n * | | | YYY | 044, 001, 123, 999 | 4 |\n * | | | YYYY | 0044, 0001, 1900, 2017 | 4,6 |\n * | | | YYYYY | ... | 2,4 |\n * | ISO week-numbering year | 130 | R | -43, 1, 1900, 2017, 9999, -9999 | 4,5 |\n * | | | RR | -43, 01, 00, 17 | 4,5 |\n * | | | RRR | -043, 001, 123, 999, -999 | 4,5 |\n * | | | RRRR | -0043, 0001, 2017, 9999, -9999 | 4,5 |\n * | | | RRRRR | ... | 2,4,5 |\n * | Extended year | 130 | u | -43, 1, 1900, 2017, 9999, -999 | 4 |\n * | | | uu | -43, 01, 99, -99 | 4 |\n * | | | uuu | -043, 001, 123, 999, -999 | 4 |\n * | | | uuuu | -0043, 0001, 2017, 9999, -9999 | 4 |\n * | | | uuuuu | ... | 2,4 |\n * | Quarter (formatting) | 120 | Q | 1, 2, 3, 4 | |\n * | | | Qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | QQ | 01, 02, 03, 04 | |\n * | | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | 120 | q | 1, 2, 3, 4 | |\n * | | | qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | qq | 01, 02, 03, 04 | |\n * | | | qqq | Q1, Q2, Q3, Q4 | |\n * | | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | | qqqqq | 1, 2, 3, 4 | 3 |\n * | Month (formatting) | 110 | M | 1, 2, ..., 12 | |\n * | | | Mo | 1st, 2nd, ..., 12th | 5 |\n * | | | MM | 01, 02, ..., 12 | |\n * | | | MMM | Jan, Feb, ..., Dec | |\n * | | | MMMM | January, February, ..., December | 2 |\n * | | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | 110 | L | 1, 2, ..., 12 | |\n * | | | Lo | 1st, 2nd, ..., 12th | 5 |\n * | | | LL | 01, 02, ..., 12 | |\n * | | | LLL | Jan, Feb, ..., Dec | |\n * | | | LLLL | January, February, ..., December | 2 |\n * | | | LLLLL | J, F, ..., D | |\n * | Local week of year | 100 | w | 1, 2, ..., 53 | |\n * | | | wo | 1st, 2nd, ..., 53th | 5 |\n * | | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | 100 | I | 1, 2, ..., 53 | 5 |\n * | | | Io | 1st, 2nd, ..., 53th | 5 |\n * | | | II | 01, 02, ..., 53 | 5 |\n * | Day of month | 90 | d | 1, 2, ..., 31 | |\n * | | | do | 1st, 2nd, ..., 31st | 5 |\n * | | | dd | 01, 02, ..., 31 | |\n * | Day of year | 90 | D | 1, 2, ..., 365, 366 | 6 |\n * | | | Do | 1st, 2nd, ..., 365th, 366th | 5 |\n * | | | DD | 01, 02, ..., 365, 366 | 6 |\n * | | | DDD | 001, 002, ..., 365, 366 | |\n * | | | DDDD | ... | 2 |\n * | Day of week (formatting) | 90 | E..EEE | Mon, Tue, Wed, ..., Su | |\n * | | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | | EEEEE | M, T, W, T, F, S, S | |\n * | | | EEEEEE | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | ISO day of week (formatting) | 90 | i | 1, 2, 3, ..., 7 | 5 |\n * | | | io | 1st, 2nd, ..., 7th | 5 |\n * | | | ii | 01, 02, ..., 07 | 5 |\n * | | | iii | Mon, Tue, Wed, ..., Su | 5 |\n * | | | iiii | Monday, Tuesday, ..., Sunday | 2,5 |\n * | | | iiiii | M, T, W, T, F, S, S | 5 |\n * | | | iiiiii | Mo, Tu, We, Th, Fr, Su, Sa | 5 |\n * | Local day of week (formatting) | 90 | e | 2, 3, 4, ..., 1 | |\n * | | | eo | 2nd, 3rd, ..., 1st | 5 |\n * | | | ee | 02, 03, ..., 01 | |\n * | | | eee | Mon, Tue, Wed, ..., Su | |\n * | | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | | eeeee | M, T, W, T, F, S, S | |\n * | | | eeeeee | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | Local day of week (stand-alone) | 90 | c | 2, 3, 4, ..., 1 | |\n * | | | co | 2nd, 3rd, ..., 1st | 5 |\n * | | | cc | 02, 03, ..., 01 | |\n * | | | ccc | Mon, Tue, Wed, ..., Su | |\n * | | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | | ccccc | M, T, W, T, F, S, S | |\n * | | | cccccc | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | AM, PM | 80 | a..aaa | AM, PM | |\n * | | | aaaa | a.m., p.m. | 2 |\n * | | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | 80 | b..bbb | AM, PM, noon, midnight | |\n * | | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | | bbbbb | a, p, n, mi | |\n * | Flexible day period | 80 | B..BBB | at night, in the morning, ... | |\n * | | | BBBB | at night, in the morning, ... | 2 |\n * | | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | 70 | h | 1, 2, ..., 11, 12 | |\n * | | | ho | 1st, 2nd, ..., 11th, 12th | 5 |\n * | | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | 70 | H | 0, 1, 2, ..., 23 | |\n * | | | Ho | 0th, 1st, 2nd, ..., 23rd | 5 |\n * | | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | 70 | K | 1, 2, ..., 11, 0 | |\n * | | | Ko | 1st, 2nd, ..., 11th, 0th | 5 |\n * | | | KK | 1, 2, ..., 11, 0 | |\n * | Hour [1-24] | 70 | k | 24, 1, 2, ..., 23 | |\n * | | | ko | 24th, 1st, 2nd, ..., 23rd | 5 |\n * | | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | 60 | m | 0, 1, ..., 59 | |\n * | | | mo | 0th, 1st, ..., 59th | 5 |\n * | | | mm | 00, 01, ..., 59 | |\n * | Second | 50 | s | 0, 1, ..., 59 | |\n * | | | so | 0th, 1st, ..., 59th | 5 |\n * | | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | 40 | S | 0, 1, ..., 9 | |\n * | | | SS | 00, 01, ..., 99 | |\n * | | | SSS | 000, 0001, ..., 999 | |\n * | | | SSSS | ... | 2 |\n * | Timezone (ISO-8601 w/ Z) | 20 | X | -08, +0530, Z | |\n * | | | XX | -0800, +0530, Z | |\n * | | | XXX | -08:00, +05:30, Z | |\n * | | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | 20 | x | -08, +0530, +00 | |\n * | | | xx | -0800, +0530, +0000 | |\n * | | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Seconds timestamp | 10 | t | 512969520 | |\n * | | | tt | ... | 2 |\n * | Milliseconds timestamp | 10 | T | 512969520900 | |\n * | | | TT | ... | 2 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular.\n * In `format` function, they will produce different result:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * `parse` will try to match both formatting and stand-alone units interchangably.\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table:\n * - for numerical units (`yyyyyyyy`) `parse` will try to match a number\n * as wide as the sequence\n * - for text units (`MMMMMMMM`) `parse` will try to match the widest variation of the unit.\n * These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 4. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` will try to guess the century of two digit year by proximity with `baseDate`:\n *\n * `parse('50', 'yy', new Date(2018, 0, 1)) //=> Sat Jan 01 2050 00:00:00`\n *\n * `parse('75', 'yy', new Date(2018, 0, 1)) //=> Wed Jan 01 1975 00:00:00`\n *\n * while `uu` will just assign the year as is:\n *\n * `parse('50', 'uu', new Date(2018, 0, 1)) //=> Sat Jan 01 0050 00:00:00`\n *\n * `parse('75', 'uu', new Date(2018, 0, 1)) //=> Tue Jan 01 0075 00:00:00`\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [setISOWeekYear]{@link https://date-fns.org/docs/setISOWeekYear}\n * and [setWeekYear]{@link https://date-fns.org/docs/setWeekYear}).\n *\n * 5. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `o`: ordinal number modifier\n *\n * 6. These tokens are often confused with others. See: https://git.io/fxCyr\n *\n * Values will be assigned to the date in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are parsed (e.g. when parsing string 'January 1st' without a year),\n * the values will be taken from 3rd argument `baseDate` which works as a context of parsing.\n *\n * `baseDate` must be passed for correct work of the function.\n * If you're not sure which `baseDate` to supply, create a new instance of Date:\n * `parse('02/11/2014', 'MM/dd/yyyy', new Date())`\n * In this case parsing will be done in the context of the current date.\n * If `baseDate` is `Invalid Date` or a value not convertible to valid `Date`,\n * then `Invalid Date` will be returned.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `baseDate` will be returned.\n *\n * If parsing failed, `Invalid Date` will be returned.\n * Invalid Date is a Date, whose time value is NaN.\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {String} dateString - the string to parse\n * @param {String} formatString - the string of tokens\n * @param {Date|String|Number} baseDate - defines values missing from the parsed dateString\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @param {Boolean} [options.awareOfUnicodeTokens=false] - if true, allows usage of Unicode tokens causes confusion:\n * - Some of the day of year tokens (`D`, `DD`) that are confused with the day of month tokens (`d`, `dd`).\n * - Some of the local week-numbering year tokens (`YY`, `YYYY`) that are confused with the calendar year tokens (`yy`, `yyyy`).\n * See: https://git.io/fxCyr\n * @returns {Date} the parsed date\n * @throws {TypeError} 3 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.locale` must contain `match` property\n * @throws {RangeError} `options.awareOfUnicodeTokens` must be set to `true` to use `XX` token; see: https://git.io/fxCyr\n *\n * @example\n * // Parse 11 February 2014 from middle-endian format:\n * var result = parse(\n * '02/11/2014',\n * 'MM/dd/yyyy',\n * new Date()\n * )\n * //=> Tue Feb 11 2014 00:00:00\n *\n * @example\n * // Parse 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * var result = parse(\n * '28-a de februaro',\n * \"do 'de' MMMM\",\n * new Date(2010, 0, 1),\n * {locale: eo}\n * )\n * //=> Sun Feb 28 2010 00:00:00\n */\nexport default function parse(\n dirtyDateString,\n dirtyFormatString,\n dirtyBaseDate,\n dirtyOptions\n) {\n if (arguments.length < 3) {\n throw new TypeError(\n '3 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var dateString = String(dirtyDateString)\n var formatString = String(dirtyFormatString)\n var options = dirtyOptions || {}\n\n var locale = options.locale || defaultLocale\n\n if (!locale.match) {\n throw new RangeError('locale must contain match property')\n }\n\n var localeFirstWeekContainsDate =\n locale.options && locale.options.firstWeekContainsDate\n var defaultFirstWeekContainsDate =\n localeFirstWeekContainsDate == null\n ? 1\n : toInteger(localeFirstWeekContainsDate)\n var firstWeekContainsDate =\n options.firstWeekContainsDate == null\n ? defaultFirstWeekContainsDate\n : toInteger(options.firstWeekContainsDate)\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError(\n 'firstWeekContainsDate must be between 1 and 7 inclusively'\n )\n }\n\n var localeWeekStartsOn = locale.options && locale.options.weekStartsOn\n var defaultWeekStartsOn =\n localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn)\n var weekStartsOn =\n options.weekStartsOn == null\n ? defaultWeekStartsOn\n : toInteger(options.weekStartsOn)\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n if (formatString === '') {\n if (dateString === '') {\n return toDate(dirtyBaseDate, options)\n } else {\n return new Date(NaN)\n }\n }\n\n var subFnOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale\n }\n\n // If timezone isn't specified, it will be set to the system timezone\n var setters = [\n {\n priority: TIMEZONE_UNIT_PRIORITY,\n set: dateToSystemTimezone,\n index: 0\n }\n ]\n\n var i\n\n var tokens = formatString.match(formattingTokensRegExp)\n\n for (i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (!options.awareOfUnicodeTokens && isProtectedToken(token)) {\n throwProtectedError(token)\n }\n\n var firstCharacter = token[0]\n var parser = parsers[firstCharacter]\n if (parser) {\n var parseResult = parser.parse(\n dateString,\n token,\n locale.match,\n subFnOptions\n )\n\n if (!parseResult) {\n return new Date(NaN)\n }\n\n setters.push({\n priority: parser.priority,\n set: parser.set,\n validate: parser.validate,\n value: parseResult.value,\n index: setters.length\n })\n\n dateString = parseResult.rest\n } else {\n // Replace two single quote characters with one single quote character\n if (token === \"''\") {\n token = \"'\"\n } else if (firstCharacter === \"'\") {\n token = cleanEscapedString(token)\n }\n\n // Cut token from string, or, if string doesn't match the token, return Invalid Date\n if (dateString.indexOf(token) === 0) {\n dateString = dateString.slice(token.length)\n } else {\n return new Date(NaN)\n }\n }\n }\n\n // Check if the remaining input contains something other than whitespace\n if (dateString.length > 0 && notWhitespaceRegExp.test(dateString)) {\n return new Date(NaN)\n }\n\n var uniquePrioritySetters = setters\n .map(function(setter) {\n return setter.priority\n })\n .sort(function(a, b) {\n return b - a\n })\n .filter(function(priority, index, array) {\n return array.indexOf(priority) === index\n })\n .map(function(priority) {\n return setters\n .filter(function(setter) {\n return setter.priority === priority\n })\n .reverse()\n })\n .map(function(setterArray) {\n return setterArray[0]\n })\n\n var date = toDate(dirtyBaseDate, options)\n\n if (isNaN(date)) {\n return new Date(NaN)\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/37\n var utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date))\n\n for (i = 0; i < uniquePrioritySetters.length; i++) {\n var setter = uniquePrioritySetters[i]\n\n if (\n setter.validate &&\n !setter.validate(utcDate, setter.value, subFnOptions)\n ) {\n return new Date(NaN)\n }\n\n utcDate = setter.set(utcDate, setter.value, subFnOptions)\n }\n\n return utcDate\n}\n\nfunction dateToSystemTimezone(date) {\n var convertedDate = new Date(0)\n convertedDate.setFullYear(\n date.getUTCFullYear(),\n date.getUTCMonth(),\n date.getUTCDate()\n )\n convertedDate.setHours(\n date.getUTCHours(),\n date.getUTCMinutes(),\n date.getUTCSeconds(),\n date.getUTCMilliseconds()\n )\n return convertedDate\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\")\n}\n","import toDate from '../toDate/index.js'\nimport toInteger from '../_lib/toInteger/index.js'\n\n/**\n * @name roundToNearestMinutes\n * @category Minute Helpers\n * @summary Rounds the given date to the nearest minute\n *\n * @description\n * Rounds the given date to the nearest minute\n *\n * @param {Date|String|Number} date - the date to round\n * @param {Number} [nearestTo=1] - the closest minute to round to, must be between 1 and 30 inclusive\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date rounded to the closest minute\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `nearestTo` must be between 1 and 30\n *\n * @example\n * // Round 10 July 2014 12:12:34 to nearest minute:\n * var result = roundToNearestMinutes(new Date(2014, 6, 10, 12, 12, 34))\n * //=> Thu Jul 10 2014 12:13:00\n */\nexport default function roundToNearestMinutes (dirtyDate, dirtyNearestTo, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only none provided present')\n }\n\n var nearestTo = arguments.length === 1 ? 1 : toInteger(dirtyNearestTo)\n\n if (arguments.length === 2 && typeof dirtyNearestTo !== 'number' && typeof dirtyNearestTo !== 'string') {\n dirtyOptions = dirtyNearestTo\n nearestTo = 1\n }\n\n if (!nearestTo || nearestTo > 30 || nearestTo < 1) {\n throw new RangeError('nearestTo must be between 1 and 30')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var seconds = date.getSeconds() // relevant if nearestTo is 1, which is the default case\n var minutes = date.getMinutes() + seconds / 60\n var roundedMinutes = Math.floor(minutes / nearestTo) * nearestTo\n var remainderMinutes = minutes % nearestTo\n var addedMinutes = Math.round(remainderMinutes / nearestTo) * nearestTo\n\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), roundedMinutes + addedMinutes)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name setDate\n * @category Day Helpers\n * @summary Set the day of the month to the given date.\n *\n * @description\n * Set the day of the month to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} dayOfMonth - the day of the month of the new date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the day of the month setted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Set the 30th day of the month to 1 September 2014:\n * var result = setDate(new Date(2014, 8, 1), 30)\n * //=> Tue Sep 30 2014 00:00:00\n */\nexport default function setDate (dirtyDate, dirtyDayOfMonth, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var dayOfMonth = toInteger(dirtyDayOfMonth)\n date.setDate(dayOfMonth)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\nimport addDays from '../addDays/index.js'\n\n/**\n * @name setDay\n * @category Weekday Helpers\n * @summary Set the day of the week to the given date.\n *\n * @description\n * Set the day of the week to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} day - the day of the week of the new date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {Date} the new date with the day of the week setted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // Set Sunday to 1 September 2014:\n * var result = setDay(new Date(2014, 8, 1), 0)\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If week starts with Monday, set Sunday to 1 September 2014:\n * var result = setDay(new Date(2014, 8, 1), 0, {weekStartsOn: 1})\n * //=> Sun Sep 07 2014 00:00:00\n */\nexport default function setDay (dirtyDate, dirtyDay, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn)\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn)\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n var date = toDate(dirtyDate, options)\n var day = toInteger(dirtyDay)\n var currentDay = date.getDay()\n\n var remainder = day % 7\n var dayIndex = (remainder + 7) % 7\n\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay\n return addDays(date, diff, options)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name setDayOfYear\n * @category Day Helpers\n * @summary Set the day of the year to the given date.\n *\n * @description\n * Set the day of the year to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} dayOfYear - the day of the year of the new date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the day of the year setted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Set the 2nd day of the year to 2 July 2014:\n * var result = setDayOfYear(new Date(2014, 6, 2), 2)\n * //=> Thu Jan 02 2014 00:00:00\n */\nexport default function setDayOfYear (dirtyDate, dirtyDayOfYear, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var dayOfYear = toInteger(dirtyDayOfYear)\n date.setMonth(0)\n date.setDate(dayOfYear)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name setHours\n * @category Hour Helpers\n * @summary Set the hours to the given date.\n *\n * @description\n * Set the hours to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} hours - the hours of the new date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the hours setted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Set 4 hours to 1 September 2014 11:30:00:\n * var result = setHours(new Date(2014, 8, 1, 11, 30), 4)\n * //=> Mon Sep 01 2014 04:30:00\n */\nexport default function setHours (dirtyDate, dirtyHours, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var hours = toInteger(dirtyHours)\n date.setHours(hours)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\nimport addDays from '../addDays/index.js'\nimport getISODay from '../getISODay/index.js'\n\n/**\n * @name setISODay\n * @category Weekday Helpers\n * @summary Set the day of the ISO week to the given date.\n *\n * @description\n * Set the day of the ISO week to the given date.\n * ISO week starts with Monday.\n * 7 is the index of Sunday, 1 is the index of Monday etc.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} day - the day of the ISO week of the new date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the day of the ISO week setted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Set Sunday to 1 September 2014:\n * var result = setISODay(new Date(2014, 8, 1), 7)\n * //=> Sun Sep 07 2014 00:00:00\n */\nexport default function setISODay (dirtyDate, dirtyDay, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var day = toInteger(dirtyDay)\n var currentDay = getISODay(date, dirtyOptions)\n var diff = day - currentDay\n return addDays(date, diff, dirtyOptions)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\nimport getISOWeek from '../getISOWeek/index.js'\n\n/**\n * @name setISOWeek\n * @category ISO Week Helpers\n * @summary Set the ISO week to the given date.\n *\n * @description\n * Set the ISO week to the given date, saving the weekday number.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} isoWeek - the ISO week of the new date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the ISO week setted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Set the 53rd ISO week to 7 August 2004:\n * var result = setISOWeek(new Date(2004, 7, 7), 53)\n * //=> Sat Jan 01 2005 00:00:00\n */\nexport default function setISOWeek (dirtyDate, dirtyISOWeek, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var isoWeek = toInteger(dirtyISOWeek)\n var diff = getISOWeek(date, dirtyOptions) - isoWeek\n date.setDate(date.getDate() - diff * 7)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name setMilliseconds\n * @category Millisecond Helpers\n * @summary Set the milliseconds to the given date.\n *\n * @description\n * Set the milliseconds to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} milliseconds - the milliseconds of the new date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the milliseconds setted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Set 300 milliseconds to 1 September 2014 11:30:40.500:\n * var result = setMilliseconds(new Date(2014, 8, 1, 11, 30, 40, 500), 300)\n * //=> Mon Sep 01 2014 11:30:40.300\n */\nexport default function setMilliseconds (dirtyDate, dirtyMilliseconds, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var milliseconds = toInteger(dirtyMilliseconds)\n date.setMilliseconds(milliseconds)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name setMinutes\n * @category Minute Helpers\n * @summary Set the minutes to the given date.\n *\n * @description\n * Set the minutes to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} minutes - the minutes of the new date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the minutes setted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Set 45 minutes to 1 September 2014 11:30:40:\n * var result = setMinutes(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:45:40\n */\nexport default function setMinutes (dirtyDate, dirtyMinutes, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var minutes = toInteger(dirtyMinutes)\n date.setMinutes(minutes)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\nimport getDaysInMonth from '../getDaysInMonth/index.js'\n\n/**\n * @name setMonth\n * @category Month Helpers\n * @summary Set the month to the given date.\n *\n * @description\n * Set the month to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} month - the month of the new date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the month setted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Set February to 1 September 2014:\n * var result = setMonth(new Date(2014, 8, 1), 1)\n * //=> Sat Feb 01 2014 00:00:00\n */\nexport default function setMonth (dirtyDate, dirtyMonth, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var month = toInteger(dirtyMonth)\n var year = date.getFullYear()\n var day = date.getDate()\n\n var dateWithDesiredMonth = new Date(0)\n dateWithDesiredMonth.setFullYear(year, month, 15)\n dateWithDesiredMonth.setHours(0, 0, 0, 0)\n var daysInMonth = getDaysInMonth(dateWithDesiredMonth, dirtyOptions)\n // Set the last day of the new month\n // if the original date was the last day of the longer month\n date.setMonth(month, Math.min(day, daysInMonth))\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\nimport setMonth from '../setMonth/index.js'\n\n/**\n * @name setQuarter\n * @category Quarter Helpers\n * @summary Set the year quarter to the given date.\n *\n * @description\n * Set the year quarter to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} quarter - the quarter of the new date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the quarter setted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Set the 2nd quarter to 2 July 2014:\n * var result = setQuarter(new Date(2014, 6, 2), 2)\n * //=> Wed Apr 02 2014 00:00:00\n */\nexport default function setQuarter (dirtyDate, dirtyQuarter, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var quarter = toInteger(dirtyQuarter)\n var oldQuarter = Math.floor(date.getMonth() / 3) + 1\n var diff = quarter - oldQuarter\n return setMonth(date, date.getMonth() + diff * 3, dirtyOptions)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name setSeconds\n * @category Second Helpers\n * @summary Set the seconds to the given date.\n *\n * @description\n * Set the seconds to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} seconds - the seconds of the new date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the seconds setted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Set 45 seconds to 1 September 2014 11:30:40:\n * var result = setSeconds(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:30:45\n */\nexport default function setSeconds (dirtyDate, dirtySeconds, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var seconds = toInteger(dirtySeconds)\n date.setSeconds(seconds)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\nimport getWeek from '../getWeek/index.js'\n\n/**\n * @name setWeek\n * @category Week Helpers\n * @summary Set the local week to the given date.\n *\n * @description\n * Set the local week to the given date, saving the weekday number.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} week - the week of the new date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Date} the new date with the local week setted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // Set the 1st week to 2 January 2005 with default options:\n * var result = setWeek(new Date(2005, 0, 2), 1)\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // Set the 1st week to 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January:\n * var result = setWeek(new Date(2005, 0, 2), 1, {weekStartsOn: 1, firstWeekContainsDate: 4})\n * //=> Sun Jan 4 2004 00:00:00\n */\nexport default function setWeek (dirtyDate, dirtyWeek, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var week = toInteger(dirtyWeek)\n var diff = getWeek(date, dirtyOptions) - week\n date.setDate(date.getDate() - diff * 7)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\nimport startOfWeekYear from '../startOfWeekYear/index.js'\nimport differenceInCalendarDays from '../differenceInCalendarDays/index.js'\n\n/**\n * @name setWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Set the local week-numbering year to the given date.\n *\n * @description\n * Set the local week-numbering year to the given date,\n * saving the week number and the weekday number.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} weekYear - the local week-numbering year of the new date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Date} the new date with the local week-numbering year setted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // Set the local week-numbering year 2004 to 2 January 2010 with default options:\n * var result = setWeekYear(new Date(2010, 0, 2), 2004)\n * //=> Sat Jan 03 2004 00:00:00\n *\n * @example\n * // Set the local week-numbering year 2004 to 2 January 2010,\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * var result = setWeekYear(new Date(2010, 0, 2), 2004, {weekStartsOn: 1, firstWeekContainsDate: 4})\n * //=> Sat Jan 01 2005 00:00:00\n */\nexport default function setWeekYear (dirtyDate, dirtyWeekYear, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeFirstWeekContainsDate = locale &&\n locale.options &&\n locale.options.firstWeekContainsDate\n var defaultFirstWeekContainsDate =\n localeFirstWeekContainsDate == null\n ? 1\n : toInteger(localeFirstWeekContainsDate)\n var firstWeekContainsDate =\n options.firstWeekContainsDate == null\n ? defaultFirstWeekContainsDate\n : toInteger(options.firstWeekContainsDate)\n\n var date = toDate(dirtyDate, dirtyOptions)\n var weekYear = toInteger(dirtyWeekYear)\n var diff = differenceInCalendarDays(date, startOfWeekYear(date, dirtyOptions), dirtyOptions)\n var firstWeek = new Date(0)\n firstWeek.setFullYear(weekYear, 0, firstWeekContainsDate)\n firstWeek.setHours(0, 0, 0, 0)\n date = startOfWeekYear(firstWeek, dirtyOptions)\n date.setDate(date.getDate() + diff)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name setYear\n * @category Year Helpers\n * @summary Set the year to the given date.\n *\n * @description\n * Set the year to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} year - the year of the new date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the year setted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Set year 2013 to 1 September 2014:\n * var result = setYear(new Date(2014, 8, 1), 2013)\n * //=> Sun Sep 01 2013 00:00:00\n */\nexport default function setYear (dirtyDate, dirtyYear, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var year = toInteger(dirtyYear)\n\n // Check if date is Invalid Date because Date.prototype.setFullYear ignores the value of Invalid Date\n if (isNaN(date)) {\n return new Date(NaN)\n }\n\n date.setFullYear(year)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name startOfDecade\n * @category Decade Helpers\n * @summary Return the start of a decade for the given date.\n *\n * @description\n * Return the start of a decade for the given date.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the start of a decade\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a decade for 21 October 2015 00:00:00:\n * var result = startOfDecade(new Date(2015, 9, 21, 00, 00, 00))\n * //=> Jan 01 2010 00:00:00\n */\nexport default function startOfDecade (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var year = date.getFullYear()\n var decade = Math.floor(year / 10) * 10\n date.setFullYear(decade, 0, 1)\n date.setHours(0, 0, 0, 0)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addDays from '../addDays/index.js'\n\n/**\n * @name subDays\n * @category Day Helpers\n * @summary Subtract the specified number of days from the given date.\n *\n * @description\n * Subtract the specified number of days from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be subtracted\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the days subtracted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Subtract 10 days from 1 September 2014:\n * var result = subDays(new Date(2014, 8, 1), 10)\n * //=> Fri Aug 22 2014 00:00:00\n */\nexport default function subDays (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount)\n return addDays(dirtyDate, -amount, dirtyOptions)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addHours from '../addHours/index.js'\n\n/**\n * @name subHours\n * @category Hour Helpers\n * @summary Subtract the specified number of hours from the given date.\n *\n * @description\n * Subtract the specified number of hours from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of hours to be subtracted\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the hours subtracted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Subtract 2 hours from 11 July 2014 01:00:00:\n * var result = subHours(new Date(2014, 6, 11, 1, 0), 2)\n * //=> Thu Jul 10 2014 23:00:00\n */\nexport default function subHours (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount)\n return addHours(dirtyDate, -amount, dirtyOptions)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addMinutes from '../addMinutes/index.js'\n\n/**\n * @name subMinutes\n * @category Minute Helpers\n * @summary Subtract the specified number of minutes from the given date.\n *\n * @description\n * Subtract the specified number of minutes from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes to be subtracted\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the mintues subtracted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Subtract 30 minutes from 10 July 2014 12:00:00:\n * var result = subMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 11:30:00\n */\nexport default function subMinutes (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount)\n return addMinutes(dirtyDate, -amount, dirtyOptions)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addMonths from '../addMonths/index.js'\n\n/**\n * @name subMonths\n * @category Month Helpers\n * @summary Subtract the specified number of months from the given date.\n *\n * @description\n * Subtract the specified number of months from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be subtracted\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the months subtracted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Subtract 5 months from 1 February 2015:\n * var result = subMonths(new Date(2015, 1, 1), 5)\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function subMonths (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount)\n return addMonths(dirtyDate, -amount, dirtyOptions)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addQuarters from '../addQuarters/index.js'\n\n/**\n * @name subQuarters\n * @category Quarter Helpers\n * @summary Subtract the specified number of year quarters from the given date.\n *\n * @description\n * Subtract the specified number of year quarters from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of quarters to be subtracted\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the quarters subtracted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Subtract 3 quarters from 1 September 2014:\n * var result = subQuarters(new Date(2014, 8, 1), 3)\n * //=> Sun Dec 01 2013 00:00:00\n */\nexport default function subQuarters (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount)\n return addQuarters(dirtyDate, -amount, dirtyOptions)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addSeconds from '../addSeconds/index.js'\n\n/**\n * @name subSeconds\n * @category Second Helpers\n * @summary Subtract the specified number of seconds from the given date.\n *\n * @description\n * Subtract the specified number of seconds from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of seconds to be subtracted\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the seconds subtracted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Subtract 30 seconds from 10 July 2014 12:45:00:\n * var result = subSeconds(new Date(2014, 6, 10, 12, 45, 0), 30)\n * //=> Thu Jul 10 2014 12:44:30\n */\nexport default function subSeconds (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount)\n return addSeconds(dirtyDate, -amount, dirtyOptions)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addWeeks from '../addWeeks/index.js'\n\n/**\n * @name subWeeks\n * @category Week Helpers\n * @summary Subtract the specified number of weeks from the given date.\n *\n * @description\n * Subtract the specified number of weeks from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be subtracted\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the weeks subtracted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Subtract 4 weeks from 1 September 2014:\n * var result = subWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Aug 04 2014 00:00:00\n */\nexport default function subWeeks (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount)\n return addWeeks(dirtyDate, -amount, dirtyOptions)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addYears from '../addYears/index.js'\n\n/**\n * @name subYears\n * @category Year Helpers\n * @summary Subtract the specified number of years from the given date.\n *\n * @description\n * Subtract the specified number of years from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be subtracted\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the years subtracted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Subtract 5 years from 1 September 2014:\n * var result = subYears(new Date(2014, 8, 1), 5)\n * //=> Tue Sep 01 2009 00:00:00\n */\nexport default function subYears (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount)\n return addYears(dirtyDate, -amount, dirtyOptions)\n}\n","// This file is generated automatically by `scripts/build/indices.js`. Please, don't change it.\n\nexport { default as addDays } from './addDays/index.js'\nexport { default as addHours } from './addHours/index.js'\nexport { default as addISOWeekYears } from './addISOWeekYears/index.js'\nexport { default as addMilliseconds } from './addMilliseconds/index.js'\nexport { default as addMinutes } from './addMinutes/index.js'\nexport { default as addMonths } from './addMonths/index.js'\nexport { default as addQuarters } from './addQuarters/index.js'\nexport { default as addSeconds } from './addSeconds/index.js'\nexport { default as addWeeks } from './addWeeks/index.js'\nexport { default as addYears } from './addYears/index.js'\nexport {\n default as areIntervalsOverlapping\n} from './areIntervalsOverlapping/index.js'\nexport { default as closestIndexTo } from './closestIndexTo/index.js'\nexport { default as closestTo } from './closestTo/index.js'\nexport { default as compareAsc } from './compareAsc/index.js'\nexport { default as compareDesc } from './compareDesc/index.js'\nexport {\n default as differenceInCalendarDays\n} from './differenceInCalendarDays/index.js'\nexport {\n default as differenceInCalendarISOWeekYears\n} from './differenceInCalendarISOWeekYears/index.js'\nexport {\n default as differenceInCalendarISOWeeks\n} from './differenceInCalendarISOWeeks/index.js'\nexport {\n default as differenceInCalendarMonths\n} from './differenceInCalendarMonths/index.js'\nexport {\n default as differenceInCalendarQuarters\n} from './differenceInCalendarQuarters/index.js'\nexport {\n default as differenceInCalendarWeeks\n} from './differenceInCalendarWeeks/index.js'\nexport {\n default as differenceInCalendarYears\n} from './differenceInCalendarYears/index.js'\nexport { default as differenceInDays } from './differenceInDays/index.js'\nexport { default as differenceInHours } from './differenceInHours/index.js'\nexport {\n default as differenceInISOWeekYears\n} from './differenceInISOWeekYears/index.js'\nexport {\n default as differenceInMilliseconds\n} from './differenceInMilliseconds/index.js'\nexport { default as differenceInMinutes } from './differenceInMinutes/index.js'\nexport { default as differenceInMonths } from './differenceInMonths/index.js'\nexport {\n default as differenceInQuarters\n} from './differenceInQuarters/index.js'\nexport { default as differenceInSeconds } from './differenceInSeconds/index.js'\nexport { default as differenceInWeeks } from './differenceInWeeks/index.js'\nexport { default as differenceInYears } from './differenceInYears/index.js'\nexport { default as eachDayOfInterval } from './eachDayOfInterval/index.js'\nexport { default as eachWeekOfInterval } from './eachWeekOfInterval/index.js'\nexport {\n default as eachWeekendOfInterval\n} from './eachWeekendOfInterval/index.js'\nexport { default as eachWeekendOfMonth } from './eachWeekendOfMonth/index.js'\nexport { default as eachWeekendOfYear } from './eachWeekendOfYear/index.js'\nexport { default as endOfDay } from './endOfDay/index.js'\nexport { default as endOfDecade } from './endOfDecade/index.js'\nexport { default as endOfHour } from './endOfHour/index.js'\nexport { default as endOfISOWeek } from './endOfISOWeek/index.js'\nexport { default as endOfISOWeekYear } from './endOfISOWeekYear/index.js'\nexport { default as endOfMinute } from './endOfMinute/index.js'\nexport { default as endOfMonth } from './endOfMonth/index.js'\nexport { default as endOfQuarter } from './endOfQuarter/index.js'\nexport { default as endOfSecond } from './endOfSecond/index.js'\nexport { default as endOfWeek } from './endOfWeek/index.js'\nexport { default as endOfYear } from './endOfYear/index.js'\nexport { default as format } from './format/index.js'\nexport { default as formatDistance } from './formatDistance/index.js'\nexport {\n default as formatDistanceStrict\n} from './formatDistanceStrict/index.js'\nexport { default as formatRelative } from './formatRelative/index.js'\nexport { default as fromUnixTime } from './fromUnixTime/index.js'\nexport { default as getDate } from './getDate/index.js'\nexport { default as getDay } from './getDay/index.js'\nexport { default as getDayOfYear } from './getDayOfYear/index.js'\nexport { default as getDaysInMonth } from './getDaysInMonth/index.js'\nexport { default as getDaysInYear } from './getDaysInYear/index.js'\nexport { default as getDecade } from './getDecade/index.js'\nexport { default as getHours } from './getHours/index.js'\nexport { default as getISODay } from './getISODay/index.js'\nexport { default as getISOWeek } from './getISOWeek/index.js'\nexport { default as getISOWeekYear } from './getISOWeekYear/index.js'\nexport { default as getISOWeeksInYear } from './getISOWeeksInYear/index.js'\nexport { default as getMilliseconds } from './getMilliseconds/index.js'\nexport { default as getMinutes } from './getMinutes/index.js'\nexport { default as getMonth } from './getMonth/index.js'\nexport {\n default as getOverlappingDaysInIntervals\n} from './getOverlappingDaysInIntervals/index.js'\nexport { default as getQuarter } from './getQuarter/index.js'\nexport { default as getSeconds } from './getSeconds/index.js'\nexport { default as getTime } from './getTime/index.js'\nexport { default as getUnixTime } from './getUnixTime/index.js'\nexport { default as getWeek } from './getWeek/index.js'\nexport { default as getWeekOfMonth } from './getWeekOfMonth/index.js'\nexport { default as getWeekYear } from './getWeekYear/index.js'\nexport { default as getWeeksInMonth } from './getWeeksInMonth/index.js'\nexport { default as getYear } from './getYear/index.js'\nexport { default as isAfter } from './isAfter/index.js'\nexport { default as isBefore } from './isBefore/index.js'\nexport { default as isDate } from './isDate/index.js'\nexport { default as isEqual } from './isEqual/index.js'\nexport { default as isFirstDayOfMonth } from './isFirstDayOfMonth/index.js'\nexport { default as isFriday } from './isFriday/index.js'\nexport { default as isLastDayOfMonth } from './isLastDayOfMonth/index.js'\nexport { default as isLeapYear } from './isLeapYear/index.js'\nexport { default as isMonday } from './isMonday/index.js'\nexport { default as isSameDay } from './isSameDay/index.js'\nexport { default as isSameHour } from './isSameHour/index.js'\nexport { default as isSameISOWeek } from './isSameISOWeek/index.js'\nexport { default as isSameISOWeekYear } from './isSameISOWeekYear/index.js'\nexport { default as isSameMinute } from './isSameMinute/index.js'\nexport { default as isSameMonth } from './isSameMonth/index.js'\nexport { default as isSameQuarter } from './isSameQuarter/index.js'\nexport { default as isSameSecond } from './isSameSecond/index.js'\nexport { default as isSameWeek } from './isSameWeek/index.js'\nexport { default as isSameYear } from './isSameYear/index.js'\nexport { default as isSaturday } from './isSaturday/index.js'\nexport { default as isSunday } from './isSunday/index.js'\nexport { default as isThursday } from './isThursday/index.js'\nexport { default as isTuesday } from './isTuesday/index.js'\nexport { default as isValid } from './isValid/index.js'\nexport { default as isWednesday } from './isWednesday/index.js'\nexport { default as isWeekend } from './isWeekend/index.js'\nexport { default as isWithinInterval } from './isWithinInterval/index.js'\nexport { default as lastDayOfDecade } from './lastDayOfDecade/index.js'\nexport { default as lastDayOfISOWeek } from './lastDayOfISOWeek/index.js'\nexport {\n default as lastDayOfISOWeekYear\n} from './lastDayOfISOWeekYear/index.js'\nexport { default as lastDayOfMonth } from './lastDayOfMonth/index.js'\nexport { default as lastDayOfQuarter } from './lastDayOfQuarter/index.js'\nexport { default as lastDayOfWeek } from './lastDayOfWeek/index.js'\nexport { default as lastDayOfYear } from './lastDayOfYear/index.js'\nexport { default as max } from './max/index.js'\nexport { default as min } from './min/index.js'\nexport { default as parse } from './parse/index.js'\nexport {\n default as roundToNearestMinutes\n} from './roundToNearestMinutes/index.js'\nexport { default as setDate } from './setDate/index.js'\nexport { default as setDay } from './setDay/index.js'\nexport { default as setDayOfYear } from './setDayOfYear/index.js'\nexport { default as setHours } from './setHours/index.js'\nexport { default as setISODay } from './setISODay/index.js'\nexport { default as setISOWeek } from './setISOWeek/index.js'\nexport { default as setISOWeekYear } from './setISOWeekYear/index.js'\nexport { default as setMilliseconds } from './setMilliseconds/index.js'\nexport { default as setMinutes } from './setMinutes/index.js'\nexport { default as setMonth } from './setMonth/index.js'\nexport { default as setQuarter } from './setQuarter/index.js'\nexport { default as setSeconds } from './setSeconds/index.js'\nexport { default as setWeek } from './setWeek/index.js'\nexport { default as setWeekYear } from './setWeekYear/index.js'\nexport { default as setYear } from './setYear/index.js'\nexport { default as startOfDay } from './startOfDay/index.js'\nexport { default as startOfDecade } from './startOfDecade/index.js'\nexport { default as startOfHour } from './startOfHour/index.js'\nexport { default as startOfISOWeek } from './startOfISOWeek/index.js'\nexport { default as startOfISOWeekYear } from './startOfISOWeekYear/index.js'\nexport { default as startOfMinute } from './startOfMinute/index.js'\nexport { default as startOfMonth } from './startOfMonth/index.js'\nexport { default as startOfQuarter } from './startOfQuarter/index.js'\nexport { default as startOfSecond } from './startOfSecond/index.js'\nexport { default as startOfWeek } from './startOfWeek/index.js'\nexport { default as startOfWeekYear } from './startOfWeekYear/index.js'\nexport { default as startOfYear } from './startOfYear/index.js'\nexport { default as subDays } from './subDays/index.js'\nexport { default as subHours } from './subHours/index.js'\nexport { default as subISOWeekYears } from './subISOWeekYears/index.js'\nexport { default as subMilliseconds } from './subMilliseconds/index.js'\nexport { default as subMinutes } from './subMinutes/index.js'\nexport { default as subMonths } from './subMonths/index.js'\nexport { default as subQuarters } from './subQuarters/index.js'\nexport { default as subSeconds } from './subSeconds/index.js'\nexport { default as subWeeks } from './subWeeks/index.js'\nexport { default as subYears } from './subYears/index.js'\nexport { default as toDate } from './toDate/index.js'\n","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to) {\n var from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n var toParts = to && to.split('/') || [];\n var fromParts = from && from.split('/') || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash = void 0;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) {\n fromParts.unshift('..');\n }if (mustEndAbs && fromParts[0] !== '' && (!fromParts[0] || !isAbsolute(fromParts[0]))) fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction valueEqual(a, b) {\n if (a === b) return true;\n\n if (a == null || b == null) return false;\n\n if (Array.isArray(a)) {\n return Array.isArray(b) && a.length === b.length && a.every(function (item, index) {\n return valueEqual(item, b[index]);\n });\n }\n\n var aType = typeof a === 'undefined' ? 'undefined' : _typeof(a);\n var bType = typeof b === 'undefined' ? 'undefined' : _typeof(b);\n\n if (aType !== bType) return false;\n\n if (aType === 'object') {\n var aValue = a.valueOf();\n var bValue = b.valueOf();\n\n if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n\n var aKeys = Object.keys(a);\n var bKeys = Object.keys(b);\n\n if (aKeys.length !== bKeys.length) return false;\n\n return aKeys.every(function (key) {\n return valueEqual(a[key], b[key]);\n });\n }\n\n return false;\n}\n\nexport default valueEqual;","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n\n if (isProduction) {\n throw new Error(prefix);\n } else {\n throw new Error(prefix + \": \" + (message || ''));\n }\n}\n\nexport default invariant;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n return new RegExp('^' + prefix + '(\\\\/|\\\\?|#|$)', 'i').test(path);\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex === -1 ? 0 : prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n var hashIndex = window.location.href.indexOf('#');\n window.location.replace(window.location.href.slice(0, hashIndex >= 0 ? hashIndex : 0) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n return '#' + encodePath(basename + createPath(location));\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex === -1 ? 0 : prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n }\n\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport warning from \"warning\";\nimport invariant from \"invariant\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n/**\n * The public API for putting history on context.\n */\n\nvar Router = function (_React$Component) {\n _inherits(Router, _React$Component);\n\n function Router() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Router);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n match: _this.computeMatch(_this.props.history.location.pathname)\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Router.prototype.getChildContext = function getChildContext() {\n return {\n router: _extends({}, this.context.router, {\n history: this.props.history,\n route: {\n location: this.props.history.location,\n match: this.state.match\n }\n })\n };\n };\n\n Router.prototype.computeMatch = function computeMatch(pathname) {\n return {\n path: \"/\",\n url: \"/\",\n params: {},\n isExact: pathname === \"/\"\n };\n };\n\n Router.prototype.componentWillMount = function componentWillMount() {\n var _this2 = this;\n\n var _props = this.props,\n children = _props.children,\n history = _props.history;\n\n\n invariant(children == null || React.Children.count(children) === 1, \"A <Router> may have only one child element\");\n\n // Do this here so we can setState when a <Redirect> changes the\n // location in componentWillMount. This happens e.g. when doing\n // server rendering using a <StaticRouter>.\n this.unlisten = history.listen(function () {\n _this2.setState({\n match: _this2.computeMatch(history.location.pathname)\n });\n });\n };\n\n Router.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n warning(this.props.history === nextProps.history, \"You cannot change <Router history>\");\n };\n\n Router.prototype.componentWillUnmount = function componentWillUnmount() {\n this.unlisten();\n };\n\n Router.prototype.render = function render() {\n var children = this.props.children;\n\n return children ? React.Children.only(children) : null;\n };\n\n return Router;\n}(React.Component);\n\nRouter.propTypes = {\n history: PropTypes.object.isRequired,\n children: PropTypes.node\n};\nRouter.contextTypes = {\n router: PropTypes.object\n};\nRouter.childContextTypes = {\n router: PropTypes.object.isRequired\n};\n\n\nexport default Router;","// Written in this round about way for babel-transform-imports\nimport Router from \"react-router/es/Router\";\n\nexport default Router;","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport warning from \"warning\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createBrowserHistory as createHistory } from \"history\";\nimport Router from \"./Router\";\n\n/**\n * The public API for a <Router> that uses HTML5 history.\n */\n\nvar BrowserRouter = function (_React$Component) {\n _inherits(BrowserRouter, _React$Component);\n\n function BrowserRouter() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, BrowserRouter);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.history = createHistory(_this.props), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n BrowserRouter.prototype.componentWillMount = function componentWillMount() {\n warning(!this.props.history, \"<BrowserRouter> ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\");\n };\n\n BrowserRouter.prototype.render = function render() {\n return React.createElement(Router, { history: this.history, children: this.props.children });\n };\n\n return BrowserRouter;\n}(React.Component);\n\nBrowserRouter.propTypes = {\n basename: PropTypes.string,\n forceRefresh: PropTypes.bool,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n};\n\n\nexport default BrowserRouter;","import pathToRegexp from \"path-to-regexp\";\n\nvar patternCache = {};\nvar cacheLimit = 10000;\nvar cacheCount = 0;\n\nvar compilePath = function compilePath(pattern, options) {\n var cacheKey = \"\" + options.end + options.strict + options.sensitive;\n var cache = patternCache[cacheKey] || (patternCache[cacheKey] = {});\n\n if (cache[pattern]) return cache[pattern];\n\n var keys = [];\n var re = pathToRegexp(pattern, keys, options);\n var compiledPattern = { re: re, keys: keys };\n\n if (cacheCount < cacheLimit) {\n cache[pattern] = compiledPattern;\n cacheCount++;\n }\n\n return compiledPattern;\n};\n\n/**\n * Public API for matching a URL pathname to a path pattern.\n */\nvar matchPath = function matchPath(pathname) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var parent = arguments[2];\n\n if (typeof options === \"string\") options = { path: options };\n\n var _options = options,\n path = _options.path,\n _options$exact = _options.exact,\n exact = _options$exact === undefined ? false : _options$exact,\n _options$strict = _options.strict,\n strict = _options$strict === undefined ? false : _options$strict,\n _options$sensitive = _options.sensitive,\n sensitive = _options$sensitive === undefined ? false : _options$sensitive;\n\n\n if (path == null) return parent;\n\n var _compilePath = compilePath(path, { end: exact, strict: strict, sensitive: sensitive }),\n re = _compilePath.re,\n keys = _compilePath.keys;\n\n var match = re.exec(pathname);\n\n if (!match) return null;\n\n var url = match[0],\n values = match.slice(1);\n\n var isExact = pathname === url;\n\n if (exact && !isExact) return null;\n\n return {\n path: path, // the path pattern used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url, // the matched portion of the URL\n isExact: isExact, // whether or not we matched exactly\n params: keys.reduce(function (memo, key, index) {\n memo[key.name] = values[index];\n return memo;\n }, {})\n };\n};\n\nexport default matchPath;","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"warning\";\nimport invariant from \"invariant\";\nimport matchPath from \"./matchPath\";\n\n/**\n * The public API for rendering the first <Route> that matches.\n */\n\nvar Switch = function (_React$Component) {\n _inherits(Switch, _React$Component);\n\n function Switch() {\n _classCallCheck(this, Switch);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n Switch.prototype.componentWillMount = function componentWillMount() {\n invariant(this.context.router, \"You should not use <Switch> outside a <Router>\");\n };\n\n Switch.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n warning(!(nextProps.location && !this.props.location), '<Switch> elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.');\n\n warning(!(!nextProps.location && this.props.location), '<Switch> elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.');\n };\n\n Switch.prototype.render = function render() {\n var route = this.context.router.route;\n var children = this.props.children;\n\n var location = this.props.location || route.location;\n\n var match = void 0,\n child = void 0;\n React.Children.forEach(children, function (element) {\n if (match == null && React.isValidElement(element)) {\n var _element$props = element.props,\n pathProp = _element$props.path,\n exact = _element$props.exact,\n strict = _element$props.strict,\n sensitive = _element$props.sensitive,\n from = _element$props.from;\n\n var path = pathProp || from;\n\n child = element;\n match = matchPath(location.pathname, { path: path, exact: exact, strict: strict, sensitive: sensitive }, route.match);\n }\n });\n\n return match ? React.cloneElement(child, { location: location, computedMatch: match }) : null;\n };\n\n return Switch;\n}(React.Component);\n\nSwitch.contextTypes = {\n router: PropTypes.shape({\n route: PropTypes.object.isRequired\n }).isRequired\n};\nSwitch.propTypes = {\n children: PropTypes.node,\n location: PropTypes.object\n};\n\n\nexport default Switch;","// Written in this round about way for babel-transform-imports\nimport Switch from \"react-router/es/Switch\";\n\nexport default Switch;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport warning from \"warning\";\nimport invariant from \"invariant\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport matchPath from \"./matchPath\";\n\nvar isEmptyChildren = function isEmptyChildren(children) {\n return React.Children.count(children) === 0;\n};\n\n/**\n * The public API for matching a single path and rendering.\n */\n\nvar Route = function (_React$Component) {\n _inherits(Route, _React$Component);\n\n function Route() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Route);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n match: _this.computeMatch(_this.props, _this.context.router)\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Route.prototype.getChildContext = function getChildContext() {\n return {\n router: _extends({}, this.context.router, {\n route: {\n location: this.props.location || this.context.router.route.location,\n match: this.state.match\n }\n })\n };\n };\n\n Route.prototype.computeMatch = function computeMatch(_ref, router) {\n var computedMatch = _ref.computedMatch,\n location = _ref.location,\n path = _ref.path,\n strict = _ref.strict,\n exact = _ref.exact,\n sensitive = _ref.sensitive;\n\n if (computedMatch) return computedMatch; // <Switch> already computed the match for us\n\n invariant(router, \"You should not use <Route> or withRouter() outside a <Router>\");\n\n var route = router.route;\n\n var pathname = (location || route.location).pathname;\n\n return matchPath(pathname, { path: path, strict: strict, exact: exact, sensitive: sensitive }, route.match);\n };\n\n Route.prototype.componentWillMount = function componentWillMount() {\n warning(!(this.props.component && this.props.render), \"You should not use <Route component> and <Route render> in the same route; <Route render> will be ignored\");\n\n warning(!(this.props.component && this.props.children && !isEmptyChildren(this.props.children)), \"You should not use <Route component> and <Route children> in the same route; <Route children> will be ignored\");\n\n warning(!(this.props.render && this.props.children && !isEmptyChildren(this.props.children)), \"You should not use <Route render> and <Route children> in the same route; <Route children> will be ignored\");\n };\n\n Route.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps, nextContext) {\n warning(!(nextProps.location && !this.props.location), '<Route> elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.');\n\n warning(!(!nextProps.location && this.props.location), '<Route> elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.');\n\n this.setState({\n match: this.computeMatch(nextProps, nextContext.router)\n });\n };\n\n Route.prototype.render = function render() {\n var match = this.state.match;\n var _props = this.props,\n children = _props.children,\n component = _props.component,\n render = _props.render;\n var _context$router = this.context.router,\n history = _context$router.history,\n route = _context$router.route,\n staticContext = _context$router.staticContext;\n\n var location = this.props.location || route.location;\n var props = { match: match, location: location, history: history, staticContext: staticContext };\n\n if (component) return match ? React.createElement(component, props) : null;\n\n if (render) return match ? render(props) : null;\n\n if (typeof children === \"function\") return children(props);\n\n if (children && !isEmptyChildren(children)) return React.Children.only(children);\n\n return null;\n };\n\n return Route;\n}(React.Component);\n\nRoute.propTypes = {\n computedMatch: PropTypes.object, // private, from <Switch>\n path: PropTypes.string,\n exact: PropTypes.bool,\n strict: PropTypes.bool,\n sensitive: PropTypes.bool,\n component: PropTypes.func,\n render: PropTypes.func,\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n location: PropTypes.object\n};\nRoute.contextTypes = {\n router: PropTypes.shape({\n history: PropTypes.object.isRequired,\n route: PropTypes.object.isRequired,\n staticContext: PropTypes.object\n })\n};\nRoute.childContextTypes = {\n router: PropTypes.object.isRequired\n};\n\n\nexport default Route;","// Written in this round about way for babel-transform-imports\nimport Route from \"react-router/es/Route\";\n\nexport default Route;","\r\n\r\n//Обертка для лога в приложении\r\nexport default function Log(sender, message) {\r\n if (sender === null || sender === undefined)\r\n throw \"LogTools: sender not set\";\r\n\r\n console.log(sender + \": \" + message);\r\n}","\r\n\r\n//Общие конфигурации\r\nexport default class Configuration {\r\n static RooDirectoryID = -1;\r\n static upload_chunk_size = 102400;\r\n}","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"invariant\";\nimport { createLocation } from \"history\";\n\nvar isModifiedEvent = function isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n};\n\n/**\n * The public API for rendering a history-aware <a>.\n */\n\nvar Link = function (_React$Component) {\n _inherits(Link, _React$Component);\n\n function Link() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Link);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.handleClick = function (event) {\n if (_this.props.onClick) _this.props.onClick(event);\n\n if (!event.defaultPrevented && // onClick prevented default\n event.button === 0 && // ignore everything but left clicks\n !_this.props.target && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n\n var history = _this.context.router.history;\n var _this$props = _this.props,\n replace = _this$props.replace,\n to = _this$props.to;\n\n\n if (replace) {\n history.replace(to);\n } else {\n history.push(to);\n }\n }\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Link.prototype.render = function render() {\n var _props = this.props,\n replace = _props.replace,\n to = _props.to,\n innerRef = _props.innerRef,\n props = _objectWithoutProperties(_props, [\"replace\", \"to\", \"innerRef\"]); // eslint-disable-line no-unused-vars\n\n invariant(this.context.router, \"You should not use <Link> outside a <Router>\");\n\n invariant(to !== undefined, 'You must specify the \"to\" property');\n\n var history = this.context.router.history;\n\n var location = typeof to === \"string\" ? createLocation(to, null, null, history.location) : to;\n\n var href = history.createHref(location);\n return React.createElement(\"a\", _extends({}, props, { onClick: this.handleClick, href: href, ref: innerRef }));\n };\n\n return Link;\n}(React.Component);\n\nLink.propTypes = {\n onClick: PropTypes.func,\n target: PropTypes.string,\n replace: PropTypes.bool,\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired,\n innerRef: PropTypes.oneOfType([PropTypes.string, PropTypes.func])\n};\nLink.defaultProps = {\n replace: false\n};\nLink.contextTypes = {\n router: PropTypes.shape({\n history: PropTypes.shape({\n push: PropTypes.func.isRequired,\n replace: PropTypes.func.isRequired,\n createHref: PropTypes.func.isRequired\n }).isRequired\n }).isRequired\n};\n\n\nexport default Link;","\r\nimport Log from './LogTools'\r\n\r\n\r\n//Обертка для запросов к базе\r\n//URL - \r\n//Methid : Get Post\r\n//data: данные\r\nexport default function ApiQuery(url, method, data){\r\n Log(\"ApiQuery\", \"query to \" + url);\r\n //let json = JSON.stringify(data);\r\n //debugger;\r\n return fetch(\r\n url,\r\n {\r\n method: method,\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n credentials: 'include',\r\n body: JSON.stringify(data)\r\n }\r\n ).then(function(response){\r\n return response.json();\r\n });\r\n}","\r\nimport ApiQuery from '../Tools/ApiQuery'\r\n\r\n\r\nexport default class AuthServices {\r\n\r\n constructor() {\r\n\r\n this.URL_Auth = \"api/Auth/Auth\";\r\n this.URL_UserInfo = \"api/Auth/UserInfo\"\r\n\r\n this.AuthCoockieName = \"AuthToken\";\r\n }\r\n\r\n async AuthAsync(login, password) {\r\n\r\n return await ApiQuery(this.URL_Auth, \"Post\",\r\n {\r\n Login: login,\r\n Password: password\r\n }).then(function (data) {\r\n if (data.Successe) {\r\n this._SetTocken(data.Token);\r\n }\r\n else {\r\n this._SetTocken(\"\");\r\n }\r\n\r\n return data;\r\n }.bind(this));\r\n }\r\n\r\n Logout() {\r\n this._SetTocken(\"\");\r\n }\r\n\r\n\r\n async GetUserInfoAsync() {\r\n return await ApiQuery(this.URL_UserInfo, \"Post\")\r\n .then(function (data) {\r\n if (data.Successe) {\r\n this._SetTocken(data.Token);\r\n }\r\n else {\r\n this._SetTocken(\"\");\r\n }\r\n\r\n return data;\r\n }.bind(this));\r\n }\r\n\r\n\r\n //Возвращает true если пользователь авторизован\r\n IsAuth() {\r\n let token = this._GetTocken();\r\n return token != \"\";\r\n }\r\n\r\n\r\n _getCookie(name) {\r\n let matches = document.cookie.match(new RegExp(\r\n \"(?:^|; )\" + name.replace(/([\\.$?*|{}\\(\\)\\[\\]\\\\\\/\\+^])/g, '\\\\$1') + \"=([^;]*)\"\r\n ));\r\n return matches ? decodeURIComponent(matches[1]) : \"\";\r\n }\r\n\r\n //Токен авторизации\r\n _GetTocken() {\r\n return this._getCookie(this.AuthCoockieName);\r\n }\r\n //задать токен\r\n _SetTocken(val) {\r\n document.cookie = this.AuthCoockieName + \"=\" + val;\r\n }\r\n\r\n}\r\n","\r\nimport React from 'react';\r\nimport autoBind from 'react-autobind';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport Log from '../../Tools/LogTools'\r\n\r\nimport AuthServices from '../../Services/AuthServices'\r\n\r\n\r\nexport default class MenuControl extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n autoBind(this);\r\n Log(\"MenuControl\", \"start\");\r\n\r\n //this.state = { counter: 0 };\r\n this.authServices = new AuthServices();\r\n }\r\n\r\n OnAuthChange() {\r\n this.forceUpdate();\r\n }\r\n\r\n render() {\r\n return (\r\n <div>\r\n\r\n <table>\r\n <thead>\r\n <tr>\r\n <td>Menu:</td>\r\n <td>\r\n <Link to={`/`}>\r\n <button>FS</button>\r\n </Link>\r\n </td>\r\n\r\n {this.authServices.IsAuth()\r\n ?\r\n <td>\r\n <Link to={`/Admin`}>\r\n <button>Admin</button>\r\n </Link>\r\n </td>\r\n : <td></td>\r\n }\r\n </tr>\r\n </thead> \r\n </table>\r\n\r\n </div >\r\n );\r\n }\r\n}\r\n\r\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport forwardRef from '@restart/context/forwardRef';\nimport React, { useContext } from 'react';\nvar ThemeContext = React.createContext(new Map());\nvar Consumer = ThemeContext.Consumer,\n Provider = ThemeContext.Provider;\n\nvar ThemeProvider =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(ThemeProvider, _React$Component);\n\n function ThemeProvider(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this.prefixes = new Map();\n Object.keys(_this.props.prefixes).forEach(function (key) {\n _this.prefixes.set(key, _this.props.prefixes[key]);\n });\n return _this;\n }\n\n var _proto = ThemeProvider.prototype;\n\n _proto.render = function render() {\n return React.createElement(Provider, {\n value: this.prefixes\n }, this.props.children);\n };\n\n return ThemeProvider;\n}(React.Component);\n\nexport function useBootstrapPrefix(prefix, defaultPrefix) {\n var prefixes = useContext(ThemeContext);\n return prefix || prefixes.get(defaultPrefix) || defaultPrefix;\n}\n\nfunction createBootstrapComponent(Component, opts) {\n if (typeof opts === 'string') opts = {\n prefix: opts\n };\n var isClassy = Component.prototype && Component.prototype.isReactComponent; // If it's a functional component make sure we don't break it with a ref\n\n var _opts = opts,\n prefix = _opts.prefix,\n _opts$forwardRefAs = _opts.forwardRefAs,\n forwardRefAs = _opts$forwardRefAs === void 0 ? isClassy ? 'ref' : 'innerRef' : _opts$forwardRefAs;\n return forwardRef(function (_ref, ref) {\n var props = _extends({}, _ref);\n\n props[forwardRefAs] = ref;\n var prefixes = useContext(ThemeContext);\n return React.createElement(Component, _extends({}, props, {\n // eslint-disable-next-line react/prop-types\n bsPrefix: props.bsPrefix || prefixes.get(prefix) || prefix\n }));\n }, {\n displayName: \"Bootstrap(\" + (Component.displayName || Component.name) + \")\"\n });\n}\n\nexport { createBootstrapComponent, Consumer as ThemeConsumer };\nexport default ThemeProvider;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport camelize from 'dom-helpers/util/camelize';\nimport { useBootstrapPrefix } from '../ThemeProvider';\n\nvar pascalCase = function pascalCase(str) {\n return str[0].toUpperCase() + camelize(str).slice(1);\n};\n\nexport default function createWithBsPrefix(prefix, _temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$displayName = _ref.displayName,\n displayName = _ref$displayName === void 0 ? pascalCase(prefix) : _ref$displayName,\n _ref$Component = _ref.Component,\n Component = _ref$Component === void 0 ? 'div' : _ref$Component,\n defaultProps = _ref.defaultProps;\n\n var BsComponent = React.forwardRef( // eslint-disable-next-line react/prop-types\n function (_ref2, ref) {\n var className = _ref2.className,\n bsPrefix = _ref2.bsPrefix,\n _ref2$as = _ref2.as,\n Tag = _ref2$as === void 0 ? Component : _ref2$as,\n props = _objectWithoutPropertiesLoose(_ref2, [\"className\", \"bsPrefix\", \"as\"]);\n\n var resolvedPrefix = useBootstrapPrefix(bsPrefix, prefix);\n return React.createElement(Tag, _extends({\n ref: ref,\n className: classNames(className, resolvedPrefix)\n }, props));\n });\n BsComponent.defaultProps = defaultProps;\n BsComponent.displayName = displayName;\n return BsComponent;\n}","import React from 'react';\nvar FormContext = React.createContext({\n controlId: undefined\n});\nexport default FormContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React, { useMemo } from 'react';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormGroup = React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n children = _ref.children,\n controlId = _ref.controlId,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"children\", \"controlId\", \"as\"]);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-group');\n var context = useMemo(function () {\n return {\n controlId: controlId\n };\n }, [controlId]);\n return React.createElement(FormContext.Provider, {\n value: context\n }, React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames(className, bsPrefix)\n }), children));\n});\nFormGroup.displayName = 'FormGroup';\nexport default FormGroup;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nvar propTypes = {\n /**\n * Specify whether the feedback is for valid or invalid fields\n *\n * @type {('valid'|'invalid')}\n */\n type: PropTypes.string.isRequired,\n as: PropTypes.elementType\n};\nvar defaultProps = {\n type: 'valid'\n};\nvar Feedback = React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\nfunction (_ref, ref) {\n var _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n className = _ref.className,\n type = _ref.type,\n props = _objectWithoutPropertiesLoose(_ref, [\"as\", \"className\", \"type\"]);\n\n return React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames(className, type && type + \"-feedback\")\n }));\n});\nFeedback.displayName = 'Feedback';\nFeedback.propTypes = propTypes;\nFeedback.defaultProps = defaultProps;\nexport default Feedback;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport warning from 'warning';\nimport Feedback from './Feedback';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormControl = React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n type = _ref.type,\n size = _ref.size,\n id = _ref.id,\n className = _ref.className,\n isValid = _ref.isValid,\n isInvalid = _ref.isInvalid,\n plaintext = _ref.plaintext,\n readOnly = _ref.readOnly,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'input' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"type\", \"size\", \"id\", \"className\", \"isValid\", \"isInvalid\", \"plaintext\", \"readOnly\", \"as\"]);\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId;\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-control');\n var classes;\n\n if (plaintext) {\n var _classes;\n\n classes = (_classes = {}, _classes[bsPrefix + \"-plaintext\"] = true, _classes);\n } else if (type === 'file') {\n var _classes2;\n\n classes = (_classes2 = {}, _classes2[bsPrefix + \"-file\"] = true, _classes2);\n } else {\n var _classes3;\n\n classes = (_classes3 = {}, _classes3[bsPrefix] = true, _classes3[bsPrefix + \"-\" + size] = size, _classes3);\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(controlId == null || !id, '`controlId` is ignored on `<FormControl>` when `id` is specified.') : void 0;\n return React.createElement(Component, _extends({}, props, {\n type: type,\n ref: ref,\n readOnly: readOnly,\n id: id || controlId,\n className: classNames(className, classes, isValid && \"is-valid\", isInvalid && \"is-invalid\")\n }));\n});\nFormControl.displayName = 'FormControl';\nFormControl.Feedback = Feedback;\nexport default FormControl;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport FormContext from './FormContext';\nvar defaultProps = {\n type: 'checkbox'\n};\nvar FormCheckInput = React.forwardRef(function (_ref, ref) {\n var id = _ref.id,\n bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n isValid = _ref.isValid,\n isInvalid = _ref.isInvalid,\n isStatic = _ref.isStatic,\n props = _objectWithoutPropertiesLoose(_ref, [\"id\", \"bsPrefix\", \"className\", \"isValid\", \"isInvalid\", \"isStatic\"]);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-check-input');\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId,\n custom = _useContext.custom;\n\n return React.createElement(\"input\", _extends({}, props, {\n ref: ref,\n id: id || controlId,\n className: classNames(className, !custom && bsPrefix, custom && 'custom-control-input', isValid && 'is-valid', isInvalid && 'is-invalid', isStatic && 'position-static')\n }));\n});\nFormCheckInput.displayName = 'FormCheckInput';\nFormCheckInput.defaultProps = defaultProps;\nexport default FormCheckInput;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport FormContext from './FormContext';\nvar defaultProps = {\n type: 'checkbox'\n};\nvar FormCheckLabel = React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n htmlFor = _ref.htmlFor,\n props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"htmlFor\"]);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-check-label');\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId,\n custom = _useContext.custom;\n\n return React.createElement(\"label\", _extends({}, props, {\n ref: ref,\n htmlFor: htmlFor || controlId,\n className: classNames(className, !custom && bsPrefix, custom && 'custom-control-label')\n }));\n});\nFormCheckLabel.displayName = 'FormCheckLabel';\nFormCheckLabel.defaultProps = defaultProps;\nexport default FormCheckLabel;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React, { useContext, useMemo } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport FormContext from './FormContext';\nimport Feedback from './Feedback';\nimport FormCheckInput from './FormCheckInput';\nimport FormCheckLabel from './FormCheckLabel';\nvar defaultProps = {\n type: 'checkbox',\n inline: false,\n disabled: false,\n isValid: false,\n isInvalid: false,\n title: ''\n};\nvar FormCheck = React.forwardRef(function (_ref, ref) {\n var id = _ref.id,\n bsPrefix = _ref.bsPrefix,\n inline = _ref.inline,\n disabled = _ref.disabled,\n isValid = _ref.isValid,\n isInvalid = _ref.isInvalid,\n feedback = _ref.feedback,\n className = _ref.className,\n style = _ref.style,\n title = _ref.title,\n type = _ref.type,\n label = _ref.label,\n children = _ref.children,\n custom = _ref.custom,\n props = _objectWithoutPropertiesLoose(_ref, [\"id\", \"bsPrefix\", \"inline\", \"disabled\", \"isValid\", \"isInvalid\", \"feedback\", \"className\", \"style\", \"title\", \"type\", \"label\", \"children\", \"custom\"]);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-check');\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId;\n\n var innerFormContext = useMemo(function () {\n return {\n controlId: id || controlId,\n custom: custom\n };\n }, [controlId, custom, id]);\n var hasLabel = label != null && label !== false && !children;\n var input = React.createElement(FormCheckInput, _extends({}, props, {\n type: type,\n ref: ref,\n isValid: isValid,\n isInvalid: isInvalid,\n isStatic: !hasLabel,\n disabled: disabled\n }));\n return React.createElement(FormContext.Provider, {\n value: innerFormContext\n }, React.createElement(\"div\", {\n style: style,\n className: classNames(className, !custom && bsPrefix, custom && \"custom-control custom-\" + type, inline && (custom ? 'custom-control' : bsPrefix) + \"-inline\")\n }, children || React.createElement(React.Fragment, null, input, hasLabel && React.createElement(FormCheckLabel, {\n title: title\n }, label), (isValid || isInvalid) && React.createElement(Feedback, {\n type: isValid ? 'valid' : 'invalid'\n }, feedback))));\n});\nFormCheck.displayName = 'FormCheck';\nFormCheck.defaultProps = defaultProps;\nFormCheck.Input = FormCheckInput;\nFormCheck.Label = FormCheckLabel;\nexport default FormCheck;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar DEVICE_SIZES = ['xl', 'lg', 'md', 'sm', 'xs'];\nvar Col = React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\nfunction (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"as\"]);\n\n var prefix = useBootstrapPrefix(bsPrefix, 'col');\n var spans = [];\n var classes = [];\n DEVICE_SIZES.forEach(function (brkPoint) {\n var propValue = props[brkPoint];\n delete props[brkPoint];\n var span, offset, order;\n\n if (propValue != null && typeof propValue === 'object') {\n var _propValue$span = propValue.span;\n span = _propValue$span === void 0 ? true : _propValue$span;\n offset = propValue.offset;\n order = propValue.order;\n } else {\n span = propValue;\n }\n\n var infix = brkPoint !== 'xs' ? \"-\" + brkPoint : '';\n if (span != null) spans.push(span === true ? \"\" + prefix + infix : \"\" + prefix + infix + \"-\" + span);\n if (order != null) classes.push(\"order\" + infix + \"-\" + order);\n if (offset != null) classes.push(\"offset\" + infix + \"-\" + offset);\n });\n\n if (!spans.length) {\n spans.push(prefix); // plain 'col'\n }\n\n return React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames.apply(void 0, [className].concat(spans, classes))\n }));\n});\nCol.displayName = 'Col';\nexport default Col;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport warning from 'warning';\nimport Col from './Col';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar defaultProps = {\n column: false,\n srOnly: false\n};\nvar FormLabel = React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n column = _ref.column,\n srOnly = _ref.srOnly,\n className = _ref.className,\n htmlFor = _ref.htmlFor,\n props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"column\", \"srOnly\", \"className\", \"htmlFor\"]);\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId;\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-label');\n var classes = classNames(className, bsPrefix, srOnly && 'sr-only', column && 'col-form-label');\n process.env.NODE_ENV !== \"production\" ? warning(controlId == null || !htmlFor, '`controlId` is ignored on `<FormLabel>` when `htmlFor` is specified.') : void 0;\n htmlFor = htmlFor || controlId;\n if (column) return React.createElement(Col, _extends({\n as: \"label\",\n className: classes,\n htmlFor: htmlFor\n }, props));\n return (// eslint-disable-next-line jsx-a11y/label-has-for, jsx-a11y/label-has-associated-control\n React.createElement(\"label\", _extends({\n ref: ref,\n className: classes,\n htmlFor: htmlFor\n }, props))\n );\n});\nFormLabel.displayName = 'FormLabel';\nFormLabel.defaultProps = defaultProps;\nexport default FormLabel;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormText = React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\nfunction (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'small' : _ref$as,\n muted = _ref.muted,\n props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"as\", \"muted\"]);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-text');\n return React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames(className, bsPrefix, muted && 'text-muted')\n }));\n});\nFormText.displayName = 'FormText';\nexport default FormText;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport createWithBsPrefix from './utils/createWithBsPrefix';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport FormGroup from './FormGroup';\nimport FormControl from './FormControl';\nimport FormCheck from './FormCheck';\nimport FormLabel from './FormLabel';\nimport FormText from './FormText';\nvar defaultProps = {\n inline: false\n};\nvar Form = React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n inline = _ref.inline,\n className = _ref.className,\n validated = _ref.validated,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'form' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"inline\", \"className\", \"validated\", \"as\"]);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form');\n return React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames(className, validated && 'was-validated', inline && bsPrefix + \"-inline\")\n }));\n});\nForm.displayName = 'Form';\nForm.defaultProps = defaultProps;\nForm.Row = createWithBsPrefix('form-row');\nForm.Group = FormGroup;\nForm.Control = FormControl;\nForm.Check = FormCheck;\nForm.Label = FormLabel;\nForm.Text = FormText;\nexport default Form;","\r\nimport toastr from 'toastr'\r\n\r\n\r\nexport default class Notification {\r\n\r\n static Sho(text, title) {\r\n\r\n //debugger;\r\n\r\n let Data = new Date();\r\n let Timestring = \"\" + Data.getHours() + \":\"\r\n + Data.getMinutes() + \":\"\r\n + Data.getSeconds() + \" | \"\r\n + text;\r\n\r\n\r\n toastr.success(Timestring, title,\r\n {\r\n \"timeOut\": 3000,\r\n \"progressBar\": true,\r\n \"closeButton\": true\r\n });\r\n }\r\n\r\n\r\n static MesOk(text, title) {\r\n let Data = new Date();\r\n let Timestring = \"\" + Data.getHours() + \":\"\r\n + Data.getMinutes() + \":\"\r\n + Data.getSeconds() + \" | \"\r\n + text;\r\n\r\n toastr.success(Timestring, title,\r\n {\r\n \"closeButton\": true,\r\n \"progressBar\": true\r\n });\r\n }\r\n static MesOk_NoHide(text, title) {\r\n let Data = new Date();\r\n let Timestring = \"\" + Data.getHours() + \":\"\r\n + Data.getMinutes() + \":\"\r\n + Data.getSeconds() + \" | \"\r\n + text;\r\n\r\n toastr.success(Timestring, title,\r\n {\r\n \"timeOut\": -1,\r\n \"closeButton\": true,\r\n \"progressBar\": true\r\n });\r\n }\r\n\r\n static MesEr(text, title) {\r\n let Data = new Date();\r\n let Timestring = \"\" + Data.getHours() + \":\"\r\n + Data.getMinutes() + \":\"\r\n + Data.getSeconds() + \" | \"\r\n + text;\r\n\r\n\r\n toastr.error(Timestring, title,\r\n {\r\n \"timeOut\": -1,\r\n \"closeButton\": true\r\n });\r\n }\r\n\r\n}\r\n\r\n","\r\nimport React from 'react';\r\nimport autoBind from 'react-autobind';\r\nimport { Form } from 'react-bootstrap'\r\n\r\nimport Log from '../../Tools/LogTools'\r\nimport Notification from '../../Tools/Notification'\r\n\r\nimport AuthServices from '../../Services/AuthServices'\r\n\r\n\r\nexport default class UserControl extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n autoBind(this);\r\n Log(\"UserControl\", \"start\");\r\n\r\n this.state = { UserName: \"\" };//, AuthResult: \"\" };\r\n this.authServices = new AuthServices();\r\n\r\n if (this.authServices.IsAuth())\r\n this.authServices.GetUserInfoAsync().then(function (data) {\r\n\r\n if (data.Successe) {\r\n this.setState({ UserName: data.UserName });// AuthResult: \"\" });\r\n this.props.ParentComponent.OnAuthChange();\r\n }\r\n else {\r\n this.setState({ UserName: \"\" });//, AuthResult: data.ResMsg });\r\n Notification.MesEr(data.ResMessage, \"Auth\");\r\n }\r\n\r\n }.bind(this));\r\n }\r\n\r\n //Кнопка входа\r\n AuthClick() {\r\n let login = this.refs.Login.value;\r\n let password = this.refs.Password.value;\r\n\r\n this.authServices.AuthAsync(login, password)\r\n .then(function (data) {\r\n\r\n if (data.Successe) {\r\n this.setState({ UserName: data.UserName });//, AuthResult: \"\" });\r\n\r\n this.props.ParentComponent.OnAuthChange();\r\n }\r\n else {\r\n this.setState({ UserName: \"\" });//, AuthResult: data.ResMsg });\r\n Notification.MesEr(data.ResMessage, \"Auth\");\r\n }\r\n\r\n }.bind(this));\r\n }\r\n\r\n //Кнопка выхода\r\n LogoutClick() {\r\n this.authServices.Logout();\r\n this.setState({ UserName: \"\" });//, AuthResult: \"\" });\r\n\r\n this.props.ParentComponent.OnAuthChange();\r\n }\r\n\r\n\r\n render() {\r\n let state = this.state;\r\n\r\n return (\r\n <div>\r\n {this.authServices.IsAuth()\r\n ?\r\n <div>\r\n <p>Вы авторизованы. Пользователь: {state.UserName}.</p>\r\n <button onClick={this.LogoutClick}>Logout</button>\r\n </div>\r\n :\r\n <div>\r\n <p>Вы не авторизованы {state.UserName}. Вход:</p>\r\n {/*{state.AuthResult != \"\" ? <p>{state.AuthResult}</p> : \"\"}*/}\r\n\r\n {/*<Form.Label>Email address</Form.Label>*/}\r\n <Form.Control ref=\"Login\" type=\"text\" placeholder=\"Enter login\" />\r\n <Form.Text className=\"text-muted\">\r\n We'll never share your login with anyone else.\r\n </Form.Text>\r\n <br />\r\n {/*<Form.Label>Password</Form.Label>*/}\r\n <Form.Control ref=\"Password\" type=\"password\" placeholder=\"Password\" />\r\n <br />\r\n <button onClick={this.AuthClick}>Auth</button>\r\n </div>\r\n }\r\n </div>\r\n );\r\n }\r\n}\r\n","\r\nimport ApiQuery from '../Tools/ApiQuery'\r\n\r\n\r\nexport default class FileExplorerServices {\r\n constructor() {\r\n\r\n this.URL_DirectoryItems = \"api/Explorer/GetDirectoryItems?ID=\";\r\n this.URL_ScanDirectory = \"api/Explorer/ScanDirectory?ID=\";\r\n\r\n this.URL_Delete = \"api/Explorer/DeleteFile\";\r\n this.URL_Move = \"api/Explorer/MoveElement\";\r\n this.URL_Download = \"api/Explorer/GetFile?ID=\";\r\n this.URL_CreateDirectory = \"api/Explorer/CreateDirectory?\";\r\n\r\n }\r\n\r\n\r\n async DirectoryGetItemsAsync(ID) {\r\n let url = this.URL_DirectoryItems + ID;\r\n\r\n return await ApiQuery(url, \"Get\");\r\n }\r\n\r\n async ScanDirectoryAsync(ID) {\r\n let url = this.URL_ScanDirectory + ID;\r\n\r\n return await ApiQuery(url, \"Get\");\r\n }\r\n\r\n async DeleteAsync(ID) {\r\n\r\n return await ApiQuery(this.URL_Delete, \"POST\",\r\n {\r\n ID: ID\r\n });\r\n\r\n }\r\n\r\n async MoveAsync(elemID, directoryID) {\r\n return await ApiQuery(this.URL_Move, \"POST\",\r\n {\r\n ID: elemID,\r\n NewParent: directoryID\r\n });\r\n }\r\n\r\n\r\n OpenDownload(ID) {\r\n let url = this.URL_Download + ID;\r\n\r\n window.open(url, '_blank');\r\n }\r\n\r\n async CreateDirectoryAsync(dirname, id) {\r\n return await ApiQuery(this.URL_CreateDirectory, \"POST\",\r\n {\r\n ParentID: id,\r\n Name: dirname\r\n });\r\n }\r\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","/**\n * Safe chained function\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n *\n * @param {function} functions to chain\n * @returns {function|null}\n */\nfunction createChainedFunction() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n return funcs.filter(function (f) {\n return f != null;\n }).reduce(function (acc, f) {\n if (typeof f !== 'function') {\n throw new Error('Invalid Argument Type, must only provide functions, undefined, or null.');\n }\n\n if (acc === null) return f;\n return function chainedFunction() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n acc.apply(this, args);\n f.apply(this, args);\n };\n }, null);\n}\n\nexport default createChainedFunction;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport React from 'react';\nimport createChainedFunction from './utils/createChainedFunction';\n\nfunction isTrivialHref(href) {\n return !href || href.trim() === '#';\n}\n/**\n * There are situations due to browser quirks or Bootstrap CSS where\n * an anchor tag is needed, when semantically a button tag is the\n * better choice. SafeAnchor ensures that when an anchor is used like a\n * button its accessible. It also emulates input `disabled` behavior for\n * links, which is usually desirable for Buttons, NavItems, DropdownItems, etc.\n */\n\n\nvar SafeAnchor =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(SafeAnchor, _React$Component);\n\n function SafeAnchor(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n _this.handleClick = _this.handleClick.bind(_assertThisInitialized(_this));\n _this.handleKeyDown = _this.handleKeyDown.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n var _proto = SafeAnchor.prototype;\n\n _proto.handleClick = function handleClick(event) {\n var _this$props = this.props,\n disabled = _this$props.disabled,\n href = _this$props.href,\n onClick = _this$props.onClick;\n\n if (disabled || isTrivialHref(href)) {\n event.preventDefault();\n }\n\n if (disabled) {\n event.stopPropagation();\n return;\n }\n\n if (onClick) {\n onClick(event);\n }\n };\n\n _proto.handleKeyDown = function handleKeyDown(event) {\n if (event.key === ' ') {\n event.preventDefault();\n this.handleClick(event);\n }\n };\n\n _proto.render = function render() {\n var _this$props2 = this.props,\n _this$props2$as = _this$props2.as,\n Component = _this$props2$as === void 0 ? 'a' : _this$props2$as,\n disabled = _this$props2.disabled,\n onKeyDown = _this$props2.onKeyDown,\n innerRef = _this$props2.innerRef,\n props = _objectWithoutPropertiesLoose(_this$props2, [\"as\", \"disabled\", \"onKeyDown\", \"innerRef\"]);\n\n if (isTrivialHref(props.href)) {\n props.role = props.role || 'button'; // we want to make sure there is a href attribute on the node\n // otherwise, the cursor incorrectly styled (except with role='button')\n\n props.href = props.href || '#';\n }\n\n if (disabled) {\n props.tabIndex = -1;\n props['aria-disabled'] = true;\n }\n\n if (innerRef) props.ref = innerRef;\n return React.createElement(Component, _extends({}, props, {\n onClick: this.handleClick,\n onKeyDown: createChainedFunction(this.handleKeyDown, onKeyDown)\n }));\n };\n\n return SafeAnchor;\n}(React.Component);\n\nexport default SafeAnchor;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport SafeAnchor from './SafeAnchor';\nvar defaultProps = {\n variant: 'primary',\n active: false,\n disabled: false,\n type: 'button'\n};\nvar Button = React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n variant = _ref.variant,\n size = _ref.size,\n active = _ref.active,\n className = _ref.className,\n block = _ref.block,\n type = _ref.type,\n as = _ref.as,\n props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"variant\", \"size\", \"active\", \"className\", \"block\", \"type\", \"as\"]);\n\n var prefix = useBootstrapPrefix(bsPrefix, 'btn');\n var classes = classNames(className, prefix, active && 'active', prefix + \"-\" + variant, block && prefix + \"-block\", size && prefix + \"-\" + size);\n\n if (props.href) {\n return React.createElement(SafeAnchor, _extends({}, props, {\n as: as,\n innerRef: ref,\n className: classNames(classes, props.disabled && 'disabled')\n }));\n }\n\n var Component = as || 'button';\n if (ref) props.ref = ref;\n return React.createElement(Component, _extends({}, props, {\n type: type,\n className: classes\n }));\n});\nButton.displayName = 'Button';\nButton.defaultProps = defaultProps;\nexport default Button;","\r\nimport React from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport autoBind from 'react-autobind';\r\nimport { Button } from 'react-bootstrap'\r\n\r\nimport Log from '../../../Tools/LogTools'\r\n\r\n\r\nexport default class FileExplorerRow extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n autoBind(this);\r\n Log(\"FileExplorerRow \" + this.props.ID, \"start\");\r\n\r\n this.state = { ID: this.props.ID, Data: this.props.data, ShoSelect: this.props.ShoSelect };\r\n\r\n //Log(\"FileExplorerRow \" + this.props.ID, \"GetDataID: \" + this.GetDataID());\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n this.props = nextProps;\r\n\r\n if (this.refs.Select != undefined)\r\n this.refs.Select.checked = false;\r\n\r\n this.setState({\r\n ID: this.props.ID,\r\n Data: this.props.data,\r\n ShoSelect: this.props.ShoSelect\r\n });\r\n\r\n //Log(\"FileExplorerRow \" + this.props.ID, \"GetDataID: \" + this.GetDataID());\r\n }\r\n\r\n GetDate() {\r\n return this.state.Data;\r\n }\r\n\r\n GetRowID() {\r\n return this.state.ID;\r\n }\r\n GetDataID() {\r\n return this.state.Data.ID;\r\n }\r\n IsCheked() {\r\n if (this.refs.Select == undefined)\r\n return false;\r\n\r\n return this.refs.Select.checked;\r\n }\r\n\r\n\r\n OnDirectoryClick() {\r\n this.props.ParentComponent.OnDirectoryClick(this.GetDataID());\r\n }\r\n\r\n render() {\r\n let state = this.state;\r\n let elem = state.Data;\r\n\r\n return (\r\n <tr>\r\n <td>{elem.ID}</td>\r\n {state.ShoSelect\r\n ?\r\n <td>\r\n <input ref=\"Select\" type=\"checkbox\" />\r\n </td>\r\n : null\r\n }\r\n\r\n\r\n {(elem.Type === \"RootDirectory\" || elem.Type === \"Directory\")\r\n ?\r\n <td>\r\n <Link to={`/?ID=${elem.ID}`}>\r\n <Button id={elem.ID} onClick={this.OnDirectoryClick} variant=\"outline-dark\">\r\n {elem.Name}\r\n </Button>\r\n </Link>\r\n </td>\r\n : <td>{elem.Name}</td>\r\n }\r\n <td>{elem.Type}</td>\r\n <td>{elem.Size}</td>\r\n </tr>\r\n );\r\n\r\n }\r\n}","\r\nimport React from 'react';\r\nimport autoBind from 'react-autobind';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport Log from '../../../Tools/LogTools'\r\nimport Configuration from '../../../Tools/Configuration'\r\nimport ArrayCompare from '../../../Tools/Sort'\r\n\r\n\r\nimport FileExplorerServices from '../../../Services/FileExplorerServices'\r\n\r\nimport FileExplorerRow from './FileExplorerRow.jsx'\r\n\r\n\r\nexport default class FileExplorerControl extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n autoBind(this);\r\n Log(\"FileExplorerControl\", \"start\");\r\n\r\n\r\n this.state = { data: {}, ShoSelect: this.props.ShoSelect };\r\n this.ChildRows = [];\r\n this.fileExplorerServices = new FileExplorerServices();\r\n\r\n\r\n this.LoadDirectory();\r\n }\r\n\r\n //#endregion \r\n\r\n //#region Events\r\n\r\n OnBackClick(sender) {\r\n this.props.ParentComponent.SetID(this.state.data.ParentID);\r\n Log(\"FileExplorerControl\", \"OnBackClick \" + this.state.data.ParentID);\r\n\r\n //this.state = { ID: new_id };\r\n this.LoadDirectory();\r\n }\r\n\r\n OnDirectoryClick(id) {\r\n this.props.ParentComponent.SetID(id);\r\n Log(\"FileExplorerControl\", \"MoveToDirectory \" + id);\r\n\r\n\r\n //this.state = { ID: new_id };\r\n this.LoadDirectory();\r\n }\r\n\r\n OnSortClick(sender) {\r\n let SortProperty = sender.target.attributes[0].value;\r\n\r\n let data = this.state.data;\r\n //debugger;\r\n data.items.sort(ArrayCompare(SortProperty, 1));\r\n this.setState({ data: data });\r\n }\r\n\r\n\r\n //#endregion\r\n\r\n //Загружает информацию о текущей папке\r\n LoadDirectory() {\r\n let ID = this.props.ParentComponent.GetID();\r\n Log(\"FileExplorerControl\", \"LoadDirectory \" + ID);\r\n\r\n this.fileExplorerServices.DirectoryGetItemsAsync(ID)\r\n .then(function (data) {\r\n this.setState({ data: data, ShoSelect: (this.props.ShoSelect && ID != -1 ? true : false) });\r\n }.bind(this));\r\n }\r\n\r\n OnScanDirClick(sender) {\r\n let ID = this.props.ParentComponent.GetID();\r\n Log(\"FileExplorerControl\", \"ScanDirectory \" + ID);\r\n\r\n this.fileExplorerServices.ScanDirectoryAsync(ID).\r\n then(function (data) {\r\n this.LoadDirectory();\r\n }.bind(this));\r\n }\r\n\r\n //Получить ID данных выбранных строк\r\n GetSelectedID() {\r\n //debugger;\r\n return this.ChildRows.\r\n filter(e => e.IsCheked()).\r\n map(e => e.GetDataID());\r\n }\r\n\r\n render() {\r\n let data = this.state.data;\r\n\r\n //Если данные не пусты\r\n if (JSON.stringify(data) !== '{}') {\r\n Log(\"FileExplorerControl\", \"Data\");\r\n\r\n return (\r\n <div>\r\n {this.props.ParentComponent.GetID() != Configuration.RooDirectoryID\r\n ?\r\n <p>\r\n <Link to={`/?ID=${data.ParentID}`}>\r\n <button onClick={this.OnBackClick}>\r\n l- На уровень вверх - {data.ParentName}\r\n </button>\r\n </Link>\r\n </p>\r\n : null\r\n }\r\n\r\n\r\n <p>{data.LogicPath}</p>\r\n <p>\r\n <button onClick={this.LoadDirectory}>\r\n Update\r\n </button>\r\n <button onClick={this.OnScanDirClick}>\r\n Rescan\r\n </button>\r\n </p>\r\n\r\n\r\n <table>\r\n\r\n <thead>\r\n <tr>\r\n <th>\r\n <button property=\"ID\" onClick={this.OnSortClick}>ID</button>\r\n </th>\r\n {\r\n this.state.ShoSelect\r\n ? <th>Select</th>\r\n : null\r\n }\r\n <th>\r\n <button property=\"Name\" onClick={this.OnSortClick}>Name</button>\r\n </th>\r\n <th>\r\n <button property=\"Type\" onClick={this.OnSortClick}>Type</button>\r\n </th>\r\n <th>\r\n <button property=\"Size\" onClick={this.OnSortClick}>Size</button>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {\r\n data.items.map(function (elem, i, arr) {\r\n return [\r\n <FileExplorerRow ref={row => {\r\n if (row != null) this.ChildRows[i] = row;\r\n else this.ChildRows.splice(i, 1);\r\n }}\r\n ShoSelect={this.state.ShoSelect}\r\n key={i}\r\n ID={i}\r\n data={elem}\r\n ParentComponent={this}\r\n />\r\n ];\r\n }.bind(this))\r\n }\r\n </tbody> \r\n \r\n </table>\r\n </div>\r\n );\r\n }\r\n else {\r\n Log(\"FileExplorerControl\", \"NoData\");\r\n\r\n return (\r\n <div>\r\n <p>NoData</p>\r\n </div>\r\n );\r\n }\r\n }\r\n}","//https://habr.com/ru/post/279867/\r\n\r\n\r\n////Использование\r\n//arr.sort(ArrayCompare()); //Обычная типобезопасная сортировка по возрастанию\r\n//arr.sort(ArrayCompare(-1)); //Обычная типобезопасная сортировка по убыванию\r\n//arr.sort(ArrayCompare('field')); //Сортировка по свойству field по возрастанию\r\n//arr.sort(ArrayCompare('field', -1)); //Сортировка по свойству field по убыванию\r\n///* Сортировка сначала по полю field1\r\n// при совпадении по полю field2, а если и оно совпало, то по полю field3\r\n// все по возрастанию */\r\n//arr.sort(compare('field1', 'field2', 'field3'));\r\n///* Сортировка сначала по полю field1 по возрастанию\r\n// при совпадении по полю field2 по убыванию */\r\n//arr.sort(compare({\r\n// field1: 1,\r\n// field2: -1\r\n//}));\r\n\r\n\r\n//Метод сравнения элементов для сортировки\r\n//field - имя свойства сущности\r\n//order порядок 0 - возрастание, 1 - убывание\r\nexport default function ArrayCompare(field, order) {\r\n var len = arguments.length;\r\n if (len === 0) {\r\n return (a, b) => (a < b && -1) || (a > b && 1) || 0;\r\n }\r\n if (len === 1) {\r\n switch (typeof field) {\r\n case 'number':\r\n return field < 0 ?\r\n ((a, b) => (a < b && 1) || (a > b && -1) || 0) :\r\n ((a, b) => (a < b && -1) || (a > b && 1) || 0);\r\n case 'string':\r\n return (a, b) => (a[field] < b[field] && -1) || (a[field] > b[field] && 1) || 0;\r\n }\r\n }\r\n if (len === 2 && typeof order === 'number') {\r\n return order < 0 ?\r\n ((a, b) => (a[field] < b[field] && 1) || (a[field] > b[field] && -1) || 0) :\r\n ((a, b) => (a[field] < b[field] && -1) || (a[field] > b[field] && 1) || 0);\r\n }\r\n var fields, orders;\r\n if (typeof field === 'object') {\r\n fields = Object.getOwnPropertyNames(field);\r\n orders = fields.map(key => field[key]);\r\n len = fields.length;\r\n } else {\r\n fields = new Array(len);\r\n orders = new Array(len);\r\n for (let i = len; i--;) {\r\n fields[i] = arguments[i];\r\n orders[i] = 1;\r\n }\r\n }\r\n return (a, b) => {\r\n for (let i = 0; i < len; i++) {\r\n if (a[fields[i]] < b[fields[i]]) return orders[i];\r\n if (a[fields[i]] > b[fields[i]]) return -orders[i];\r\n }\r\n return 0;\r\n };\r\n}","export default {\n disabled: false\n};","import React from 'react';\nexport default React.createContext(null);","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport * as PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 1 },\n * entered: { opacity: 1 },\n * exiting: { opacity: 0 },\n * exited: { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * <Transition in={inProp} timeout={duration}>\n * {state => (\n * <div style={{\n * ...defaultStyle,\n * ...transitionStyles[state]\n * }}>\n * I'm a fade Transition!\n * </div>\n * )}\n * </Transition>\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n * <div>\n * <Transition in={inProp} timeout={500}>\n * {state => (\n * // ...\n * )}\n * </Transition>\n * <button onClick={() => setInProp(true)}>\n * Click to Enter\n * </button>\n * </div>\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n }; // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n\n\n var _proto = Transition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n var node = ReactDOM.findDOMNode(this);\n\n if (nextStatus === ENTERING) {\n this.performEnter(node, mounting);\n } else {\n this.performExit(node);\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(node, mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter || config.disabled) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node);\n });\n return;\n }\n\n this.props.onEnter(node, appearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(node, appearing);\n\n _this2.onTransitionEnd(node, enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node, appearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit(node) {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts(); // no exit animation skip right to EXITED\n\n if (!exit || config.disabled) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n return;\n }\n\n this.props.onExit(node);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(node);\n\n _this3.onTransitionEnd(node, timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(node, timeout, handler) {\n this.setNextCallback(handler);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n this.props.addEndListener(node, this.nextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\"]); // filter props for Transtition\n\n\n delete childProps.in;\n delete childProps.mountOnEnter;\n delete childProps.unmountOnExit;\n delete childProps.appear;\n delete childProps.enter;\n delete childProps.exit;\n delete childProps.timeout;\n delete childProps.addEndListener;\n delete childProps.onEnter;\n delete childProps.onEntering;\n delete childProps.onEntered;\n delete childProps.onExit;\n delete childProps.onExiting;\n delete childProps.onExited;\n\n if (typeof children === 'function') {\n // allows for nested Transitions\n return React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, children(status, childProps));\n }\n\n var child = React.Children.only(children);\n return (// allows for nested Transitions\n React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, React.cloneElement(child, childProps))\n );\n };\n\n return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * <Transition in={this.state.in} timeout={150}>\n * {state => (\n * <MyComponent className={`fade fade-${state}`} />\n * )}\n * </Transition>\n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * Normally a component is not transitioned if it is shown when the `<Transition>` component mounts.\n * If you want to transition on the first mount set `appear` to `true`, and the\n * component will transition in as soon as the `<Transition>` mounts.\n *\n * > Note: there are no specific \"appear\" states. `appear` only adds an additional `enter` transition.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. **Note:** Timeouts are still used as a fallback if provided.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func // Name the function so it is clearer in the documentation\n\n} : {};\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = 0;\nTransition.EXITED = 1;\nTransition.ENTERING = 2;\nTransition.ENTERED = 3;\nTransition.EXITING = 4;\nexport default Transition;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\n\nvar _fadeStyles;\n\nimport classNames from 'classnames';\nimport React from 'react';\nimport Transition, { ENTERED, ENTERING } from 'react-transition-group/Transition';\nimport onEnd from 'dom-helpers/transition/end';\nimport triggerBrowserReflow from './utils/triggerBrowserReflow';\nvar defaultProps = {\n in: false,\n timeout: 300,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false\n};\nvar fadeStyles = (_fadeStyles = {}, _fadeStyles[ENTERING] = 'show', _fadeStyles[ENTERED] = 'show', _fadeStyles);\n\nvar Fade =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Fade, _React$Component);\n\n function Fade() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _this.handleEnter = function (node) {\n triggerBrowserReflow(node);\n if (_this.props.onEnter) _this.props.onEnter(node);\n };\n\n return _this;\n }\n\n var _proto = Fade.prototype;\n\n _proto.render = function render() {\n var _this$props = this.props,\n className = _this$props.className,\n children = _this$props.children,\n props = _objectWithoutPropertiesLoose(_this$props, [\"className\", \"children\"]);\n\n return React.createElement(Transition, _extends({\n addEndListener: onEnd\n }, props, {\n onEnter: this.handleEnter\n }), function (status, innerProps) {\n return React.cloneElement(children, _extends({}, innerProps, {\n className: classNames('fade', className, children.props.className, fadeStyles[status])\n }));\n });\n };\n\n return Fade;\n}(React.Component);\n\nFade.defaultProps = defaultProps;\nexport default Fade;","// reading a dimension prop will cause the browser to recalculate,\n// which will let our animations work\nexport default function triggerBrowserReflow(node) {\n node.offsetHeight; // eslint-disable-line no-unused-expressions\n}","import createWithBsPrefix from './utils/createWithBsPrefix';\nexport default createWithBsPrefix('modal-body');","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar ModalDialog = React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n centered = _ref.centered,\n size = _ref.size,\n children = _ref.children,\n scrollable = _ref.scrollable,\n props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"centered\", \"size\", \"children\", \"scrollable\"]);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'modal');\n var dialogClass = bsPrefix + \"-dialog\";\n return React.createElement(\"div\", _extends({}, props, {\n ref: ref,\n className: classNames(dialogClass, className, size && bsPrefix + \"-\" + size, centered && dialogClass + \"-centered\", scrollable && dialogClass + \"-scrollable\")\n }), React.createElement(\"div\", {\n className: classNames(bsPrefix + \"-content\")\n }, children));\n});\nModalDialog.displayName = 'ModalDialog';\nexport default ModalDialog;","import createWithBsPrefix from './utils/createWithBsPrefix';\nexport default createWithBsPrefix('modal-footer');","import { useEffect, useRef } from 'react';\n/**\n * Creates a `Ref` whose value is updated in an effect, ensuring the most recent\n * value is the one rendered with. Generally only required for Concurrent mode usage\n * where previous work in `render()` may be discarded befor being used.\n *\n * This is safe to access in an event handler.\n *\n * @param value The `Ref` value\n */\n\nfunction useCommittedRef(value) {\n var ref = useRef(value);\n useEffect(function () {\n ref.current = value;\n }, [value]);\n return ref;\n}\n\nexport default useCommittedRef;","import { useCallback } from 'react';\nimport useCommittedRef from './useCommittedRef';\nexport default function useEventCallback(fn) {\n var ref = useCommittedRef(fn);\n return useCallback(function () {\n return ref.current && ref.current.apply(ref, arguments);\n }, [ref]);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\nvar propTypes = {\n label: PropTypes.string.isRequired,\n onClick: PropTypes.func\n};\nvar defaultProps = {\n label: 'Close'\n};\nvar CloseButton = React.forwardRef(function (_ref, ref) {\n var label = _ref.label,\n onClick = _ref.onClick,\n className = _ref.className,\n props = _objectWithoutPropertiesLoose(_ref, [\"label\", \"onClick\", \"className\"]);\n\n return React.createElement(\"button\", _extends({\n ref: ref,\n type: \"button\",\n className: classNames('close', className),\n onClick: onClick\n }, props), React.createElement(\"span\", {\n \"aria-hidden\": \"true\"\n }, \"\\xD7\"), React.createElement(\"span\", {\n className: \"sr-only\"\n }, label));\n});\nCloseButton.displayName = 'CloseButton';\nCloseButton.propTypes = propTypes;\nCloseButton.defaultProps = defaultProps;\nexport default CloseButton;","import React from 'react';\nvar ModalContext = React.createContext({\n onHide: function onHide() {}\n});\nexport default ModalContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport CloseButton from './CloseButton';\nimport ModalContext from './ModalContext';\nvar defaultProps = {\n closeLabel: 'Close',\n closeButton: false\n};\nvar ModalHeader = React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n closeLabel = _ref.closeLabel,\n closeButton = _ref.closeButton,\n onHide = _ref.onHide,\n className = _ref.className,\n children = _ref.children,\n props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"closeLabel\", \"closeButton\", \"onHide\", \"className\", \"children\"]);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'modal-header');\n var context = useContext(ModalContext);\n var handleClick = useEventCallback(function () {\n if (context) context.onHide();\n if (onHide) onHide();\n });\n return React.createElement(\"div\", _extends({\n ref: ref\n }, props, {\n className: classNames(className, bsPrefix)\n }), children, closeButton && React.createElement(CloseButton, {\n label: closeLabel,\n onClick: handleClick\n }));\n});\nModalHeader.displayName = 'ModalHeader';\nModalHeader.defaultProps = defaultProps;\nexport default ModalHeader;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React from 'react';\nimport classNames from 'classnames';\nexport default (function (className) {\n return React.forwardRef(function (p, ref) {\n return React.createElement(\"div\", _extends({}, p, {\n ref: ref,\n className: classNames(p.className, className)\n }));\n });\n});","import createWithBsPrefix from './utils/createWithBsPrefix';\nimport divWithClassName from './utils/divWithClassName';\nvar DivStyledAsH4 = divWithClassName('h4');\nexport default createWithBsPrefix('modal-title', {\n Component: DivStyledAsH4\n});","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport qsa from 'dom-helpers/query/querySelectorAll';\nimport css from 'dom-helpers/style';\nimport getScrollbarSize from 'dom-helpers/util/scrollbarSize';\nimport ModalManager from 'react-overlays/ModalManager';\nvar Selector = {\n FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',\n STICKY_CONTENT: '.sticky-top',\n NAVBAR_TOGGLER: '.navbar-toggler'\n};\n\nvar BootstrapModalManager =\n/*#__PURE__*/\nfunction (_ModalManager) {\n _inheritsLoose(BootstrapModalManager, _ModalManager);\n\n function BootstrapModalManager() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _ModalManager.call.apply(_ModalManager, [this].concat(args)) || this;\n\n _this.adjustAndStore = function (prop, element, adjust) {\n var actual = element.style[prop];\n element.dataset[prop] = actual;\n css(element, prop, parseFloat(css(element, prop)) + adjust + \"px\");\n };\n\n _this.restore = function (prop, element) {\n var value = element.dataset[prop];\n\n if (value !== undefined) {\n delete element.dataset[prop];\n css(element, prop, value);\n }\n };\n\n return _this;\n }\n\n var _proto = BootstrapModalManager.prototype;\n\n _proto.setContainerStyle = function setContainerStyle(containerState, container) {\n var _this2 = this;\n\n _ModalManager.prototype.setContainerStyle.call(this, containerState, container);\n\n if (!containerState.overflowing) return;\n var size = getScrollbarSize();\n qsa(container, Selector.FIXED_CONTENT).forEach(function (el) {\n return _this2.adjustAndStore('paddingRight', el, size);\n });\n qsa(container, Selector.STICKY_CONTENT).forEach(function (el) {\n return _this2.adjustAndStore('margingRight', el, -size);\n });\n qsa(container, Selector.NAVBAR_TOGGLER).forEach(function (el) {\n return _this2.adjustAndStore('margingRight', el, size);\n });\n };\n\n _proto.removeContainerStyle = function removeContainerStyle(containerState, container) {\n var _this3 = this;\n\n _ModalManager.prototype.removeContainerStyle.call(this, containerState, container);\n\n qsa(container, Selector.FIXED_CONTENT).forEach(function (el) {\n return _this3.restore('paddingRight', el);\n });\n qsa(container, Selector.STICKY_CONTENT).forEach(function (el) {\n return _this3.restore('margingRight', el);\n });\n qsa(container, Selector.NAVBAR_TOGGLER).forEach(function (el) {\n return _this3.restore('margingRight', el);\n });\n };\n\n return BootstrapModalManager;\n}(ModalManager);\n\nexport { BootstrapModalManager as default };","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport classNames from 'classnames';\nimport events from 'dom-helpers/events';\nimport ownerDocument from 'dom-helpers/ownerDocument';\nimport canUseDOM from 'dom-helpers/util/inDOM';\nimport getScrollbarSize from 'dom-helpers/util/scrollbarSize';\nimport React from 'react';\nimport BaseModal from 'react-overlays/Modal';\nimport Fade from './Fade';\nimport Body from './ModalBody';\nimport ModalDialog from './ModalDialog';\nimport Footer from './ModalFooter';\nimport Header from './ModalHeader';\nimport Title from './ModalTitle';\nimport BootstrapModalManager from './utils/BootstrapModalManager';\nimport { createBootstrapComponent } from './ThemeProvider';\nimport ModalContext from './ModalContext';\nvar defaultProps = {\n show: false,\n backdrop: true,\n keyboard: true,\n autoFocus: true,\n enforceFocus: true,\n restoreFocus: true,\n animation: true,\n dialogAs: ModalDialog,\n manager: new BootstrapModalManager()\n};\n/* eslint-disable no-use-before-define, react/no-multi-comp */\n\nfunction DialogTransition(props) {\n return React.createElement(Fade, props);\n}\n\nfunction BackdropTransition(props) {\n return React.createElement(Fade, props);\n}\n/* eslint-enable no-use-before-define */\n\n\nvar Modal =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Modal, _React$Component);\n\n function Modal() {\n var _this;\n\n for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n _args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(_args)) || this;\n _this.state = {\n style: {}\n };\n _this.modalContext = {\n onHide: function onHide() {\n return _this.props.onHide();\n }\n };\n\n _this.setModalRef = function (ref) {\n _this._modal = ref;\n };\n\n _this.handleDialogMouseDown = function () {\n _this._waitingForMouseUp = true;\n };\n\n _this.handleMouseUp = function (e) {\n if (_this._waitingForMouseUp && e.target === _this._modal.dialog) {\n _this._ignoreBackdropClick = true;\n }\n\n _this._waitingForMouseUp = false;\n };\n\n _this.handleClick = function (e) {\n if (_this._ignoreBackdropClick || e.target !== e.currentTarget) {\n _this._ignoreBackdropClick = false;\n return;\n }\n\n _this.props.onHide();\n };\n\n _this.handleEnter = function (node) {\n var _this$props;\n\n if (node) {\n node.style.display = 'block';\n\n _this.updateDialogStyle(node);\n }\n\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n if (_this.props.onEnter) (_this$props = _this.props).onEnter.apply(_this$props, [node].concat(args));\n };\n\n _this.handleEntering = function (node) {\n var _this$props2;\n\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n\n if (_this.props.onEntering) (_this$props2 = _this.props).onEntering.apply(_this$props2, [node].concat(args)); // FIXME: This should work even when animation is disabled.\n\n events.on(window, 'resize', _this.handleWindowResize);\n };\n\n _this.handleExited = function (node) {\n var _this$props3;\n\n if (node) node.style.display = ''; // RHL removes it sometimes\n\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n\n if (_this.props.onExited) (_this$props3 = _this.props).onExited.apply(_this$props3, args); // FIXME: This should work even when animation is disabled.\n\n events.off(window, 'resize', _this.handleWindowResize);\n };\n\n _this.handleWindowResize = function () {\n _this.updateDialogStyle(_this._modal.dialog);\n };\n\n _this.renderBackdrop = function (props) {\n var _this$props4 = _this.props,\n bsPrefix = _this$props4.bsPrefix,\n backdropClassName = _this$props4.backdropClassName;\n return React.createElement(\"div\", _extends({}, props, {\n className: classNames(bsPrefix + \"-backdrop\", backdropClassName)\n }));\n };\n\n return _this;\n }\n\n var _proto = Modal.prototype;\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n // Clean up the listener if we need to.\n events.off(window, 'resize', this.handleWindowResize);\n };\n\n _proto.updateDialogStyle = function updateDialogStyle(node) {\n if (!canUseDOM) return;\n var manager = this.props.manager;\n var containerIsOverflowing = manager.isContainerOverflowing(this._modal);\n var modalIsOverflowing = node.scrollHeight > ownerDocument(node).documentElement.clientHeight;\n this.setState({\n style: {\n paddingRight: containerIsOverflowing && !modalIsOverflowing ? getScrollbarSize() : undefined,\n paddingLeft: !containerIsOverflowing && modalIsOverflowing ? getScrollbarSize() : undefined\n }\n });\n };\n\n _proto.render = function render() {\n var _this$props5 = this.props,\n bsPrefix = _this$props5.bsPrefix,\n className = _this$props5.className,\n style = _this$props5.style,\n dialogClassName = _this$props5.dialogClassName,\n children = _this$props5.children,\n Dialog = _this$props5.dialogAs,\n show = _this$props5.show,\n animation = _this$props5.animation,\n backdrop = _this$props5.backdrop,\n keyboard = _this$props5.keyboard,\n manager = _this$props5.manager,\n onEscapeKeyDown = _this$props5.onEscapeKeyDown,\n onShow = _this$props5.onShow,\n onHide = _this$props5.onHide,\n container = _this$props5.container,\n autoFocus = _this$props5.autoFocus,\n enforceFocus = _this$props5.enforceFocus,\n restoreFocus = _this$props5.restoreFocus,\n onEntered = _this$props5.onEntered,\n onExit = _this$props5.onExit,\n onExiting = _this$props5.onExiting,\n _ = _this$props5.onExited,\n _1 = _this$props5.onEntering,\n _6 = _this$props5.onEnter,\n _4 = _this$props5.onEntering,\n _2 = _this$props5.backdropClassName,\n props = _objectWithoutPropertiesLoose(_this$props5, [\"bsPrefix\", \"className\", \"style\", \"dialogClassName\", \"children\", \"dialogAs\", \"show\", \"animation\", \"backdrop\", \"keyboard\", \"manager\", \"onEscapeKeyDown\", \"onShow\", \"onHide\", \"container\", \"autoFocus\", \"enforceFocus\", \"restoreFocus\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"onEntering\", \"onEnter\", \"onEntering\", \"backdropClassName\"]);\n\n var clickHandler = backdrop === true ? this.handleClick : null;\n\n var baseModalStyle = _extends({}, style, this.state.style); // Sets `display` always block when `animation` is false\n\n\n if (!animation) baseModalStyle.display = 'block';\n return React.createElement(ModalContext.Provider, {\n value: this.modalContext\n }, React.createElement(BaseModal, {\n show: show,\n backdrop: backdrop,\n container: container,\n keyboard: keyboard,\n autoFocus: autoFocus,\n enforceFocus: enforceFocus,\n restoreFocus: restoreFocus,\n onEscapeKeyDown: onEscapeKeyDown,\n onShow: onShow,\n onHide: onHide,\n onEntered: onEntered,\n onExit: onExit,\n onExiting: onExiting,\n manager: manager,\n ref: this.setModalRef,\n style: baseModalStyle,\n className: classNames(className, bsPrefix),\n containerClassName: bsPrefix + \"-open\",\n transition: animation ? DialogTransition : undefined,\n backdropTransition: animation ? BackdropTransition : undefined,\n renderBackdrop: this.renderBackdrop,\n onClick: clickHandler,\n onMouseUp: this.handleMouseUp,\n onEnter: this.handleEnter,\n onEntering: this.handleEntering,\n onExited: this.handleExited\n }, React.createElement(Dialog, _extends({}, props, {\n onMouseDown: this.handleDialogMouseDown,\n className: dialogClassName\n }), children)));\n };\n\n return Modal;\n}(React.Component);\n\nModal.defaultProps = defaultProps;\nvar DecoratedModal = createBootstrapComponent(Modal, 'modal');\nDecoratedModal.Body = Body;\nDecoratedModal.Header = Header;\nDecoratedModal.Title = Title;\nDecoratedModal.Footer = Footer;\nDecoratedModal.Dialog = ModalDialog;\nDecoratedModal.TRANSITION_DURATION = 300;\nDecoratedModal.BACKDROP_TRANSITION_DURATION = 150;\nexport default DecoratedModal;","\r\nimport React from 'react';\r\nimport autoBind from 'react-autobind';\r\nimport { Modal, Button } from 'react-bootstrap'\r\nimport { ReactTabulator } from 'react-tabulator'\r\n\r\nimport Log from '../../../Tools/LogTools'\r\nimport Notification from '../../../Tools/Notification'\r\n\r\nimport FileExplorerServices from '../../../Services/FileExplorerServices'\r\n\r\nimport FileExplorerControl from '../FileExplorer/FileExplorerControl.jsx'\r\n\r\n\r\nexport default class ExplorerActionsControl extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n autoBind(this);\r\n Log(\"ExplorerActionsControl\", \"start\")\r\n\r\n this.state = { ResultMsg: \"\", MoveWindowsShow: false }\r\n this.fileExplorerServices = new FileExplorerServices();\r\n }\r\n\r\n\r\n GetUserList() {\r\n\r\n }\r\n SaveUserList() {\r\n\r\n }\r\n\r\n\r\n OnDownloadClick(sender) {\r\n\r\n let selected = this.props.ParentComponent.refs.\r\n FileExplorerControl.GetSelectedID();\r\n\r\n selected.map((e) => {\r\n Log(\"ExplorerActionsControl\", \"OnDownload \" + e);\r\n\r\n this.fileExplorerServices.OpenDownload(e);\r\n });\r\n }\r\n\r\n OnDeleteClick(sender) {\r\n\r\n let selected = this.props.ParentComponent.refs.\r\n FileExplorerControl.GetSelectedID();\r\n let promises = selected.map((e) => {\r\n Log(\"ExplorerActionsControl\", \"OnDelete \" + e);\r\n return this.fileExplorerServices.DeleteAsync(e);\r\n });\r\n\r\n let Result = \"\";\r\n\r\n\r\n Promise.all(promises).then(function (data) {\r\n data.map(function (e) {\r\n Result += \"Succese: \" + e.Successe + \" ResultMsg:\" + e.ResMessage + \" | \";\r\n });\r\n\r\n Notification.MesOk(Result, 'Move');\r\n //this.setState({ ResultMsg: Result });\r\n this.props.\r\n ParentComponent.OnItemsChange();\r\n }.bind(this));\r\n\r\n }\r\n\r\n\r\n OnMoveClick(sender) {\r\n let selected = this.props.ParentComponent.refs.\r\n FileExplorerControl.GetSelectedID();\r\n\r\n if (selected.length == 0)\r\n return;\r\n\r\n this.selected = selected;\r\n\r\n this.setState({ MoveWindowsShow: true });\r\n }\r\n\r\n OnCreateDirectoryClick(sender) {\r\n //debugger;\r\n let dirname = this.refs.DirectoryName.value;\r\n let id = this.props.ParentComponent.GetID();\r\n\r\n let url = \"/Explorer/CreateDirectory?ParentID=\" + id\r\n + \"&Name=\" + dirname;\r\n\r\n this.fileExplorerServices.CreateDirectoryAsync(dirname, id).\r\n then(function (data) {\r\n this.props.ParentComponent.OnItemsChange();\r\n Notification.MesOk('Complete', 'CreateDir');\r\n }.bind(this));\r\n\r\n this.refs.DirectoryName.value = \"\";\r\n }\r\n\r\n\r\n OnMoveWindowCloseClick() {\r\n this.setState({ MoveWindowsShow: false });\r\n }\r\n\r\n GetID() {\r\n if (this.SelectedID != undefined)\r\n return this.SelectedID;\r\n\r\n return this.props.ParentComponent.GetID();\r\n }\r\n SetID(ID) {\r\n this.SelectedID = ID;\r\n }\r\n\r\n OnMoveWindowClick() {\r\n let promises = this.selected.map(function (e) {\r\n Log(\"ExplorerActionsControl\", \"OnMove \" + e);\r\n return this.fileExplorerServices.MoveAsync(e, this.SelectedID);\r\n }.bind(this));\r\n\r\n let Result = \"\";\r\n Promise.all(promises).then(function (data) {\r\n Result += \"Succese: \" + e.Successe + \" ResultMsg:\" + e.ResMessage + \" | \";\r\n\r\n //this.setState({ ResultMsg: Result });\r\n Notification.MesOk(Result, 'Move');\r\n this.props.\r\n ParentComponent.OnItemsChange();\r\n }.bind(this));\r\n\r\n this.setState({ MoveWindowsShow: false });\r\n }\r\n\r\n\r\n render() {\r\n\r\n return (\r\n <div>\r\n <p>ExplorerControlPanel</p>\r\n\r\n <p>\r\n <input ref=\"DirectoryName\" />\r\n <button onClick={this.OnCreateDirectoryClick}>CreateDirectory</button>\r\n </p>\r\n\r\n\r\n {this.state.ResultMsg != \"\"\r\n ? <p>{this.state.ResultMsg}</p>\r\n : \"\"\r\n }\r\n\r\n <table>\r\n <thead>\r\n <tr>\r\n <th><button onClick={this.OnDownloadClick}>Скачать</button></th>\r\n <th><button onClick={this.OnDeleteClick}>Удалить</button></th>\r\n <th><button onClick={this.OnMoveClick}>Переместить</button></th>\r\n </tr>\r\n </thead>\r\n </table>\r\n\r\n <Modal ref=\"Modal\"\r\n show={this.state.MoveWindowsShow}\r\n onHide={this.OnMoveWindowCloseClick}\r\n\r\n size=\"lg\"\r\n aria-labelledby=\"contained-modal-title-vcenter\"\r\n centered\r\n >\r\n <Modal.Header closeButton>\r\n <Modal.Title>Select destination directory</Modal.Title>\r\n </Modal.Header>\r\n <Modal.Body>\r\n <FileExplorerControl ref=\"FileExplorerControl\"\r\n ParentComponent={this}\r\n ShoSelect={false}\r\n />\r\n </Modal.Body>\r\n <Modal.Footer>\r\n <Button variant=\"secondary\" onClick={this.OnMoveWindowCloseClick}>\r\n Cansel\r\n </Button>\r\n <Button variant=\"primary\" onClick={this.OnMoveWindowClick}>\r\n Move to directory\r\n </Button>\r\n </Modal.Footer>\r\n </Modal>\r\n </div>\r\n );\r\n\r\n }\r\n}\r\n","\r\nimport ApiQuery from '../Tools/ApiQuery'\r\nimport Configuration from '../Tools/Configuration'\r\nimport Log from '../Tools/LogTools'\r\n\r\n\r\nexport default class UploadServices {\r\n\r\n constructor() {\r\n\r\n this.URL_Start = \"/api/UploadFiles/StartUpload\";\r\n this.URL_Upload = \"/api/UploadFiles/UploadBlob\";\r\n this.URL_Cansel = \"/api/UploadFiles/Cansel\";\r\n\r\n this.upload_chunk_size = Configuration.upload_chunk_size;\r\n this.ID = -1;\r\n\r\n this._ContinueDownload = false;\r\n\r\n this._file = null;\r\n this._ParentID = null;\r\n\r\n //Callback события\r\n //(number progresse)\r\n this.OnProggresseChange = null;\r\n //(number id)\r\n this.OnIDReceived = null;\r\n //(string Msg)\r\n this.OnError = null;\r\n }\r\n\r\n\r\n //Считывает часть файла\r\n //startByte - int позиция начала чтения\r\n //stopByte - int позиция окончания чтения\r\n async _ReadBlobAsync(startByte, stopByte) {\r\n\r\n return new Promise(function (resolve, reject) {\r\n //Считываем часть файла\r\n let blob = this._file.slice(startByte, stopByte);\r\n\r\n let reader = new FileReader();\r\n reader.onload = function () {\r\n resolve(reader.result);\r\n };\r\n reader.onerror = reject;\r\n\r\n reader.readAsDataURL(blob);\r\n }.bind(this));\r\n }\r\n\r\n //Сообщает серверу о начале загрузки файла, получает ID загрузки\r\n async _StartUploadAsync() {\r\n let res;\r\n\r\n await ApiQuery(this.URL_Start, \"Post\",\r\n {\r\n //ID папки\r\n ParentID: this._ParentID,\r\n //Имя файла\r\n Name: this._file.name,\r\n //Размеры\r\n Size: this._file.size\r\n }).then(function (data) {\r\n res = data;\r\n }.bind(this));\r\n\r\n return res;\r\n }\r\n\r\n //Выполняет загрузка блока\r\n async _UploadBlobAsync(bin_data, ChunkNumb) {\r\n\r\n Log(\"UploadServices\", \"_UploadBlobAsync\");\r\n\r\n if (!this._ContinueDownload)\r\n return { State: true };\r\n\r\n\r\n if (bin_data != '') {\r\n Log(\"UploadServices\", this.URL_Upload + ChunkNumb);\r\n\r\n let res;\r\n\r\n await ApiQuery(this.URL_Upload, \"Post\",\r\n {\r\n //ID загрузки\r\n ID: this.ID,\r\n //Кусок файла\r\n chunk: bin_data\r\n //Номер куска\r\n //'ChunkNumb': ChunkNumb\r\n }).then(function (data) {\r\n res = data;\r\n }.bind(this));\r\n\r\n return res;\r\n }\r\n }\r\n\r\n\r\n //Инициирует загрузку файла\r\n //parent_id - int ID папки для загрузки\r\n async UploadFileAsync(file, parent_id) {\r\n\r\n this._file = file;\r\n this._ParentID = parent_id;\r\n\r\n let start_info = await this._StartUploadAsync();\r\n if (!start_info.State) {\r\n if (this.OnError != null)\r\n this.OnError(start_info.Msg);\r\n return;\r\n }\r\n\r\n this._ContinueDownload = true;\r\n this.ID = start_info.ID;\r\n if (this.OnIDReceived != null)\r\n this.OnIDReceived(this.ID);\r\n\r\n for (let pos = 0, ChunkNumb = 0; pos < this._file.size; pos += this.upload_chunk_size, ChunkNumb++) {\r\n if (!this._ContinueDownload)\r\n return;\r\n\r\n let bin_data = await this._ReadBlobAsync(pos, pos + this.upload_chunk_size);\r\n let state = await this._UploadBlobAsync(bin_data, ChunkNumb);\r\n\r\n\r\n if (!state.State) {\r\n //alert('Загрузка прервана');\r\n\r\n if (this.OnError != null)\r\n this.OnError(state.Msg);\r\n return;\r\n }\r\n\r\n // Вычисляем процент отправленного\r\n let p = Math.round(pos * 100 / file.size);\r\n Log(\"UploadServices\", 'p = ' + p);\r\n\r\n if (this.OnProggresseChange != null)\r\n this.OnProggresseChange(p);\r\n }\r\n\r\n this._ContinueDownload = false;\r\n }\r\n\r\n Cansel() {\r\n this._ContinueDownload = false;\r\n\r\n //Костыль задержка, чтобы асинхронный загрузчик точно прервал работу\r\n //и не попытался получить доступ к ужаленному проекту загрузки\r\n //Возможно зависит от размера блока\r\n setTimeout(function () {\r\n\r\n ApiQuery(this.URL_Cansel, \"Post\",\r\n {\r\n //ID файла\r\n ID: this.ID,\r\n });\r\n\r\n }.bind(this),\r\n 500);\r\n }\r\n\r\n}\r\n","\r\nimport React from 'react';\r\nimport autoBind from 'react-autobind';\r\n\r\nimport Log from '../../../Tools/LogTools'\r\nimport Notification from '../../../Tools/Notification'\r\n\r\nimport UploadServices from '../../../Services/UploadServices'\r\n\r\n\r\nexport default class UploaderControl extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n autoBind(this);\r\n Log(\"UploaderControl\", \"start\"); \r\n\r\n //state 0 - выбор файла\r\n //state 1 - загрузка\r\n this.state = { progress: 0, ButtonUploadEnable: true, _state: 0, FileInfo: {}, ResultMsg: \"\" };\r\n\r\n\r\n this.uploadServices = new UploadServices();\r\n this.uploadServices.OnProggresseChange = this.OnProgresseChange;\r\n //this.uploadServices.OnIDReceived = null;\r\n this.uploadServices.OnError = this.OnError;\r\n }\r\n\r\n UploadClick() {\r\n\r\n let input = this.refs.file;\r\n let files = input.files;\r\n\r\n\r\n if (files.length == 0)\r\n return;\r\n let file = files[0];\r\n\r\n this.setState({ ButtonUploadEnable: false, _state: 1, FileInfo: { name: file.name, size: file.size } });\r\n\r\n this.uploadServices.UploadFileAsync(file, this.props.ParentComponent.GetID()).then(function () {\r\n Notification.MesOk('Complete','Upload');\r\n\r\n this.setState({ ButtonUploadEnable: true, _state: 0, FileInfo: {}, ResultMsg: \"\" });\r\n this.props.ParentComponent.OnItemsChange();\r\n input.value = \"\";\r\n }.bind(this));\r\n }\r\n\r\n CancelClick() {\r\n this.uploadServices.Cansel();\r\n this.setState({ ButtonUploadEnable: true, _state: 0, FileInfo: {} });\r\n }\r\n\r\n OnProgresseChange(Process) {\r\n this.setState({ progress: Process });\r\n }\r\n\r\n OnError(Msg) {\r\n this.setState({ progress: 0, ButtonUploadEnable: true, _state: 0, FileInfo: {}, ResultMsg: Msg });\r\n }\r\n\r\n\r\n\r\n render() {\r\n return (\r\n <div>\r\n <h2>Upload</h2>\r\n <p>\r\n <input ref=\"file\" type=\"file\" disabled={!this.state.ButtonUploadEnable} />\r\n <button disabled={!this.state.ButtonUploadEnable} onClick={this.UploadClick}>Upload</button>\r\n <button disabled={this.state.ButtonUploadEnable} onClick={this.CancelClick}>Cancel</button>\r\n </p>\r\n\r\n {this.state._state == 1\r\n ?\r\n <div>\r\n <p>Прогресс {this.state.progress} %</p>\r\n <p>Выполняется загрука файла:</p>\r\n <p>Имя файла: {this.state.FileInfo.name}</p>\r\n <p>Размеры файла: {this.state.FileInfo.size}</p>\r\n </div>\r\n : \"\"\r\n }\r\n\r\n {this.state.ResultMsg != \"\"\r\n ? <p>Результат: {this.state.ResultMsg}</p>\r\n : null\r\n }\r\n\r\n </div>\r\n );\r\n }\r\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar defaultProps = {\n role: 'toolbar'\n};\nvar ButtonToolbar = React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\"]);\n\n var prefix = useBootstrapPrefix(bsPrefix, 'btn-toolbar');\n return React.createElement(\"div\", _extends({}, props, {\n ref: ref,\n className: classNames(className, prefix)\n }));\n});\nButtonToolbar.displayName = 'ButtonToolbar';\nButtonToolbar.defaultProps = defaultProps;\nexport default ButtonToolbar;","\r\nimport React from 'react';\r\nimport autoBind from 'react-autobind';\r\nimport { ButtonToolbar, Button } from 'react-bootstrap'\r\n\r\nimport Log from '../../Tools/LogTools'\r\n\r\n\r\n\r\nexport default class BootstrapControl extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n autoBind(this);\r\n Log(\"BootstrapControl\", \"start\");\r\n }\r\n\r\n\r\n //PostTest() {\r\n // let test_url = \"/Test/Test\";\r\n \r\n // fetch(test_url,\r\n // {\r\n // method: \"Post\",\r\n // headers: {\r\n // 'Content-Type': 'application/json'\r\n // },\r\n // body: JSON.stringify({ id: 2, name: \"n\" })\r\n // });\r\n //}\r\n\r\n ToastifyTest() {\r\n\r\n this.Leght = (this.Leght == undefined ? 0 : this.Leght) + 500;\r\n\r\n //Notification.Sho(\"Test\");\r\n }\r\n\r\n render() {\r\n\r\n return (\r\n <div>\r\n <p>Bootstrap test</p>\r\n <ButtonToolbar>\r\n <Button onClick={this.ToastifyTest} variant=\"outline-primary\">Primary</Button>\r\n <Button variant=\"outline-secondary\">Secondary</Button>\r\n <Button variant=\"outline-success\">Success</Button>\r\n <Button variant=\"outline-warning\">Warning</Button>\r\n <Button variant=\"outline-danger\">Danger</Button>\r\n <Button variant=\"outline-info\">Info</Button>\r\n <Button variant=\"outline-light\">Light</Button>\r\n <Button variant=\"outline-dark\">Dark</Button>\r\n </ButtonToolbar>\r\n </div>\r\n );\r\n\r\n }\r\n}\r\n","\r\nimport React from 'react';\r\nimport autoBind from 'react-autobind';\r\n\r\nimport Log from '../../Tools/LogTools'\r\nimport Configuration from '../../Tools/Configuration'\r\n\r\nimport MenuControl from '../Controls/MenuControl.jsx'\r\nimport UserControl from '../Controls/UserControl.jsx'\r\nimport FileExplorerControl from '../Controls/FileExplorer/FileExplorerControl.jsx'\r\nimport ExplorerActionsControl from '../Controls/FileExplorer/ExplorerActionsControl.jsx'\r\nimport UploaderControl from '../Controls/FileExplorer/UploaderControl.jsx'\r\nimport BootstrapControl from '../Controls/BootstrapControl.jsx'\r\n\r\n\r\nexport default class FileExplorerPage extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n autoBind(this);\r\n Log(\"FileExplorerPage\", \"start\");\r\n\r\n //this.state = { counter: 0 };\r\n\r\n //Получить ID из url\r\n var Url_ID = new URL(window.location.href).\r\n searchParams.get(\"ID\");\r\n\r\n if (Url_ID != null)\r\n this.SetID(Url_ID);\r\n //if (this.props.match != undefined\r\n // && this.props.match.params != undefined\r\n // && this.props.match.params.ID != undefined)\r\n // this.SetID(this.props.match.params.ID);\r\n //Получить id от родительского компонента\r\n else\r\n this.SetID(-1);\r\n }\r\n\r\n\r\n OnAuthChange() {\r\n this.OnItemsChange();\r\n this.refs.MenuControl.OnAuthChange();\r\n }\r\n OnItemsChange() {\r\n this.refs.FileExplorerControl.\r\n LoadDirectory();\r\n }\r\n\r\n SetID(val) {\r\n this.CurrentID = val;\r\n Log(\"FileExplorerPage\", this.CurrentID);\r\n }\r\n\r\n GetID() {\r\n return this.CurrentID;\r\n }\r\n\r\n\r\n render() {\r\n return (\r\n <div>\r\n <hr />\r\n <MenuControl ref=\"MenuControl\"\r\n ParentComponent={this}\r\n />\r\n <hr />\r\n <UserControl ref=\"UserControl\"\r\n ParentComponent={this}\r\n />\r\n\r\n <hr />\r\n <FileExplorerControl ref=\"FileExplorerControl\"\r\n ParentComponent={this}\r\n ShoSelect={true}\r\n />\r\n <hr />\r\n {this.GetID() != Configuration.RooDirectoryID\r\n ?\r\n <div> \r\n <ExplorerActionsControl ref=\"ExplorerActionsControl\"\r\n ParentComponent={this}\r\n />\r\n <hr />\r\n <UploaderControl ref=\"UploaderControl\"\r\n ParentComponent={this}\r\n />\r\n <hr />\r\n </div>\r\n : \"\"\r\n }\r\n <BootstrapControl />\r\n <hr />\r\n\r\n </div>\r\n );\r\n }\r\n}\r\n\r\n","import invariant from 'invariant';\n\nvar noop = function noop() {};\n\nfunction readOnlyPropType(handler, name) {\n return function (props, propName) {\n if (props[propName] !== undefined) {\n if (!props[handler]) {\n return new Error(\"You have provided a `\" + propName + \"` prop to `\" + name + \"` \" + (\"without an `\" + handler + \"` handler prop. This will render a read-only field. \") + (\"If the field should be mutable use `\" + defaultKey(propName) + \"`. \") + (\"Otherwise, set `\" + handler + \"`.\"));\n }\n }\n };\n}\n\nexport function uncontrolledPropTypes(controlledValues, displayName) {\n var propTypes = {};\n Object.keys(controlledValues).forEach(function (prop) {\n // add default propTypes for folks that use runtime checks\n propTypes[defaultKey(prop)] = noop;\n\n if (process.env.NODE_ENV !== 'production') {\n var handler = controlledValues[prop];\n !(typeof handler === 'string' && handler.trim().length) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Uncontrollable - [%s]: the prop `%s` needs a valid handler key name in order to make it uncontrollable', displayName, prop) : invariant(false) : void 0;\n propTypes[prop] = readOnlyPropType(handler, displayName);\n }\n });\n return propTypes;\n}\nexport function isProp(props, prop) {\n return props[prop] !== undefined;\n}\nexport function defaultKey(key) {\n return 'default' + key.charAt(0).toUpperCase() + key.substr(1);\n}\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\nexport function canAcceptRef(component) {\n return !!component && (typeof component !== 'function' || component.prototype && component.prototype.isReactComponent);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\n\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\n\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n\nimport { useCallback, useState, useRef } from 'react';\nimport * as Utils from './utils';\nexport default function useUncontrolled(props, config) {\n return Object.keys(config).reduce(function (result, fieldName) {\n var _extends2;\n\n var defaultValue = result[Utils.defaultKey(fieldName)],\n propsValue = result[fieldName],\n rest = _objectWithoutPropertiesLoose(result, [Utils.defaultKey(fieldName), fieldName].map(_toPropertyKey));\n\n var handlerName = config[fieldName];\n var prevProps = useRef({});\n\n var _useState = useState(defaultValue),\n stateValue = _useState[0],\n setState = _useState[1];\n\n var isProp = Utils.isProp(props, fieldName);\n var wasProp = Utils.isProp(prevProps.current, fieldName);\n prevProps.current = props;\n /**\n * If a prop switches from controlled to Uncontrolled\n * reset its value to the defaultValue\n */\n\n if (!isProp && wasProp) {\n setState(defaultValue);\n }\n\n var propsHandler = props[handlerName];\n var handler = useCallback(function (value) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n if (propsHandler) propsHandler.apply(void 0, [value].concat(args));\n setState(value);\n }, [setState, propsHandler]);\n return _extends({}, rest, (_extends2 = {}, _extends2[fieldName] = isProp ? propsValue : stateValue, _extends2[handlerName] = handler, _extends2));\n }, props);\n}","import React from 'react';\nexport default React.createContext(null);","import React from 'react';\nexport default React.createContext(null);","import React from 'react';\nvar SelectableContext = React.createContext();\nexport var makeEventKey = function makeEventKey(eventKey, href) {\n if (eventKey != null) return String(eventKey);\n return href || null;\n};\nexport default SelectableContext;","import React from 'react';\nvar NavContext = React.createContext(null);\nexport default NavContext;","import React from 'react';\nvar TabContext = React.createContext(null);\nexport default TabContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport React from 'react';\nimport qsa from 'dom-helpers/query/querySelectorAll';\nimport mapContextToProps from '@restart/context/mapContextToProps';\nimport SelectableContext, { makeEventKey } from './SelectableContext';\nimport NavContext from './NavContext';\nimport TabContext from './TabContext';\n\nvar noop = function noop() {};\n\nvar AbstractNav =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(AbstractNav, _React$Component);\n\n function AbstractNav() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.state = {\n navContext: null\n };\n\n _this.handleSelect = function (key, event) {\n var _this$props = _this.props,\n onSelect = _this$props.onSelect,\n parentOnSelect = _this$props.parentOnSelect;\n if (key == null) return;\n if (onSelect) onSelect(key, event);\n if (parentOnSelect) parentOnSelect(key, event);\n };\n\n _this.handleKeyDown = function (event) {\n var onKeyDown = _this.props.onKeyDown;\n if (onKeyDown) onKeyDown(event);\n var nextActiveChild;\n\n switch (event.key) {\n case 'ArrowLeft':\n case 'ArrowUp':\n nextActiveChild = _this.getNextActiveChild(-1);\n break;\n\n case 'ArrowRight':\n case 'ArrowDown':\n nextActiveChild = _this.getNextActiveChild(1);\n break;\n\n default:\n return;\n }\n\n if (!nextActiveChild) return;\n event.preventDefault();\n\n _this.handleSelect(nextActiveChild.dataset.rbEventKey, event);\n\n _this._needsRefocus = true;\n };\n\n _this.attachRef = function (ref) {\n _this.listNode = ref;\n };\n\n return _this;\n }\n\n AbstractNav.getDerivedStateFromProps = function getDerivedStateFromProps(_ref) {\n var activeKey = _ref.activeKey,\n getControlledId = _ref.getControlledId,\n getControllerId = _ref.getControllerId,\n role = _ref.role;\n return {\n navContext: {\n role: role,\n // used by NavLink to determine it's role\n activeKey: makeEventKey(activeKey),\n getControlledId: getControlledId || noop,\n getControllerId: getControllerId || noop\n }\n };\n };\n\n var _proto = AbstractNav.prototype;\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n if (!this._needsRefocus || !this.listNode) return;\n var activeChild = this.listNode.querySelector('[data-rb-event-key].active');\n if (activeChild) activeChild.focus();\n };\n\n _proto.getNextActiveChild = function getNextActiveChild(offset) {\n if (!this.listNode) return null;\n var items = qsa(this.listNode, '[data-rb-event-key]:not(.disabled)');\n var activeChild = this.listNode.querySelector('.active');\n var index = items.indexOf(activeChild);\n if (index === -1) return null;\n var nextIndex = index + offset;\n if (nextIndex >= items.length) nextIndex = 0;\n if (nextIndex < 0) nextIndex = items.length - 1;\n return items[nextIndex];\n };\n\n _proto.render = function render() {\n var _this$props2 = this.props,\n _this$props2$as = _this$props2.as,\n Component = _this$props2$as === void 0 ? 'ul' : _this$props2$as,\n _ = _this$props2.onSelect,\n _0 = _this$props2.parentOnSelect,\n _1 = _this$props2.getControlledId,\n _2 = _this$props2.getControllerId,\n _3 = _this$props2.activeKey,\n props = _objectWithoutPropertiesLoose(_this$props2, [\"as\", \"onSelect\", \"parentOnSelect\", \"getControlledId\", \"getControllerId\", \"activeKey\"]);\n\n if (props.role === 'tablist') {\n props.onKeyDown = this.handleKeyDown;\n }\n\n return React.createElement(SelectableContext.Provider, {\n value: this.handleSelect\n }, React.createElement(NavContext.Provider, {\n value: this.state.navContext\n }, React.createElement(Component, _extends({}, props, {\n onKeyDown: this.handleKeyDown,\n ref: this.attachRef\n }))));\n };\n\n return AbstractNav;\n}(React.Component);\n\nexport default mapContextToProps([SelectableContext, TabContext], function (parentOnSelect, tabContext, _ref2) {\n var role = _ref2.role;\n if (!tabContext) return {\n parentOnSelect: parentOnSelect\n };\n var activeKey = tabContext.activeKey,\n getControllerId = tabContext.getControllerId,\n getControlledId = tabContext.getControlledId;\n return {\n activeKey: activeKey,\n parentOnSelect: parentOnSelect,\n role: role || 'tablist',\n // pass these two through to avoid having to listen to\n // both Tab and Nav contexts in NavLink\n getControllerId: getControllerId,\n getControlledId: getControlledId\n };\n}, AbstractNav);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar NavItem = React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\nfunction (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n children = _ref.children,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"children\", \"as\"]);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'nav-item');\n return React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames(className, bsPrefix)\n }), children);\n});\nNavItem.displayName = 'NavItem';\nexport default NavItem;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport NavContext from './NavContext';\nimport SelectableContext, { makeEventKey } from './SelectableContext';\nvar defaultProps = {\n disabled: false\n};\nvar AbstractNavItem = React.forwardRef(function (_ref, ref) {\n var active = _ref.active,\n className = _ref.className,\n tabIndex = _ref.tabIndex,\n eventKey = _ref.eventKey,\n onSelect = _ref.onSelect,\n onClick = _ref.onClick,\n Component = _ref.as,\n props = _objectWithoutPropertiesLoose(_ref, [\"active\", \"className\", \"tabIndex\", \"eventKey\", \"onSelect\", \"onClick\", \"as\"]);\n\n var navKey = makeEventKey(eventKey, props.href);\n var parentOnSelect = useContext(SelectableContext);\n var navContext = useContext(NavContext);\n var isActive = active;\n\n if (navContext) {\n if (!props.role && navContext.role === 'tablist') props.role = 'tab';\n props['data-rb-event-key'] = navKey;\n props.id = navContext.getControllerId(navKey);\n props['aria-controls'] = navContext.getControlledId(navKey);\n isActive = active == null && navKey != null ? navContext.activeKey === navKey : active;\n }\n\n if (props.role === 'tab') {\n props.tabIndex = isActive ? tabIndex : -1;\n props['aria-selected'] = isActive;\n }\n\n var handleOnclick = useEventCallback(function (e) {\n if (onClick) onClick(e);\n if (navKey == null) return;\n if (onSelect) onSelect(navKey, e);\n if (parentOnSelect) parentOnSelect(navKey, e);\n });\n return React.createElement(Component, _extends({}, props, {\n ref: ref,\n onClick: handleOnclick,\n className: classNames(className, isActive && 'active')\n }));\n});\nAbstractNavItem.defaultProps = defaultProps;\nexport default AbstractNavItem;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport SafeAnchor from './SafeAnchor';\nimport AbstractNavItem from './AbstractNavItem';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar defaultProps = {\n disabled: false,\n as: SafeAnchor\n};\nvar NavLink = React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n disabled = _ref.disabled,\n className = _ref.className,\n href = _ref.href,\n eventKey = _ref.eventKey,\n onSelect = _ref.onSelect,\n as = _ref.as,\n props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"disabled\", \"className\", \"href\", \"eventKey\", \"onSelect\", \"as\"]);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'nav-link');\n return React.createElement(AbstractNavItem, _extends({}, props, {\n href: href,\n ref: ref,\n eventKey: eventKey,\n as: as,\n disabled: disabled,\n onSelect: onSelect,\n className: classNames(className, bsPrefix, disabled && 'disabled')\n }));\n});\nNavLink.displayName = 'NavLink';\nNavLink.defaultProps = defaultProps;\nexport default NavLink;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport all from 'prop-types-extra/lib/all';\nimport React, { useContext } from 'react';\nimport { useUncontrolled } from 'uncontrollable';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport NavbarContext from './NavbarContext';\nimport CardContext from './CardContext';\nimport AbstractNav from './AbstractNav';\nimport NavItem from './NavItem';\nimport NavLink from './NavLink';\nvar defaultProps = {\n justify: false,\n fill: false\n};\nvar Nav = React.forwardRef(function (uncontrolledProps, ref) {\n var _classNames;\n\n var _useUncontrolled = useUncontrolled(uncontrolledProps, {\n activeKey: 'onSelect'\n }),\n _useUncontrolled$as = _useUncontrolled.as,\n as = _useUncontrolled$as === void 0 ? 'div' : _useUncontrolled$as,\n bsPrefix = _useUncontrolled.bsPrefix,\n variant = _useUncontrolled.variant,\n fill = _useUncontrolled.fill,\n justify = _useUncontrolled.justify,\n navbar = _useUncontrolled.navbar,\n className = _useUncontrolled.className,\n children = _useUncontrolled.children,\n activeKey = _useUncontrolled.activeKey,\n props = _objectWithoutPropertiesLoose(_useUncontrolled, [\"as\", \"bsPrefix\", \"variant\", \"fill\", \"justify\", \"navbar\", \"className\", \"children\", \"activeKey\"]);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'nav');\n var navbarBsPrefix, cardHeaderBsPrefix;\n var navbarContext = useContext(NavbarContext);\n var cardContext = useContext(CardContext);\n\n if (navbarContext) {\n navbarBsPrefix = navbarContext.bsPrefix;\n navbar = navbar == null ? true : navbar;\n } else if (cardContext) {\n cardHeaderBsPrefix = cardContext.cardHeaderBsPrefix;\n }\n\n return React.createElement(AbstractNav, _extends({\n as: as,\n ref: ref,\n activeKey: activeKey,\n className: classNames(className, (_classNames = {}, _classNames[bsPrefix] = !navbar, _classNames[navbarBsPrefix + \"-nav\"] = navbar, _classNames[cardHeaderBsPrefix + \"-\" + variant] = !!cardHeaderBsPrefix, _classNames[bsPrefix + \"-\" + variant] = !!variant, _classNames[bsPrefix + \"-fill\"] = fill, _classNames[bsPrefix + \"-justified\"] = justify, _classNames))\n }, props), children);\n});\nNav.displayName = 'Nav';\nNav.defaultProps = defaultProps;\nNav.Item = NavItem;\nNav.Link = NavLink;\nexport default Nav;","\r\nimport ApiQuery from '../Tools/ApiQuery'\r\n\r\n\r\nexport default class UserServices {\r\n\r\n constructor() {\r\n this.URL_GetUsers = \"api/User/GetUserList\";\r\n this.URL_SetUsers = \"api/User/SetUserList\";\r\n }\r\n\r\n\r\n async GetUsersAsync() {\r\n return await ApiQuery(this.URL_GetUsers, \"Post\")\r\n .then(function (data) {\r\n return data;\r\n });\r\n }\r\n\r\n async SetUsersAsync(users) {\r\n\r\n return await ApiQuery(this.URL_SetUsers, \"Post\", users)\r\n .then(function (data) {\r\n return data;\r\n }.bind(this));\r\n }\r\n\r\n}\r\n","\r\nimport React from 'react';\r\nimport autoBind from 'react-autobind';\r\nimport { ReactTabulator } from 'react-tabulator'\r\nimport { Modal, Button } from 'react-bootstrap'\r\n\r\nimport Log from '../../../Tools/LogTools'\r\nimport Notification from '../../../Tools/Notification'\r\n\r\nimport UserServices from '../../../Services/UserServices'\r\n\r\nexport default class UserListControl extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n autoBind(this);\r\n Log(\"UserListControl\", \"start\");\r\n\r\n this.state = {\r\n Users: [],\r\n ShoGroups: false,\r\n //Заглушка\r\n UserGroups: {\r\n ID: -1,\r\n Name: \"\",\r\n Password: \"\",\r\n Active: false,\r\n Changes: -1, \r\n Groups: [{ \r\n ID: -11,\r\n Name: \"\",\r\n EnterInGroup: false\r\n }]\r\n }\r\n };\r\n\r\n this.userServices = new UserServices();\r\n //AutodecrementID\r\n this.ID = -1;\r\n\r\n this.columns = [\r\n { title: \"ID\", field: \"ID\" },\r\n { title: \"Name\", field: \"Name\", editor: \"input\" },\r\n { title: \"Password\", field: \"Password\", editor: \"input\" },\r\n { title: \"Active\", field: \"Active\", editor: \"tick\" },\r\n\r\n { title: \"Groups\", formatter: this.ButtonFormatter, align: \"center\", cellClick: this.OnGroupsClick },\r\n { title: \"Delete\", formatter: this.ButtonFormatter, align: \"center\", cellClick: this.DeleteUserClick },\r\n ];\r\n\r\n this.columns_groups = [\r\n { title: \"ID\", field: \"ID\" },\r\n { title: \"Name\", field: \"Name\" },\r\n { title: \"EnterInGroup\", field: \"EnterInGroup\", editor: \"tick\" },\r\n ];\r\n\r\n this.DownloadUsers();\r\n }\r\n\r\n DownloadUsers() {\r\n this.userServices.GetUsersAsync().\r\n then(function (data) {\r\n let users = data.Users;\r\n this.Groups = data.Groups;\r\n this.setState({ Users: users });\r\n }.bind(this));\r\n }\r\n UploadUsers() { \r\n this.userServices.SetUsersAsync(this.state.Users).\r\n then(function (data) {\r\n if (data.Successe)\r\n Notification.MesOk(data.ResMessage, \"Save\");\r\n else\r\n Notification.MesEr(data.ResMessage, \"Save\");\r\n\r\n this.DownloadUsers();\r\n }.bind(this));\r\n }\r\n\r\n //custom formatter definition\r\n ButtonFormatter(cell, formatterParams, onRendered) { //plain text value\r\n return \"<i class='fa fa-print'><button>Action</button></i>\";\r\n };\r\n\r\n OnCellChange(cell) {\r\n let users = this.state.Users;\r\n\r\n let row = cell.getRow();\r\n let ID = row._row.data.ID;\r\n\r\n var data_row = users.filter(e => e.ID === ID)[0];\r\n\r\n //Если NoChange то Update\r\n if (data_row.Changes === 0)\r\n data_row.Changes = 1;\r\n }\r\n\r\n OnCellChange_Groups(cell) {\r\n\r\n //Если NoChange то Update\r\n if (this.state.UserGroups.Changes === 0)\r\n this.state.UserGroups.Changes = 1;\r\n }\r\n\r\n UpdateClick() {\r\n this.DownloadUsers();\r\n }\r\n\r\n\r\n CreateUserCick() {\r\n let new_user = {\r\n ID: this.ID,\r\n Name: \"NewUser\" + this.ID,\r\n Password: \"QWERTY\",\r\n Active: true,\r\n Changes: 2, //Create\r\n\r\n Groups: this.Groups.map((e) => {\r\n return {\r\n ID: e.ID,\r\n Name: e.Name,\r\n EnterInGroup: (e.Name == \"Пользователи\") ? true : false\r\n };\r\n })\r\n };\r\n this.ID--;\r\n\r\n let users = this.state.Users;\r\n users.push(new_user);\r\n\r\n this.setState({ Users: users });\r\n }\r\n\r\n DeleteUserClick(e, cell) {\r\n //let table = this.refs.table.table;\r\n let row = cell.getRow();\r\n let ID = row._row.data.ID;\r\n\r\n let users = this.state.Users;\r\n\r\n let user = users.filter(e => e.ID === ID)[0];\r\n\r\n if (user.Changes === 2) {\r\n users.splice(users.findIndex(e => e.ID === ID), 1);\r\n }\r\n else {\r\n user.Changes = 3;\r\n }\r\n\r\n this.setState({ Users: users });\r\n }\r\n\r\n OnGroupsClick(e, cell) {\r\n let row = cell.getRow();\r\n let ID = row._row.data.ID;\r\n\r\n let users = this.state.Users;\r\n\r\n let user = users.filter(e => e.ID === ID)[0];\r\n\r\n this.setState({ ShoGroups: true, UserGroups: user });\r\n }\r\n OnGroupsClose() {\r\n this.setState({ ShoGroups: false });\r\n } \r\n\r\n render() {\r\n return (\r\n <div>\r\n <button onClick={this.CreateUserCick}>CreateUser</button>\r\n <button onClick={this.DownloadUsers}>Update(Изменения будут утеряны)</button>\r\n <button onClick={this.UploadUsers}>SaveChanges</button>\r\n\r\n\r\n <ReactTabulator ref=\"table\"\r\n data={this.state.Users.filter(e => e.Changes != 3)}\r\n columns={this.columns}\r\n tooltips={true}\r\n layout={\"fitData\"}\r\n\r\n cellEdited={this.OnCellChange}\r\n />\r\n\r\n <Modal ref=\"Modal\"\r\n show={this.state.ShoGroups}\r\n onHide={this.OnGroupsClose}\r\n\r\n size=\"lg\"\r\n aria-labelledby=\"contained-modal-title-vcenter\"\r\n centered\r\n >\r\n <Modal.Header closeButton>\r\n <Modal.Title>User Groups: {this.state.UserGroups.ID + \" \" + this.state.UserGroups.Name}</Modal.Title>\r\n </Modal.Header>\r\n <Modal.Body>\r\n <ReactTabulator ref=\"table_UserGroups\"\r\n data={this.state.UserGroups.Groups}\r\n columns={this.columns_groups}\r\n tooltips={true}\r\n layout={\"fitData\"}\r\n\r\n cellEdited={this.OnCellChange_Groups}\r\n />\r\n </Modal.Body>\r\n <Modal.Footer>\r\n <Button variant=\"secondary\" onClick={this.OnGroupsClose}>\r\n Close\r\n </Button>\r\n </Modal.Footer>\r\n </Modal>\r\n\r\n </div>\r\n );\r\n }\r\n}\r\n\r\n","\r\nimport React from 'react';\r\nimport autoBind from 'react-autobind';\r\nimport { Nav } from 'react-bootstrap'\r\n\r\nimport Log from '../../Tools/LogTools'\r\n\r\nimport AuthServices from '../../Services/AuthServices'\r\n\r\nimport MenuControl from '../Controls/MenuControl.jsx'\r\nimport UserListControl from '../Controls/Admin/UserListControl.jsx'\r\n\r\n\r\nexport default class AdministratorPage extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n autoBind(this);\r\n Log(\"AdministratorPage\", \"start\");\r\n\r\n this.state = { ActiveWindows: 0 };\r\n this.authServices = new AuthServices();\r\n }\r\n\r\n OnAuthChange() {\r\n this.refs.MenuControl.OnAuthChange();\r\n }\r\n\r\n OnUsersClick() {\r\n this.setState({ ActiveWindows: 0 });\r\n }\r\n OnGroupsClick() {\r\n this.setState({ ActiveWindows: 1 });\r\n }\r\n\r\n\r\n render() {\r\n return (\r\n <div>\r\n <hr />\r\n <MenuControl ref=\"MenuControl\"\r\n ParentComponent={this}\r\n />\r\n <hr />\r\n {this.authServices.IsAuth()\r\n ?\r\n <div>\r\n <Nav variant=\"tabs\">\r\n <Nav.Item>\r\n <Nav.Link onClick={this.OnUsersClick}>Users</Nav.Link>\r\n </Nav.Item>\r\n <Nav.Item>\r\n <Nav.Link onClick={this.OnGroupsClick}> Groups</Nav.Link>\r\n </Nav.Item>\r\n </Nav>\r\n\r\n {this.state.ActiveWindows == 0\r\n ?\r\n <div>\r\n <UserListControl ref=\"UserListControl\" />\r\n </div>\r\n :\r\n <div>\r\n GroupsWindow\r\n </div>\r\n }\r\n </div>\r\n : <p>Вы не авторизованы</p>\r\n }\r\n\r\n </div>\r\n );\r\n }\r\n}\r\n\r\n","\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { BrowserRouter as Router, Route, Switch } from 'react-router-dom';\r\n\r\nimport Log from '../Tools/LogTools'\r\n\r\nimport FileExplorerPage from './Pages/FileExplorerPage.jsx'\r\nimport AdministratorPage from './Pages/AdministratorPage.jsx' \r\n\r\n\r\nexport default class RouteSystem extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n Log(\"RouteSystem\", \"start\");\r\n\r\n }\r\n\r\n render() {\r\n return (\r\n <Router>\r\n <Switch>\r\n <Route ref=\"CurrentPage\" exact path=\"/\" component={FileExplorerPage} />\r\n <Route ref=\"CurrentPage\" exact path=\"/App\" component={FileExplorerPage} />\r\n <Route ref=\"CurrentPage\" exact path=\"/index.html\" component={FileExplorerPage} />\r\n <Route ref=\"CurrentPage\" path=\"/?ID=:ID\" component={FileExplorerPage} />\r\n <Route ref=\"CurrentPage\" path=\"/Admin\" component={AdministratorPage} />\r\n </Switch>\r\n </Router>\r\n );\r\n }\r\n}\r\n\r\nReactDOM.render(\r\n <RouteSystem />,\r\n document.getElementById(\"App\")\r\n)\r\n\r\n","\r\nimport './React/RouteSystem.jsx'\r\n\r\nconsole.log(\"index.js\");\r\n"],"sourceRoot":""}
\ No newline at end of file
FileServer/Web/Web.csproj.user 2(+1 -1)
diff --git a/FileServer/Web/Web.csproj.user b/FileServer/Web/Web.csproj.user
index 6927e1b..c3826ca 100644
--- a/FileServer/Web/Web.csproj.user
+++ b/FileServer/Web/Web.csproj.user
@@ -8,7 +8,7 @@
<IISExpressWindowsAuthentication />
<IISExpressUseClassicPipelineMode />
<UseGlobalApplicationHostFile />
- <LastActiveSolutionConfig>Debug|Any CPU</LastActiveSolutionConfig>
+ <LastActiveSolutionConfig>Release|Any CPU</LastActiveSolutionConfig>
<Controller_SelectedScaffolderID>ApiControllerEmptyScaffolder</Controller_SelectedScaffolderID>
<Controller_SelectedScaffolderCategoryPath>root/Controller</Controller_SelectedScaffolderCategoryPath>
<WebStackScaffolding_ControllerDialogWidth>600</WebStackScaffolding_ControllerDialogWidth>