├── LICENSE ├── README.md ├── config └── project-scratch-def.json ├── force-app ├── example │ └── default │ │ └── lwc │ │ ├── .eslintrc.json │ │ ├── actions │ │ ├── actions.js │ │ └── actions.js-meta.xml │ │ ├── addTodo │ │ ├── addTodo.html │ │ ├── addTodo.js │ │ └── addTodo.js-meta.xml │ │ ├── filterLink │ │ ├── filterLink.html │ │ ├── filterLink.js │ │ └── filterLink.js-meta.xml │ │ ├── jsconfig.json │ │ ├── reducers │ │ ├── reducers.js │ │ ├── reducers.js-meta.xml │ │ ├── todos.js │ │ └── visibilityFilter.js │ │ ├── todoApp │ │ ├── todoApp.html │ │ ├── todoApp.js │ │ └── todoApp.js-meta.xml │ │ ├── todoFooter │ │ ├── todoFooter.html │ │ ├── todoFooter.js │ │ └── todoFooter.js-meta.xml │ │ ├── todoItem │ │ ├── todoItem.css │ │ ├── todoItem.html │ │ ├── todoItem.js │ │ └── todoItem.js-meta.xml │ │ └── todoList │ │ ├── todoList.html │ │ ├── todoList.js │ │ └── todoList.js-meta.xml └── main │ └── default │ ├── lwc │ ├── .eslintrc.json │ ├── connect │ │ ├── connect.js │ │ └── connect.js-meta.xml │ ├── constants │ │ ├── constants.js │ │ └── constants.js-meta.xml │ ├── jsconfig.json │ ├── provider │ │ ├── provider.html │ │ ├── provider.js │ │ └── provider.js-meta.xml │ ├── reselect │ │ ├── reselect.js │ │ └── reselect.js-meta.xml │ └── utils │ │ ├── utils.js │ │ └── utils.js-meta.xml │ └── staticresources │ ├── lodash.js │ ├── lodash.resource-meta.xml │ ├── redux.js │ ├── redux.resource-meta.xml │ ├── reduxThunk.js │ └── reduxThunk.resource-meta.xml ├── salesforcedx.yaml ├── sfdx-project.json └── sfdx.yml /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2019 Sam Khan 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in all 11 | copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19 | SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | # LWC Redux 3 | [Redux](https://redux.js.org/introduction/getting-started) bindings for Salesforces' propreteray [Lightning Web Components (LWC)](https://developer.salesforce.com/blogs/2018/12/introducing-lightning-web-components.html) framework. This project aims to bring predictable state management to apps written with LWC that live on Salesforce. 4 | 5 | NOTE: This project is still in very early stages and is likely to go through significant changes in design based on decisions and feedback from usage in more complex applications than the one provided in the example 6 | 7 | ## Installation 8 | Just click on the deploy button below. 9 | 10 | [![Deploy](https://deploy-to-sfdx.com/dist/assets/images/DeployToSFDX.svg)](https://deploy-to-sfdx.com) 11 | 12 | Alternately you can just go into the `force-app/main` folder and copy the static resources and components you need. The provider component and the connect module are necessary along with the redux and reduxThunk static resources. 13 | 14 | ## Documentation 15 | 16 | The library provides two key modules. The connect module to manage the store interaction logic and the provider component to wrap the application with. If you've used [React Redux](https://react-redux.js.org/) most of this will seem familiar to you. It's worth taking a look at the documentation for React Redux since the first two arguments to connect(), `mapStateToAttributes` and `mapDispatchToAttributes` mimics the behavior of their corresponding analogues `mapStateToProps` and `mapDispatchToProps` in React Redux. 17 | 18 | However, there are key differences between how React and LWC works and consequently, the connect and provider modules in this project work and behave very differently from those in React Redux. 19 | 20 | ### Provider 21 | In React Redux, the Provider component takes in the store as a prop and houses it there. It then allows any nested component to have access to it through the connect function. 22 | 23 | The Provider component in this project works differently. First, it loads the redux and redux thunk static resources and then calls redux methods to generate the store and makes it available to any component by making global stores. It does this by creating a field called `reduxStores` on the global window object and puts the created store there keyed by the name of the store (the name of the default store is 'redux'). This enables you to create multiple stores (although you probably shouldn't do that unless you have very good reasons to do so). 24 | 25 | For multiple apps to access the same store, each app needs to be wrapped in a provider component. Of these, only one can be a primary provider (this is the one that will create the store and hence will require the `reducers` attribute to be passsed in) while the rest are secondary (marked using the `secondary` flag). The secondary providers do not create a store. Rather they look for a global store that the primary provider generates and once the store is found, it renders that app it houses. This is done through polling. 26 | 27 | Because the stores are global they can be accessed from anywhere but you should only access them through the use of the connect module (Nothing is going to stop you from doing otherwise, of course. But then, nothing stops you from making mutations to the redux state either). 28 | 29 | This decision to house the redux store on the global window object may seem like a bad practise; however, sice LWC doesn't have an equivalent of React's [Context Api](https://reactjs.org/docs/context.html), this is the only way to make the state available to the children, and grandchildren, of the Provider component without having to pass it down each level. Passing the state down multiple levels becomes extremely cumbersome in parctice as the app grows large. 30 | 31 | Also the reason I've decided to place the store creation logic in the Provider component is that generally you only do this once on an app and third party libraries are loaded asynchrounously in salesforce through static resources. You can, of course, change the behaviour of this as you see fit or decide to do away with the provider component completely. You can just load up the Redux libabry and create a global store on one of your components and then just use the connect function in this library to access it. 32 | 33 | NOTE: This is also the part of the library that might go through the greatest amount of change in the coming days as I may decide there are better, more intuitive ways of doing this. 34 | 35 | ##### Provider Attributes 36 | `store-name` - Name of the redux store (defaults to 'redux') 37 | 38 | `reducers` - A [reducing function](https://redux.js.org/glossary#reducer) that returns the next state tree or a map of reducer names and their corresponding reducing functions (if such a map is used, be sure to set the `use-combine-reducers` flag as the reducers will need to be combined using the combineReducers method on Redux) 39 | 40 | `initial-state` - The initial state that you may optionally specify to preload the state 41 | 42 | `secondary` - flag to indicate if the provider is secondary. If secondary, all the provider does is wait till it finds a store that's been generated by a primary (non secondary) provider, and then renders its children. 43 | 44 | `use-combine-reducers` - flag to indicate if combineReducers need to be used 45 | 46 | `use-thunk` - flag to indicate if [thunk](https://github.com/reduxjs/redux-thunk) middleware should be used 47 | 48 | `use-logger` - flag to indicate if alogger middleware is to be used (currently the logger middelware is a simple one I've included in the library that just prints out the action dispatched and the resulting state from that action on the console) 49 | 50 | ##### Example Usage 51 | Primary provider 52 | ```html 53 | 54 | 55 | 56 | ``` 57 | Secondary provider (here, c-app-two uses the same store as c-app) 58 | ```html 59 | 60 | 61 | 62 | ``` 63 | 64 | ### Connect() 65 | 66 | The connect() function connects a React component to a Redux store. It provides its connected component with the pieces of the data it needs from the store, and the functions it can use to dispatch actions to the store. In this way it is similar to the connect() function in React Redux. However it differs inthe following way. 67 | 68 | In React Redux, connect() does not modify the component class passed to it; instead, it returns a new, connected component class that wraps the component you passed in. It does this by using a pattern called [higher-order components](https://reactjs.org/docs/higher-order-components.html), which emerges from React's compositional nature. I have not found any way to replicate this behaviour in LWC when hosted inside salesforce (there is no documentation on dynamically creating or passing attributes to components). Hence the connect() function returns a function that takes in the component that needs to be connected and **modifies** the component in question. 69 | 70 | Also, the connect() assumes that by the time it's invoked, the redux library and the store have been instantiated on the window object. This means that it should be called from a component nested inside the provider component. That way the provider component would have made the global variables availabe for any of it children components that want to connect to the redux store. The ideal place to call it is from the connectedCallback() function of the [LWC component lifecycle hooks](https://developer.salesforce.com/docs/component-library/documentation/lwc/lwc.reference_lifecycle_hooks) which is called when the element is inserted into a document and this hook flows from parent to child. 71 | 72 | ##### Connect() Parameters 73 | 74 | `mapStateToAttributes` - a function that takes in the state and returns a map of the selected state keyed by names of the attributes they will be attached to in the component 75 | 76 | `mapDispatchToAttributes` - a function that takes dispatch and returns a map of actions keyed by names of the attributes they will be attached to in the component 77 | 78 | `storeName` - the name of the store to connect to (defaults to redux) 79 | 80 | *Connect returns a function that takes in the component that is to be connected* 81 | 82 | NOTE: I'll be adding more functionality and therefore potentially more arguments to the connect() function in the coming days. Also I plan to do some performance optimizations once I start thoroughly testing lwc-redux in production. 83 | 84 | ##### Example usage 85 | ```javascript 86 | import { LightningElement, api, track } from 'lwc'; 87 | import { connect } from 'c/connect' 88 | import { setVisibilityFilter } from 'c/actions' 89 | 90 | const mapStateToProps = (state, ownProps) => ({ 91 | variant: ownProps.filter === state.visibilityFilter ? 'brand' : 'neutral' 92 | }) 93 | 94 | const mapDispatchToProps = (dispatch, ownProps) => ({ 95 | handleClick: () => dispatch(setVisibilityFilter(ownProps.filter)) 96 | }) 97 | 98 | export default class TodoFooter extends LightningElement { 99 | @track variant 100 | @api label; 101 | @api filter; 102 | 103 | connectedCallback() { 104 | connect(mapStateToProps, mapDispatchToProps)(this); 105 | } 106 | } 107 | ``` 108 | 109 | Check out the `force-app/examples` folder for more examples. 110 | -------------------------------------------------------------------------------- /config/project-scratch-def.json: -------------------------------------------------------------------------------- 1 | { 2 | "orgName": "SameedHK Company", 3 | "edition": "Developer", 4 | "orgPreferences" : { 5 | "enabled": ["S1DesktopEnabled"] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /force-app/example/default/lwc/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@salesforce/eslint-config-lwc/recommended" 3 | } -------------------------------------------------------------------------------- /force-app/example/default/lwc/actions/actions.js: -------------------------------------------------------------------------------- 1 | let nextTodoId = 0 2 | 3 | export const addTodo = text => { 4 | return { 5 | type: 'ADD_TODO', 6 | id: nextTodoId++, 7 | text 8 | } 9 | } 10 | 11 | export const setVisibilityFilter = filter => ({ 12 | type: 'SET_VISIBILITY_FILTER', 13 | filter 14 | }) 15 | 16 | export const toggleTodo = id => ({ 17 | type: 'TOGGLE_TODO', 18 | id 19 | }) 20 | 21 | export const VisibilityFilters = { 22 | SHOW_ALL: 'SHOW_ALL', 23 | SHOW_COMPLETED: 'SHOW_COMPLETED', 24 | SHOW_ACTIVE: 'SHOW_ACTIVE' 25 | } -------------------------------------------------------------------------------- /force-app/example/default/lwc/actions/actions.js-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 45.0 4 | false 5 | -------------------------------------------------------------------------------- /force-app/example/default/lwc/addTodo/addTodo.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /force-app/example/default/lwc/addTodo/addTodo.js: -------------------------------------------------------------------------------- 1 | import { LightningElement, track } from 'lwc'; 2 | import { addTodo } from 'c/actions'; 3 | import { connect } from 'c/connect'; 4 | 5 | const mapDispatchToProps = { 6 | addTodo 7 | } 8 | 9 | export default class AddTodo extends LightningElement { 10 | @track newTodo; 11 | 12 | connectedCallback() { 13 | connect(undefined, mapDispatchToProps)(this); 14 | } 15 | 16 | addTodoHandler = () => { 17 | this.addTodo(this.newTodo); 18 | this.newTodo = ''; 19 | } 20 | 21 | changeHandler(event) { 22 | this.newTodo = event.target.value; 23 | } 24 | } 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /force-app/example/default/lwc/addTodo/addTodo.js-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 45.0 4 | false 5 | -------------------------------------------------------------------------------- /force-app/example/default/lwc/filterLink/filterLink.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /force-app/example/default/lwc/filterLink/filterLink.js: -------------------------------------------------------------------------------- 1 | import { LightningElement, api, track } from 'lwc'; 2 | import { connect } from 'c/connect' 3 | import { setVisibilityFilter } from 'c/actions' 4 | 5 | const mapStateToProps = (state, ownProps) => ({ 6 | variant: ownProps.filter === state.visibilityFilter ? 'brand' : 'neutral' 7 | }) 8 | 9 | const mapDispatchToProps = (dispatch, ownProps) => ({ 10 | handleClick: () => dispatch(setVisibilityFilter(ownProps.filter)) 11 | }) 12 | 13 | export default class TodoFooter extends LightningElement { 14 | @track variant 15 | @api label; 16 | @api filter; 17 | 18 | connectedCallback() { 19 | connect(mapStateToProps, mapDispatchToProps)(this); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /force-app/example/default/lwc/filterLink/filterLink.js-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 45.0 4 | false 5 | -------------------------------------------------------------------------------- /force-app/example/default/lwc/jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "experimentalDecorators": true, 4 | "baseUrl": ".", 5 | "paths": { 6 | "c/actions": [ 7 | "actions/actions.js" 8 | ], 9 | "c/add-todo": [ 10 | "addTodo/addTodo.js" 11 | ], 12 | "c/filter-link": [ 13 | "filterLink/filterLink.js" 14 | ], 15 | "c/reducers": [ 16 | "reducers/reducers.js" 17 | ], 18 | "c/todo-app": [ 19 | "todoApp/todoApp.js" 20 | ], 21 | "c/todo-footer": [ 22 | "todoFooter/todoFooter.js" 23 | ], 24 | "c/todo-item": [ 25 | "todoItem/todoItem.js" 26 | ], 27 | "c/todo-list": [ 28 | "todoList/todoList.js" 29 | ], 30 | "c/connect": [ 31 | "../../../main/default/lwc/connect/connect.js" 32 | ], 33 | "c/logger": [ 34 | "../../../main/default/lwc/logger/logger.js" 35 | ], 36 | "c/provider": [ 37 | "../../../main/default/lwc/provider/provider.js" 38 | ], 39 | "c/reselect": [ 40 | "../../../main/default/lwc/reselect/reselect.js" 41 | ] 42 | } 43 | }, 44 | "include": [ 45 | "**/*", 46 | "../../../../.sfdx/typings/lwc/**/*.d.ts", 47 | "../../../.sfdx/typings/lwc/**/*.d.ts" 48 | ] 49 | } -------------------------------------------------------------------------------- /force-app/example/default/lwc/reducers/reducers.js: -------------------------------------------------------------------------------- 1 | import todos from './todos' 2 | import visibilityFilter from './visibilityFilter' 3 | 4 | export default { 5 | todos, 6 | visibilityFilter 7 | } -------------------------------------------------------------------------------- /force-app/example/default/lwc/reducers/reducers.js-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 45.0 4 | false 5 | -------------------------------------------------------------------------------- /force-app/example/default/lwc/reducers/todos.js: -------------------------------------------------------------------------------- 1 | const todos = (state = [], action) => { 2 | switch (action.type) { 3 | case 'ADD_TODO': 4 | return [ 5 | { 6 | id: action.id, 7 | text: action.text, 8 | completed: false 9 | }, 10 | ...state 11 | ] 12 | case 'TOGGLE_TODO': 13 | return state.map((todo) => { 14 | if (todo.id === action.id) { 15 | return Object.assign({}, todo, { 16 | completed: true 17 | }) 18 | } 19 | return todo 20 | }) 21 | default: 22 | return state 23 | } 24 | } 25 | 26 | export default todos -------------------------------------------------------------------------------- /force-app/example/default/lwc/reducers/visibilityFilter.js: -------------------------------------------------------------------------------- 1 | import { VisibilityFilters } from 'c/actions' 2 | 3 | const visibilityFilter = (state = VisibilityFilters.SHOW_ALL, action) => { 4 | switch (action.type) { 5 | case 'SET_VISIBILITY_FILTER': 6 | return action.filter 7 | default: 8 | return state 9 | } 10 | } 11 | 12 | export default visibilityFilter -------------------------------------------------------------------------------- /force-app/example/default/lwc/todoApp/todoApp.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /force-app/example/default/lwc/todoApp/todoApp.js: -------------------------------------------------------------------------------- 1 | import { LightningElement } from 'lwc'; 2 | import reducers from 'c/reducers'; 3 | 4 | export default class TodoApp extends LightningElement { 5 | reducers = reducers; 6 | } 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /force-app/example/default/lwc/todoApp/todoApp.js-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 45.0 4 | true 5 | 6 | lightning__AppPage 7 | lightning__RecordPage 8 | lightning__HomePage 9 | 10 | -------------------------------------------------------------------------------- /force-app/example/default/lwc/todoFooter/todoFooter.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /force-app/example/default/lwc/todoFooter/todoFooter.js: -------------------------------------------------------------------------------- 1 | import { LightningElement } from 'lwc'; 2 | import { VisibilityFilters } from 'c/actions'; 3 | 4 | export default class TodoFooter extends LightningElement { 5 | visibilityFilters = VisibilityFilters; 6 | } 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /force-app/example/default/lwc/todoFooter/todoFooter.js-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 45.0 4 | false 5 | -------------------------------------------------------------------------------- /force-app/example/default/lwc/todoItem/todoItem.css: -------------------------------------------------------------------------------- 1 | .strikeThrough { 2 | text-decoration: line-through; 3 | } -------------------------------------------------------------------------------- /force-app/example/default/lwc/todoItem/todoItem.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /force-app/example/default/lwc/todoItem/todoItem.js: -------------------------------------------------------------------------------- 1 | import { LightningElement, api, track} from 'lwc'; 2 | import { connect } from 'c/connect'; 3 | import { toggleTodo } from 'c/actions' 4 | 5 | 6 | const mapDispatchToProps = dispatch => ({ 7 | toggleTodo: id => dispatch(toggleTodo(id)) 8 | }) 9 | 10 | export default class TodoItem extends LightningElement { 11 | @api item 12 | 13 | get styleClass() { 14 | return this.item.completed ? 'strikeThrough' : '' 15 | } 16 | 17 | connectedCallback() { 18 | connect(null, mapDispatchToProps)(this); 19 | } 20 | 21 | handleClick() { 22 | this.toggleTodo(this.item.id); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /force-app/example/default/lwc/todoItem/todoItem.js-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 45.0 4 | false 5 | -------------------------------------------------------------------------------- /force-app/example/default/lwc/todoList/todoList.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /force-app/example/default/lwc/todoList/todoList.js: -------------------------------------------------------------------------------- 1 | import { LightningElement, track } from 'lwc'; 2 | import { connect } from 'c/connect'; 3 | import { VisibilityFilters } from 'c/actions' 4 | 5 | const getVisibleTodos = (todos, filter) => { 6 | switch (filter) { 7 | case VisibilityFilters.SHOW_ALL: 8 | return todos 9 | case VisibilityFilters.SHOW_COMPLETED: 10 | return todos.filter(t => t.completed) 11 | case VisibilityFilters.SHOW_ACTIVE: 12 | return todos.filter(t => !t.completed) 13 | default: 14 | throw new Error('Unknown filter: ' + filter) 15 | } 16 | } 17 | 18 | const mapStateToProps = state => ({ 19 | todos: getVisibleTodos(state.todos, state.visibilityFilter) 20 | }) 21 | 22 | 23 | export default class TodoList extends LightningElement { 24 | @track todos; 25 | connectedCallback() { 26 | connect(mapStateToProps)(this); 27 | } 28 | } 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /force-app/example/default/lwc/todoList/todoList.js-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 45.0 4 | false 5 | -------------------------------------------------------------------------------- /force-app/main/default/lwc/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@salesforce/eslint-config-lwc/recommended" 3 | } -------------------------------------------------------------------------------- /force-app/main/default/lwc/connect/connect.js: -------------------------------------------------------------------------------- 1 | import { DEFAULT_STORE_NAME } from 'c/constants'; 2 | 3 | export const connect = (mapStateToAttributes, mapDispatchToAttributes, storeName = DEFAULT_STORE_NAME) => (component) => { 4 | const { getState, subscribe, dispatch } = window.reduxStores[storeName]; 5 | const { bindActionCreators } = window.Redux; 6 | 7 | if(!! mapStateToAttributes) { 8 | const handleStateChanges = () => { 9 | const state = getState(); 10 | const attributeMap = mapStateToAttributes(state, component); 11 | Object.entries(attributeMap).forEach(([key, value]) => { 12 | component[key] = value; 13 | }); 14 | } 15 | 16 | handleStateChanges(); 17 | component.unsubscribe = subscribe(handleStateChanges); 18 | } 19 | if (!! mapDispatchToAttributes) { 20 | const attributeDispatchMap = typeof mapDispatchToAttributes === 'function' 21 | ? mapDispatchToAttributes(dispatch, component) 22 | : bindActionCreators(mapDispatchToAttributes, dispatch); 23 | 24 | Object.entries(attributeDispatchMap).forEach(([key, value]) => { 25 | component[key] = value; 26 | }); 27 | } 28 | } -------------------------------------------------------------------------------- /force-app/main/default/lwc/connect/connect.js-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 45.0 4 | false 5 | -------------------------------------------------------------------------------- /force-app/main/default/lwc/constants/constants.js: -------------------------------------------------------------------------------- 1 | export const DEFAULT_STORE_NAME = 'redux'; -------------------------------------------------------------------------------- /force-app/main/default/lwc/constants/constants.js-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 45.0 4 | false 5 | -------------------------------------------------------------------------------- /force-app/main/default/lwc/jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "experimentalDecorators": true, 4 | "baseUrl": ".", 5 | "paths": { 6 | "c/actions": [ 7 | "../../../example/default/lwc/actions/actions.js" 8 | ], 9 | "c/add-todo": [ 10 | "../../../example/default/lwc/addTodo/addTodo.js" 11 | ], 12 | "c/filter-link": [ 13 | "../../../example/default/lwc/filterLink/filterLink.js" 14 | ], 15 | "c/reducers": [ 16 | "../../../example/default/lwc/reducers/reducers.js" 17 | ], 18 | "c/todo-app": [ 19 | "../../../example/default/lwc/todoApp/todoApp.js" 20 | ], 21 | "c/todo-footer": [ 22 | "../../../example/default/lwc/todoFooter/todoFooter.js" 23 | ], 24 | "c/todo-item": [ 25 | "../../../example/default/lwc/todoItem/todoItem.js" 26 | ], 27 | "c/todo-list": [ 28 | "../../../example/default/lwc/todoList/todoList.js" 29 | ], 30 | "c/connect": [ 31 | "connect/connect.js" 32 | ], 33 | "c/logger": [ 34 | "logger/logger.js" 35 | ], 36 | "c/provider": [ 37 | "provider/provider.js" 38 | ], 39 | "c/reselect": [ 40 | "reselect/reselect.js" 41 | ] 42 | } 43 | }, 44 | "include": [ 45 | "**/*", 46 | "../../../../.sfdx/typings/lwc/**/*.d.ts" 47 | ] 48 | } -------------------------------------------------------------------------------- /force-app/main/default/lwc/provider/provider.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /force-app/main/default/lwc/provider/provider.js: -------------------------------------------------------------------------------- 1 | import { LightningElement, track, api } from 'lwc'; 2 | import { loadScript } from 'lightning/platformResourceLoader'; 3 | 4 | import reduxResourceURL from '@salesforce/resourceUrl/redux'; 5 | import reduxThunkResourceURL from '@salesforce/resourceUrl/reduxThunk'; 6 | import lodashResourceURL from '@salesforce/resourceUrl/lodash'; 7 | 8 | import { createLoggerMiddleware, poll } from 'c/utils' 9 | import { DEFAULT_STORE_NAME } from 'c/constants' 10 | 11 | export default class Provider extends LightningElement { 12 | @track resourceLoaded = false; 13 | 14 | @api storeName = DEFAULT_STORE_NAME; 15 | @api secondary = false; 16 | @api reducers; 17 | @api initialState = {}; 18 | @api useCombineReducers = false; 19 | @api useThunk = false; 20 | @api useLogger = false; 21 | 22 | async connectedCallback() { 23 | const { 24 | storeName, 25 | reducers, 26 | initialState, 27 | useCombineReducers, 28 | useThunk, 29 | useLogger, 30 | secondary, 31 | } = this; 32 | 33 | if (secondary) { 34 | try { 35 | await poll(() => (window.reduxStores && window.reduxStores[this.storeName])); 36 | this.resourceLoaded = true; 37 | return; 38 | } catch (ex) { 39 | console.log(ex); 40 | return; 41 | } 42 | } 43 | 44 | await Promise.all([ 45 | loadScript(this, reduxResourceURL), 46 | loadScript(this, reduxThunkResourceURL), 47 | loadScript(this, lodashResourceURL), 48 | ]); 49 | 50 | const { 51 | createStore, 52 | applyMiddleware, 53 | combineReducers 54 | } = window.Redux; 55 | 56 | const ReduxThunk = window.ReduxThunk.default; 57 | const logger = createLoggerMiddleware(storeName); 58 | const rootReducer = useCombineReducers ? combineReducers(reducers) : reducers; 59 | 60 | let enhancer; 61 | if (useThunk && useLogger) { 62 | enhancer = applyMiddleware(ReduxThunk, logger) 63 | } else if (useThunk) { 64 | enhancer = applyMiddleware(ReduxThunk); 65 | } else if (useLogger) { 66 | enhancer = applyMiddleware(logger); 67 | } 68 | 69 | window.reduxStores = window.reduxStores || {}; 70 | const store = createStore(rootReducer, initialState, enhancer); 71 | 72 | if (window.reduxStores[storeName] === undefined) { 73 | window.reduxStores[storeName] = store; 74 | } else { 75 | console.error(`You may be trying to use the same redux store from multiple apps/providers. To do so you need to make one of the providers primary (by passing in the 'reducers' attribute) and the rest of the providers secondary (by passing in the 'secondary' attribute). Alternately, you can use multple stores for multiple apps under different namesapces by passing in the 'storeName' attribute to provider and connect()`); 76 | } 77 | 78 | this.resourceLoaded = true; 79 | } 80 | 81 | } -------------------------------------------------------------------------------- /force-app/main/default/lwc/provider/provider.js-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 45.0 4 | false 5 | -------------------------------------------------------------------------------- /force-app/main/default/lwc/reselect/reselect.js: -------------------------------------------------------------------------------- 1 | // RESELECT - Simple “selector” library for Redux 2 | // FROM: https://github.com/reduxjs/reselect 3 | // 13/02/2019 4 | 5 | function defaultEqualityCheck(a, b) { 6 | return a === b 7 | } 8 | 9 | function areArgumentsShallowlyEqual(equalityCheck, prev, next) { 10 | if (prev === null || next === null || prev.length !== next.length) { 11 | return false 12 | } 13 | 14 | // Do this in a for loop (and not a `forEach` or an `every`) so we can determine equality as fast as possible. 15 | const length = prev.length 16 | for (let i = 0; i < length; i++) { 17 | if (!equalityCheck(prev[i], next[i])) { 18 | return false 19 | } 20 | } 21 | 22 | return true 23 | } 24 | 25 | export function defaultMemoize(func, equalityCheck = defaultEqualityCheck) { 26 | let lastArgs = null 27 | let lastResult = null 28 | // we reference arguments instead of spreading them for performance reasons 29 | return function () { 30 | if (!areArgumentsShallowlyEqual(equalityCheck, lastArgs, arguments)) { 31 | // apply arguments instead of spreading for performance. 32 | lastResult = func.apply(null, arguments) 33 | } 34 | 35 | lastArgs = arguments 36 | return lastResult 37 | } 38 | } 39 | 40 | function getDependencies(funcs) { 41 | const dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs 42 | 43 | if (!dependencies.every(dep => typeof dep === 'function')) { 44 | const dependencyTypes = dependencies.map( 45 | dep => typeof dep 46 | ).join(', ') 47 | throw new Error( 48 | 'Selector creators expect all input-selectors to be functions, ' + 49 | `instead received the following types: [${dependencyTypes}]` 50 | ) 51 | } 52 | 53 | return dependencies 54 | } 55 | 56 | export function createSelectorCreator(memoize, ...memoizeOptions) { 57 | return (...funcs) => { 58 | let recomputations = 0 59 | const resultFunc = funcs.pop() 60 | const dependencies = getDependencies(funcs) 61 | 62 | const memoizedResultFunc = memoize( 63 | function () { 64 | recomputations++ 65 | // apply arguments instead of spreading for performance. 66 | return resultFunc.apply(null, arguments) 67 | }, 68 | ...memoizeOptions 69 | ) 70 | 71 | // If a selector is called with the exact same arguments we don't need to traverse our dependencies again. 72 | const selector = memoize(function () { 73 | const params = [] 74 | const length = dependencies.length 75 | 76 | for (let i = 0; i < length; i++) { 77 | // apply arguments instead of spreading and mutate a local list of params for performance. 78 | params.push(dependencies[i].apply(null, arguments)) 79 | } 80 | 81 | // apply arguments instead of spreading for performance. 82 | return memoizedResultFunc.apply(null, params) 83 | }) 84 | 85 | selector.resultFunc = resultFunc 86 | selector.dependencies = dependencies 87 | selector.recomputations = () => recomputations 88 | selector.resetRecomputations = () => recomputations = 0 89 | return selector 90 | } 91 | } 92 | 93 | export const createSelector = createSelectorCreator(defaultMemoize) 94 | 95 | export function createStructuredSelector(selectors, selectorCreator = createSelector) { 96 | if (typeof selectors !== 'object') { 97 | throw new Error( 98 | 'createStructuredSelector expects first argument to be an object ' + 99 | `where each property is a selector, instead received a ${typeof selectors}` 100 | ) 101 | } 102 | const objectKeys = Object.keys(selectors) 103 | return selectorCreator( 104 | objectKeys.map(key => selectors[key]), 105 | (...values) => { 106 | return values.reduce((composition, value, index) => { 107 | composition[objectKeys[index]] = value 108 | return composition 109 | }, {}) 110 | } 111 | ) 112 | } -------------------------------------------------------------------------------- /force-app/main/default/lwc/reselect/reselect.js-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 45.0 4 | false 5 | -------------------------------------------------------------------------------- /force-app/main/default/lwc/utils/utils.js: -------------------------------------------------------------------------------- 1 | import { DEFAULT_STORE_NAME } from 'c/constants' 2 | 3 | export function createLoggerMiddleware(storeName = DEFAULT_STORE_NAME) { 4 | return ({ getState }) => next => action => { 5 | console.group(`${action.type}%c(${storeName})`, 'font-style: italic'); 6 | console.info('dispatching', action); 7 | const result = next(action); 8 | console.log('%c next state', 'color:green', getState()); 9 | console.groupEnd(); 10 | return result; 11 | }; 12 | } 13 | 14 | export const delay = (ms) => { 15 | return new Promise(resolve => setTimeout(resolve, ms)); 16 | }; 17 | 18 | export const poll = (fn, timeout = 2000, interval = 100) => { 19 | const endTime = Number(new Date()) + timeout; 20 | const checkCondition = (resolve, reject) => { 21 | const result = fn(); 22 | if (result) { 23 | resolve(result); 24 | clearTimeout(checkCondition); 25 | } else if (Number(new Date()) < endTime) { 26 | setTimeout(checkCondition, interval, resolve, reject); 27 | } else { 28 | reject(new Error('timed out for ' + fn + ': ' + arguments)); 29 | } 30 | }; 31 | return new Promise(checkCondition); 32 | } -------------------------------------------------------------------------------- /force-app/main/default/lwc/utils/utils.js-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 45.0 4 | false 5 | -------------------------------------------------------------------------------- /force-app/main/default/staticresources/lodash.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Lodash lodash.com/license | Underscore.js 1.8.3 underscorejs.org/LICENSE 4 | */ 5 | ; (function () { 6 | function n(n, t, r) { switch (r.length) { case 0: return n.call(t); case 1: return n.call(t, r[0]); case 2: return n.call(t, r[0], r[1]); case 3: return n.call(t, r[0], r[1], r[2]) }return n.apply(t, r) } function t(n, t, r, e) { for (var u = -1, i = null == n ? 0 : n.length; ++u < i;) { var o = n[u]; t(e, o, r(o), n) } return e } function r(n, t) { for (var r = -1, e = null == n ? 0 : n.length; ++r < e && false !== t(n[r], r, n);); return n } function e(n, t) { for (var r = null == n ? 0 : n.length; r-- && false !== t(n[r], r, n);); return n } function u(n, t) { 7 | for (var r = -1, e = null == n ? 0 : n.length; ++r < e;)if (!t(n[r], r, n)) return false; 8 | return true 9 | } function i(n, t) { for (var r = -1, e = null == n ? 0 : n.length, u = 0, i = []; ++r < e;) { var o = n[r]; t(o, r, n) && (i[u++] = o) } return i } function o(n, t) { return !(null == n || !n.length) && -1 < v(n, t, 0) } function f(n, t, r) { for (var e = -1, u = null == n ? 0 : n.length; ++e < u;)if (r(t, n[e])) return true; return false } function c(n, t) { for (var r = -1, e = null == n ? 0 : n.length, u = Array(e); ++r < e;)u[r] = t(n[r], r, n); return u } function a(n, t) { for (var r = -1, e = t.length, u = n.length; ++r < e;)n[u + r] = t[r]; return n } function l(n, t, r, e) { 10 | var u = -1, i = null == n ? 0 : n.length; for (e && i && (r = n[++u]); ++u < i;)r = t(r, n[u], u, n); 11 | return r 12 | } function s(n, t, r, e) { var u = null == n ? 0 : n.length; for (e && u && (r = n[--u]); u--;)r = t(r, n[u], u, n); return r } function h(n, t) { for (var r = -1, e = null == n ? 0 : n.length; ++r < e;)if (t(n[r], r, n)) return true; return false } function p(n, t, r) { var e; return r(n, function (n, r, u) { if (t(n, r, u)) return e = r, false }), e } function _(n, t, r, e) { var u = n.length; for (r += e ? 1 : -1; e ? r-- : ++r < u;)if (t(n[r], r, n)) return r; return -1 } function v(n, t, r) { if (t === t) n: { --r; for (var e = n.length; ++r < e;)if (n[r] === t) { n = r; break n } n = -1 } else n = _(n, d, r); return n } function g(n, t, r, e) { 13 | --r; for (var u = n.length; ++r < u;)if (e(n[r], t)) return r; return -1 14 | } function d(n) { return n !== n } function y(n, t) { var r = null == n ? 0 : n.length; return r ? m(n, t) / r : F } function b(n) { return function (t) { return null == t ? T : t[n] } } function x(n) { return function (t) { return null == n ? T : n[t] } } function j(n, t, r, e, u) { return u(n, function (n, u, i) { r = e ? (e = false, n) : t(r, n, u, i) }), r } function w(n, t) { var r = n.length; for (n.sort(t); r--;)n[r] = n[r].c; return n } function m(n, t) { 15 | for (var r, e = -1, u = n.length; ++e < u;) { var i = t(n[e]); i !== T && (r = r === T ? i : r + i) } return r; 16 | } function A(n, t) { for (var r = -1, e = Array(n); ++r < n;)e[r] = t(r); return e } function E(n, t) { return c(t, function (t) { return [t, n[t]] }) } function k(n) { return function (t) { return n(t) } } function S(n, t) { return c(t, function (t) { return n[t] }) } function O(n, t) { return n.has(t) } function I(n, t) { for (var r = -1, e = n.length; ++r < e && -1 < v(t, n[r], 0);); return r } function R(n, t) { for (var r = n.length; r-- && -1 < v(t, n[r], 0);); return r } function z(n) { return "\\" + Un[n] } function W(n) { 17 | var t = -1, r = Array(n.size); return n.forEach(function (n, e) { 18 | r[++t] = [e, n]; 19 | }), r 20 | } function B(n, t) { return function (r) { return n(t(r)) } } function L(n, t) { for (var r = -1, e = n.length, u = 0, i = []; ++r < e;) { var o = n[r]; o !== t && "__lodash_placeholder__" !== o || (n[r] = "__lodash_placeholder__", i[u++] = r) } return i } function U(n) { var t = -1, r = Array(n.size); return n.forEach(function (n) { r[++t] = n }), r } function C(n) { var t = -1, r = Array(n.size); return n.forEach(function (n) { r[++t] = [n, n] }), r } function D(n) { if (Rn.test(n)) { for (var t = On.lastIndex = 0; On.test(n);)++t; n = t } else n = Qn(n); return n } function M(n) { 21 | return Rn.test(n) ? n.match(On) || [] : n.split(""); 22 | } var T, $ = 1 / 0, F = NaN, N = [["ary", 128], ["bind", 1], ["bindKey", 2], ["curry", 8], ["curryRight", 16], ["flip", 512], ["partial", 32], ["partialRight", 64], ["rearg", 256]], P = /\b__p\+='';/g, Z = /\b(__p\+=)''\+/g, q = /(__e\(.*?\)|\b__t\))\+'';/g, V = /&(?:amp|lt|gt|quot|#39);/g, K = /[&<>"']/g, G = RegExp(V.source), H = RegExp(K.source), J = /<%-([\s\S]+?)%>/g, Y = /<%([\s\S]+?)%>/g, Q = /<%=([\s\S]+?)%>/g, X = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, nn = /^\w*$/, tn = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g, rn = /[\\^$.*+?()[\]{}|]/g, en = RegExp(rn.source), un = /^\s+|\s+$/g, on = /^\s+/, fn = /\s+$/, cn = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/, an = /\{\n\/\* \[wrapped with (.+)\] \*/, ln = /,? & /, sn = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g, hn = /\\(\\)?/g, pn = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g, _n = /\w*$/, vn = /^[-+]0x[0-9a-f]+$/i, gn = /^0b[01]+$/i, dn = /^\[object .+?Constructor\]$/, yn = /^0o[0-7]+$/i, bn = /^(?:0|[1-9]\d*)$/, xn = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g, jn = /($^)/, wn = /['\n\r\u2028\u2029\\]/g, mn = "[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?(?:\\u200d(?:[^\\ud800-\\udfff]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?)*", An = "(?:[\\u2700-\\u27bf]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])" + mn, En = "(?:[^\\ud800-\\udfff][\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]?|[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff])", kn = RegExp("['\u2019]", "g"), Sn = RegExp("[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]", "g"), On = RegExp("\\ud83c[\\udffb-\\udfff](?=\\ud83c[\\udffb-\\udfff])|" + En + mn, "g"), In = RegExp(["[A-Z\\xc0-\\xd6\\xd8-\\xde]?[a-z\\xdf-\\xf6\\xf8-\\xff]+(?:['\u2019](?:d|ll|m|re|s|t|ve))?(?=[\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000]|[A-Z\\xc0-\\xd6\\xd8-\\xde]|$)|(?:[A-Z\\xc0-\\xd6\\xd8-\\xde]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['\u2019](?:D|LL|M|RE|S|T|VE))?(?=[\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000]|[A-Z\\xc0-\\xd6\\xd8-\\xde](?:[a-z\\xdf-\\xf6\\xf8-\\xff]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])|$)|[A-Z\\xc0-\\xd6\\xd8-\\xde]?(?:[a-z\\xdf-\\xf6\\xf8-\\xff]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['\u2019](?:d|ll|m|re|s|t|ve))?|[A-Z\\xc0-\\xd6\\xd8-\\xde]+(?:['\u2019](?:D|LL|M|RE|S|T|VE))?|\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])|\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])|\\d+", An].join("|"), "g"), Rn = RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]"), zn = /[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/, Wn = "Array Buffer DataView Date Error Float32Array Float64Array Function Int8Array Int16Array Int32Array Map Math Object Promise RegExp Set String Symbol TypeError Uint8Array Uint8ClampedArray Uint16Array Uint32Array WeakMap _ clearTimeout isFinite parseInt setTimeout".split(" "), Bn = {}; 23 | Bn["[object Float32Array]"] = Bn["[object Float64Array]"] = Bn["[object Int8Array]"] = Bn["[object Int16Array]"] = Bn["[object Int32Array]"] = Bn["[object Uint8Array]"] = Bn["[object Uint8ClampedArray]"] = Bn["[object Uint16Array]"] = Bn["[object Uint32Array]"] = true, Bn["[object Arguments]"] = Bn["[object Array]"] = Bn["[object ArrayBuffer]"] = Bn["[object Boolean]"] = Bn["[object DataView]"] = Bn["[object Date]"] = Bn["[object Error]"] = Bn["[object Function]"] = Bn["[object Map]"] = Bn["[object Number]"] = Bn["[object Object]"] = Bn["[object RegExp]"] = Bn["[object Set]"] = Bn["[object String]"] = Bn["[object WeakMap]"] = false; 24 | var Ln = {}; Ln["[object Arguments]"] = Ln["[object Array]"] = Ln["[object ArrayBuffer]"] = Ln["[object DataView]"] = Ln["[object Boolean]"] = Ln["[object Date]"] = Ln["[object Float32Array]"] = Ln["[object Float64Array]"] = Ln["[object Int8Array]"] = Ln["[object Int16Array]"] = Ln["[object Int32Array]"] = Ln["[object Map]"] = Ln["[object Number]"] = Ln["[object Object]"] = Ln["[object RegExp]"] = Ln["[object Set]"] = Ln["[object String]"] = Ln["[object Symbol]"] = Ln["[object Uint8Array]"] = Ln["[object Uint8ClampedArray]"] = Ln["[object Uint16Array]"] = Ln["[object Uint32Array]"] = true, 25 | Ln["[object Error]"] = Ln["[object Function]"] = Ln["[object WeakMap]"] = false; var Un = { "\\": "\\", "'": "'", "\n": "n", "\r": "r", "\u2028": "u2028", "\u2029": "u2029" }, Cn = parseFloat, Dn = parseInt, Mn = typeof global == "object" && global && global.Object === Object && global, Tn = typeof self == "object" && self && self.Object === Object && self, $n = Mn || Tn || Function("return this")(), Fn = typeof exports == "object" && exports && !exports.nodeType && exports, Nn = Fn && typeof module == "object" && module && !module.nodeType && module, Pn = Nn && Nn.exports === Fn, Zn = Pn && Mn.process, qn = function () { 26 | try { var n = Nn && Nn.f && Nn.f("util").types; return n ? n : Zn && Zn.binding && Zn.binding("util") } catch (n) { } 27 | }(), Vn = qn && qn.isArrayBuffer, Kn = qn && qn.isDate, Gn = qn && qn.isMap, Hn = qn && qn.isRegExp, Jn = qn && qn.isSet, Yn = qn && qn.isTypedArray, Qn = b("length"), Xn = x({ 28 | "\xc0": "A", "\xc1": "A", "\xc2": "A", "\xc3": "A", "\xc4": "A", "\xc5": "A", "\xe0": "a", "\xe1": "a", "\xe2": "a", "\xe3": "a", "\xe4": "a", "\xe5": "a", "\xc7": "C", "\xe7": "c", "\xd0": "D", "\xf0": "d", "\xc8": "E", "\xc9": "E", "\xca": "E", "\xcb": "E", "\xe8": "e", "\xe9": "e", "\xea": "e", "\xeb": "e", "\xcc": "I", 29 | "\xcd": "I", "\xce": "I", "\xcf": "I", "\xec": "i", "\xed": "i", "\xee": "i", "\xef": "i", "\xd1": "N", "\xf1": "n", "\xd2": "O", "\xd3": "O", "\xd4": "O", "\xd5": "O", "\xd6": "O", "\xd8": "O", "\xf2": "o", "\xf3": "o", "\xf4": "o", "\xf5": "o", "\xf6": "o", "\xf8": "o", "\xd9": "U", "\xda": "U", "\xdb": "U", "\xdc": "U", "\xf9": "u", "\xfa": "u", "\xfb": "u", "\xfc": "u", "\xdd": "Y", "\xfd": "y", "\xff": "y", "\xc6": "Ae", "\xe6": "ae", "\xde": "Th", "\xfe": "th", "\xdf": "ss", "\u0100": "A", "\u0102": "A", "\u0104": "A", "\u0101": "a", "\u0103": "a", "\u0105": "a", "\u0106": "C", 30 | "\u0108": "C", "\u010a": "C", "\u010c": "C", "\u0107": "c", "\u0109": "c", "\u010b": "c", "\u010d": "c", "\u010e": "D", "\u0110": "D", "\u010f": "d", "\u0111": "d", "\u0112": "E", "\u0114": "E", "\u0116": "E", "\u0118": "E", "\u011a": "E", "\u0113": "e", "\u0115": "e", "\u0117": "e", "\u0119": "e", "\u011b": "e", "\u011c": "G", "\u011e": "G", "\u0120": "G", "\u0122": "G", "\u011d": "g", "\u011f": "g", "\u0121": "g", "\u0123": "g", "\u0124": "H", "\u0126": "H", "\u0125": "h", "\u0127": "h", "\u0128": "I", "\u012a": "I", "\u012c": "I", "\u012e": "I", "\u0130": "I", "\u0129": "i", 31 | "\u012b": "i", "\u012d": "i", "\u012f": "i", "\u0131": "i", "\u0134": "J", "\u0135": "j", "\u0136": "K", "\u0137": "k", "\u0138": "k", "\u0139": "L", "\u013b": "L", "\u013d": "L", "\u013f": "L", "\u0141": "L", "\u013a": "l", "\u013c": "l", "\u013e": "l", "\u0140": "l", "\u0142": "l", "\u0143": "N", "\u0145": "N", "\u0147": "N", "\u014a": "N", "\u0144": "n", "\u0146": "n", "\u0148": "n", "\u014b": "n", "\u014c": "O", "\u014e": "O", "\u0150": "O", "\u014d": "o", "\u014f": "o", "\u0151": "o", "\u0154": "R", "\u0156": "R", "\u0158": "R", "\u0155": "r", "\u0157": "r", "\u0159": "r", 32 | "\u015a": "S", "\u015c": "S", "\u015e": "S", "\u0160": "S", "\u015b": "s", "\u015d": "s", "\u015f": "s", "\u0161": "s", "\u0162": "T", "\u0164": "T", "\u0166": "T", "\u0163": "t", "\u0165": "t", "\u0167": "t", "\u0168": "U", "\u016a": "U", "\u016c": "U", "\u016e": "U", "\u0170": "U", "\u0172": "U", "\u0169": "u", "\u016b": "u", "\u016d": "u", "\u016f": "u", "\u0171": "u", "\u0173": "u", "\u0174": "W", "\u0175": "w", "\u0176": "Y", "\u0177": "y", "\u0178": "Y", "\u0179": "Z", "\u017b": "Z", "\u017d": "Z", "\u017a": "z", "\u017c": "z", "\u017e": "z", "\u0132": "IJ", "\u0133": "ij", 33 | "\u0152": "Oe", "\u0153": "oe", "\u0149": "'n", "\u017f": "s" 34 | }), nt = x({ "&": "&", "<": "<", ">": ">", '"': """, "'": "'" }), tt = x({ "&": "&", "<": "<", ">": ">", """: '"', "'": "'" }), rt = function x(mn) { 35 | function An(n) { if (du(n) && !of(n) && !(n instanceof Un)) { if (n instanceof On) return n; if (ii.call(n, "__wrapped__")) return $e(n) } return new On(n) } function En() { } function On(n, t) { this.__wrapped__ = n, this.__actions__ = [], this.__chain__ = !!t, this.__index__ = 0, this.__values__ = T } function Un(n) { 36 | this.__wrapped__ = n, 37 | this.__actions__ = [], this.__dir__ = 1, this.__filtered__ = false, this.__iteratees__ = [], this.__takeCount__ = 4294967295, this.__views__ = [] 38 | } function Mn(n) { var t = -1, r = null == n ? 0 : n.length; for (this.clear(); ++t < r;) { var e = n[t]; this.set(e[0], e[1]) } } function Tn(n) { var t = -1, r = null == n ? 0 : n.length; for (this.clear(); ++t < r;) { var e = n[t]; this.set(e[0], e[1]) } } function Fn(n) { var t = -1, r = null == n ? 0 : n.length; for (this.clear(); ++t < r;) { var e = n[t]; this.set(e[0], e[1]) } } function Nn(n) { 39 | var t = -1, r = null == n ? 0 : n.length; for (this.__data__ = new Fn; ++t < r;)this.add(n[t]); 40 | } function Zn(n) { this.size = (this.__data__ = new Tn(n)).size } function qn(n, t) { var r, e = of(n), u = !e && uf(n), i = !e && !u && cf(n), o = !e && !u && !i && pf(n), u = (e = e || u || i || o) ? A(n.length, Xu) : [], f = u.length; for (r in n) !t && !ii.call(n, r) || e && ("length" == r || i && ("offset" == r || "parent" == r) || o && ("buffer" == r || "byteLength" == r || "byteOffset" == r) || Se(r, f)) || u.push(r); return u } function Qn(n) { var t = n.length; return t ? n[ir(0, t - 1)] : T } function et(n, t) { return Ce(Ur(n), pt(t, 0, n.length)) } function ut(n) { return Ce(Ur(n)) } function it(n, t, r) { 41 | (r === T || au(n[t], r)) && (r !== T || t in n) || st(n, t, r); 42 | } function ot(n, t, r) { var e = n[t]; ii.call(n, t) && au(e, r) && (r !== T || t in n) || st(n, t, r) } function ft(n, t) { for (var r = n.length; r--;)if (au(n[r][0], t)) return r; return -1 } function ct(n, t, r, e) { return eo(n, function (n, u, i) { t(e, n, r(n), i) }), e } function at(n, t) { return n && Cr(t, zu(t), n) } function lt(n, t) { return n && Cr(t, Wu(t), n) } function st(n, t, r) { "__proto__" == t && mi ? mi(n, t, { configurable: true, enumerable: true, value: r, writable: true }) : n[t] = r } function ht(n, t) { 43 | for (var r = -1, e = t.length, u = Vu(e), i = null == n; ++r < e;)u[r] = i ? T : Iu(n, t[r]); return u; 44 | } function pt(n, t, r) { return n === n && (r !== T && (n = n <= r ? n : r), t !== T && (n = n >= t ? n : t)), n } function _t(n, t, e, u, i, o) { 45 | var f, c = 1 & t, a = 2 & t, l = 4 & t; if (e && (f = i ? e(n, u, i, o) : e(n)), f !== T) return f; if (!gu(n)) return n; if (u = of(n)) { if (f = me(n), !c) return Ur(n, f) } else { var s = _o(n), h = "[object Function]" == s || "[object GeneratorFunction]" == s; if (cf(n)) return Ir(n, c); if ("[object Object]" == s || "[object Arguments]" == s || h && !i) { if (f = a || h ? {} : Ae(n), !c) return a ? Mr(n, lt(f, n)) : Dr(n, at(f, n)) } else { if (!Ln[s]) return i ? n : {}; f = Ee(n, s, c) } } if (o || (o = new Zn), 46 | i = o.get(n)) return i; if (o.set(n, f), hf(n)) return n.forEach(function (r) { f.add(_t(r, t, e, r, n, o)) }), f; if (lf(n)) return n.forEach(function (r, u) { f.set(u, _t(r, t, e, u, n, o)) }), f; var a = l ? a ? ve : _e : a ? Wu : zu, p = u ? T : a(n); return r(p || n, function (r, u) { p && (u = r, r = n[u]), ot(f, u, _t(r, t, e, u, n, o)) }), f 47 | } function vt(n) { var t = zu(n); return function (r) { return gt(r, n, t) } } function gt(n, t, r) { var e = r.length; if (null == n) return !e; for (n = Yu(n); e--;) { var u = r[e], i = t[u], o = n[u]; if (o === T && !(u in n) || !i(o)) return false } return true } function dt(n, t, r) { 48 | if (typeof n != "function") throw new ni("Expected a function"); 49 | return yo(function () { n.apply(T, r) }, t) 50 | } function yt(n, t, r, e) { var u = -1, i = o, a = true, l = n.length, s = [], h = t.length; if (!l) return s; r && (t = c(t, k(r))), e ? (i = f, a = false) : 200 <= t.length && (i = O, a = false, t = new Nn(t)); n: for (; ++u < l;) { var p = n[u], _ = null == r ? p : r(p), p = e || 0 !== p ? p : 0; if (a && _ === _) { for (var v = h; v--;)if (t[v] === _) continue n; s.push(p) } else i(t, _, e) || s.push(p) } return s } function bt(n, t) { var r = true; return eo(n, function (n, e, u) { return r = !!t(n, e, u) }), r } function xt(n, t, r) { 51 | for (var e = -1, u = n.length; ++e < u;) { 52 | var i = n[e], o = t(i); if (null != o && (f === T ? o === o && !ju(o) : r(o, f))) var f = o, c = i; 53 | } return c 54 | } function jt(n, t) { var r = []; return eo(n, function (n, e, u) { t(n, e, u) && r.push(n) }), r } function wt(n, t, r, e, u) { var i = -1, o = n.length; for (r || (r = ke), u || (u = []); ++i < o;) { var f = n[i]; 0 < t && r(f) ? 1 < t ? wt(f, t - 1, r, e, u) : a(u, f) : e || (u[u.length] = f) } return u } function mt(n, t) { return n && io(n, t, zu) } function At(n, t) { return n && oo(n, t, zu) } function Et(n, t) { return i(t, function (t) { return pu(n[t]) }) } function kt(n, t) { t = Sr(t, n); for (var r = 0, e = t.length; null != n && r < e;)n = n[De(t[r++])]; return r && r == e ? n : T } function St(n, t, r) { 55 | return t = t(n), 56 | of(n) ? t : a(t, r(n)) 57 | } function Ot(n) { if (null == n) n = n === T ? "[object Undefined]" : "[object Null]"; else if (wi && wi in Yu(n)) { var t = ii.call(n, wi), r = n[wi]; try { n[wi] = T; var e = true } catch (n) { } var u = ci.call(n); e && (t ? n[wi] = r : delete n[wi]), n = u } else n = ci.call(n); return n } function It(n, t) { return n > t } function Rt(n, t) { return null != n && ii.call(n, t) } function zt(n, t) { return null != n && t in Yu(n) } function Wt(n, t, r) { 58 | for (var e = r ? f : o, u = n[0].length, i = n.length, a = i, l = Vu(i), s = 1 / 0, h = []; a--;) { 59 | var p = n[a]; a && t && (p = c(p, k(t))), s = Ui(p.length, s), 60 | l[a] = !r && (t || 120 <= u && 120 <= p.length) ? new Nn(a && p) : T 61 | } var p = n[0], _ = -1, v = l[0]; n: for (; ++_ < u && h.length < s;) { var g = p[_], d = t ? t(g) : g, g = r || 0 !== g ? g : 0; if (v ? !O(v, d) : !e(h, d, r)) { for (a = i; --a;) { var y = l[a]; if (y ? !O(y, d) : !e(n[a], d, r)) continue n } v && v.push(d), h.push(g) } } return h 62 | } function Bt(n, t, r) { var e = {}; return mt(n, function (n, u, i) { t(e, r(n), u, i) }), e } function Lt(t, r, e) { return r = Sr(r, t), t = 2 > r.length ? t : kt(t, hr(r, 0, -1)), r = null == t ? t : t[De(qe(r))], null == r ? T : n(r, t, e) } function Ut(n) { return du(n) && "[object Arguments]" == Ot(n) } function Ct(n) { 63 | return du(n) && "[object ArrayBuffer]" == Ot(n) 64 | } function Dt(n) { return du(n) && "[object Date]" == Ot(n) } function Mt(n, t, r, e, u) { 65 | if (n === t) t = true; else if (null == n || null == t || !du(n) && !du(t)) t = n !== n && t !== t; else n: { 66 | var i = of(n), o = of(t), f = i ? "[object Array]" : _o(n), c = o ? "[object Array]" : _o(t), f = "[object Arguments]" == f ? "[object Object]" : f, c = "[object Arguments]" == c ? "[object Object]" : c, a = "[object Object]" == f, o = "[object Object]" == c; if ((c = f == c) && cf(n)) { if (!cf(t)) { t = false; break n } i = true, a = false } if (c && !a) u || (u = new Zn), t = i || pf(n) ? se(n, t, r, e, Mt, u) : he(n, t, f, r, e, Mt, u); else { 67 | if (!(1 & r) && (i = a && ii.call(n, "__wrapped__"), f = o && ii.call(t, "__wrapped__"), i || f)) { n = i ? n.value() : n, t = f ? t.value() : t, u || (u = new Zn), t = Mt(n, t, r, e, u); break n } if (c) t: if (u || (u = new Zn), i = 1 & r, f = _e(n), o = f.length, c = _e(t).length, o == c || i) { 68 | for (a = o; a--;) { var l = f[a]; if (!(i ? l in t : ii.call(t, l))) { t = false; break t } } if ((c = u.get(n)) && u.get(t)) t = c == t; else { 69 | c = true, u.set(n, t), u.set(t, n); for (var s = i; ++a < o;) { 70 | var l = f[a], h = n[l], p = t[l]; if (e) var _ = i ? e(p, h, l, t, n, u) : e(h, p, l, n, t, u); if (_ === T ? h !== p && !Mt(h, p, r, e, u) : !_) { c = false; break } s || (s = "constructor" == l); 71 | } c && !s && (r = n.constructor, e = t.constructor, r != e && "constructor" in n && "constructor" in t && !(typeof r == "function" && r instanceof r && typeof e == "function" && e instanceof e) && (c = false)), u.delete(n), u.delete(t), t = c 72 | } 73 | } else t = false; else t = false 74 | } 75 | } return t 76 | } function Tt(n) { return du(n) && "[object Map]" == _o(n) } function $t(n, t, r, e) { 77 | var u = r.length, i = u, o = !e; if (null == n) return !i; for (n = Yu(n); u--;) { var f = r[u]; if (o && f[2] ? f[1] !== n[f[0]] : !(f[0] in n)) return false } for (; ++u < i;) { 78 | var f = r[u], c = f[0], a = n[c], l = f[1]; if (o && f[2]) { 79 | if (a === T && !(c in n)) return false; 80 | } else { if (f = new Zn, e) var s = e(a, l, c, n, t, f); if (s === T ? !Mt(l, a, 3, e, f) : !s) return false } 81 | } return true 82 | } function Ft(n) { return !(!gu(n) || fi && fi in n) && (pu(n) ? si : dn).test(Me(n)) } function Nt(n) { return du(n) && "[object RegExp]" == Ot(n) } function Pt(n) { return du(n) && "[object Set]" == _o(n) } function Zt(n) { return du(n) && vu(n.length) && !!Bn[Ot(n)] } function qt(n) { return typeof n == "function" ? n : null == n ? Tu : typeof n == "object" ? of(n) ? Jt(n[0], n[1]) : Ht(n) : Pu(n) } function Vt(n) { 83 | if (!ze(n)) return Bi(n); var t, r = []; for (t in Yu(n)) ii.call(n, t) && "constructor" != t && r.push(t); 84 | return r 85 | } function Kt(n, t) { return n < t } function Gt(n, t) { var r = -1, e = lu(n) ? Vu(n.length) : []; return eo(n, function (n, u, i) { e[++r] = t(n, u, i) }), e } function Ht(n) { var t = xe(n); return 1 == t.length && t[0][2] ? We(t[0][0], t[0][1]) : function (r) { return r === n || $t(r, n, t) } } function Jt(n, t) { return Ie(n) && t === t && !gu(t) ? We(De(n), t) : function (r) { var e = Iu(r, n); return e === T && e === t ? Ru(r, n) : Mt(t, e, 3) } } function Yt(n, t, r, e, u) { 86 | n !== t && io(t, function (i, o) { 87 | if (gu(i)) { 88 | u || (u = new Zn); var f = u, c = "__proto__" == o ? T : n[o], a = "__proto__" == o ? T : t[o], l = f.get(a); 89 | if (l) it(n, o, l); else { var l = e ? e(c, a, o + "", n, t, f) : T, s = l === T; if (s) { var h = of(a), p = !h && cf(a), _ = !h && !p && pf(a), l = a; h || p || _ ? of(c) ? l = c : su(c) ? l = Ur(c) : p ? (s = false, l = Ir(a, true)) : _ ? (s = false, l = zr(a, true)) : l = [] : bu(a) || uf(a) ? (l = c, uf(c) ? l = Su(c) : (!gu(c) || r && pu(c)) && (l = Ae(a))) : s = false } s && (f.set(a, l), Yt(l, a, r, e, f), f.delete(a)), it(n, o, l) } 90 | } else f = e ? e("__proto__" == o ? T : n[o], i, o + "", n, t, u) : T, f === T && (f = i), it(n, o, f) 91 | }, Wu) 92 | } function Qt(n, t) { var r = n.length; if (r) return t += 0 > t ? r : 0, Se(t, r) ? n[t] : T } function Xt(n, t, r) { 93 | var e = -1; return t = c(t.length ? t : [Tu], k(ye())), 94 | n = Gt(n, function (n) { return { a: c(t, function (t) { return t(n) }), b: ++e, c: n } }), w(n, function (n, t) { var e; n: { e = -1; for (var u = n.a, i = t.a, o = u.length, f = r.length; ++e < o;) { var c = Wr(u[e], i[e]); if (c) { e = e >= f ? c : c * ("desc" == r[e] ? -1 : 1); break n } } e = n.b - t.b } return e }) 95 | } function nr(n, t) { return tr(n, t, function (t, r) { return Ru(n, r) }) } function tr(n, t, r) { for (var e = -1, u = t.length, i = {}; ++e < u;) { var o = t[e], f = kt(n, o); r(f, o) && lr(i, Sr(o, n), f) } return i } function rr(n) { return function (t) { return kt(t, n) } } function er(n, t, r, e) { 96 | var u = e ? g : v, i = -1, o = t.length, f = n; 97 | for (n === t && (t = Ur(t)), r && (f = c(n, k(r))); ++i < o;)for (var a = 0, l = t[i], l = r ? r(l) : l; -1 < (a = u(f, l, a, e));)f !== n && bi.call(f, a, 1), bi.call(n, a, 1); return n 98 | } function ur(n, t) { for (var r = n ? t.length : 0, e = r - 1; r--;) { var u = t[r]; if (r == e || u !== i) { var i = u; Se(u) ? bi.call(n, u, 1) : xr(n, u) } } } function ir(n, t) { return n + Oi(Mi() * (t - n + 1)) } function or(n, t) { var r = ""; if (!n || 1 > t || 9007199254740991 < t) return r; do t % 2 && (r += n), (t = Oi(t / 2)) && (n += n); while (t); return r } function fr(n, t) { return bo(Be(n, t, Tu), n + "") } function cr(n) { return Qn(Lu(n)) } function ar(n, t) { 99 | var r = Lu(n); return Ce(r, pt(t, 0, r.length)) 100 | } function lr(n, t, r, e) { if (!gu(n)) return n; t = Sr(t, n); for (var u = -1, i = t.length, o = i - 1, f = n; null != f && ++u < i;) { var c = De(t[u]), a = r; if (u != o) { var l = f[c], a = e ? e(l, c, f) : T; a === T && (a = gu(l) ? l : Se(t[u + 1]) ? [] : {}) } ot(f, c, a), f = f[c] } return n } function sr(n) { return Ce(Lu(n)) } function hr(n, t, r) { var e = -1, u = n.length; for (0 > t && (t = -t > u ? 0 : u + t), r = r > u ? u : r, 0 > r && (r += u), u = t > r ? 0 : r - t >>> 0, t >>>= 0, r = Vu(u); ++e < u;)r[e] = n[e + t]; return r } function pr(n, t) { 101 | var r; return eo(n, function (n, e, u) { 102 | return r = t(n, e, u), 103 | !r 104 | }), !!r 105 | } function _r(n, t, r) { var e = 0, u = null == n ? e : n.length; if (typeof t == "number" && t === t && 2147483647 >= u) { for (; e < u;) { var i = e + u >>> 1, o = n[i]; null !== o && !ju(o) && (r ? o <= t : o < t) ? e = i + 1 : u = i } return u } return vr(n, t, Tu, r) } function vr(n, t, r, e) { t = r(t); for (var u = 0, i = null == n ? 0 : n.length, o = t !== t, f = null === t, c = ju(t), a = t === T; u < i;) { var l = Oi((u + i) / 2), s = r(n[l]), h = s !== T, p = null === s, _ = s === s, v = ju(s); (o ? e || _ : a ? _ && (e || h) : f ? _ && h && (e || !p) : c ? _ && h && !p && (e || !v) : p || v ? 0 : e ? s <= t : s < t) ? u = l + 1 : i = l } return Ui(i, 4294967294) } function gr(n, t) { 106 | for (var r = -1, e = n.length, u = 0, i = []; ++r < e;) { 107 | var o = n[r], f = t ? t(o) : o; if (!r || !au(f, c)) { var c = f; i[u++] = 0 === o ? 0 : o } 108 | } return i 109 | } function dr(n) { return typeof n == "number" ? n : ju(n) ? F : +n } function yr(n) { if (typeof n == "string") return n; if (of(n)) return c(n, yr) + ""; if (ju(n)) return to ? to.call(n) : ""; var t = n + ""; return "0" == t && 1 / n == -$ ? "-0" : t } function br(n, t, r) { 110 | var e = -1, u = o, i = n.length, c = true, a = [], l = a; if (r) c = false, u = f; else if (200 <= i) { if (u = t ? null : lo(n)) return U(u); c = false, u = O, l = new Nn } else l = t ? [] : a; n: for (; ++e < i;) { 111 | var s = n[e], h = t ? t(s) : s, s = r || 0 !== s ? s : 0; if (c && h === h) { 112 | for (var p = l.length; p--;)if (l[p] === h) continue n; 113 | t && l.push(h), a.push(s) 114 | } else u(l, h, r) || (l !== a && l.push(h), a.push(s)) 115 | } return a 116 | } function xr(n, t) { return t = Sr(t, n), n = 2 > t.length ? n : kt(n, hr(t, 0, -1)), null == n || delete n[De(qe(t))] } function jr(n, t, r, e) { for (var u = n.length, i = e ? u : -1; (e ? i-- : ++i < u) && t(n[i], i, n);); return r ? hr(n, e ? 0 : i, e ? i + 1 : u) : hr(n, e ? i + 1 : 0, e ? u : i) } function wr(n, t) { var r = n; return r instanceof Un && (r = r.value()), l(t, function (n, t) { return t.func.apply(t.thisArg, a([n], t.args)) }, r) } function mr(n, t, r) { 117 | var e = n.length; if (2 > e) return e ? br(n[0]) : []; for (var u = -1, i = Vu(e); ++u < e;)for (var o = n[u], f = -1; ++f < e;)f != u && (i[u] = yt(i[u] || o, n[f], t, r)); 118 | return br(wt(i, 1), t, r) 119 | } function Ar(n, t, r) { for (var e = -1, u = n.length, i = t.length, o = {}; ++e < u;)r(o, n[e], e < i ? t[e] : T); return o } function Er(n) { return su(n) ? n : [] } function kr(n) { return typeof n == "function" ? n : Tu } function Sr(n, t) { return of(n) ? n : Ie(n, t) ? [n] : xo(Ou(n)) } function Or(n, t, r) { var e = n.length; return r = r === T ? e : r, !t && r >= e ? n : hr(n, t, r) } function Ir(n, t) { if (t) return n.slice(); var r = n.length, r = vi ? vi(r) : new n.constructor(r); return n.copy(r), r } function Rr(n) { 120 | var t = new n.constructor(n.byteLength); return new _i(t).set(new _i(n)), 121 | t 122 | } function zr(n, t) { return new n.constructor(t ? Rr(n.buffer) : n.buffer, n.byteOffset, n.length) } function Wr(n, t) { if (n !== t) { var r = n !== T, e = null === n, u = n === n, i = ju(n), o = t !== T, f = null === t, c = t === t, a = ju(t); if (!f && !a && !i && n > t || i && o && c && !f && !a || e && o && c || !r && c || !u) return 1; if (!e && !i && !a && n < t || a && r && u && !e && !i || f && r && u || !o && u || !c) return -1 } return 0 } function Br(n, t, r, e) { 123 | var u = -1, i = n.length, o = r.length, f = -1, c = t.length, a = Li(i - o, 0), l = Vu(c + a); for (e = !e; ++f < c;)l[f] = t[f]; for (; ++u < o;)(e || u < i) && (l[r[u]] = n[u]); for (; a--;)l[f++] = n[u++]; 124 | return l 125 | } function Lr(n, t, r, e) { var u = -1, i = n.length, o = -1, f = r.length, c = -1, a = t.length, l = Li(i - f, 0), s = Vu(l + a); for (e = !e; ++u < l;)s[u] = n[u]; for (l = u; ++c < a;)s[l + c] = t[c]; for (; ++o < f;)(e || u < i) && (s[l + r[o]] = n[u++]); return s } function Ur(n, t) { var r = -1, e = n.length; for (t || (t = Vu(e)); ++r < e;)t[r] = n[r]; return t } function Cr(n, t, r, e) { var u = !r; r || (r = {}); for (var i = -1, o = t.length; ++i < o;) { var f = t[i], c = e ? e(r[f], n[f], f, r, n) : T; c === T && (c = n[f]), u ? st(r, f, c) : ot(r, f, c) } return r } function Dr(n, t) { return Cr(n, ho(n), t) } function Mr(n, t) { 126 | return Cr(n, po(n), t); 127 | } function Tr(n, r) { return function (e, u) { var i = of(e) ? t : ct, o = r ? r() : {}; return i(e, n, ye(u, 2), o) } } function $r(n) { return fr(function (t, r) { var e = -1, u = r.length, i = 1 < u ? r[u - 1] : T, o = 2 < u ? r[2] : T, i = 3 < n.length && typeof i == "function" ? (u-- , i) : T; for (o && Oe(r[0], r[1], o) && (i = 3 > u ? T : i, u = 1), t = Yu(t); ++e < u;)(o = r[e]) && n(t, o, e, i); return t }) } function Fr(n, t) { return function (r, e) { if (null == r) return r; if (!lu(r)) return n(r, e); for (var u = r.length, i = t ? u : -1, o = Yu(r); (t ? i-- : ++i < u) && false !== e(o[i], i, o);); return r } } function Nr(n) { 128 | return function (t, r, e) { 129 | var u = -1, i = Yu(t); e = e(t); for (var o = e.length; o--;) { var f = e[n ? o : ++u]; if (false === r(i[f], f, i)) break } return t 130 | } 131 | } function Pr(n, t, r) { function e() { return (this && this !== $n && this instanceof e ? i : n).apply(u ? r : this, arguments) } var u = 1 & t, i = Vr(n); return e } function Zr(n) { return function (t) { t = Ou(t); var r = Rn.test(t) ? M(t) : T, e = r ? r[0] : t.charAt(0); return t = r ? Or(r, 1).join("") : t.slice(1), e[n]() + t } } function qr(n) { return function (t) { return l(Du(Cu(t).replace(kn, "")), n, "") } } function Vr(n) { 132 | return function () { 133 | var t = arguments; switch (t.length) { 134 | case 0: return new n; case 1: return new n(t[0]); case 2: return new n(t[0], t[1]); case 3: return new n(t[0], t[1], t[2]); case 4: return new n(t[0], t[1], t[2], t[3]); case 5: return new n(t[0], t[1], t[2], t[3], t[4]); case 6: return new n(t[0], t[1], t[2], t[3], t[4], t[5]); case 7: return new n(t[0], t[1], t[2], t[3], t[4], t[5], t[6]) 135 | }var r = ro(n.prototype), t = n.apply(r, t); return gu(t) ? t : r 136 | } 137 | } function Kr(t, r, e) { 138 | function u() { 139 | for (var o = arguments.length, f = Vu(o), c = o, a = de(u); c--;)f[c] = arguments[c]; return c = 3 > o && f[0] !== a && f[o - 1] !== a ? [] : L(f, a), 140 | o -= c.length, o < e ? ue(t, r, Jr, u.placeholder, T, f, c, T, T, e - o) : n(this && this !== $n && this instanceof u ? i : t, this, f) 141 | } var i = Vr(t); return u 142 | } function Gr(n) { return function (t, r, e) { var u = Yu(t); if (!lu(t)) { var i = ye(r, 3); t = zu(t), r = function (n) { return i(u[n], n, u) } } return r = n(t, r, e), -1 < r ? u[i ? t[r] : r] : T } } function Hr(n) { 143 | return pe(function (t) { 144 | var r = t.length, e = r, u = On.prototype.thru; for (n && t.reverse(); e--;) { var i = t[e]; if (typeof i != "function") throw new ni("Expected a function"); if (u && !o && "wrapper" == ge(i)) var o = new On([], true) } for (e = o ? e : r; ++e < r;)var i = t[e], u = ge(i), f = "wrapper" == u ? so(i) : T, o = f && Re(f[0]) && 424 == f[1] && !f[4].length && 1 == f[9] ? o[ge(f[0])].apply(o, f[3]) : 1 == i.length && Re(i) ? o[u]() : o.thru(i); 145 | return function () { var n = arguments, e = n[0]; if (o && 1 == n.length && of(e)) return o.plant(e).value(); for (var u = 0, n = r ? t[u].apply(this, n) : e; ++u < r;)n = t[u].call(this, n); return n } 146 | }) 147 | } function Jr(n, t, r, e, u, i, o, f, c, a) { 148 | function l() { 149 | for (var d = arguments.length, y = Vu(d), b = d; b--;)y[b] = arguments[b]; if (_) { var x, j = de(l), b = y.length; for (x = 0; b--;)y[b] === j && ++x } if (e && (y = Br(y, e, u, _)), i && (y = Lr(y, i, o, _)), d -= x, _ && d < a) return j = L(y, j), ue(n, t, Jr, l.placeholder, r, y, j, f, c, a - d); if (j = h ? r : this, b = p ? j[n] : n, d = y.length, f) { 150 | x = y.length; for (var w = Ui(f.length, x), m = Ur(y); w--;) { 151 | var A = f[w]; y[w] = Se(A, x) ? m[A] : T 152 | } 153 | } else v && 1 < d && y.reverse(); return s && c < d && (y.length = c), this && this !== $n && this instanceof l && (b = g || Vr(b)), b.apply(j, y) 154 | } var s = 128 & t, h = 1 & t, p = 2 & t, _ = 24 & t, v = 512 & t, g = p ? T : Vr(n); return l 155 | } function Yr(n, t) { return function (r, e) { return Bt(r, n, t(e)) } } function Qr(n, t) { return function (r, e) { var u; if (r === T && e === T) return t; if (r !== T && (u = r), e !== T) { if (u === T) return e; typeof r == "string" || typeof e == "string" ? (r = yr(r), e = yr(e)) : (r = dr(r), e = dr(e)), u = n(r, e) } return u } } function Xr(t) { 156 | return pe(function (r) { 157 | return r = c(r, k(ye())), fr(function (e) { var u = this; return t(r, function (t) { return n(t, u, e) }) }) 158 | }) 159 | } function ne(n, t) { t = t === T ? " " : yr(t); var r = t.length; return 2 > r ? r ? or(t, n) : t : (r = or(t, Si(n / D(t))), Rn.test(t) ? Or(M(r), 0, n).join("") : r.slice(0, n)) } function te(t, r, e, u) { function i() { for (var r = -1, c = arguments.length, a = -1, l = u.length, s = Vu(l + c), h = this && this !== $n && this instanceof i ? f : t; ++a < l;)s[a] = u[a]; for (; c--;)s[a++] = arguments[++r]; return n(h, o ? e : this, s) } var o = 1 & r, f = Vr(t); return i } function re(n) { 160 | return function (t, r, e) { 161 | e && typeof e != "number" && Oe(t, r, e) && (r = e = T), t = mu(t), r === T ? (r = t, t = 0) : r = mu(r), e = e === T ? t < r ? 1 : -1 : mu(e); var u = -1; r = Li(Si((r - t) / (e || 1)), 0); for (var i = Vu(r); r--;)i[n ? r : ++u] = t, t += e; return i 162 | } 163 | } function ee(n) { return function (t, r) { return typeof t == "string" && typeof r == "string" || (t = ku(t), r = ku(r)), n(t, r) } } function ue(n, t, r, e, u, i, o, f, c, a) { var l = 8 & t, s = l ? o : T; o = l ? T : o; var h = l ? i : T; return i = l ? T : i, t = (t | (l ? 32 : 64)) & ~(l ? 64 : 32), 4 & t || (t &= -4), u = [n, t, u, h, s, i, o, f, c, a], r = r.apply(T, u), Re(n) && go(r, u), r.placeholder = e, Le(r, n, t) } function ie(n) { 164 | var t = Ju[n]; return function (n, r) { if (n = ku(n), r = null == r ? 0 : Ui(Au(r), 292)) { var e = (Ou(n) + "e").split("e"), e = t(e[0] + "e" + (+e[1] + r)), e = (Ou(e) + "e").split("e"); return +(e[0] + "e" + (+e[1] - r)) } return t(n) } 165 | } function oe(n) { return function (t) { var r = _o(t); return "[object Map]" == r ? W(t) : "[object Set]" == r ? C(t) : E(t, n(t)) } } function fe(n, t, r, e, u, i, o, f) { 166 | var c = 2 & t; if (!c && typeof n != "function") throw new ni("Expected a function"); var a = e ? e.length : 0; if (a || (t &= -97, e = u = T), o = o === T ? o : Li(Au(o), 0), f = f === T ? f : Au(f), a -= u ? u.length : 0, 64 & t) { 167 | var l = e, s = u; e = u = T 168 | } var h = c ? T : so(n); return i = [n, t, r, e, u, l, s, i, o, f], h && (r = i[1], n = h[1], t = r | n, e = 128 == n && 8 == r || 128 == n && 256 == r && i[7].length <= h[8] || 384 == n && h[7].length <= h[8] && 8 == r, 131 > t || e) && (1 & n && (i[2] = h[2], t |= 1 & r ? 0 : 4), (r = h[3]) && (e = i[3], i[3] = e ? Br(e, r, h[4]) : r, i[4] = e ? L(i[3], "__lodash_placeholder__") : h[4]), (r = h[5]) && (e = i[5], i[5] = e ? Lr(e, r, h[6]) : r, i[6] = e ? L(i[5], "__lodash_placeholder__") : h[6]), (r = h[7]) && (i[7] = r), 128 & n && (i[8] = null == i[8] ? h[8] : Ui(i[8], h[8])), null == i[9] && (i[9] = h[9]), i[0] = h[0], i[1] = t), n = i[0], t = i[1], 169 | r = i[2], e = i[3], u = i[4], f = i[9] = i[9] === T ? c ? 0 : n.length : Li(i[9] - a, 0), !f && 24 & t && (t &= -25), Le((h ? fo : go)(t && 1 != t ? 8 == t || 16 == t ? Kr(n, t, f) : 32 != t && 33 != t || u.length ? Jr.apply(T, i) : te(n, t, r, e) : Pr(n, t, r), i), n, t) 170 | } function ce(n, t, r, e) { return n === T || au(n, ri[r]) && !ii.call(e, r) ? t : n } function ae(n, t, r, e, u, i) { return gu(n) && gu(t) && (i.set(t, n), Yt(n, t, T, ae, i), i.delete(t)), n } function le(n) { return bu(n) ? T : n } function se(n, t, r, e, u, i) { 171 | var o = 1 & r, f = n.length, c = t.length; if (f != c && !(o && c > f)) return false; if ((c = i.get(n)) && i.get(t)) return c == t; var c = -1, a = true, l = 2 & r ? new Nn : T; 172 | for (i.set(n, t), i.set(t, n); ++c < f;) { var s = n[c], p = t[c]; if (e) var _ = o ? e(p, s, c, t, n, i) : e(s, p, c, n, t, i); if (_ !== T) { if (_) continue; a = false; break } if (l) { if (!h(t, function (n, t) { if (!O(l, t) && (s === n || u(s, n, r, e, i))) return l.push(t) })) { a = false; break } } else if (s !== p && !u(s, p, r, e, i)) { a = false; break } } return i.delete(n), i.delete(t), a 173 | } function he(n, t, r, e, u, i, o) { 174 | switch (r) { 175 | case "[object DataView]": if (n.byteLength != t.byteLength || n.byteOffset != t.byteOffset) break; n = n.buffer, t = t.buffer; case "[object ArrayBuffer]": if (n.byteLength != t.byteLength || !i(new _i(n), new _i(t))) break; 176 | return true; case "[object Boolean]": case "[object Date]": case "[object Number]": return au(+n, +t); case "[object Error]": return n.name == t.name && n.message == t.message; case "[object RegExp]": case "[object String]": return n == t + ""; case "[object Map]": var f = W; case "[object Set]": if (f || (f = U), n.size != t.size && !(1 & e)) break; return (r = o.get(n)) ? r == t : (e |= 2, o.set(n, t), t = se(f(n), f(t), e, u, i, o), o.delete(n), t); case "[object Symbol]": if (no) return no.call(n) == no.call(t) 177 | }return false 178 | } function pe(n) { return bo(Be(n, T, Pe), n + "") } function _e(n) { 179 | return St(n, zu, ho) 180 | } function ve(n) { return St(n, Wu, po) } function ge(n) { for (var t = n.name + "", r = Ki[t], e = ii.call(Ki, t) ? r.length : 0; e--;) { var u = r[e], i = u.func; if (null == i || i == n) return u.name } return t } function de(n) { return (ii.call(An, "placeholder") ? An : n).placeholder } function ye() { var n = An.iteratee || $u, n = n === $u ? qt : n; return arguments.length ? n(arguments[0], arguments[1]) : n } function be(n, t) { 181 | var r = n.__data__, e = typeof t; return ("string" == e || "number" == e || "symbol" == e || "boolean" == e ? "__proto__" !== t : null === t) ? r[typeof t == "string" ? "string" : "hash"] : r.map; 182 | } function xe(n) { for (var t = zu(n), r = t.length; r--;) { var e = t[r], u = n[e]; t[r] = [e, u, u === u && !gu(u)] } return t } function je(n, t) { var r = null == n ? T : n[t]; return Ft(r) ? r : T } function we(n, t, r) { t = Sr(t, n); for (var e = -1, u = t.length, i = false; ++e < u;) { var o = De(t[e]); if (!(i = null != n && r(n, o))) break; n = n[o] } return i || ++e != u ? i : (u = null == n ? 0 : n.length, !!u && vu(u) && Se(o, u) && (of(n) || uf(n))) } function me(n) { var t = n.length, r = new n.constructor(t); return t && "string" == typeof n[0] && ii.call(n, "index") && (r.index = n.index, r.input = n.input), r } function Ae(n) { 183 | return typeof n.constructor != "function" || ze(n) ? {} : ro(gi(n)) 184 | } function Ee(n, t, r) { 185 | var e = n.constructor; switch (t) { 186 | case "[object ArrayBuffer]": return Rr(n); case "[object Boolean]": case "[object Date]": return new e(+n); case "[object DataView]": return t = r ? Rr(n.buffer) : n.buffer, new n.constructor(t, n.byteOffset, n.byteLength); case "[object Float32Array]": case "[object Float64Array]": case "[object Int8Array]": case "[object Int16Array]": case "[object Int32Array]": case "[object Uint8Array]": case "[object Uint8ClampedArray]": 187 | case "[object Uint16Array]": case "[object Uint32Array]": return zr(n, r); case "[object Map]": return new e; case "[object Number]": case "[object String]": return new e(n); case "[object RegExp]": return t = new n.constructor(n.source, _n.exec(n)), t.lastIndex = n.lastIndex, t; case "[object Set]": return new e; case "[object Symbol]": return no ? Yu(no.call(n)) : {} 188 | } 189 | } function ke(n) { return of(n) || uf(n) || !!(xi && n && n[xi]) } function Se(n, t) { 190 | var r = typeof n; return t = null == t ? 9007199254740991 : t, !!t && ("number" == r || "symbol" != r && bn.test(n)) && -1 < n && 0 == n % 1 && n < t; 191 | } function Oe(n, t, r) { if (!gu(r)) return false; var e = typeof t; return !!("number" == e ? lu(r) && Se(t, r.length) : "string" == e && t in r) && au(r[t], n) } function Ie(n, t) { if (of(n)) return false; var r = typeof n; return !("number" != r && "symbol" != r && "boolean" != r && null != n && !ju(n)) || (nn.test(n) || !X.test(n) || null != t && n in Yu(t)) } function Re(n) { var t = ge(n), r = An[t]; return typeof r == "function" && t in Un.prototype && (n === r || (t = so(r), !!t && n === t[0])) } function ze(n) { var t = n && n.constructor; return n === (typeof t == "function" && t.prototype || ri) } function We(n, t) { 192 | return function (r) { return null != r && (r[n] === t && (t !== T || n in Yu(r))) } 193 | } function Be(t, r, e) { return r = Li(r === T ? t.length - 1 : r, 0), function () { for (var u = arguments, i = -1, o = Li(u.length - r, 0), f = Vu(o); ++i < o;)f[i] = u[r + i]; for (i = -1, o = Vu(r + 1); ++i < r;)o[i] = u[i]; return o[r] = e(f), n(t, this, o) } } function Le(n, t, r) { var e = t + ""; t = bo; var u, i = Te; return u = (u = e.match(an)) ? u[1].split(ln) : [], r = i(u, r), (i = r.length) && (u = i - 1, r[u] = (1 < i ? "& " : "") + r[u], r = r.join(2 < i ? ", " : " "), e = e.replace(cn, "{\n/* [wrapped with " + r + "] */\n")), t(n, e) } function Ue(n) { 194 | var t = 0, r = 0; return function () { var e = Ci(), u = 16 - (e - r); if (r = e, 0 < u) { if (800 <= ++t) return arguments[0] } else t = 0; return n.apply(T, arguments) } 195 | } function Ce(n, t) { var r = -1, e = n.length, u = e - 1; for (t = t === T ? e : t; ++r < t;) { var e = ir(r, u), i = n[e]; n[e] = n[r], n[r] = i } return n.length = t, n } function De(n) { if (typeof n == "string" || ju(n)) return n; var t = n + ""; return "0" == t && 1 / n == -$ ? "-0" : t } function Me(n) { if (null != n) { try { return ui.call(n) } catch (n) { } return n + "" } return "" } function Te(n, t) { 196 | return r(N, function (r) { 197 | var e = "_." + r[0]; t & r[1] && !o(n, e) && n.push(e); 198 | }), n.sort() 199 | } function $e(n) { if (n instanceof Un) return n.clone(); var t = new On(n.__wrapped__, n.__chain__); return t.__actions__ = Ur(n.__actions__), t.__index__ = n.__index__, t.__values__ = n.__values__, t } function Fe(n, t, r) { var e = null == n ? 0 : n.length; return e ? (r = null == r ? 0 : Au(r), 0 > r && (r = Li(e + r, 0)), _(n, ye(t, 3), r)) : -1 } function Ne(n, t, r) { var e = null == n ? 0 : n.length; if (!e) return -1; var u = e - 1; return r !== T && (u = Au(r), u = 0 > r ? Li(e + u, 0) : Ui(u, e - 1)), _(n, ye(t, 3), u, true) } function Pe(n) { return (null == n ? 0 : n.length) ? wt(n, 1) : [] } function Ze(n) { 200 | return n && n.length ? n[0] : T 201 | } function qe(n) { var t = null == n ? 0 : n.length; return t ? n[t - 1] : T } function Ve(n, t) { return n && n.length && t && t.length ? er(n, t) : n } function Ke(n) { return null == n ? n : Ti.call(n) } function Ge(n) { if (!n || !n.length) return []; var t = 0; return n = i(n, function (n) { if (su(n)) return t = Li(n.length, t), true }), A(t, function (t) { return c(n, b(t)) }) } function He(t, r) { if (!t || !t.length) return []; var e = Ge(t); return null == r ? e : c(e, function (t) { return n(r, T, t) }) } function Je(n) { return n = An(n), n.__chain__ = true, n } function Ye(n, t) { 202 | return t(n) 203 | } function Qe() { return this } function Xe(n, t) { return (of(n) ? r : eo)(n, ye(t, 3)) } function nu(n, t) { return (of(n) ? e : uo)(n, ye(t, 3)) } function tu(n, t) { return (of(n) ? c : Gt)(n, ye(t, 3)) } function ru(n, t, r) { return t = r ? T : t, t = n && null == t ? n.length : t, fe(n, 128, T, T, T, T, t) } function eu(n, t) { var r; if (typeof t != "function") throw new ni("Expected a function"); return n = Au(n), function () { return 0 < --n && (r = t.apply(this, arguments)), 1 >= n && (t = T), r } } function uu(n, t, r) { 204 | return t = r ? T : t, n = fe(n, 8, T, T, T, T, T, t), n.placeholder = uu.placeholder, 205 | n 206 | } function iu(n, t, r) { return t = r ? T : t, n = fe(n, 16, T, T, T, T, T, t), n.placeholder = iu.placeholder, n } function ou(n, t, r) { 207 | function e(t) { var r = c, e = a; return c = a = T, _ = t, s = n.apply(e, r) } function u(n) { var r = n - p; return n -= _, p === T || r >= t || 0 > r || g && n >= l } function i() { var n = Ko(); if (u(n)) return o(n); var r, e = yo; r = n - _, n = t - (n - p), r = g ? Ui(n, l - r) : n, h = e(i, r) } function o(n) { return h = T, d && c ? e(n) : (c = a = T, s) } function f() { 208 | var n = Ko(), r = u(n); if (c = arguments, a = this, p = n, r) { if (h === T) return _ = n = p, h = yo(i, t), v ? e(n) : s; if (g) return h = yo(i, t), e(p) } return h === T && (h = yo(i, t)), 209 | s 210 | } var c, a, l, s, h, p, _ = 0, v = false, g = false, d = true; if (typeof n != "function") throw new ni("Expected a function"); return t = ku(t) || 0, gu(r) && (v = !!r.leading, l = (g = "maxWait" in r) ? Li(ku(r.maxWait) || 0, t) : l, d = "trailing" in r ? !!r.trailing : d), f.cancel = function () { h !== T && ao(h), _ = 0, c = p = a = h = T }, f.flush = function () { return h === T ? s : o(Ko()) }, f 211 | } function fu(n, t) { 212 | function r() { var e = arguments, u = t ? t.apply(this, e) : e[0], i = r.cache; return i.has(u) ? i.get(u) : (e = n.apply(this, e), r.cache = i.set(u, e) || i, e) } if (typeof n != "function" || null != t && typeof t != "function") throw new ni("Expected a function"); 213 | return r.cache = new (fu.Cache || Fn), r 214 | } function cu(n) { if (typeof n != "function") throw new ni("Expected a function"); return function () { var t = arguments; switch (t.length) { case 0: return !n.call(this); case 1: return !n.call(this, t[0]); case 2: return !n.call(this, t[0], t[1]); case 3: return !n.call(this, t[0], t[1], t[2]) }return !n.apply(this, t) } } function au(n, t) { return n === t || n !== n && t !== t } function lu(n) { return null != n && vu(n.length) && !pu(n) } function su(n) { return du(n) && lu(n) } function hu(n) { 215 | if (!du(n)) return false; var t = Ot(n); return "[object Error]" == t || "[object DOMException]" == t || typeof n.message == "string" && typeof n.name == "string" && !bu(n); 216 | } function pu(n) { return !!gu(n) && (n = Ot(n), "[object Function]" == n || "[object GeneratorFunction]" == n || "[object AsyncFunction]" == n || "[object Proxy]" == n) } function _u(n) { return typeof n == "number" && n == Au(n) } function vu(n) { return typeof n == "number" && -1 < n && 0 == n % 1 && 9007199254740991 >= n } function gu(n) { var t = typeof n; return null != n && ("object" == t || "function" == t) } function du(n) { return null != n && typeof n == "object" } function yu(n) { return typeof n == "number" || du(n) && "[object Number]" == Ot(n) } function bu(n) { 217 | return !(!du(n) || "[object Object]" != Ot(n)) && (n = gi(n), 218 | null === n || (n = ii.call(n, "constructor") && n.constructor, typeof n == "function" && n instanceof n && ui.call(n) == ai)) 219 | } function xu(n) { return typeof n == "string" || !of(n) && du(n) && "[object String]" == Ot(n) } function ju(n) { return typeof n == "symbol" || du(n) && "[object Symbol]" == Ot(n) } function wu(n) { if (!n) return []; if (lu(n)) return xu(n) ? M(n) : Ur(n); if (ji && n[ji]) { n = n[ji](); for (var t, r = []; !(t = n.next()).done;)r.push(t.value); return r } return t = _o(n), ("[object Map]" == t ? W : "[object Set]" == t ? U : Lu)(n) } function mu(n) { 220 | return n ? (n = ku(n), 221 | n === $ || n === -$ ? 1.7976931348623157e308 * (0 > n ? -1 : 1) : n === n ? n : 0) : 0 === n ? n : 0 222 | } function Au(n) { n = mu(n); var t = n % 1; return n === n ? t ? n - t : n : 0 } function Eu(n) { return n ? pt(Au(n), 0, 4294967295) : 0 } function ku(n) { if (typeof n == "number") return n; if (ju(n)) return F; if (gu(n) && (n = typeof n.valueOf == "function" ? n.valueOf() : n, n = gu(n) ? n + "" : n), typeof n != "string") return 0 === n ? n : +n; n = n.replace(un, ""); var t = gn.test(n); return t || yn.test(n) ? Dn(n.slice(2), t ? 2 : 8) : vn.test(n) ? F : +n } function Su(n) { return Cr(n, Wu(n)) } function Ou(n) { 223 | return null == n ? "" : yr(n); 224 | } function Iu(n, t, r) { return n = null == n ? T : kt(n, t), n === T ? r : n } function Ru(n, t) { return null != n && we(n, t, zt) } function zu(n) { return lu(n) ? qn(n) : Vt(n) } function Wu(n) { if (lu(n)) n = qn(n, true); else if (gu(n)) { var t, r = ze(n), e = []; for (t in n) ("constructor" != t || !r && ii.call(n, t)) && e.push(t); n = e } else { if (t = [], null != n) for (r in Yu(n)) t.push(r); n = t } return n } function Bu(n, t) { if (null == n) return {}; var r = c(ve(n), function (n) { return [n] }); return t = ye(t), tr(n, r, function (n, r) { return t(n, r[0]) }) } function Lu(n) { 225 | return null == n ? [] : S(n, zu(n)); 226 | } function Uu(n) { return Tf(Ou(n).toLowerCase()) } function Cu(n) { return (n = Ou(n)) && n.replace(xn, Xn).replace(Sn, "") } function Du(n, t, r) { return n = Ou(n), t = r ? T : t, t === T ? zn.test(n) ? n.match(In) || [] : n.match(sn) || [] : n.match(t) || [] } function Mu(n) { return function () { return n } } function Tu(n) { return n } function $u(n) { return qt(typeof n == "function" ? n : _t(n, 1)) } function Fu(n, t, e) { 227 | var u = zu(t), i = Et(t, u); null != e || gu(t) && (i.length || !u.length) || (e = t, t = n, n = this, i = Et(t, zu(t))); var o = !(gu(e) && "chain" in e && !e.chain), f = pu(n); return r(i, function (r) { 228 | var e = t[r]; n[r] = e, f && (n.prototype[r] = function () { var t = this.__chain__; if (o || t) { var r = n(this.__wrapped__); return (r.__actions__ = Ur(this.__actions__)).push({ func: e, args: arguments, thisArg: n }), r.__chain__ = t, r } return e.apply(n, a([this.value()], arguments)) }) 229 | }), n 230 | } function Nu() { } function Pu(n) { return Ie(n) ? b(De(n)) : rr(n) } function Zu() { return [] } function qu() { return false } mn = null == mn ? $n : rt.defaults($n.Object(), mn, rt.pick($n, Wn)); var Vu = mn.Array, Ku = mn.Date, Gu = mn.Error, Hu = mn.Function, Ju = mn.Math, Yu = mn.Object, Qu = mn.RegExp, Xu = mn.String, ni = mn.TypeError, ti = Vu.prototype, ri = Yu.prototype, ei = mn["__core-js_shared__"], ui = Hu.prototype.toString, ii = ri.hasOwnProperty, oi = 0, fi = function () { 231 | var n = /[^.]+$/.exec(ei && ei.keys && ei.keys.IE_PROTO || ""); return n ? "Symbol(src)_1." + n : "" 232 | }(), ci = ri.toString, ai = ui.call(Yu), li = $n._, si = Qu("^" + ui.call(ii).replace(rn, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"), hi = Pn ? mn.Buffer : T, pi = mn.Symbol, _i = mn.Uint8Array, vi = hi ? hi.g : T, gi = B(Yu.getPrototypeOf, Yu), di = Yu.create, yi = ri.propertyIsEnumerable, bi = ti.splice, xi = pi ? pi.isConcatSpreadable : T, ji = pi ? pi.iterator : T, wi = pi ? pi.toStringTag : T, mi = function () { 233 | try { 234 | var n = je(Yu, "defineProperty"); 235 | return n({}, "", {}), n 236 | } catch (n) { } 237 | }(), Ai = mn.clearTimeout !== $n.clearTimeout && mn.clearTimeout, Ei = Ku && Ku.now !== $n.Date.now && Ku.now, ki = mn.setTimeout !== $n.setTimeout && mn.setTimeout, Si = Ju.ceil, Oi = Ju.floor, Ii = Yu.getOwnPropertySymbols, Ri = hi ? hi.isBuffer : T, zi = mn.isFinite, Wi = ti.join, Bi = B(Yu.keys, Yu), Li = Ju.max, Ui = Ju.min, Ci = Ku.now, Di = mn.parseInt, Mi = Ju.random, Ti = ti.reverse, $i = je(mn, "DataView"), Fi = je(mn, "Map"), Ni = je(mn, "Promise"), Pi = je(mn, "Set"), Zi = je(mn, "WeakMap"), qi = je(Yu, "create"), Vi = Zi && new Zi, Ki = {}, Gi = Me($i), Hi = Me(Fi), Ji = Me(Ni), Yi = Me(Pi), Qi = Me(Zi), Xi = pi ? pi.prototype : T, no = Xi ? Xi.valueOf : T, to = Xi ? Xi.toString : T, ro = function () { 238 | function n() { } return function (t) { return gu(t) ? di ? di(t) : (n.prototype = t, t = new n, n.prototype = T, t) : {} } 239 | }(); An.templateSettings = { escape: J, evaluate: Y, interpolate: Q, variable: "", imports: { _: An } }, An.prototype = En.prototype, An.prototype.constructor = An, On.prototype = ro(En.prototype), On.prototype.constructor = On, Un.prototype = ro(En.prototype), Un.prototype.constructor = Un, Mn.prototype.clear = function () { this.__data__ = qi ? qi(null) : {}, this.size = 0 }, Mn.prototype.delete = function (n) { 240 | return n = this.has(n) && delete this.__data__[n], 241 | this.size -= n ? 1 : 0, n 242 | }, Mn.prototype.get = function (n) { var t = this.__data__; return qi ? (n = t[n], "__lodash_hash_undefined__" === n ? T : n) : ii.call(t, n) ? t[n] : T }, Mn.prototype.has = function (n) { var t = this.__data__; return qi ? t[n] !== T : ii.call(t, n) }, Mn.prototype.set = function (n, t) { var r = this.__data__; return this.size += this.has(n) ? 0 : 1, r[n] = qi && t === T ? "__lodash_hash_undefined__" : t, this }, Tn.prototype.clear = function () { this.__data__ = [], this.size = 0 }, Tn.prototype.delete = function (n) { 243 | var t = this.__data__; return n = ft(t, n), !(0 > n) && (n == t.length - 1 ? t.pop() : bi.call(t, n, 1), 244 | --this.size, true) 245 | }, Tn.prototype.get = function (n) { var t = this.__data__; return n = ft(t, n), 0 > n ? T : t[n][1] }, Tn.prototype.has = function (n) { return -1 < ft(this.__data__, n) }, Tn.prototype.set = function (n, t) { var r = this.__data__, e = ft(r, n); return 0 > e ? (++this.size, r.push([n, t])) : r[e][1] = t, this }, Fn.prototype.clear = function () { this.size = 0, this.__data__ = { hash: new Mn, map: new (Fi || Tn), string: new Mn } }, Fn.prototype.delete = function (n) { return n = be(this, n).delete(n), this.size -= n ? 1 : 0, n }, Fn.prototype.get = function (n) { 246 | return be(this, n).get(n); 247 | }, Fn.prototype.has = function (n) { return be(this, n).has(n) }, Fn.prototype.set = function (n, t) { var r = be(this, n), e = r.size; return r.set(n, t), this.size += r.size == e ? 0 : 1, this }, Nn.prototype.add = Nn.prototype.push = function (n) { return this.__data__.set(n, "__lodash_hash_undefined__"), this }, Nn.prototype.has = function (n) { return this.__data__.has(n) }, Zn.prototype.clear = function () { this.__data__ = new Tn, this.size = 0 }, Zn.prototype.delete = function (n) { var t = this.__data__; return n = t.delete(n), this.size = t.size, n }, Zn.prototype.get = function (n) { 248 | return this.__data__.get(n) 249 | }, Zn.prototype.has = function (n) { return this.__data__.has(n) }, Zn.prototype.set = function (n, t) { var r = this.__data__; if (r instanceof Tn) { var e = r.__data__; if (!Fi || 199 > e.length) return e.push([n, t]), this.size = ++r.size, this; r = this.__data__ = new Fn(e) } return r.set(n, t), this.size = r.size, this }; var eo = Fr(mt), uo = Fr(At, true), io = Nr(), oo = Nr(true), fo = Vi ? function (n, t) { return Vi.set(n, t), n } : Tu, co = mi ? function (n, t) { return mi(n, "toString", { configurable: true, enumerable: false, value: Mu(t), writable: true }) } : Tu, ao = Ai || function (n) { 250 | return $n.clearTimeout(n) 251 | }, lo = Pi && 1 / U(new Pi([, -0]))[1] == $ ? function (n) { return new Pi(n) } : Nu, so = Vi ? function (n) { return Vi.get(n) } : Nu, ho = Ii ? function (n) { return null == n ? [] : (n = Yu(n), i(Ii(n), function (t) { return yi.call(n, t) })) } : Zu, po = Ii ? function (n) { for (var t = []; n;)a(t, ho(n)), n = gi(n); return t } : Zu, _o = Ot; ($i && "[object DataView]" != _o(new $i(new ArrayBuffer(1))) || Fi && "[object Map]" != _o(new Fi) || Ni && "[object Promise]" != _o(Ni.resolve()) || Pi && "[object Set]" != _o(new Pi) || Zi && "[object WeakMap]" != _o(new Zi)) && (_o = function (n) { 252 | var t = Ot(n); if (n = (n = "[object Object]" == t ? n.constructor : T) ? Me(n) : "") switch (n) { case Gi: return "[object DataView]"; case Hi: return "[object Map]"; case Ji: return "[object Promise]"; case Yi: return "[object Set]"; case Qi: return "[object WeakMap]" }return t 253 | }); var vo = ei ? pu : qu, go = Ue(fo), yo = ki || function (n, t) { return $n.setTimeout(n, t) }, bo = Ue(co), xo = function (n) { n = fu(n, function (n) { return 500 === t.size && t.clear(), n }); var t = n.cache; return n }(function (n) { 254 | var t = []; return 46 === n.charCodeAt(0) && t.push(""), n.replace(tn, function (n, r, e, u) { 255 | t.push(e ? u.replace(hn, "$1") : r || n) 256 | }), t 257 | }), jo = fr(function (n, t) { return su(n) ? yt(n, wt(t, 1, su, true)) : [] }), wo = fr(function (n, t) { var r = qe(t); return su(r) && (r = T), su(n) ? yt(n, wt(t, 1, su, true), ye(r, 2)) : [] }), mo = fr(function (n, t) { var r = qe(t); return su(r) && (r = T), su(n) ? yt(n, wt(t, 1, su, true), T, r) : [] }), Ao = fr(function (n) { var t = c(n, Er); return t.length && t[0] === n[0] ? Wt(t) : [] }), Eo = fr(function (n) { var t = qe(n), r = c(n, Er); return t === qe(r) ? t = T : r.pop(), r.length && r[0] === n[0] ? Wt(r, ye(t, 2)) : [] }), ko = fr(function (n) { 258 | var t = qe(n), r = c(n, Er); return (t = typeof t == "function" ? t : T) && r.pop(), 259 | r.length && r[0] === n[0] ? Wt(r, T, t) : [] 260 | }), So = fr(Ve), Oo = pe(function (n, t) { var r = null == n ? 0 : n.length, e = ht(n, t); return ur(n, c(t, function (n) { return Se(n, r) ? +n : n }).sort(Wr)), e }), Io = fr(function (n) { return br(wt(n, 1, su, true)) }), Ro = fr(function (n) { var t = qe(n); return su(t) && (t = T), br(wt(n, 1, su, true), ye(t, 2)) }), zo = fr(function (n) { var t = qe(n), t = typeof t == "function" ? t : T; return br(wt(n, 1, su, true), T, t) }), Wo = fr(function (n, t) { return su(n) ? yt(n, t) : [] }), Bo = fr(function (n) { return mr(i(n, su)) }), Lo = fr(function (n) { 261 | var t = qe(n); return su(t) && (t = T), 262 | mr(i(n, su), ye(t, 2)) 263 | }), Uo = fr(function (n) { var t = qe(n), t = typeof t == "function" ? t : T; return mr(i(n, su), T, t) }), Co = fr(Ge), Do = fr(function (n) { var t = n.length, t = 1 < t ? n[t - 1] : T, t = typeof t == "function" ? (n.pop(), t) : T; return He(n, t) }), Mo = pe(function (n) { 264 | function t(t) { return ht(t, n) } var r = n.length, e = r ? n[0] : 0, u = this.__wrapped__; return !(1 < r || this.__actions__.length) && u instanceof Un && Se(e) ? (u = u.slice(e, +e + (r ? 1 : 0)), u.__actions__.push({ func: Ye, args: [t], thisArg: T }), new On(u, this.__chain__).thru(function (n) { 265 | return r && !n.length && n.push(T), 266 | n 267 | })) : this.thru(t) 268 | }), To = Tr(function (n, t, r) { ii.call(n, r) ? ++n[r] : st(n, r, 1) }), $o = Gr(Fe), Fo = Gr(Ne), No = Tr(function (n, t, r) { ii.call(n, r) ? n[r].push(t) : st(n, r, [t]) }), Po = fr(function (t, r, e) { var u = -1, i = typeof r == "function", o = lu(t) ? Vu(t.length) : []; return eo(t, function (t) { o[++u] = i ? n(r, t, e) : Lt(t, r, e) }), o }), Zo = Tr(function (n, t, r) { st(n, r, t) }), qo = Tr(function (n, t, r) { n[r ? 0 : 1].push(t) }, function () { return [[], []] }), Vo = fr(function (n, t) { 269 | if (null == n) return []; var r = t.length; return 1 < r && Oe(n, t[0], t[1]) ? t = [] : 2 < r && Oe(t[0], t[1], t[2]) && (t = [t[0]]), 270 | Xt(n, wt(t, 1), []) 271 | }), Ko = Ei || function () { return $n.Date.now() }, Go = fr(function (n, t, r) { var e = 1; if (r.length) var u = L(r, de(Go)), e = 32 | e; return fe(n, e, t, r, u) }), Ho = fr(function (n, t, r) { var e = 3; if (r.length) var u = L(r, de(Ho)), e = 32 | e; return fe(t, e, n, r, u) }), Jo = fr(function (n, t) { return dt(n, 1, t) }), Yo = fr(function (n, t, r) { return dt(n, ku(t) || 0, r) }); fu.Cache = Fn; var Qo = fr(function (t, r) { 272 | r = 1 == r.length && of(r[0]) ? c(r[0], k(ye())) : c(wt(r, 1), k(ye())); var e = r.length; return fr(function (u) { 273 | for (var i = -1, o = Ui(u.length, e); ++i < o;)u[i] = r[i].call(this, u[i]); 274 | return n(t, this, u) 275 | }) 276 | }), Xo = fr(function (n, t) { return fe(n, 32, T, t, L(t, de(Xo))) }), nf = fr(function (n, t) { return fe(n, 64, T, t, L(t, de(nf))) }), tf = pe(function (n, t) { return fe(n, 256, T, T, T, t) }), rf = ee(It), ef = ee(function (n, t) { return n >= t }), uf = Ut(function () { return arguments }()) ? Ut : function (n) { return du(n) && ii.call(n, "callee") && !yi.call(n, "callee") }, of = Vu.isArray, ff = Vn ? k(Vn) : Ct, cf = Ri || qu, af = Kn ? k(Kn) : Dt, lf = Gn ? k(Gn) : Tt, sf = Hn ? k(Hn) : Nt, hf = Jn ? k(Jn) : Pt, pf = Yn ? k(Yn) : Zt, _f = ee(Kt), vf = ee(function (n, t) { return n <= t }), gf = $r(function (n, t) { 277 | if (ze(t) || lu(t)) Cr(t, zu(t), n); else for (var r in t) ii.call(t, r) && ot(n, r, t[r]) 278 | }), df = $r(function (n, t) { Cr(t, Wu(t), n) }), yf = $r(function (n, t, r, e) { Cr(t, Wu(t), n, e) }), bf = $r(function (n, t, r, e) { Cr(t, zu(t), n, e) }), xf = pe(ht), jf = fr(function (n, t) { n = Yu(n); var r = -1, e = t.length, u = 2 < e ? t[2] : T; for (u && Oe(t[0], t[1], u) && (e = 1); ++r < e;)for (var u = t[r], i = Wu(u), o = -1, f = i.length; ++o < f;) { var c = i[o], a = n[c]; (a === T || au(a, ri[c]) && !ii.call(n, c)) && (n[c] = u[c]) } return n }), wf = fr(function (t) { return t.push(T, ae), n(Sf, T, t) }), mf = Yr(function (n, t, r) { 279 | null != t && typeof t.toString != "function" && (t = ci.call(t)), n[t] = r 280 | }, Mu(Tu)), Af = Yr(function (n, t, r) { null != t && typeof t.toString != "function" && (t = ci.call(t)), ii.call(n, t) ? n[t].push(r) : n[t] = [r] }, ye), Ef = fr(Lt), kf = $r(function (n, t, r) { Yt(n, t, r) }), Sf = $r(function (n, t, r, e) { Yt(n, t, r, e) }), Of = pe(function (n, t) { var r = {}; if (null == n) return r; var e = false; t = c(t, function (t) { return t = Sr(t, n), e || (e = 1 < t.length), t }), Cr(n, ve(n), r), e && (r = _t(r, 7, le)); for (var u = t.length; u--;)xr(r, t[u]); return r }), If = pe(function (n, t) { 281 | return null == n ? {} : nr(n, t); 282 | }), Rf = oe(zu), zf = oe(Wu), Wf = qr(function (n, t, r) { return t = t.toLowerCase(), n + (r ? Uu(t) : t) }), Bf = qr(function (n, t, r) { return n + (r ? "-" : "") + t.toLowerCase() }), Lf = qr(function (n, t, r) { return n + (r ? " " : "") + t.toLowerCase() }), Uf = Zr("toLowerCase"), Cf = qr(function (n, t, r) { return n + (r ? "_" : "") + t.toLowerCase() }), Df = qr(function (n, t, r) { return n + (r ? " " : "") + Tf(t) }), Mf = qr(function (n, t, r) { return n + (r ? " " : "") + t.toUpperCase() }), Tf = Zr("toUpperCase"), $f = fr(function (t, r) { try { return n(t, T, r) } catch (n) { return hu(n) ? n : new Gu(n) } }), Ff = pe(function (n, t) { 283 | return r(t, function (t) { t = De(t), st(n, t, Go(n[t], n)) }), n 284 | }), Nf = Hr(), Pf = Hr(true), Zf = fr(function (n, t) { return function (r) { return Lt(r, n, t) } }), qf = fr(function (n, t) { return function (r) { return Lt(n, r, t) } }), Vf = Xr(c), Kf = Xr(u), Gf = Xr(h), Hf = re(), Jf = re(true), Yf = Qr(function (n, t) { return n + t }, 0), Qf = ie("ceil"), Xf = Qr(function (n, t) { return n / t }, 1), nc = ie("floor"), tc = Qr(function (n, t) { return n * t }, 1), rc = ie("round"), ec = Qr(function (n, t) { return n - t }, 0); return An.after = function (n, t) { 285 | if (typeof t != "function") throw new ni("Expected a function"); 286 | return n = Au(n), function () { if (1 > --n) return t.apply(this, arguments) } 287 | }, An.ary = ru, An.assign = gf, An.assignIn = df, An.assignInWith = yf, An.assignWith = bf, An.at = xf, An.before = eu, An.bind = Go, An.bindAll = Ff, An.bindKey = Ho, An.castArray = function () { if (!arguments.length) return []; var n = arguments[0]; return of(n) ? n : [n] }, An.chain = Je, An.chunk = function (n, t, r) { if (t = (r ? Oe(n, t, r) : t === T) ? 1 : Li(Au(t), 0), r = null == n ? 0 : n.length, !r || 1 > t) return []; for (var e = 0, u = 0, i = Vu(Si(r / t)); e < r;)i[u++] = hr(n, e, e += t); return i }, An.compact = function (n) { 288 | for (var t = -1, r = null == n ? 0 : n.length, e = 0, u = []; ++t < r;) { 289 | var i = n[t]; i && (u[e++] = i) 290 | } return u 291 | }, An.concat = function () { var n = arguments.length; if (!n) return []; for (var t = Vu(n - 1), r = arguments[0]; n--;)t[n - 1] = arguments[n]; return a(of(r) ? Ur(r) : [r], wt(t, 1)) }, An.cond = function (t) { var r = null == t ? 0 : t.length, e = ye(); return t = r ? c(t, function (n) { if ("function" != typeof n[1]) throw new ni("Expected a function"); return [e(n[0]), n[1]] }) : [], fr(function (e) { for (var u = -1; ++u < r;) { var i = t[u]; if (n(i[0], this, e)) return n(i[1], this, e) } }) }, An.conforms = function (n) { return vt(_t(n, 1)) }, An.constant = Mu, 292 | An.countBy = To, An.create = function (n, t) { var r = ro(n); return null == t ? r : at(r, t) }, An.curry = uu, An.curryRight = iu, An.debounce = ou, An.defaults = jf, An.defaultsDeep = wf, An.defer = Jo, An.delay = Yo, An.difference = jo, An.differenceBy = wo, An.differenceWith = mo, An.drop = function (n, t, r) { var e = null == n ? 0 : n.length; return e ? (t = r || t === T ? 1 : Au(t), hr(n, 0 > t ? 0 : t, e)) : [] }, An.dropRight = function (n, t, r) { var e = null == n ? 0 : n.length; return e ? (t = r || t === T ? 1 : Au(t), t = e - t, hr(n, 0, 0 > t ? 0 : t)) : [] }, An.dropRightWhile = function (n, t) { 293 | return n && n.length ? jr(n, ye(t, 3), true, true) : []; 294 | }, An.dropWhile = function (n, t) { return n && n.length ? jr(n, ye(t, 3), true) : [] }, An.fill = function (n, t, r, e) { var u = null == n ? 0 : n.length; if (!u) return []; for (r && typeof r != "number" && Oe(n, t, r) && (r = 0, e = u), u = n.length, r = Au(r), 0 > r && (r = -r > u ? 0 : u + r), e = e === T || e > u ? u : Au(e), 0 > e && (e += u), e = r > e ? 0 : Eu(e); r < e;)n[r++] = t; return n }, An.filter = function (n, t) { return (of(n) ? i : jt)(n, ye(t, 3)) }, An.flatMap = function (n, t) { return wt(tu(n, t), 1) }, An.flatMapDeep = function (n, t) { return wt(tu(n, t), $) }, An.flatMapDepth = function (n, t, r) { 295 | return r = r === T ? 1 : Au(r), 296 | wt(tu(n, t), r) 297 | }, An.flatten = Pe, An.flattenDeep = function (n) { return (null == n ? 0 : n.length) ? wt(n, $) : [] }, An.flattenDepth = function (n, t) { return null != n && n.length ? (t = t === T ? 1 : Au(t), wt(n, t)) : [] }, An.flip = function (n) { return fe(n, 512) }, An.flow = Nf, An.flowRight = Pf, An.fromPairs = function (n) { for (var t = -1, r = null == n ? 0 : n.length, e = {}; ++t < r;) { var u = n[t]; e[u[0]] = u[1] } return e }, An.functions = function (n) { return null == n ? [] : Et(n, zu(n)) }, An.functionsIn = function (n) { return null == n ? [] : Et(n, Wu(n)) }, An.groupBy = No, An.initial = function (n) { 298 | return (null == n ? 0 : n.length) ? hr(n, 0, -1) : [] 299 | }, An.intersection = Ao, An.intersectionBy = Eo, An.intersectionWith = ko, An.invert = mf, An.invertBy = Af, An.invokeMap = Po, An.iteratee = $u, An.keyBy = Zo, An.keys = zu, An.keysIn = Wu, An.map = tu, An.mapKeys = function (n, t) { var r = {}; return t = ye(t, 3), mt(n, function (n, e, u) { st(r, t(n, e, u), n) }), r }, An.mapValues = function (n, t) { var r = {}; return t = ye(t, 3), mt(n, function (n, e, u) { st(r, e, t(n, e, u)) }), r }, An.matches = function (n) { return Ht(_t(n, 1)) }, An.matchesProperty = function (n, t) { return Jt(n, _t(t, 1)) }, An.memoize = fu, 300 | An.merge = kf, An.mergeWith = Sf, An.method = Zf, An.methodOf = qf, An.mixin = Fu, An.negate = cu, An.nthArg = function (n) { return n = Au(n), fr(function (t) { return Qt(t, n) }) }, An.omit = Of, An.omitBy = function (n, t) { return Bu(n, cu(ye(t))) }, An.once = function (n) { return eu(2, n) }, An.orderBy = function (n, t, r, e) { return null == n ? [] : (of(t) || (t = null == t ? [] : [t]), r = e ? T : r, of(r) || (r = null == r ? [] : [r]), Xt(n, t, r)) }, An.over = Vf, An.overArgs = Qo, An.overEvery = Kf, An.overSome = Gf, An.partial = Xo, An.partialRight = nf, An.partition = qo, An.pick = If, An.pickBy = Bu, An.property = Pu, 301 | An.propertyOf = function (n) { return function (t) { return null == n ? T : kt(n, t) } }, An.pull = So, An.pullAll = Ve, An.pullAllBy = function (n, t, r) { return n && n.length && t && t.length ? er(n, t, ye(r, 2)) : n }, An.pullAllWith = function (n, t, r) { return n && n.length && t && t.length ? er(n, t, T, r) : n }, An.pullAt = Oo, An.range = Hf, An.rangeRight = Jf, An.rearg = tf, An.reject = function (n, t) { return (of(n) ? i : jt)(n, cu(ye(t, 3))) }, An.remove = function (n, t) { 302 | var r = []; if (!n || !n.length) return r; var e = -1, u = [], i = n.length; for (t = ye(t, 3); ++e < i;) { 303 | var o = n[e]; t(o, e, n) && (r.push(o), 304 | u.push(e)) 305 | } return ur(n, u), r 306 | }, An.rest = function (n, t) { if (typeof n != "function") throw new ni("Expected a function"); return t = t === T ? t : Au(t), fr(n, t) }, An.reverse = Ke, An.sampleSize = function (n, t, r) { return t = (r ? Oe(n, t, r) : t === T) ? 1 : Au(t), (of(n) ? et : ar)(n, t) }, An.set = function (n, t, r) { return null == n ? n : lr(n, t, r) }, An.setWith = function (n, t, r, e) { return e = typeof e == "function" ? e : T, null == n ? n : lr(n, t, r, e) }, An.shuffle = function (n) { return (of(n) ? ut : sr)(n) }, An.slice = function (n, t, r) { 307 | var e = null == n ? 0 : n.length; return e ? (r && typeof r != "number" && Oe(n, t, r) ? (t = 0, 308 | r = e) : (t = null == t ? 0 : Au(t), r = r === T ? e : Au(r)), hr(n, t, r)) : [] 309 | }, An.sortBy = Vo, An.sortedUniq = function (n) { return n && n.length ? gr(n) : [] }, An.sortedUniqBy = function (n, t) { return n && n.length ? gr(n, ye(t, 2)) : [] }, An.split = function (n, t, r) { return r && typeof r != "number" && Oe(n, t, r) && (t = r = T), r = r === T ? 4294967295 : r >>> 0, r ? (n = Ou(n)) && (typeof t == "string" || null != t && !sf(t)) && (t = yr(t), !t && Rn.test(n)) ? Or(M(n), 0, r) : n.split(t, r) : [] }, An.spread = function (t, r) { 310 | if (typeof t != "function") throw new ni("Expected a function"); return r = null == r ? 0 : Li(Au(r), 0), 311 | fr(function (e) { var u = e[r]; return e = Or(e, 0, r), u && a(e, u), n(t, this, e) }) 312 | }, An.tail = function (n) { var t = null == n ? 0 : n.length; return t ? hr(n, 1, t) : [] }, An.take = function (n, t, r) { return n && n.length ? (t = r || t === T ? 1 : Au(t), hr(n, 0, 0 > t ? 0 : t)) : [] }, An.takeRight = function (n, t, r) { var e = null == n ? 0 : n.length; return e ? (t = r || t === T ? 1 : Au(t), t = e - t, hr(n, 0 > t ? 0 : t, e)) : [] }, An.takeRightWhile = function (n, t) { return n && n.length ? jr(n, ye(t, 3), false, true) : [] }, An.takeWhile = function (n, t) { return n && n.length ? jr(n, ye(t, 3)) : [] }, An.tap = function (n, t) { 313 | return t(n), 314 | n 315 | }, An.throttle = function (n, t, r) { var e = true, u = true; if (typeof n != "function") throw new ni("Expected a function"); return gu(r) && (e = "leading" in r ? !!r.leading : e, u = "trailing" in r ? !!r.trailing : u), ou(n, t, { leading: e, maxWait: t, trailing: u }) }, An.thru = Ye, An.toArray = wu, An.toPairs = Rf, An.toPairsIn = zf, An.toPath = function (n) { return of(n) ? c(n, De) : ju(n) ? [n] : Ur(xo(Ou(n))) }, An.toPlainObject = Su, An.transform = function (n, t, e) { 316 | var u = of(n), i = u || cf(n) || pf(n); if (t = ye(t, 4), null == e) { 317 | var o = n && n.constructor; e = i ? u ? new o : [] : gu(n) && pu(o) ? ro(gi(n)) : {}; 318 | } return (i ? r : mt)(n, function (n, r, u) { return t(e, n, r, u) }), e 319 | }, An.unary = function (n) { return ru(n, 1) }, An.union = Io, An.unionBy = Ro, An.unionWith = zo, An.uniq = function (n) { return n && n.length ? br(n) : [] }, An.uniqBy = function (n, t) { return n && n.length ? br(n, ye(t, 2)) : [] }, An.uniqWith = function (n, t) { return t = typeof t == "function" ? t : T, n && n.length ? br(n, T, t) : [] }, An.unset = function (n, t) { return null == n || xr(n, t) }, An.unzip = Ge, An.unzipWith = He, An.update = function (n, t, r) { return null == n ? n : lr(n, t, kr(r)(kt(n, t)), void 0) }, An.updateWith = function (n, t, r, e) { 320 | return e = typeof e == "function" ? e : T, null != n && (n = lr(n, t, kr(r)(kt(n, t)), e)), n 321 | }, An.values = Lu, An.valuesIn = function (n) { return null == n ? [] : S(n, Wu(n)) }, An.without = Wo, An.words = Du, An.wrap = function (n, t) { return Xo(kr(t), n) }, An.xor = Bo, An.xorBy = Lo, An.xorWith = Uo, An.zip = Co, An.zipObject = function (n, t) { return Ar(n || [], t || [], ot) }, An.zipObjectDeep = function (n, t) { return Ar(n || [], t || [], lr) }, An.zipWith = Do, An.entries = Rf, An.entriesIn = zf, An.extend = df, An.extendWith = yf, Fu(An, An), An.add = Yf, An.attempt = $f, An.camelCase = Wf, An.capitalize = Uu, 322 | An.ceil = Qf, An.clamp = function (n, t, r) { return r === T && (r = t, t = T), r !== T && (r = ku(r), r = r === r ? r : 0), t !== T && (t = ku(t), t = t === t ? t : 0), pt(ku(n), t, r) }, An.clone = function (n) { return _t(n, 4) }, An.cloneDeep = function (n) { return _t(n, 5) }, An.cloneDeepWith = function (n, t) { return t = typeof t == "function" ? t : T, _t(n, 5, t) }, An.cloneWith = function (n, t) { return t = typeof t == "function" ? t : T, _t(n, 4, t) }, An.conformsTo = function (n, t) { return null == t || gt(n, t, zu(t)) }, An.deburr = Cu, An.defaultTo = function (n, t) { return null == n || n !== n ? t : n }, An.divide = Xf, An.endsWith = function (n, t, r) { 323 | n = Ou(n), t = yr(t); var e = n.length, e = r = r === T ? e : pt(Au(r), 0, e); return r -= t.length, 0 <= r && n.slice(r, e) == t 324 | }, An.eq = au, An.escape = function (n) { return (n = Ou(n)) && H.test(n) ? n.replace(K, nt) : n }, An.escapeRegExp = function (n) { return (n = Ou(n)) && en.test(n) ? n.replace(rn, "\\$&") : n }, An.every = function (n, t, r) { var e = of(n) ? u : bt; return r && Oe(n, t, r) && (t = T), e(n, ye(t, 3)) }, An.find = $o, An.findIndex = Fe, An.findKey = function (n, t) { return p(n, ye(t, 3), mt) }, An.findLast = Fo, An.findLastIndex = Ne, An.findLastKey = function (n, t) { 325 | return p(n, ye(t, 3), At); 326 | }, An.floor = nc, An.forEach = Xe, An.forEachRight = nu, An.forIn = function (n, t) { return null == n ? n : io(n, ye(t, 3), Wu) }, An.forInRight = function (n, t) { return null == n ? n : oo(n, ye(t, 3), Wu) }, An.forOwn = function (n, t) { return n && mt(n, ye(t, 3)) }, An.forOwnRight = function (n, t) { return n && At(n, ye(t, 3)) }, An.get = Iu, An.gt = rf, An.gte = ef, An.has = function (n, t) { return null != n && we(n, t, Rt) }, An.hasIn = Ru, An.head = Ze, An.identity = Tu, An.includes = function (n, t, r, e) { 327 | return n = lu(n) ? n : Lu(n), r = r && !e ? Au(r) : 0, e = n.length, 0 > r && (r = Li(e + r, 0)), xu(n) ? r <= e && -1 < n.indexOf(t, r) : !!e && -1 < v(n, t, r); 328 | }, An.indexOf = function (n, t, r) { var e = null == n ? 0 : n.length; return e ? (r = null == r ? 0 : Au(r), 0 > r && (r = Li(e + r, 0)), v(n, t, r)) : -1 }, An.inRange = function (n, t, r) { return t = mu(t), r === T ? (r = t, t = 0) : r = mu(r), n = ku(n), n >= Ui(t, r) && n < Li(t, r) }, An.invoke = Ef, An.isArguments = uf, An.isArray = of, An.isArrayBuffer = ff, An.isArrayLike = lu, An.isArrayLikeObject = su, An.isBoolean = function (n) { return true === n || false === n || du(n) && "[object Boolean]" == Ot(n) }, An.isBuffer = cf, An.isDate = af, An.isElement = function (n) { return du(n) && 1 === n.nodeType && !bu(n) }, An.isEmpty = function (n) { 329 | if (null == n) return true; if (lu(n) && (of(n) || typeof n == "string" || typeof n.splice == "function" || cf(n) || pf(n) || uf(n))) return !n.length; var t = _o(n); if ("[object Map]" == t || "[object Set]" == t) return !n.size; if (ze(n)) return !Vt(n).length; for (var r in n) if (ii.call(n, r)) return false; return true 330 | }, An.isEqual = function (n, t) { return Mt(n, t) }, An.isEqualWith = function (n, t, r) { var e = (r = typeof r == "function" ? r : T) ? r(n, t) : T; return e === T ? Mt(n, t, T, r) : !!e }, An.isError = hu, An.isFinite = function (n) { return typeof n == "number" && zi(n) }, An.isFunction = pu, 331 | An.isInteger = _u, An.isLength = vu, An.isMap = lf, An.isMatch = function (n, t) { return n === t || $t(n, t, xe(t)) }, An.isMatchWith = function (n, t, r) { return r = typeof r == "function" ? r : T, $t(n, t, xe(t), r) }, An.isNaN = function (n) { return yu(n) && n != +n }, An.isNative = function (n) { if (vo(n)) throw new Gu("Unsupported core-js use. Try https://npms.io/search?q=ponyfill."); return Ft(n) }, An.isNil = function (n) { return null == n }, An.isNull = function (n) { return null === n }, An.isNumber = yu, An.isObject = gu, An.isObjectLike = du, An.isPlainObject = bu, An.isRegExp = sf, 332 | An.isSafeInteger = function (n) { return _u(n) && -9007199254740991 <= n && 9007199254740991 >= n }, An.isSet = hf, An.isString = xu, An.isSymbol = ju, An.isTypedArray = pf, An.isUndefined = function (n) { return n === T }, An.isWeakMap = function (n) { return du(n) && "[object WeakMap]" == _o(n) }, An.isWeakSet = function (n) { return du(n) && "[object WeakSet]" == Ot(n) }, An.join = function (n, t) { return null == n ? "" : Wi.call(n, t) }, An.kebabCase = Bf, An.last = qe, An.lastIndexOf = function (n, t, r) { 333 | var e = null == n ? 0 : n.length; if (!e) return -1; var u = e; if (r !== T && (u = Au(r), u = 0 > u ? Li(e + u, 0) : Ui(u, e - 1)), 334 | t === t) { for (r = u + 1; r-- && n[r] !== t;); n = r } else n = _(n, d, u, true); return n 335 | }, An.lowerCase = Lf, An.lowerFirst = Uf, An.lt = _f, An.lte = vf, An.max = function (n) { return n && n.length ? xt(n, Tu, It) : T }, An.maxBy = function (n, t) { return n && n.length ? xt(n, ye(t, 2), It) : T }, An.mean = function (n) { return y(n, Tu) }, An.meanBy = function (n, t) { return y(n, ye(t, 2)) }, An.min = function (n) { return n && n.length ? xt(n, Tu, Kt) : T }, An.minBy = function (n, t) { return n && n.length ? xt(n, ye(t, 2), Kt) : T }, An.stubArray = Zu, An.stubFalse = qu, An.stubObject = function () { return {} }, An.stubString = function () { 336 | return "" 337 | }, An.stubTrue = function () { return true }, An.multiply = tc, An.nth = function (n, t) { return n && n.length ? Qt(n, Au(t)) : T }, An.noConflict = function () { return $n._ === this && ($n._ = li), this }, An.noop = Nu, An.now = Ko, An.pad = function (n, t, r) { n = Ou(n); var e = (t = Au(t)) ? D(n) : 0; return !t || e >= t ? n : (t = (t - e) / 2, ne(Oi(t), r) + n + ne(Si(t), r)) }, An.padEnd = function (n, t, r) { n = Ou(n); var e = (t = Au(t)) ? D(n) : 0; return t && e < t ? n + ne(t - e, r) : n }, An.padStart = function (n, t, r) { n = Ou(n); var e = (t = Au(t)) ? D(n) : 0; return t && e < t ? ne(t - e, r) + n : n }, An.parseInt = function (n, t, r) { 338 | return r || null == t ? t = 0 : t && (t = +t), Di(Ou(n).replace(on, ""), t || 0) 339 | }, An.random = function (n, t, r) { if (r && typeof r != "boolean" && Oe(n, t, r) && (t = r = T), r === T && (typeof t == "boolean" ? (r = t, t = T) : typeof n == "boolean" && (r = n, n = T)), n === T && t === T ? (n = 0, t = 1) : (n = mu(n), t === T ? (t = n, n = 0) : t = mu(t)), n > t) { var e = n; n = t, t = e } return r || n % 1 || t % 1 ? (r = Mi(), Ui(n + r * (t - n + Cn("1e-" + ((r + "").length - 1))), t)) : ir(n, t) }, An.reduce = function (n, t, r) { var e = of(n) ? l : j, u = 3 > arguments.length; return e(n, ye(t, 4), r, u, eo) }, An.reduceRight = function (n, t, r) { 340 | var e = of(n) ? s : j, u = 3 > arguments.length; 341 | return e(n, ye(t, 4), r, u, uo) 342 | }, An.repeat = function (n, t, r) { return t = (r ? Oe(n, t, r) : t === T) ? 1 : Au(t), or(Ou(n), t) }, An.replace = function () { var n = arguments, t = Ou(n[0]); return 3 > n.length ? t : t.replace(n[1], n[2]) }, An.result = function (n, t, r) { t = Sr(t, n); var e = -1, u = t.length; for (u || (u = 1, n = T); ++e < u;) { var i = null == n ? T : n[De(t[e])]; i === T && (e = u, i = r), n = pu(i) ? i.call(n) : i } return n }, An.round = rc, An.runInContext = x, An.sample = function (n) { return (of(n) ? Qn : cr)(n) }, An.size = function (n) { 343 | if (null == n) return 0; if (lu(n)) return xu(n) ? D(n) : n.length; 344 | var t = _o(n); return "[object Map]" == t || "[object Set]" == t ? n.size : Vt(n).length 345 | }, An.snakeCase = Cf, An.some = function (n, t, r) { var e = of(n) ? h : pr; return r && Oe(n, t, r) && (t = T), e(n, ye(t, 3)) }, An.sortedIndex = function (n, t) { return _r(n, t) }, An.sortedIndexBy = function (n, t, r) { return vr(n, t, ye(r, 2)) }, An.sortedIndexOf = function (n, t) { var r = null == n ? 0 : n.length; if (r) { var e = _r(n, t); if (e < r && au(n[e], t)) return e } return -1 }, An.sortedLastIndex = function (n, t) { return _r(n, t, true) }, An.sortedLastIndexBy = function (n, t, r) { 346 | return vr(n, t, ye(r, 2), true); 347 | }, An.sortedLastIndexOf = function (n, t) { if (null == n ? 0 : n.length) { var r = _r(n, t, true) - 1; if (au(n[r], t)) return r } return -1 }, An.startCase = Df, An.startsWith = function (n, t, r) { return n = Ou(n), r = null == r ? 0 : pt(Au(r), 0, n.length), t = yr(t), n.slice(r, r + t.length) == t }, An.subtract = ec, An.sum = function (n) { return n && n.length ? m(n, Tu) : 0 }, An.sumBy = function (n, t) { return n && n.length ? m(n, ye(t, 2)) : 0 }, An.template = function (n, t, r) { 348 | var e = An.templateSettings; r && Oe(n, t, r) && (t = T), n = Ou(n), t = yf({}, t, e, ce), r = yf({}, t.imports, e.imports, ce); var u, i, o = zu(r), f = S(r, o), c = 0; 349 | r = t.interpolate || jn; var a = "__p+='"; r = Qu((t.escape || jn).source + "|" + r.source + "|" + (r === Q ? pn : jn).source + "|" + (t.evaluate || jn).source + "|$", "g"); var l = "sourceURL" in t ? "//# sourceURL=" + t.sourceURL + "\n" : ""; if (n.replace(r, function (t, r, e, o, f, l) { return e || (e = o), a += n.slice(c, l).replace(wn, z), r && (u = true, a += "'+__e(" + r + ")+'"), f && (i = true, a += "';" + f + ";\n__p+='"), e && (a += "'+((__t=(" + e + "))==null?'':__t)+'"), c = l + t.length, t }), a += "';", (t = t.variable) || (a = "with(obj){" + a + "}"), a = (i ? a.replace(P, "") : a).replace(Z, "$1").replace(q, "$1;"), 350 | a = "function(" + (t || "obj") + "){" + (t ? "" : "obj||(obj={});") + "var __t,__p=''" + (u ? ",__e=_.escape" : "") + (i ? ",__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}" : ";") + a + "return __p}", t = $f(function () { return Hu(o, l + "return " + a).apply(T, f) }), t.source = a, hu(t)) throw t; return t 351 | }, An.times = function (n, t) { if (n = Au(n), 1 > n || 9007199254740991 < n) return []; var r = 4294967295, e = Ui(n, 4294967295); for (t = ye(t), n -= 4294967295, e = A(e, t); ++r < n;)t(r); return e }, An.toFinite = mu, An.toInteger = Au, An.toLength = Eu, An.toLower = function (n) { 352 | return Ou(n).toLowerCase() 353 | }, An.toNumber = ku, An.toSafeInteger = function (n) { return n ? pt(Au(n), -9007199254740991, 9007199254740991) : 0 === n ? n : 0 }, An.toString = Ou, An.toUpper = function (n) { return Ou(n).toUpperCase() }, An.trim = function (n, t, r) { return (n = Ou(n)) && (r || t === T) ? n.replace(un, "") : n && (t = yr(t)) ? (n = M(n), r = M(t), t = I(n, r), r = R(n, r) + 1, Or(n, t, r).join("")) : n }, An.trimEnd = function (n, t, r) { return (n = Ou(n)) && (r || t === T) ? n.replace(fn, "") : n && (t = yr(t)) ? (n = M(n), t = R(n, M(t)) + 1, Or(n, 0, t).join("")) : n }, An.trimStart = function (n, t, r) { 354 | return (n = Ou(n)) && (r || t === T) ? n.replace(on, "") : n && (t = yr(t)) ? (n = M(n), t = I(n, M(t)), Or(n, t).join("")) : n 355 | }, An.truncate = function (n, t) { 356 | var r = 30, e = "..."; if (gu(t)) var u = "separator" in t ? t.separator : u, r = "length" in t ? Au(t.length) : r, e = "omission" in t ? yr(t.omission) : e; n = Ou(n); var i = n.length; if (Rn.test(n)) var o = M(n), i = o.length; if (r >= i) return n; if (i = r - D(e), 1 > i) return e; if (r = o ? Or(o, 0, i).join("") : n.slice(0, i), u === T) return r + e; if (o && (i += r.length - i), sf(u)) { 357 | if (n.slice(i).search(u)) { 358 | var f = r; for (u.global || (u = Qu(u.source, Ou(_n.exec(u)) + "g")), 359 | u.lastIndex = 0; o = u.exec(f);)var c = o.index; r = r.slice(0, c === T ? i : c) 360 | } 361 | } else n.indexOf(yr(u), i) != i && (u = r.lastIndexOf(u), -1 < u && (r = r.slice(0, u))); return r + e 362 | }, An.unescape = function (n) { return (n = Ou(n)) && G.test(n) ? n.replace(V, tt) : n }, An.uniqueId = function (n) { var t = ++oi; return Ou(n) + t }, An.upperCase = Mf, An.upperFirst = Tf, An.each = Xe, An.eachRight = nu, An.first = Ze, Fu(An, function () { var n = {}; return mt(An, function (t, r) { ii.call(An.prototype, r) || (n[r] = t) }), n }(), { chain: false }), An.VERSION = "4.17.10", r("bind bindKey curry curryRight partial partialRight".split(" "), function (n) { 363 | An[n].placeholder = An 364 | }), r(["drop", "take"], function (n, t) { Un.prototype[n] = function (r) { r = r === T ? 1 : Li(Au(r), 0); var e = this.__filtered__ && !t ? new Un(this) : this.clone(); return e.__filtered__ ? e.__takeCount__ = Ui(r, e.__takeCount__) : e.__views__.push({ size: Ui(r, 4294967295), type: n + (0 > e.__dir__ ? "Right" : "") }), e }, Un.prototype[n + "Right"] = function (t) { return this.reverse()[n](t).reverse() } }), r(["filter", "map", "takeWhile"], function (n, t) { 365 | var r = t + 1, e = 1 == r || 3 == r; Un.prototype[n] = function (n) { 366 | var t = this.clone(); return t.__iteratees__.push({ 367 | iteratee: ye(n, 3), type: r 368 | }), t.__filtered__ = t.__filtered__ || e, t 369 | } 370 | }), r(["head", "last"], function (n, t) { var r = "take" + (t ? "Right" : ""); Un.prototype[n] = function () { return this[r](1).value()[0] } }), r(["initial", "tail"], function (n, t) { var r = "drop" + (t ? "" : "Right"); Un.prototype[n] = function () { return this.__filtered__ ? new Un(this) : this[r](1) } }), Un.prototype.compact = function () { return this.filter(Tu) }, Un.prototype.find = function (n) { return this.filter(n).head() }, Un.prototype.findLast = function (n) { 371 | return this.reverse().find(n); 372 | }, Un.prototype.invokeMap = fr(function (n, t) { return typeof n == "function" ? new Un(this) : this.map(function (r) { return Lt(r, n, t) }) }), Un.prototype.reject = function (n) { return this.filter(cu(ye(n))) }, Un.prototype.slice = function (n, t) { n = Au(n); var r = this; return r.__filtered__ && (0 < n || 0 > t) ? new Un(r) : (0 > n ? r = r.takeRight(-n) : n && (r = r.drop(n)), t !== T && (t = Au(t), r = 0 > t ? r.dropRight(-t) : r.take(t - n)), r) }, Un.prototype.takeRightWhile = function (n) { return this.reverse().takeWhile(n).reverse() }, Un.prototype.toArray = function () { 373 | return this.take(4294967295); 374 | }, mt(Un.prototype, function (n, t) { 375 | var r = /^(?:filter|find|map|reject)|While$/.test(t), e = /^(?:head|last)$/.test(t), u = An[e ? "take" + ("last" == t ? "Right" : "") : t], i = e || /^find/.test(t); u && (An.prototype[t] = function () { 376 | function t(n) { return n = u.apply(An, a([n], f)), e && h ? n[0] : n } var o = this.__wrapped__, f = e ? [1] : arguments, c = o instanceof Un, l = f[0], s = c || of(o); s && r && typeof l == "function" && 1 != l.length && (c = s = false); var h = this.__chain__, p = !!this.__actions__.length, l = i && !h, c = c && !p; return !i && s ? (o = c ? o : new Un(this), o = n.apply(o, f), o.__actions__.push({ 377 | func: Ye, args: [t], thisArg: T 378 | }), new On(o, h)) : l && c ? n.apply(this, f) : (o = this.thru(t), l ? e ? o.value()[0] : o.value() : o) 379 | }) 380 | }), r("pop push shift sort splice unshift".split(" "), function (n) { var t = ti[n], r = /^(?:push|sort|unshift)$/.test(n) ? "tap" : "thru", e = /^(?:pop|shift)$/.test(n); An.prototype[n] = function () { var n = arguments; if (e && !this.__chain__) { var u = this.value(); return t.apply(of(u) ? u : [], n) } return this[r](function (r) { return t.apply(of(r) ? r : [], n) }) } }), mt(Un.prototype, function (n, t) { 381 | var r = An[t]; if (r) { 382 | var e = r.name + ""; 383 | (Ki[e] || (Ki[e] = [])).push({ name: t, func: r }) 384 | } 385 | }), Ki[Jr(T, 2).name] = [{ name: "wrapper", func: T }], Un.prototype.clone = function () { var n = new Un(this.__wrapped__); return n.__actions__ = Ur(this.__actions__), n.__dir__ = this.__dir__, n.__filtered__ = this.__filtered__, n.__iteratees__ = Ur(this.__iteratees__), n.__takeCount__ = this.__takeCount__, n.__views__ = Ur(this.__views__), n }, Un.prototype.reverse = function () { 386 | if (this.__filtered__) { var n = new Un(this); n.__dir__ = -1, n.__filtered__ = true } else n = this.clone(), n.__dir__ *= -1; return n; 387 | }, Un.prototype.value = function () { 388 | var n, t = this.__wrapped__.value(), r = this.__dir__, e = of(t), u = 0 > r, i = e ? t.length : 0; n = i; for (var o = this.__views__, f = 0, c = -1, a = o.length; ++c < a;) { var l = o[c], s = l.size; switch (l.type) { case "drop": f += s; break; case "dropRight": n -= s; break; case "take": n = Ui(n, f + s); break; case "takeRight": f = Li(f, n - s) } } if (n = { start: f, end: n }, o = n.start, f = n.end, n = f - o, o = u ? f : o - 1, f = this.__iteratees__, c = f.length, a = 0, l = Ui(n, this.__takeCount__), !e || !u && i == n && l == n) return wr(t, this.__actions__); e = []; n: for (; n-- && a < l;) { 389 | for (o += r, 390 | u = -1, i = t[o]; ++u < c;) { var h = f[u], s = h.type, h = (0, h.iteratee)(i); if (2 == s) i = h; else if (!h) { if (1 == s) continue n; break n } } e[a++] = i 391 | } return e 392 | }, An.prototype.at = Mo, An.prototype.chain = function () { return Je(this) }, An.prototype.commit = function () { return new On(this.value(), this.__chain__) }, An.prototype.next = function () { this.__values__ === T && (this.__values__ = wu(this.value())); var n = this.__index__ >= this.__values__.length; return { done: n, value: n ? T : this.__values__[this.__index__++] } }, An.prototype.plant = function (n) { 393 | for (var t, r = this; r instanceof En;) { 394 | var e = $e(r); e.__index__ = 0, e.__values__ = T, t ? u.__wrapped__ = e : t = e; var u = e, r = r.__wrapped__ 395 | } return u.__wrapped__ = n, t 396 | }, An.prototype.reverse = function () { var n = this.__wrapped__; return n instanceof Un ? (this.__actions__.length && (n = new Un(this)), n = n.reverse(), n.__actions__.push({ func: Ye, args: [Ke], thisArg: T }), new On(n, this.__chain__)) : this.thru(Ke) }, An.prototype.toJSON = An.prototype.valueOf = An.prototype.value = function () { return wr(this.__wrapped__, this.__actions__) }, An.prototype.first = An.prototype.head, ji && (An.prototype[ji] = Qe), 397 | An 398 | }(); typeof define == "function" && typeof define.amd == "object" && define.amd ? ($n._ = rt, define(function () { return rt })) : Nn ? ((Nn.exports = rt)._ = rt, Fn._ = rt) : $n._ = rt 399 | }).call(this); 400 | -------------------------------------------------------------------------------- /force-app/main/default/staticresources/lodash.resource-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Public 4 | application/javascript 5 | JavaScript utility library used Lightning components 6 | 7 | -------------------------------------------------------------------------------- /force-app/main/default/staticresources/redux.js: -------------------------------------------------------------------------------- 1 | !function (e, t) { "object" == typeof exports && "undefined" != typeof module ? t(exports) : "function" == typeof define && define.amd ? define(["exports"], t) : t(e.Redux = {}) }(this, function (e) { "use strict"; var t = function (e) { var t, r = e.Symbol; return "function" == typeof r ? r.observable ? t = r.observable : (t = r("observable"), r.observable = t) : t = "@@observable", t }("undefined" != typeof self ? self : "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof module ? module : Function("return this")()), r = function () { return Math.random().toString(36).substring(7).split("").join(".") }, n = { INIT: "@@redux/INIT" + r(), REPLACE: "@@redux/REPLACE" + r(), PROBE_UNKNOWN_ACTION: function () { return "@@redux/PROBE_UNKNOWN_ACTION" + r() } }; function o(e, t) { var r = t && t.type; return "Given " + (r && 'action "' + r + '"' || "an action") + ', reducer "' + e + '" returned undefined. To ignore an action, you must explicitly return the previous state. If you want this reducer to hold no value, you can return null instead of undefined.' } function i(e, t) { return function () { return t(e.apply(this, arguments)) } } function u(e, t, r) { return t in e ? Object.defineProperty(e, t, { value: r, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = r, e } function a() { for (var e = arguments.length, t = Array(e), r = 0; e > r; r++)t[r] = arguments[r]; return 0 === t.length ? function (e) { return e } : 1 === t.length ? t[0] : t.reduce(function (e, t) { return function () { return e(t.apply(void 0, arguments)) } }) } e.createStore = function e(r, o, i) { var u; if ("function" == typeof o && "function" == typeof i || "function" == typeof i && "function" == typeof arguments[3]) throw Error("It looks like you are passing several store enhancers to createStore(). This is not supported. Instead, compose them together to a single function"); if ("function" == typeof o && void 0 === i && (i = o, o = void 0), void 0 !== i) { if ("function" != typeof i) throw Error("Expected the enhancer to be a function."); return i(e)(r, o) } if ("function" != typeof r) throw Error("Expected the reducer to be a function."); var a = r, c = o, f = [], s = f, d = !1; function l() { s === f && (s = f.slice()) } function p() { if (d) throw Error("You may not call store.getState() while the reducer is executing. The reducer has already received the state as an argument. Pass it down from the top reducer instead of reading it from the store."); return c } function h(e) { if ("function" != typeof e) throw Error("Expected the listener to be a function."); if (d) throw Error("You may not call store.subscribe() while the reducer is executing. If you would like to be notified after the store has been updated, subscribe from a component and invoke store.getState() in the callback to access the latest state. See https://redux.js.org/api-reference/store#subscribe(listener) for more details."); var t = !0; return l(), s.push(e), function () { if (t) { if (d) throw Error("You may not unsubscribe from a store listener while the reducer is executing. See https://redux.js.org/api-reference/store#subscribe(listener) for more details."); t = !1, l(); var r = s.indexOf(e); s.splice(r, 1) } } } function y(e) { if (!function (e) { if ("object" != typeof e || null === e) return !1; for (var t = e; null !== Object.getPrototypeOf(t);)t = Object.getPrototypeOf(t); return Object.getPrototypeOf(e) === t }(e)) throw Error("Actions must be plain objects. Use custom middleware for async actions."); if (void 0 === e.type) throw Error('Actions may not have an undefined "type" property. Have you misspelled a constant?'); if (d) throw Error("Reducers may not dispatch actions."); try { d = !0, c = a(c, e) } finally { d = !1 } for (var t = f = s, r = 0; t.length > r; r++)(0, t[r])(); return e } return y({ type: n.INIT }), (u = { dispatch: y, subscribe: h, getState: p, replaceReducer: function (e) { if ("function" != typeof e) throw Error("Expected the nextReducer to be a function."); a = e, y({ type: n.REPLACE }) } })[t] = function () { var e, r = h; return (e = { subscribe: function (e) { if ("object" != typeof e || null === e) throw new TypeError("Expected the observer to be an object."); function t() { e.next && e.next(p()) } return t(), { unsubscribe: r(t) } } })[t] = function () { return this }, e }, u }, e.combineReducers = function (e) { for (var t = Object.keys(e), r = {}, i = 0; t.length > i; i++) { var u = t[i]; "function" == typeof e[u] && (r[u] = e[u]) } var a, c = Object.keys(r); try { !function (e) { Object.keys(e).forEach(function (t) { var r = e[t]; if (void 0 === r(void 0, { type: n.INIT })) throw Error('Reducer "' + t + "\" returned undefined during initialization. If the state passed to the reducer is undefined, you must explicitly return the initial state. The initial state may not be undefined. If you don't want to set a value for this reducer, you can use null instead of undefined."); if (void 0 === r(void 0, { type: n.PROBE_UNKNOWN_ACTION() })) throw Error('Reducer "' + t + "\" returned undefined when probed with a random type. Don't try to handle " + n.INIT + ' or other actions in "redux/*" namespace. They are considered private. Instead, you must return the current state for any unknown actions, unless it is undefined, in which case you must return the initial state, regardless of the action type. The initial state may not be undefined, but can be null.') }) }(r) } catch (e) { a = e } return function (e, t) { if (void 0 === e && (e = {}), a) throw a; for (var n = !1, i = {}, u = 0; c.length > u; u++) { var f = c[u], s = e[f], d = (0, r[f])(s, t); if (void 0 === d) { var l = o(f, t); throw Error(l) } i[f] = d, n = n || d !== s } return n ? i : e } }, e.bindActionCreators = function (e, t) { if ("function" == typeof e) return i(e, t); if ("object" != typeof e || null === e) throw Error("bindActionCreators expected an object or a function, instead received " + (null === e ? "null" : typeof e) + '. Did you write "import ActionCreators from" instead of "import * as ActionCreators from"?'); for (var r = Object.keys(e), n = {}, o = 0; r.length > o; o++) { var u = r[o], a = e[u]; "function" == typeof a && (n[u] = i(a, t)) } return n }, e.applyMiddleware = function () { for (var e = arguments.length, t = Array(e), r = 0; e > r; r++)t[r] = arguments[r]; return function (e) { return function () { var r = e.apply(void 0, arguments), n = function () { throw Error("Dispatching while constructing your middleware is not allowed. Other middleware would not be applied to this dispatch.") }, o = { getState: r.getState, dispatch: function () { return n.apply(void 0, arguments) } }, i = t.map(function (e) { return e(o) }); return function (e) { for (var t = 1; arguments.length > t; t++) { var r = null != arguments[t] ? arguments[t] : {}, n = Object.keys(r); "function" == typeof Object.getOwnPropertySymbols && (n = n.concat(Object.getOwnPropertySymbols(r).filter(function (e) { return Object.getOwnPropertyDescriptor(r, e).enumerable }))), n.forEach(function (t) { u(e, t, r[t]) }) } return e }({}, r, { dispatch: n = a.apply(void 0, i)(r.dispatch) }) } } }, e.compose = a, e.__DO_NOT_USE__ActionTypes = n, Object.defineProperty(e, "__esModule", { value: !0 }) }); -------------------------------------------------------------------------------- /force-app/main/default/staticresources/redux.resource-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Public 4 | application/javascript 5 | -------------------------------------------------------------------------------- /force-app/main/default/staticresources/reduxThunk.js: -------------------------------------------------------------------------------- 1 | !function (t, e) { "object" == typeof exports && "object" == typeof module ? module.exports = e() : "function" == typeof define && define.amd ? define([], e) : "object" == typeof exports ? exports.ReduxThunk = e() : t.ReduxThunk = e() }(this, function () { return function (t) { function e(o) { if (n[o]) return n[o].exports; var r = n[o] = { exports: {}, id: o, loaded: !1 }; return t[o].call(r.exports, r, r.exports, e), r.loaded = !0, r.exports } var n = {}; return e.m = t, e.c = n, e.p = "", e(0) }([function (t, e, n) { t.exports = n(1) }, function (t, e) { "use strict"; function n(t) { return function (e) { var n = e.dispatch, o = e.getState; return function (e) { return function (r) { return "function" == typeof r ? r(n, o, t) : e(r) } } } } e.__esModule = !0; var o = n(); o.withExtraArgument = n, e.default = o }]) }); -------------------------------------------------------------------------------- /force-app/main/default/staticresources/reduxThunk.resource-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Public 4 | application/javascript 5 | -------------------------------------------------------------------------------- /salesforcedx.yaml: -------------------------------------------------------------------------------- 1 | scratch-org-def: config/project-scratch-def.json 2 | assign-permset: false 3 | run-apex-tests: true 4 | delete-scratch-org: false 5 | show-scratch-org-url: true -------------------------------------------------------------------------------- /sfdx-project.json: -------------------------------------------------------------------------------- 1 | { 2 | "packageDirectories": [ 3 | { 4 | "path": "force-app", 5 | "default": true 6 | } 7 | ], 8 | "namespace": "", 9 | "sfdcLoginUrl": "https://login.salesforce.com", 10 | "sourceApiVersion": "45.0" 11 | } 12 | -------------------------------------------------------------------------------- /sfdx.yml: -------------------------------------------------------------------------------- 1 | 2 | scratch-org-def: config/project-scratch-def.json 3 | assign-permset: false 4 | permset-name: 5 | run-apex-tests: true 6 | apex-test-format: tap 7 | delete-scratch-org: false 8 | show-scratch-org-url: false 9 | open-path: 10 | import-data: false 11 | data-plans: --------------------------------------------------------------------------------