record[this.props.keyValue]}
+ onChange={this.handleTableChange}
+ loading={loading}
+ />
+
+
+
+ {apiDelete && (
+
+
}
+ >
+
+ Delete
+
+
+ {hasSelected ? `Selected ${selectedRowKeys.length} item(s)` : ''}
+
+
+
+ )}
+
+
+
+ {this.state.total > 0 ? (
+
+ `Showing ${this.state.total > 0 ? range[0] : 0}-${this.state.total > 0 ? range[1] : 0} of ${this.state
+ .total > 0
+ ? total
+ : 0}`}
+ onChange={this.onPaginationChange}
+ onShowSizeChange={this.onPaginationChange}
+ />
+ ) : null}
+
+
+
+ );
+ }
+}
+
+export default withRouter(AdvanceTable);
diff --git a/src/components/Tables/index.css b/src/components/Tables/index.css
new file mode 100644
index 0000000..5f66e44
--- /dev/null
+++ b/src/components/Tables/index.css
@@ -0,0 +1,4 @@
+.table-operations > button {
+ margin-right: 8px;
+}
+
\ No newline at end of file
diff --git a/src/constants/Response.js b/src/constants/Response.js
new file mode 100644
index 0000000..f9f3808
--- /dev/null
+++ b/src/constants/Response.js
@@ -0,0 +1,67 @@
+const RESPONSE = {
+ HTTP_CONTINUE: 100,
+ HTTP_SWITCHING_PROTOCOLS: 101,
+ HTTP_PROCESSING: 102,
+ HTTP_EARLY_HINTS: 103,
+ HTTP_OK: 200,
+ HTTP_CREATED: 201,
+ HTTP_ACCEPTED: 202,
+ HTTP_NON_AUTHORITATIVE_INFORMATION: 203,
+ HTTP_NO_CONTENT: 204,
+ HTTP_RESET_CONTENT: 205,
+ HTTP_PARTIAL_CONTENT: 206,
+ HTTP_MULTI_STATUS: 207,
+ HTTP_ALREADY_REPORTED: 208,
+ HTTP_IM_USED: 226,
+ HTTP_MULTIPLE_CHOICES: 300,
+ HTTP_MOVED_PERMANENTLY: 301,
+ HTTP_FOUND: 302,
+ HTTP_SEE_OTHER: 303,
+ HTTP_NOT_MODIFIED: 304,
+ HTTP_USE_PROXY: 305,
+ HTTP_RESERVED: 306,
+ HTTP_TEMPORARY_REDIRECT: 307,
+ HTTP_PERMANENTLY_REDIRECT: 308,
+ HTTP_BAD_REQUEST: 400,
+ HTTP_UNAUTHORIZED: 401,
+ HTTP_PAYMENT_REQUIRED: 402,
+ HTTP_FORBIDDEN: 403,
+ HTTP_NOT_FOUND: 404,
+ HTTP_METHOD_NOT_ALLOWED: 405,
+ HTTP_NOT_ACCEPTABLE: 406,
+ HTTP_PROXY_AUTHENTICATION_REQUIRED: 407,
+ HTTP_REQUEST_TIMEOUT: 408,
+ HTTP_CONFLICT: 409,
+ HTTP_GONE: 410,
+ HTTP_LENGTH_REQUIRED: 411,
+ HTTP_PRECONDITION_FAILED: 412,
+ HTTP_REQUEST_ENTITY_TOO_LARGE: 413,
+ HTTP_REQUEST_URI_TOO_LONG: 414,
+ HTTP_UNSUPPORTED_MEDIA_TYPE: 415,
+ HTTP_REQUESTED_RANGE_NOT_SATISFIABLE: 416,
+ HTTP_EXPECTATION_FAILED: 417,
+ HTTP_I_AM_A_TEAPOT: 418,
+ HTTP_MISDIRECTED_REQUEST: 421,
+ HTTP_UNPROCESSABLE_ENTITY: 422,
+ HTTP_LOCKED: 423,
+ HTTP_FAILED_DEPENDENCY: 424,
+ HTTP_RESERVED_FOR_WEBDAV_ADVANCED_COLLECTIONS_EXPIRED_PROPOSAL: 425,
+ HTTP_UPGRADE_REQUIRED: 426,
+ HTTP_PRECONDITION_REQUIRED: 428,
+ HTTP_TOO_MANY_REQUESTS: 429,
+ HTTP_REQUEST_HEADER_FIELDS_TOO_LARGE: 431,
+ HTTP_UNAVAILABLE_FOR_LEGAL_REASONS: 451,
+ HTTP_INTERNAL_SERVER_ERROR: 500,
+ HTTP_NOT_IMPLEMENTED: 501,
+ HTTP_BAD_GATEWAY: 502,
+ HTTP_SERVICE_UNAVAILABLE: 503,
+ HTTP_GATEWAY_TIMEOUT: 504,
+ HTTP_VERSION_NOT_SUPPORTED: 505,
+ HTTP_VARIANT_ALSO_NEGOTIATES_EXPERIMENTAL: 506,
+ HTTP_INSUFFICIENT_STORAGE: 507,
+ HTTP_LOOP_DETECTED: 508,
+ HTTP_NOT_EXTENDED: 510,
+ HTTP_NETWORK_AUTHENTICATION_REQUIRED: 511,
+}
+
+export default RESPONSE;
\ No newline at end of file
diff --git a/src/constants/Types.js b/src/constants/Types.js
new file mode 100644
index 0000000..5e1f5b6
--- /dev/null
+++ b/src/constants/Types.js
@@ -0,0 +1,8 @@
+export const LOGOUT = 'LOGOUT'
+export const LOGOUT_SUCCESS = 'LOGOUT_SUCCESS'
+export const LOGOUT_RESET = 'LOGOUT_RESET'
+
+export const FETCH_DATA = 'FETCH_DATA'
+export const FETCH_DATA_SUCCESS = 'FETCH_DATA_SUCCESS'
+export const FETCH_DATA_ERROR = 'FETCH_DATA_ERROR'
+export const FETCH_DATA_RESET = 'FETCH_DATA_RESET'
diff --git a/src/constants/global.js b/src/constants/global.js
new file mode 100644
index 0000000..37fa328
--- /dev/null
+++ b/src/constants/global.js
@@ -0,0 +1,5 @@
+const global = {
+ loadingTime: 3000
+}
+
+export default global;
\ No newline at end of file
diff --git a/src/constants/validation.js b/src/constants/validation.js
new file mode 100644
index 0000000..8e4e47e
--- /dev/null
+++ b/src/constants/validation.js
@@ -0,0 +1,71 @@
+export const required = value => (value ? undefined : 'This is a required field.');
+export const dropdownRequired = value =>
+ value === null || value === undefined
+ ? 'This is a required field.'
+ : undefined;
+export const requiredAtleastOne = value => (value ? undefined : 'At least one must be selected.');
+export const arrayChecker = value => (value && value.length > 0 ? undefined : 'This is a required field.');
+export const email = value =>
+ value && !/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i.test(value)
+ ? 'Please provide a valid email address.'
+ : undefined;
+
+export const alphaNumeric = value =>
+ value && /[^a-zA-Z0-9 ]/i.test(value)
+ ? 'Only alphanumeric characters'
+ : undefined;
+
+const length = size => value =>
+ value && value.length !== size
+ ? `Must be ${size} characters.`
+ : undefined;
+export const length4 = length(4);
+export const length10 = length(10);
+export const length11 = length(11);
+export const length12 = length(12);
+export const length13 = length(13);
+
+const minLength = min => value =>
+ value && value.length < min
+ ? `Must be ${min} characters or more`
+ : undefined;
+export const minLength2 = minLength(2)
+
+const maxLength = max => value =>
+ value && value.length > max
+ ? `Must be ${max} characters or less.`
+ : undefined;
+export const maxLength5 = maxLength(5);
+export const maxLength10 = maxLength(10);
+export const maxLength15 = maxLength(15);
+
+export const numbers = value =>
+ value && !/^[0-9]*$/i.test(value)
+ ? 'Must be whole numbers only.'
+ : undefined;
+
+export const numbersWithDecimals = value =>
+ value && !/^\d+(\.\d{1,2})?$/i.test(value)
+ ? 'Must be a valid number with two (2) decimals only.'
+ : undefined;
+
+const minValue = min => value =>
+ value && parseFloat(value.toString().replace(/,/g, '')) <= min
+ ? `Must be greater than ${min}.`
+ : undefined;
+export const minValue0 = minValue(0);
+
+const minAllowableValue = min => value =>
+ value && parseFloat(value.toString().replace(/,/g, '')) < min
+ ? `Must be greater than ${min}.`
+ : undefined;
+
+export const minAllowableValue0 = minAllowableValue(0)
+
+const maxValue = max => value =>
+ value && parseFloat(value.toString().replace(/,/g, '')) >= max
+ ? `Must be less than ${max}.`
+ : undefined;
+
+export const maxValue1M = maxValue(1000000)
+export const maxValue100 = maxValue(100)
diff --git a/src/containers/private/AboutUs/CardTypes/Create/components/AddCardForm.js b/src/containers/private/AboutUs/CardTypes/Create/components/AddCardForm.js
new file mode 100644
index 0000000..aa1e3cd
--- /dev/null
+++ b/src/containers/private/AboutUs/CardTypes/Create/components/AddCardForm.js
@@ -0,0 +1,205 @@
+// LIBRARIES
+import React from 'react';
+import { Row, Button, Col } from 'antd';
+import { Form, Field } from 'formik';
+import { connect } from 'react-redux';
+
+// COMPONENTS
+import HeaderForm from "components/Forms/HeaderForm"
+import { Inputs, Checkbox, Radio, UploadImage, InputTextArea, SingleUploadImage } from 'components/Forms';
+
+// HELPER FUNCTIONS
+
+
+const formItemLayout = {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 6 },
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 10 },
+ },
+};
+
+function AddCardForm(props) {
+ const {
+ isSubmitting,
+ handleSubmit,
+ loading,
+ handleFileUpload,
+ handleFileUploadBackground,
+ history
+ } = props;
+
+ return (
+
+ );
+};
+
+
+AddCardForm = connect(
+ state => ({
+
+ }),
+)(AddCardForm);
+
+
+export default AddCardForm;
+
diff --git a/src/containers/private/AboutUs/CardTypes/Create/index.js b/src/containers/private/AboutUs/CardTypes/Create/index.js
new file mode 100644
index 0000000..c70af7e
--- /dev/null
+++ b/src/containers/private/AboutUs/CardTypes/Create/index.js
@@ -0,0 +1,191 @@
+// LIBRARIES
+import React, { Component } from 'react'
+import { connect } from "react-redux"
+import { Formik } from 'formik'
+import { message,notification } from 'antd';
+
+// COMPONENTS
+import HeaderForm from "components/Forms/HeaderForm"
+import AddCardForm from './components/AddCardForm'
+
+// HELPER FUNCTIONS
+import { userDetailsSchema } from './validationSchema'
+import { customAction } from "actions";
+import { API_GET, API_POST, API_UNI_OIL } from "utils/Api";
+import { apiFormValidation } from "utils/helper";
+
+
+class CardTypeCreate extends Component {
+ state = {
+ generated_password: null,
+ userInfo: null,
+ loading: false,
+ fileUpload: null,
+ fileUploadBackground: null
+ }
+
+ componentDidMount() {
+
+ }
+
+ handleSubmit = async (values, actions) => {
+
+ const { fileUpload, fileUploadBackground } = this.state;
+ const { history } = this.props;
+ const { setErrors } = actions;
+
+ this.setState({loading: true})
+ try {
+ const headers = {
+ 'ContentType': 'multipart/form-data',
+ };
+ const formData = new FormData();
+
+ if(fileUpload) {
+ fileUpload.forEach((t, i) => {
+ formData.append( `image`, t.originFileObj);
+ });
+ }
+ if(fileUploadBackground) {
+ fileUploadBackground.forEach((t, i) => {
+ formData.append( `bg_image`, t.originFileObj);
+ });
+ }
+
+ if(values.id_number == 1) {
+ values.id_number = 1;
+ if(!values.id_number_description) {
+ setErrors({id_number_description: "ID Number Description is required!"})
+ notification.error({
+ message: 'Error',
+ description:
+ Something went wrong creating new record.
+
- ID Number Description is required!
+
+ });
+ return this.setState({loading: false})
+ }
+ } else {
+ values.id_number = 0;
+ }
+
+ if(values.virtual_card_font_color == 2) {
+ values.virtual_card_font_color = 1
+ } else {
+ values.virtual_card_font_color = 0
+ }
+
+ values.code && (formData.append('code', values.code));
+ values.type && (formData.append('type', values.type));
+ values.description && (formData.append('description', values.description));
+ values.terms_and_conditions && (formData.append('terms_and_conditions', values.terms_and_conditions));
+ values.faqs && (formData.append('faqs', values.faqs));
+ formData.append('id_number', values.id_number);
+ formData.append('id_number_description', values.id_number_description);
+ formData.append('virtual_card_font_color', values.virtual_card_font_color);
+ let response = await API_UNI_OIL.post('cardType', formData , headers)
+
+ if(response) {
+ message.success('New record added.');
+ this.setState({loading: false})
+ history.push({ pathname: "/about-us/card-types" })
+ }
+
+ } catch ({response: error}) {
+ if (error.status === 422) {
+ apiFormValidation({ data: error.data.data, setErrors });
+ }
+ notification.error({
+ message: 'Error',
+ description:
+ Something went wrong creating new record.
+ { error && error.data && error.data.data && error.data.data.image
+ && (
- {error.data.data.image[0]}
) }
+
+ });
+ this.setState({loading: false})
+ }
+
+ }
+
+
+ handleAddCardTypes =()=> {
+ this.form.submitForm()
+ }
+
+ handleFileUpload =(e)=> {
+ if (Array.isArray(e)) {
+ return this.setState({fileUpload: e});
+ }
+ return e && this.setState({fileUpload: e.fileList});
+ }
+
+ handleFileUploadBackground =(e)=> {
+ if (Array.isArray(e)) {
+ return this.setState({fileUploadBackground: e});
+ }
+ return e && this.setState({fileUploadBackground: e.fileList});
+ }
+
+
+
+ render() {
+ const { userManagement } = this.props
+ const { loading, isGenerated } = this.state;
+
+ return (
+
+ {/*
{this.props.history.push("/about-us/card-types")}}
+ cancelBtnName="Cancel"
+ /> */}
+
+
Card Type Details
+
(this.form = node)}
+ enableReinitialize={true}
+ validationSchema={userDetailsSchema}
+ onSubmit={this.handleSubmit }
+ render = {(props)=>
+
+ }
+ />
+
+
+ )
+ }
+}
+
+
+CardTypeCreate = connect(
+ state => ({
+ //userInfo: state
+ userManagement: state.userManagement,
+ }),
+ { customAction }
+)(CardTypeCreate);
+
+export default CardTypeCreate;
\ No newline at end of file
diff --git a/src/containers/private/AboutUs/CardTypes/Create/validationSchema.js b/src/containers/private/AboutUs/CardTypes/Create/validationSchema.js
new file mode 100644
index 0000000..d305e3b
--- /dev/null
+++ b/src/containers/private/AboutUs/CardTypes/Create/validationSchema.js
@@ -0,0 +1,39 @@
+
+import * as Yup from 'yup'
+
+export const userDetailsSchema = Yup.object().shape({
+ code: Yup.string()
+ .trim()
+ .max(128, "Maximum character is 128.")
+ //.max(12,"Card Code must be 20 characters only. "),
+ .required('Card Code is required!'),
+ type: Yup.string()
+ .trim()
+ .max(128, "Maximum character is 128.")
+ .required('Card Type Description is required!'),
+ description: Yup.string()
+ .trim()
+ .max(140, "Maximum character is 140.")
+ .required('Card Type Short Description is required!'),
+ image: Yup.string()
+ .required('Upload Card Type Image is required!'),
+ virtual_card_font_color: Yup.string()
+ .required('Virtual Card Font Color is required!'),
+ bg_image: Yup.string()
+ .required('Upload Card Type Cover Image is required!'),
+ terms_and_conditions: Yup.string()
+ .trim()
+ .max(32000, "Maximum character is 32,000.")
+ .required('Terms and Condition is required!'),
+ faqs: Yup.string()
+ .trim()
+ .max(32000, "Maximum character is 32,000.")
+ .required('FAQs is required!'),
+ id_number: Yup.string()
+ .required('ID Number is required!'),
+ id_number_description: Yup.string()
+ .trim()
+ .max(40, "Maximum character is 40."),
+ //.required('ID Number Description is required!'),
+
+})
\ No newline at end of file
diff --git a/src/containers/private/AboutUs/CardTypes/Edit/components/EditCardForm.js b/src/containers/private/AboutUs/CardTypes/Edit/components/EditCardForm.js
new file mode 100644
index 0000000..96f269c
--- /dev/null
+++ b/src/containers/private/AboutUs/CardTypes/Edit/components/EditCardForm.js
@@ -0,0 +1,204 @@
+// LIBRARIES
+import React from 'react';
+import { Row, Button, Col } from 'antd';
+import { Form, Field } from 'formik';
+import { connect } from 'react-redux';
+
+// COMPONENTS
+import HeaderForm from "components/Forms/HeaderForm"
+import { Inputs, Radio, InputTextArea, UploadImage,SingleUploadImage } from 'components/Forms';
+
+// HELPER FUNCTIONS
+
+const formItemLayout = {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 6 },
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 10 },
+ },
+};
+
+function EditCardForm(props) {
+ const {
+ isSubmitting,
+ loading,
+ handleSubmit,
+ handleFileUpload,
+ history,
+ handleFileUploadBackground
+ } = props;
+
+ return (
+
+ );
+};
+
+
+EditCardForm = connect(
+ state => ({
+
+ }),
+)(EditCardForm);
+
+
+export default EditCardForm;
+
diff --git a/src/containers/private/AboutUs/CardTypes/Edit/index.js b/src/containers/private/AboutUs/CardTypes/Edit/index.js
new file mode 100644
index 0000000..64086fa
--- /dev/null
+++ b/src/containers/private/AboutUs/CardTypes/Edit/index.js
@@ -0,0 +1,196 @@
+// LIBRARIES
+import React, { Component } from 'react'
+import { Formik } from 'formik'
+import { withRouter } from "react-router-dom"
+import { notification, message } from "antd"
+
+// COMPONENTS
+import HeaderForm from "components/Forms/HeaderForm"
+import EditCardForm from './components/EditCardForm'
+
+// HELPER FUNCTIONS
+import { userDetailsSchema } from './validationSchema'
+import { API_GET, API_PUT, API_POST } from "utils/Api";
+import { API_UNI_OIL } from "utils/Api";
+import { apiFormValidation } from "utils/helper";
+
+class CardTypeEdit extends Component {
+ state = {
+ loading: false,
+ userInfo: null,
+ mounted: false,
+ }
+
+ async componentDidMount() {
+
+ const { match } = this.props;
+
+ try {
+ let response = await API_UNI_OIL.get(`cardType/${match.params.id}`);
+ this.setState({
+ userInfo: {...response.data.data},
+ mounted: true
+ })
+ } catch ({response: error}) {
+ notification.error({
+ message: "Error",
+ description:
+
Something went wrong loading data.
+ - {error && error.data && error.data.message}
+
,
+ duration: 3,
+ });
+ if(error.status == 404) {
+ if(this.props.location.pathname)
+ this.props.history.push(`${this.props.location.pathname}/404`); return
+ }
+ this.setState({ mounted: false })
+ }
+
+ }
+
+ handleSubmit = async (values, actions) => {
+
+ const { fileUpload, userInfo, fileUploadBackground } = this.state;
+ const { history } = this.props;
+ const { setErrors } = actions;
+
+ this.setState({loading: true})
+ try {
+ const headers = {
+ 'ContentType': 'multipart/form-data',
+ };
+ const formData = new FormData();
+
+ if(fileUpload) {
+ fileUpload.forEach((t, i) => {
+ formData.append( `image`, t.originFileObj);
+ });
+ }
+ if(fileUploadBackground) {
+ fileUploadBackground.forEach((t, i) => {
+ formData.append( `bg_image`, t.originFileObj);
+ });
+ }
+
+ if(values.id_number == 1) {
+ values.id_number = 1;
+ if(!values.id_number_description) {
+ setErrors({id_number_description: "ID Number Description is required!"})
+ notification.error({
+ message: 'Error',
+ description:
+ Something went wrong.
+
- ID Number Description is required!
+
+ });
+ return this.setState({loading: false})
+ }
+ } else {
+ values.id_number = 0;
+ }
+
+ if(values.virtual_card_font_color == 2) {
+ values.virtual_card_font_color = 1
+ } else {
+ values.virtual_card_font_color = 0
+ }
+
+ values.code && (formData.append('code', values.code));
+ values.type && (formData.append('type', values.type));
+ values.description && (formData.append('description', values.description));
+ values.terms_and_conditions && (formData.append('terms_and_conditions', values.terms_and_conditions));
+ values.faqs && (formData.append('faqs', values.faqs));
+ formData.append('id_number', values.id_number);
+ formData.append('id_number_description', values.id_number_description);
+ formData.append('virtual_card_font_color', values.virtual_card_font_color);
+
+ let response = await API_UNI_OIL.post(`cardTypeUpdate/${userInfo.cardtype_uuid}`, formData , headers)
+
+ if(response) {
+ message.success('Record was successfully update.');
+ this.setState({loading: false})
+ history.push({ pathname: "/about-us/card-types" })
+ }
+
+
+ } catch ({response: error}) {
+ if (error.status === 422) {
+ apiFormValidation({ data: error.data.data, setErrors });
+ }
+ notification.error({
+ message: 'Error',
+ description:
+ Something went wrong creating new record.
+ { error && error.data && error.data.data && error.data.data.image
+ && (
- {error.data.data.image[0]}
) }
+
+ });
+ this.setState({loading: false})
+ }
+
+ }
+
+ handleEditCardTypes =()=> {
+ this.form.submitForm()
+ }
+
+ handleFileUpload =(e)=> {
+ if (Array.isArray(e)) {
+ return this.setState({fileUpload: e});
+ }
+ return e && this.setState({fileUpload: e.fileList});
+ }
+
+ handleFileUploadBackground =(e)=> {
+ if (Array.isArray(e)) {
+ return this.setState({fileUploadBackground: e});
+ }
+ return e && this.setState({fileUploadBackground: e.fileList});
+ }
+
+ render() {
+
+ if(!this.state.mounted) return null;
+
+ const { loading, userInfo } = this.state
+
+ return (
+
+
+
Card Types Details
+ (this.form = node)}
+ enableReinitialize={true}
+ validationSchema={userDetailsSchema}
+ onSubmit={this.handleSubmit }
+ render = {(props)=>
+
+ }
+ />
+
+
+ )
+ }
+}
+
+export default withRouter(CardTypeEdit);
\ No newline at end of file
diff --git a/src/containers/private/AboutUs/CardTypes/Edit/validationSchema.js b/src/containers/private/AboutUs/CardTypes/Edit/validationSchema.js
new file mode 100644
index 0000000..59c192c
--- /dev/null
+++ b/src/containers/private/AboutUs/CardTypes/Edit/validationSchema.js
@@ -0,0 +1,40 @@
+
+import * as Yup from 'yup'
+
+export const userDetailsSchema = Yup.object().shape({
+ code: Yup.string()
+ .trim()
+ .max(128, "Maximum character is 128.")
+ //.max(12,"Card Code must be 12 characters only. "),
+ .required('Card Code is required!'),
+ type: Yup.string()
+ .trim()
+ .max(128, "Maximum character is 128.")
+ .required('Card Type Description is required!'),
+ description: Yup.string()
+ .trim()
+ .max(140, "Maximum character is 140.")
+ .required('Card Type Short Description is required!'),
+ image: Yup.string()
+ .required('Upload Card Type Image is required!'),
+ virtual_card_font_color: Yup.string()
+ .required('Virtual Card Font Color is required!'),
+ bg_image: Yup.string()
+ .required('Upload Card Type Cover Image is required!'),
+ terms_and_conditions: Yup.string()
+ .trim()
+ .max(32000, "Maximum character is 32,000.")
+ .required('Terms and Condition is required!'),
+ faqs: Yup.string()
+ .trim()
+ .max(32000, "Maximum character is 32,000.")
+ .required('FAQs is required!'),
+ id_number: Yup.string()
+ .required('ID Number is required!'),
+ id_number_description: Yup.string()
+ .trim()
+ .max(40, "Maximum character is 40."),
+})
+
+
+
\ No newline at end of file
diff --git a/src/containers/private/AboutUs/CardTypes/List/index.js b/src/containers/private/AboutUs/CardTypes/List/index.js
new file mode 100644
index 0000000..597b8c7
--- /dev/null
+++ b/src/containers/private/AboutUs/CardTypes/List/index.js
@@ -0,0 +1,109 @@
+ // LIBRARIES
+import React, { Component } from 'react';
+import { Menu, Dropdown, notification, Icon, message } from "antd"
+import { connect } from "react-redux";
+import { Link } from 'react-router-dom'
+
+// COMPONENTS
+import AdvanceTable from "components/Tables/AdvanceTable";
+import HeaderForm from "components/Forms/HeaderForm";
+
+// HELPER FUNCTIONS
+import { API_UNI_OIL } from "utils/Api";
+import { customAction } from 'actions';
+
+class CardTypeList extends Component {
+ state= {
+ updating: false,
+ }
+
+ delete =(admin_uuid)=> {
+
+ }
+
+ updateDropDown = async(e) => {
+
+ }
+
+ render() {
+ const { match, history } = this.props;
+
+ return (
+
+
history.push({ pathname: `${match.url}/create` })}
+ actionBtnName="Add Card"
+ />
+
+
+ );
+ }
+}
+
+CardTypeList = connect(
+ state => ({
+ //user: state.viewUser.data,
+ //status: state.viewUser.code,
+ //responseMsg: state.viewUser.messages
+ }),
+ { customAction }
+)(CardTypeList);
+
+export default CardTypeList;
\ No newline at end of file
diff --git a/src/containers/private/AboutUs/CardTypes/View/components/ViewCardForm.js b/src/containers/private/AboutUs/CardTypes/View/components/ViewCardForm.js
new file mode 100644
index 0000000..b739376
--- /dev/null
+++ b/src/containers/private/AboutUs/CardTypes/View/components/ViewCardForm.js
@@ -0,0 +1,103 @@
+// LIBRARIES
+import React from 'react'
+import { connect } from 'react-redux'
+import { Icon, Avatar, Row , Col } from 'antd'
+
+// COMPONENTS
+import HeaderForm from "components/Forms/HeaderForm"
+
+// HELPER FUNCTIONS
+
+function ViewCardForm(props) {
+ const {
+ isSubmitting,
+ userInfo
+ } = props;
+
+ return (
+
+
+
+
Details
+ {/*Account Details */}
+
CARD DETAILS
+
+ {userInfo && userInfo.code}
+ Card Code:
+
+
+ {userInfo && userInfo.name}
+ Card Type Description:
+
+
+ {userInfo && userInfo.description}
+ Card Type Short Description:
+
+
+
+
+
+ Card Type Image:
+
+
+ {userInfo && userInfo.virtual_card_font_color && userInfo.virtual_card_font_color ? "Black": "White"}
+ Virtual Card Font Color:
+
+
+
+
+
+ Card Type Cover Image:
+
+
+ {userInfo && userInfo.id_number && userInfo.id_number ? "Yes": "No"}
+ ID Number Required:
+
+
+ {userInfo && userInfo.id_number_description}
+ ID Number Description:
+
+
+ {/*Account Details */}
+
+
DATA PRIVACY DETAILS
+
+ {userInfo && userInfo.terms_and_conditions}
+ {`Terms and Conditions:`}
+
+
+ {userInfo && userInfo.faqs}
+ FAQs:
+
+
+
+
+ );
+};
+
+
+ViewCardForm = connect(
+ state => ({
+
+ }),
+)(ViewCardForm);
+
+
+export default ViewCardForm;
+
+
+const styles = {
+ marginTop: {
+ marginTop: '5px'
+ }
+}
\ No newline at end of file
diff --git a/src/containers/private/AboutUs/CardTypes/View/index.js b/src/containers/private/AboutUs/CardTypes/View/index.js
new file mode 100644
index 0000000..aaa16bf
--- /dev/null
+++ b/src/containers/private/AboutUs/CardTypes/View/index.js
@@ -0,0 +1,95 @@
+// LIBRARIES
+import React, { Component } from 'react'
+import { withRouter } from "react-router-dom"
+import { notification, message } from "antd"
+
+// COMPONENTS
+import HeaderForm from 'components/Forms/HeaderForm'
+import ViewCardForm from './components/ViewCardForm'
+
+// HELPER FUNCTIONS
+import { API_UNI_OIL } from "utils/Api";
+
+
+class CardTypeView extends Component {
+ state = {
+ mounted: false,
+ userInfo: null
+ }
+
+ async componentDidMount() {
+
+ const { match } = this.props;
+
+ try {
+ let response = await API_UNI_OIL.get(`cardType/${match.params.id}`)
+ this.setState({
+ userInfo: {...response.data.data},
+ mounted: true
+ })
+ } catch ({response: error}) {
+ notification.error({
+ message: "Error",
+ description:
+
Something went wrong loading data.
+ - { error && error.data && error.data.message }
+
,
+ duration: 3,
+ });
+ if(error.status == 404) {
+ if(this.props.location.pathname)
+ this.props.history.push(`${this.props.location.pathname}/404`); return
+ }
+ this.setState({ mounted: false })
+ }
+
+ }
+
+ delete = async (uuid) => {
+
+ const { userInfo } = this.state;
+ const { match } = this.props;
+
+ try {
+ await API_UNI_OIL.delete(`cardType/${userInfo.cardtype_uuid}`);
+ message.success('Record was successfully deleted.');
+ this.props.history.push("/about-us/card-types");
+ } catch ({response:error}) {
+ notification.error({
+ message: "Error",
+ description:
+
Something went wrong deleting record.
+ - { error && error.data && error.data.message }
+
,
+ duration: 3,
+ });
+ }
+ }
+
+ render() {
+
+ if(!this.state.mounted) return null;
+
+ const { userInfo } = this.state
+ const { history, match } = this.props
+
+ return (
+
+
{this.props.history.push(`/about-us/card-types/edit/${match.params.id}`)}}
+ actionBtnName="Update"
+ styleBtn={{background: 'white', borderColor: 'rgb(184, 187, 201)',color: 'rgb(101, 105, 127)'}}
+ deleteAction={this.delete}
+ deleteBtnName="Delete"
+ />
+
+
+
+
+ )
+ }
+}
+
+
+export default withRouter(CardTypeView);
\ No newline at end of file
diff --git a/src/containers/private/AboutUs/TermAndPrivacy/Create/components/AddUserManagementForm.js b/src/containers/private/AboutUs/TermAndPrivacy/Create/components/AddUserManagementForm.js
new file mode 100644
index 0000000..e1956a4
--- /dev/null
+++ b/src/containers/private/AboutUs/TermAndPrivacy/Create/components/AddUserManagementForm.js
@@ -0,0 +1,83 @@
+// LIBRARIES
+import React from 'react';
+import { Row, Button, Col } from 'antd';
+import { Form, Field } from 'formik';
+import { connect } from 'react-redux';
+
+// COMPONENTS
+import HeaderForm from "components/Forms/HeaderForm"
+import { Inputs, InputTextArea } from 'components/Forms';
+
+// HELPER FUNCTIONS
+
+
+const formItemLayout = {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 4 },
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 16 },
+ },
+};
+
+function AddUserManagementForm(props) {
+ const {
+ isSubmitting,
+ handleSubmit,
+ generatePassword,
+ loading,
+ isGenerated,
+ match,
+ history
+ } = props;
+
+ return (
+
+ );
+};
+
+
+AddUserManagementForm = connect(
+ state => ({
+
+ }),
+)(AddUserManagementForm);
+
+
+export default AddUserManagementForm;
+
diff --git a/src/containers/private/AboutUs/TermAndPrivacy/Create/index.js b/src/containers/private/AboutUs/TermAndPrivacy/Create/index.js
new file mode 100644
index 0000000..947fd89
--- /dev/null
+++ b/src/containers/private/AboutUs/TermAndPrivacy/Create/index.js
@@ -0,0 +1,117 @@
+// LIBRARIES
+import React, { Component } from 'react'
+import { connect } from "react-redux"
+import { Formik } from 'formik'
+import { message,notification } from 'antd';
+
+// COMPONENTS
+import HeaderForm from "components/Forms/HeaderForm"
+import AddUserManagementForm from './components/AddUserManagementForm'
+
+// HELPER FUNCTIONS
+import { userDetailsSchema } from './validationSchema'
+import { customAction } from "actions";
+import { API_GET, API_POST, API_UNI_OIL } from "utils/Api";
+import { apiFormValidation } from "utils/helper";
+
+
+class TermAndPrivacyCreate extends Component {
+ state = {
+ generated_password: null,
+ userInfo: null,
+ loading: false,
+ isGenerated: false
+ }
+
+ componentDidMount() {
+
+ }
+
+ handleSubmit = async (values, actions) => {
+ const { setSubmitting, setErrors } = actions;
+ let { history, match } = this.props;
+ let params = { ...values, type: match.params.id }
+ this.setState({ loading: true });
+
+ try {
+ const response = await API_UNI_OIL.post('TermsAndPrivacy', params);
+ if(response) {
+ message.success('New record added.');
+ this.setState({ loading: false });
+ history.push({ pathname: '/about-us/term-privacy' });
+ }
+
+ } catch ({response:error}) {
+ if (error.status === 422) {
+ apiFormValidation({ data: error.data.data, setErrors });
+ }
+ notification.error({
+ message: "Error",
+ description:
+
Something went wrong creating new record.
+ - { error && error.data && error.data.message }
+
,
+ duration: 3,
+ });
+ setSubmitting(false);
+ this.setState({ loading: false });
+ }
+
+}
+
+handleCreateTermPrivacy =()=> {
+ this.form.submitForm()
+}
+
+ render() {
+ const { userManagement, match } = this.props
+ const { loading, isGenerated } = this.state;
+
+ return (
+
+ {/*
{ this.props.history.push("/about-us/term-privacy")}}
+ cancelBtnName="Cancel"
+ /> */}
+
+
{match.params.id == "1" ? "Terms" : "Privacy Policy"} Details
+
(this.form = node)}
+ enableReinitialize={true}
+ validationSchema={userDetailsSchema}
+ onSubmit={this.handleSubmit }
+ render = {(props)=>
+
+ }
+ />
+
+
+ )
+ }
+}
+
+
+TermAndPrivacyCreate = connect(
+ state => ({
+ //userInfo: state
+ userManagement: state.userManagement,
+ }),
+ { customAction }
+)(TermAndPrivacyCreate);
+
+export default TermAndPrivacyCreate;
\ No newline at end of file
diff --git a/src/containers/private/AboutUs/TermAndPrivacy/Create/validationSchema.js b/src/containers/private/AboutUs/TermAndPrivacy/Create/validationSchema.js
new file mode 100644
index 0000000..41e2b0e
--- /dev/null
+++ b/src/containers/private/AboutUs/TermAndPrivacy/Create/validationSchema.js
@@ -0,0 +1,18 @@
+
+import * as Yup from 'yup'
+
+export const userDetailsSchema = Yup.object().shape({
+ title: Yup.string()
+ .trim()
+ .max(128, "Maximum character is 128.")
+ .required('Title is required!'),
+ details: Yup.string()
+ .trim()
+ .max(32000, "Maximum character is 32,000.")
+ .required('Details is required!'),
+ // type: Yup.string()
+ // .required('Type is required!')
+})
+
+
+
\ No newline at end of file
diff --git a/src/containers/private/AboutUs/TermAndPrivacy/Edit/components/EditUserManagementForm.js b/src/containers/private/AboutUs/TermAndPrivacy/Edit/components/EditUserManagementForm.js
new file mode 100644
index 0000000..67eecd1
--- /dev/null
+++ b/src/containers/private/AboutUs/TermAndPrivacy/Edit/components/EditUserManagementForm.js
@@ -0,0 +1,82 @@
+// LIBRARIES
+import React from 'react';
+import { Row, Button, Col } from 'antd';
+import { Form, Field } from 'formik';
+import { connect } from 'react-redux';
+
+// COMPONENTS
+import HeaderForm from "components/Forms/HeaderForm"
+import { Inputs, InputTextArea } from 'components/Forms';
+
+// HELPER FUNCTIONS
+
+const formItemLayout = {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 4 },
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 16 },
+ },
+};
+
+function EditUserManagementForm(props) {
+ const {
+ isSubmitting,
+ generatePassword,
+ loading,
+ handleSubmit,
+ isGenerated,
+ history
+ } = props;
+
+ return (
+
+ );
+};
+
+
+EditUserManagementForm = connect(
+ state => ({
+
+ }),
+)(EditUserManagementForm);
+
+
+export default EditUserManagementForm;
+
diff --git a/src/containers/private/AboutUs/TermAndPrivacy/Edit/index.js b/src/containers/private/AboutUs/TermAndPrivacy/Edit/index.js
new file mode 100644
index 0000000..9882335
--- /dev/null
+++ b/src/containers/private/AboutUs/TermAndPrivacy/Edit/index.js
@@ -0,0 +1,135 @@
+// LIBRARIES
+import React, { Component } from 'react'
+import { Formik } from 'formik'
+import { withRouter } from "react-router-dom"
+import { notification, message } from "antd"
+
+// COMPONENTS
+import HeaderForm from "components/Forms/HeaderForm"
+import EditUserManagementForm from './components/EditUserManagementForm'
+
+// HELPER FUNCTIONS
+import { userDetailsSchema } from './validationSchema'
+import { API_GET, API_PUT, API_POST } from "utils/Api";
+import { API_UNI_OIL } from "utils/Api";
+import { apiFormValidation } from "utils/helper";
+
+class TermAndPrivacyEdit extends Component {
+ state = {
+ loading: false,
+ userInfo: null,
+ mounted: false,
+ timerCount: 20,
+ isGenerated: false
+ }
+
+ async componentDidMount() {
+
+ const { match } = this.props;
+
+ try {
+ let response = await API_UNI_OIL.get(`TermsAndPrivacy/${match.params.id}`);
+ this.setState({
+ userInfo: {...response.data.data},
+ mounted: true
+ })
+ } catch ({response: error}) {
+ notification.error({
+ message: "Error",
+ description:
+
Something went wrong loading data.
+ - {error && error.data && error.data.message}
+
,
+ duration: 3,
+ });
+ if(error.status == 404) {
+ if(this.props.location.pathname)
+ this.props.history.push(`${this.props.location.pathname}/404`); return
+ }
+ this.setState({ mounted: false })
+ }
+
+ }
+
+ handleEditUserManagement =()=> {
+ this.form.submitForm()
+ }
+
+ handleSubmit = async (values, actions) => {
+
+ const { setErrors, setSubmitting } = actions;
+ const { userInfo } = this.state;
+ let { history } = this.props;
+
+ const params = {
+ ...values,
+ type : userInfo.type
+ }
+
+ this.setState({loading: true})
+ try {
+ const response = await API_PUT(`TermsAndPrivacy/${userInfo.tp_uuid}`, params);
+ if(response.status === 422){
+ if (response.status === 422) {
+ apiFormValidation({ data: response.data.data, setErrors });
+ }
+ notification.error({ message: "Success", description: "Something went wrong updating record" });
+ setSubmitting(false)
+ this.setState({loading: false})
+ }else {
+ message.success('Record was successfully update.');
+ this.setState({loading: false})
+ this.props.history.push("/about-us/term-privacy");
+ }
+ } catch (error) {
+ setSubmitting(false)
+ this.setState({loading: false})
+ }
+
+ }
+
+
+ render() {
+
+ if(!this.state.mounted) return null;
+
+ const { loading, userInfo } = this.state
+
+ return (
+
+ {/*
{ this.props.history.push("/about-us/term-privacy")}}
+ cancelBtnName="Cancel"
+ /> */}
+
+
Details
+ (this.form = node)}
+ enableReinitialize={true}
+ validationSchema={userDetailsSchema}
+ onSubmit={this.handleSubmit }
+ render = {(props)=>
+
+ }
+ />
+
+
+ )
+ }
+}
+
+export default withRouter(TermAndPrivacyEdit);
\ No newline at end of file
diff --git a/src/containers/private/AboutUs/TermAndPrivacy/Edit/validationSchema.js b/src/containers/private/AboutUs/TermAndPrivacy/Edit/validationSchema.js
new file mode 100644
index 0000000..9ea7f3c
--- /dev/null
+++ b/src/containers/private/AboutUs/TermAndPrivacy/Edit/validationSchema.js
@@ -0,0 +1,16 @@
+
+import * as Yup from 'yup'
+
+export const userDetailsSchema = Yup.object().shape({
+ title: Yup.string()
+ .trim()
+ .max(128, "Maximum character is 128.")
+ .required('Title is required!'),
+ details: Yup.string()
+ .trim()
+ .max(32000, "Maximum character is 32,000.")
+ .required('Details is required!'),
+})
+
+
+
\ No newline at end of file
diff --git a/src/containers/private/AboutUs/TermAndPrivacy/List/index.js b/src/containers/private/AboutUs/TermAndPrivacy/List/index.js
new file mode 100644
index 0000000..c3d91ee
--- /dev/null
+++ b/src/containers/private/AboutUs/TermAndPrivacy/List/index.js
@@ -0,0 +1,130 @@
+ // LIBRARIES
+import React, { Component } from 'react';
+import { Menu, Dropdown, notification, Icon, message } from "antd"
+import { connect } from "react-redux";
+
+// COMPONENTS
+import AdvanceTable from "components/Tables/AdvanceTable";
+import HeaderForm from "components/Forms/HeaderForm";
+
+// HELPER FUNCTIONS
+import { API_UNI_OIL } from "utils/Api";
+import { customAction } from 'actions';
+
+class TermAndPrivacyList extends Component {
+ state= {
+ updating: false,
+ }
+
+ delete =(admin_uuid)=> {
+
+ }
+
+ updateDropDown = async(e) => {
+
+ }
+
+ render() {
+ const { match, history } = this.props;
+
+ return (
+
+
history.push({ pathname: `${match.url}/create/1` }) }
+ actionTerms={()=> history.push({ pathname: `${match.url}/create/2` })}
+ actionBtnName="Add User"
+ />
+ (
+
+ {record && record.details}
+
+ )
+ },
+ {
+ title: 'Type',
+ dataIndex: 'type',
+ key: 'type',
+ width: "8%",
+ sorter: true,
+ filters:[],
+ render: (text, record) => (
+
+ {record && record.type == 1 ? "Terms": "Privacy"}
+
+ )
+ },
+ {
+ title: 'Action',
+ dataIndex: 'action',
+ key: 'action',
+ width: 150,
+ buttons: [
+ {
+ key: 'edit',
+ title: "Edit",
+ icon: 'edit',
+ url: '/user-management/edit'
+ },
+ {
+ key: 'delete',
+ title: "Delete",
+ icon: 'delete',
+ url: '',
+ action: this.delete
+ },
+ {
+ key: 'view',
+ title: "View",
+ icon: 'right-circle-o',
+ url: '/user-management/view'
+ }
+ ]
+ },
+ ]
+ }
+ />
+
+ );
+ }
+}
+
+TermAndPrivacyList = connect(
+ state => ({
+ //user: state.viewUser.data,
+ //status: state.viewUser.code,
+ //responseMsg: state.viewUser.messages
+ }),
+ { customAction }
+)(TermAndPrivacyList);
+
+export default TermAndPrivacyList;
\ No newline at end of file
diff --git a/src/containers/private/AboutUs/TermAndPrivacy/View/components/ViewUserManagementForm.js b/src/containers/private/AboutUs/TermAndPrivacy/View/components/ViewUserManagementForm.js
new file mode 100644
index 0000000..e5fd784
--- /dev/null
+++ b/src/containers/private/AboutUs/TermAndPrivacy/View/components/ViewUserManagementForm.js
@@ -0,0 +1,55 @@
+// LIBRARIES
+import React from 'react'
+import { connect } from 'react-redux'
+import { Icon, Avatar, Row , Col } from 'antd'
+
+// COMPONENTS
+import HeaderForm from "components/Forms/HeaderForm"
+
+// HELPER FUNCTIONS
+
+function ViewUserManagementForm(props) {
+ const {
+ isSubmitting,
+ userInfo
+ } = props;
+
+ return (
+
+
+
+
Details
+ {/*Account Details */}
+
+ {userInfo && userInfo.title}
+ Title:
+
+
+ {userInfo && {userInfo.details} }
+
+ Details:
+
+ {/*
+ {userInfo && userInfo.type == "1" ? "Terms" : "Privacy"}
+ Type:
+
*/}
+
+
+
+ );
+};
+
+
+ViewUserManagementForm = connect(
+ state => ({
+
+ }),
+)(ViewUserManagementForm);
+
+
+export default ViewUserManagementForm;
+
diff --git a/src/containers/private/AboutUs/TermAndPrivacy/View/index.js b/src/containers/private/AboutUs/TermAndPrivacy/View/index.js
new file mode 100644
index 0000000..415084a
--- /dev/null
+++ b/src/containers/private/AboutUs/TermAndPrivacy/View/index.js
@@ -0,0 +1,94 @@
+// LIBRARIES
+import React, { Component } from 'react'
+import { withRouter } from "react-router-dom"
+import { notification, message } from "antd"
+
+// COMPONENTS
+import HeaderForm from 'components/Forms/HeaderForm'
+import ViewUserManagementForm from './components/ViewUserManagementForm'
+
+// HELPER FUNCTIONS
+import { API_UNI_OIL } from "utils/Api";
+
+
+class TermAndPrivacyView extends Component {
+ state = {
+ mounted: false,
+ userInfo: null
+ }
+
+ async componentDidMount() {
+
+ const { match } = this.props;
+
+ try {
+ let response = await API_UNI_OIL.get(`TermsAndPrivacy/${match.params.id}`)
+ this.setState({
+ userInfo: {...response.data.data},
+ mounted: true
+ })
+ } catch ({response: error}) {
+ notification.error({
+ message: "Error",
+ description:
+
Something went wrong loading data.
+ - { error && error.data && error.data.message }
+
,
+ duration: 3,
+ });
+ if(error.status == 404) {
+ if(this.props.location.pathname)
+ this.props.history.push(`${this.props.location.pathname}/404`); return
+ }
+ this.setState({ mounted: false })
+ }
+
+ }
+
+ delete = async (uuid) => {
+
+ const { userInfo } = this.state
+ const { match } = this.props;
+
+ try {
+ await API_UNI_OIL.delete(`TermsAndPrivacy/${userInfo.tp_uuid}`);
+ message.success('Record was successfully deleted.');
+ this.props.history.push("/about-us/term-privacy");
+ } catch ({response:error}) {
+ // this.props.history.push("/404");
+ notification.error({
+ message: "Error",
+ description:
+
Something went wrong deleting record.
+ {/* - { error && error.data && error.data.message } */}
+
,
+ duration: 3,
+ });
+ }
+ }
+
+ render() {
+
+ const { userInfo } = this.state
+ const { history, match } = this.props
+
+ return (
+
+
{this.props.history.push(`/about-us/term-privacy/edit/${match.params.id}`)}}
+ actionBtnName="Update"
+ styleBtn={{background: 'white', borderColor: 'rgb(184, 187, 201)',color: 'rgb(101, 105, 127)'}}
+ deleteAction={this.delete}
+ deleteBtnName="Delete"
+ />
+
+
+
+
+ )
+ }
+}
+
+
+export default withRouter(TermAndPrivacyView);
\ No newline at end of file
diff --git a/src/containers/private/AboutUs/index.js b/src/containers/private/AboutUs/index.js
new file mode 100644
index 0000000..67645c1
--- /dev/null
+++ b/src/containers/private/AboutUs/index.js
@@ -0,0 +1,137 @@
+// LIBRARIES
+import React, { Component, Fragment } from 'react';
+import { Switch, Route, Redirect } from 'react-router-dom';
+import { connect } from 'react-redux'
+
+// COMPONENTS
+import CardTypeList from './CardTypes/List';
+import CardTypeCreate from './CardTypes/Create';
+import CardTypeEdit from './CardTypes/Edit';
+import CardTypeView from './CardTypes/View';
+
+import TermAndPrivacyList from './TermAndPrivacy/List';
+import TermAndPrivacyCreate from './TermAndPrivacy/Create';
+import TermAndPrivacyEdit from './TermAndPrivacy/Edit';
+import TermAndPrivacyView from './TermAndPrivacy/View';
+
+// import TermAndPrivacyList from './TermAndPrivacy/List';
+
+import { PAGE404 } from "components/PageError/index"
+import MainContent from 'components/Dashboard/Layout/components/MainContent';
+
+// HELPER FUNCTIONS
+
+
+
+class AboutUs extends Component {
+ state = {
+ pageRoutes: [
+ {
+ path: `${this.props.match.url}/card-types`,
+ name: "Card Types",
+ component: CardTypeList,
+ },
+ {
+ path: `${this.props.match.url}/card-types/create`,
+ name: "Create Card Types",
+ component: CardTypeCreate,
+ },
+ {
+ path: `${this.props.match.url}/card-types/edit`,
+ params: ':id',
+ name: "Update Card Types",
+ component: CardTypeEdit,
+ },
+ {
+ path: `${this.props.match.url}/card-types/view`,
+ params: ':id',
+ name: "View Card Types",
+ component: CardTypeView,
+ },
+
+ {
+ path: `${this.props.match.url}/term-privacy`,
+ name: "Terms & Privacy",
+ component: TermAndPrivacyList,
+ },
+ {
+ path: `${this.props.match.url}/term-privacy/create`,
+ params: ':id',
+ name: "Terms",
+ component: TermAndPrivacyCreate,
+ },
+ {
+ path: `${this.props.match.url}/term-privacy/edit`,
+ params: ':id',
+ name: "Terms & Privacy",
+ component:TermAndPrivacyEdit,
+ },
+ {
+ path: `${this.props.match.url}/term-privacy/view`,
+ params: ':id',
+ name: "Terms & Privacy Details",
+ component: TermAndPrivacyView,
+ }
+
+
+
+ // {
+ // path: `${this.props.match.url}/lock-account`,
+ // name: "Locked Accounts",
+ // component: CardMemberList,
+ // },
+ // {
+ // path: `${this.props.match.url}/lock-account/view`,
+ // params: ':id',
+ // name: "View Locked Account",
+ // component: CardMemberView,
+ // }
+ ],
+ }
+
+
+ render() {
+
+ const { userInfo } = this.props
+ const { pageRoutes } = this.state;
+
+ return (
+
+
+
+ {
+ userInfo.data.userInfo.role == 1
+ ?
+
+
+
+
+
+
+
+
+
+
+
+
+
+ :
+
+
+
+ }
+
+
+ );
+ }
+}
+
+
+AboutUs = connect(
+ state => ({
+ userInfo: state.login
+ }),
+)(AboutUs);
+
+
+export default AboutUs;
\ No newline at end of file
diff --git a/src/containers/private/HomePage/PhotoSlider/Create/components/AddPhotoSliderForm.js b/src/containers/private/HomePage/PhotoSlider/Create/components/AddPhotoSliderForm.js
new file mode 100644
index 0000000..6616cd4
--- /dev/null
+++ b/src/containers/private/HomePage/PhotoSlider/Create/components/AddPhotoSliderForm.js
@@ -0,0 +1,254 @@
+// LIBRARIES
+import React from 'react';
+import { Row, Button, Col } from 'antd';
+import { Form, Field } from 'formik';
+import { connect } from 'react-redux';
+import moment from 'moment'
+
+// COMPONENTS
+import HeaderForm from "components/Forms/HeaderForm"
+import { Inputs, Select, DatePicker , InputTextArea, UploadImage, TimePickerForm } from 'components/Forms';
+
+// HELPER FUNCTIONS
+
+
+
+const formItemLayout = {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 },
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 10 },
+ },
+};
+
+function AddPhotoSliderForm(props) {
+ const {
+ isSubmitting,
+ handleSubmit,
+ loading,
+ promotionsOptions,
+ handleFileUpload,
+ handleGetDate,
+ photoSliderLimit,
+ dateStartEnd,
+ history,
+ handleAutoFillDeatils
+ } = props;
+
+ return (
+
+ );
+};
+
+
+AddPhotoSliderForm = connect(
+ state => ({
+
+ }),
+)(AddPhotoSliderForm);
+
+
+export default AddPhotoSliderForm;
+
diff --git a/src/containers/private/HomePage/PhotoSlider/Create/index.js b/src/containers/private/HomePage/PhotoSlider/Create/index.js
new file mode 100644
index 0000000..1832077
--- /dev/null
+++ b/src/containers/private/HomePage/PhotoSlider/Create/index.js
@@ -0,0 +1,266 @@
+// LIBRARIES
+import React, { Component } from 'react'
+import { Formik } from 'formik'
+import { message, notification } from 'antd'
+import moment from 'moment'
+
+// COMPONENTS
+import HeaderForm from "components/Forms/HeaderForm"
+import AddPhotoSliderForm from './components/AddPhotoSliderForm'
+
+// HELPER FUNCTIONS
+import { userDetailsSchema } from './validationSchema'
+import { API_GET, API_POST, API_UNI_OIL } from "utils/Api"
+import { apiFormValidation } from "utils/helper"
+
+
+class CreatePhotoSlider extends Component {
+ state = {
+ loading: false,
+ promotionsOptions: null,
+ mounted: false,
+ photoSliderLimit: false,
+ dateStartEnd: null
+ }
+
+ async componentDidMount() {
+
+ try {
+ let photoSlider = await API_UNI_OIL('photoSliderCount');
+ if(photoSlider)
+ this.setState({photoSliderLimit: false})
+ } catch ({response:error}) {
+ this.setState({photoSliderLimit: true})
+ }
+
+
+ try {
+ let promotionsList = await API_GET('getPromotions');
+
+ if (promotionsList) {
+
+ let promotionsOptions = []
+
+ await promotionsList.data.data.map(item => {
+ promotionsOptions.push({
+ label: item.title,
+ value: item.promotion_uuid,
+ date: { dateStart: item.date_start , dateEnd: item.date_end }
+ })
+ })
+
+ this.setState({
+ promotionsOptions: promotionsOptions,
+ mounted: true
+ })
+ }
+
+ } catch ({ response: error }) {
+ notification.error({
+ message: "Error",
+ description:
+
Something went wrong loading data.
+ - {error && error.data && error.data.message}
+
,
+ duration: 3,
+ });
+ this.setState({ mounted: false })
+ }
+ }
+
+ handleSubmit = async (values, actions) => {
+
+ const { fileUpload } = this.state;
+ const { history } = this.props;
+ const { setErrors } = actions;
+
+ this.setState({ loading: true })
+ try {
+ const headers = {
+ 'ContentType': 'multipart/form-data',
+ };
+ const formData = new FormData();
+
+ if (fileUpload) {
+ fileUpload.forEach((t, i) => {
+ formData.append(`image`, t.originFileObj);
+ });
+ } else {
+ if(values.image) {
+ let imageUrlPath = values.image
+ formData.append(`image`, imageUrlPath);
+ }
+ }
+
+ let date_start = moment(values.date_start).format('YYYY-MM-DD');
+ let start_time = moment(values.start_time).format('HH:mm:ss');
+
+
+ if(start_time == 'Invalid date') {
+ start_time = values.start_time
+ } else {
+ start_time = moment(values.start_time).format('HH:mm:ss');
+ }
+
+ let date_end = moment(values.date_end).format('YYYY-MM-DD');
+ let end_time = moment(values.end_time).format('HH:mm:ss');
+
+ if(end_time == 'Invalid date') {
+ end_time = values.end_time
+ } else {
+ end_time = moment(values.end_time).format('HH:mm:ss');
+ }
+
+ let startDateTime = moment(date_start + ' ' + start_time, 'YYYY-MM-DDTHH:mm:ss');
+ let endDateTime = moment(date_end + ' ' + end_time, 'YYYY-MM-DDTHH:mm:ss');
+
+ values.promotion_uuid && (formData.append('promotion_uuid', values.promotion_uuid));
+ values.title && (formData.append('title', values.title));
+ values.description && (formData.append('description', values.description));
+ values.date_start && (formData.append('date_start', startDateTime.format('YYYY-MM-DDTHH:mm:ss')));
+ values.date_end && (formData.append('date_end', endDateTime.format('YYYY-MM-DDTHH:mm:ss')));
+
+ let response = await API_UNI_OIL.post('photoSlider', formData, headers)
+
+ if (response) {
+ message.success('New record added.');
+ this.setState({ loading: false })
+ history.push({ pathname: "/home-page/photo-slider" })
+ }
+
+ } catch ({ response: error }) {
+ if (error.status === 422) {
+ apiFormValidation({ data: error.data.data, setErrors })
+ }
+ notification.error({
+ message: 'Error',
+ description:
+ {error && error.data && error.data.data && error.data.data.image
+ && (
{error.data.data.image[0] ? `- ${error.data.data.image[0]}` : "Something went wrong creating new record."}
) }
+
+ });
+ this.setState({ loading: false })
+ }
+ }
+
+ handleAddPhotoSlider = () => {
+ this.form.submitForm()
+ }
+
+ handleFileUpload = (e) => {
+ if (Array.isArray(e)) {
+ return this.setState({ fileUpload: e });
+ }
+ return e && this.setState({ fileUpload: e.fileList });
+ }
+
+ handleGetDate = async (id) => {
+ const {promotionsOptions} = this.state;
+
+ if(promotionsOptions) {
+ await promotionsOptions.map(item=> {
+ if(item.value == id) {
+ this.setState({
+ dateStartEnd: {
+ date_start: item.date.dateStart,
+ date_end: item.date.dateEnd
+ }
+ })
+ }
+ })
+ }
+
+ }
+
+ handleAutoFillDeatils = async (id,setFieldValue) => {
+
+ if(id) {
+
+ try {
+ let promotionsList = await API_GET(`promotion/${id}`);
+ let autofillData = {
+ ...promotionsList.data.data
+ }
+
+ setFieldValue('title', autofillData.title);
+ setFieldValue('description', autofillData.description);
+ setFieldValue('image', `${autofillData.image}`);
+ setFieldValue('date_start', moment(autofillData.date_start, 'YYYY-MM-DDTHH:mm'));
+ setFieldValue('date_end', moment(autofillData.date_end, 'YYYY-MM-DDTHH:mm'));
+ setFieldValue('start_time', moment(autofillData.date_start, 'YYYY-MM-DDTHH:mm').format('HH:mm') );
+ setFieldValue('end_time', moment(autofillData.date_end, 'YYYY-MM-DDTHH:mm').format('HH:mm') );
+
+ this.setState({
+ isAutofill: true
+ })
+
+ } catch ({response: error}) {
+ notification.error({
+ message: 'Error',
+ description:
+ Something went wrong autofill records.
+ - {error && error.data && error.data.message}
+
+ });
+ }
+ }
+
+ }
+
+ render() {
+
+ if (!this.state.mounted) return null;
+
+ const { loading, promotionsOptions, photoSliderLimit, dateStartEnd } = this.state
+
+ return (
+
+ {/*
{ this.props.history.push("/home-page/photo-slider") }}
+ cancelBtnName="Cancel"
+ /> */}
+
+
Photo Slider Content Details
+
(this.form = node)}
+ enableReinitialize={true}
+ validationSchema={userDetailsSchema}
+ onSubmit={this.handleSubmit}
+ render={(props) =>
+
+ }
+ />
+
+
+ )
+ }
+}
+
+
+export default CreatePhotoSlider
\ No newline at end of file
diff --git a/src/containers/private/HomePage/PhotoSlider/Create/validationSchema.js b/src/containers/private/HomePage/PhotoSlider/Create/validationSchema.js
new file mode 100644
index 0000000..c814cd5
--- /dev/null
+++ b/src/containers/private/HomePage/PhotoSlider/Create/validationSchema.js
@@ -0,0 +1,28 @@
+
+import * as Yup from 'yup'
+
+export const userDetailsSchema = Yup.object().shape({
+ promotion_uuid: Yup.string(),
+ //.required('Branches is required!'),
+ title: Yup.string()
+ .trim()
+ .max(128, "Maximum character is 128.")
+ .required('Title is required!'),
+ description: Yup.string()
+ .trim()
+ .max(32000, "Maximum character is 32,000."),
+ //.required('Description is required!'),
+ image: Yup.string()
+ .required('Upload Image is required!'),
+ date_start: Yup.string()
+ .required('Start Appearance Date is required!'),
+ date_end: Yup.string()
+ .required('End Appearance Date is required!'),
+ start_time: Yup.string()
+ .required('Start Time is required!'),
+ end_time: Yup.string()
+ .required('End Time is required!'),
+})
+
+
+
\ No newline at end of file
diff --git a/src/containers/private/HomePage/PhotoSlider/Edit/components/EditPhotoSliderForm.js b/src/containers/private/HomePage/PhotoSlider/Edit/components/EditPhotoSliderForm.js
new file mode 100644
index 0000000..e435ee7
--- /dev/null
+++ b/src/containers/private/HomePage/PhotoSlider/Edit/components/EditPhotoSliderForm.js
@@ -0,0 +1,236 @@
+// LIBRARIES
+import React from 'react'
+import { Row, Button, Col } from 'antd'
+import { Form, Field } from 'formik'
+import { connect } from 'react-redux'
+import moment from 'moment'
+
+// COMPONENTS
+import HeaderForm from "components/Forms/HeaderForm"
+import { Inputs, Select, DatePicker , InputTextArea, UploadImage ,TimePickerForm } from 'components/Forms'
+
+// HELPER FUNCTIONS
+
+
+const formItemLayout = {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 },
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 10 },
+ },
+};
+
+function EditUserManagementForm(props) {
+ const {
+ isSubmitting,
+ loading,
+ handleSubmit,
+ promotionsDefaultValue,
+ promotionsOptions,
+ handleFileUpload,
+ dateStartEnd,
+ handleGetDate,
+ history,
+ handleAutoFillDeatils,
+ } = props;
+
+ return (
+
+ );
+};
+
+
+EditUserManagementForm = connect(
+ state => ({
+
+ }),
+)(EditUserManagementForm);
+
+
+export default EditUserManagementForm;
+
diff --git a/src/containers/private/HomePage/PhotoSlider/Edit/index.js b/src/containers/private/HomePage/PhotoSlider/Edit/index.js
new file mode 100644
index 0000000..f18560b
--- /dev/null
+++ b/src/containers/private/HomePage/PhotoSlider/Edit/index.js
@@ -0,0 +1,331 @@
+// LIBRARIES
+import React, { Component } from 'react'
+import { Formik } from 'formik'
+import moment from 'moment'
+import { notification, message } from "antd"
+
+// COMPONENTS
+import HeaderForm from "components/Forms/HeaderForm"
+import EditPhotoSliderForm from './components/EditPhotoSliderForm'
+
+// HELPER FUNCTIONS
+import { userDetailsSchema } from './validationSchema'
+import { API_GET, API_PUT, API_POST } from "utils/Api";
+import { API_UNI_OIL } from "utils/Api";
+import { apiFormValidation } from "utils/helper";
+
+class EditPhotoSlider extends Component {
+ state = {
+ loading: false,
+ userInfo: null,
+ mounted: false,
+ promotionsDefaultValue: null,
+ promotionsDefaultKeyValue: null,
+ promotionsOptions: null,
+ dateStartEnd: null
+ }
+
+ async componentDidMount() {
+
+ const { match } = this.props;
+ let promotionsDefaultValue = []
+ let promotionsDefaultKeyValue = []
+
+ try {
+ let response = await API_UNI_OIL.get(`photoSlider/${match.params.id}`);
+ // default options branch
+
+ let promotions = []
+
+ if(response.data.data.promotion) {
+
+ promotions.push({...response.data.data.promotion})
+
+ await promotions.map(item => {
+ promotionsDefaultValue.push(
+ item.title
+ )
+ promotionsDefaultKeyValue.push(
+ item.promotion_uuid
+ )
+ })
+ }
+ // default options promotype
+
+ let dateStartEnd = promotions && promotions[0] && {
+ date_start: promotions[0].date_start,
+ date_end: promotions[0].date_end
+ }
+
+ this.setState({
+ userInfo: {...response.data.data},
+ mounted: true,
+ promotionsDefaultValue,
+ promotionsDefaultKeyValue,
+ dateStartEnd: dateStartEnd
+ })
+
+
+ } catch ({response: error}) {
+ notification.error({
+ message: "Error",
+ description:
+
Something went wrong loading data.
+ - { error && error.data && error.data.message }
+
,
+ duration: 3,
+ });
+ if(error.status == 404) {
+ if(this.props.location.pathname) {
+ this.props.history.push(`${this.props.location.pathname}/404`);
+ return;
+ }
+ } else {
+ this.setState({ mounted: false })
+ }
+
+ }
+
+ // options
+ try {
+
+ let params = {
+ selected_promotion: promotionsDefaultKeyValue.length > 0 && promotionsDefaultKeyValue[0]
+ }
+ let promotionsOptions = []; let promoTypeOptions = []
+ let promotionsList = await API_GET('getPromotions', params);
+
+ if(promotionsList) {
+ await promotionsList.data.data.map(item => {
+ promotionsOptions.push({
+ label: item.title,
+ value: item.promotion_uuid,
+ date: { dateStart: item.date_start , dateEnd: item.date_end }
+ })
+ })
+ }
+
+ this.setState({
+ promotionsOptions: promotionsOptions,
+ mounted: true
+ })
+
+ } catch ({response: error}) {
+ this.setState({ mounted: false })
+ }
+
+
+ }
+
+ handleSubmit = async (values, actions) => {
+
+ const { fileUpload, branchesOptions, userInfo } = this.state;
+ const { history } = this.props;
+ const { setErrors } = actions;
+
+ console.log(values, 'valuesvaluesvalues')
+
+ this.setState({loading: true})
+ try {
+ const headers = {
+ 'ContentType': 'multipart/form-data',
+ };
+
+ const formData = new FormData();
+
+ if(fileUpload) {
+ fileUpload.forEach((t, i) => {
+ formData.append( `image`, t.originFileObj);
+ });
+ } else {
+ if(values.image) {
+ let imageUrlPath = values.image
+ formData.append(`image`, imageUrlPath);
+ }
+ }
+
+ let date_start = moment(values.date_start).format('YYYY-MM-DD');
+ let start_time = moment(values.start_time).format('HH:mm:ss');
+
+ if(start_time == 'Invalid date') {
+ start_time = values.start_time
+ } else {
+ start_time = moment(values.start_time).format('HH:mm:ss');
+ }
+
+ let date_end = moment(values.date_end).format('YYYY-MM-DD');
+ let end_time = moment(values.end_time).format('HH:mm:ss');
+
+ if(end_time == 'Invalid date') {
+ end_time = values.end_time
+ } else {
+ end_time = moment(values.end_time).format('HH:mm:ss');
+ }
+
+ let startDateTime = moment(date_start + ' ' + start_time, 'YYYY-MM-DDTHH:mm:ss');
+ let endDateTime = moment(date_end + ' ' + end_time, 'YYYY-MM-DDTHH:mm:ss');
+
+ // let branchesList = []
+
+ // values.promotion.map(item => {
+ // branchesOptions.map(userInfo => {
+ // if(userInfo.label == item || userInfo.value == item) {
+ // branchesList.push(userInfo.value);
+ // }
+ // })
+ // })
+
+ values.promotion_uuid && (formData.append('promotion_uuid', values.promotion_uuid ));
+ values.title && (formData.append('title', values.title));
+ values.description && (formData.append('description', values.description));
+ values.date_start && (formData.append('date_start', startDateTime.format('YYYY-MM-DDTHH:mm:ss') ) );
+ values.date_end && (formData.append('date_end', endDateTime.format('YYYY-MM-DDTHH:mm:ss') ) );
+
+ // log formdata
+ // for (var pair of formData.entries()) {
+ // console.log(pair[0]+ ', ' + pair[1]);
+ // }
+ let response = await API_UNI_OIL.post(`updatePhotoSlider/${userInfo.photoslider_uuid}`, formData , headers)
+
+ if(response) {
+ message.success('Record was successfully update.');
+ this.setState({loading: false})
+ history.push({ pathname: "/home-page/photo-slider" })
+ }
+
+ } catch ({response: error}) {
+ if (error.status === 422) {
+ apiFormValidation({ data: error.data.data, setErrors })
+ }
+ notification.error({
+ message: 'Error',
+ description:
+ { error && error.data && error.data.data && error.data.data.image
+ && (
{error.data.data.image[0] ? `- ${error.data.data.image[0]}` : "Something went wrong updating record."}
) }
+
+ });
+ this.setState({loading: false})
+ }
+ }
+
+ handleEditPhotoSlider =()=> {
+ this.form.submitForm()
+ }
+
+ handleFileUpload =(e)=> {
+ if (Array.isArray(e)) {
+ return this.setState({fileUpload: e});
+ }
+ return e && this.setState({fileUpload: e.fileList});
+ }
+
+ handleGetDate = async (id) => {
+ const {promotionsOptions} = this.state;
+
+ if(promotionsOptions) {
+ await promotionsOptions.map(item=> {
+ if(item.value == id) {
+ this.setState({
+ dateStartEnd: {
+ date_start: item.date.dateStart,
+ date_end: item.date.dateEnd
+ }
+ })
+ }
+ })
+ }
+
+ }
+
+ handleAutoFillDeatils = async (id,setFieldValue) => {
+
+ if(id) {
+
+ try {
+ let promotionsList = await API_GET(`promotion/${id}`);
+ let autofillData = {
+ ...promotionsList.data.data
+ }
+
+ setFieldValue('title', autofillData.title);
+ setFieldValue('description', autofillData.description);
+ setFieldValue('image', `${autofillData.image}`);
+ setFieldValue('date_start', moment(autofillData.date_start, 'YYYY-MM-DDTHH:mm'));
+ setFieldValue('date_end', moment(autofillData.date_end, 'YYYY-MM-DDTHH:mm'));
+ setFieldValue('start_time', moment(autofillData.date_start, 'YYYY-MM-DDTHH:mm').format('HH:mm') );
+ setFieldValue('end_time', moment(autofillData.date_end, 'YYYY-MM-DDTHH:mm').format('HH:mm') );
+
+ this.setState({
+ isAutofill: true
+ })
+
+ } catch ({response: error}) {
+ notification.error({
+ message: 'Error',
+ description:
+ Something went wrong autofill records.
+ - {error && error.data && error.data.message}
+
+ });
+ }
+ }
+
+ }
+
+ render() {
+
+ if(!this.state.mounted) return null;
+
+ const { loading, userInfo, promotionsOptions, promotionsDefaultValue , promotionsDefaultKeyValue, dateStartEnd } = this.state
+
+ return (
+
+ {/*
this.props.history.push("/home-page/photo-slider")}
+ cancelBtnName="Cancel"
+ /> */}
+
+
Photo Slider Content Details
+ (this.form = node)}
+ enableReinitialize={true}
+ validationSchema={userDetailsSchema}
+ onSubmit={this.handleSubmit }
+ render = {(props)=>
+
+ }
+ />
+
+
+ )
+ }
+}
+
+
+export default EditPhotoSlider
\ No newline at end of file
diff --git a/src/containers/private/HomePage/PhotoSlider/Edit/validationSchema.js b/src/containers/private/HomePage/PhotoSlider/Edit/validationSchema.js
new file mode 100644
index 0000000..62b6aa6
--- /dev/null
+++ b/src/containers/private/HomePage/PhotoSlider/Edit/validationSchema.js
@@ -0,0 +1,28 @@
+
+import * as Yup from 'yup'
+
+export const userDetailsSchema = Yup.object().shape({
+ promotion_uuid: Yup.string(),
+ //.required('Promotion Name is required!'),
+ title: Yup.string()
+ .trim()
+ .max(128, "Maximum character is 128.")
+ .required('Title is required!'),
+ description: Yup.string()
+ .trim()
+ .max(32000, "Maximum character is 32,000."),
+ // .required('Description is required!'),
+ image: Yup.string()
+ .required('Upload Image is required!'),
+ date_start: Yup.string()
+ .required('Start Appearance Date is required!'),
+ date_end: Yup.string()
+ .required('End Appearance Date is required!'),
+ start_time: Yup.string()
+ .required('Start Time is required!'),
+ end_time: Yup.string()
+ .required('End Time is required!'),
+})
+
+
+
\ No newline at end of file
diff --git a/src/containers/private/HomePage/PhotoSlider/List/index.js b/src/containers/private/HomePage/PhotoSlider/List/index.js
new file mode 100644
index 0000000..65c44ad
--- /dev/null
+++ b/src/containers/private/HomePage/PhotoSlider/List/index.js
@@ -0,0 +1,230 @@
+// LIBRARIES
+import React, { Component } from 'react';
+import { notification, Menu , Dropdown, Icon } from 'antd';
+import { connect } from "react-redux";
+import moment from 'moment'
+
+// COMPONENTS
+import AdvanceTable from "components/Tables/AdvanceTable";
+import HeaderForm from "components/Forms/HeaderForm";
+
+// HELPER FUNCTIONS
+import { customAction } from 'actions';
+import { API_GET, API_POST, API_UNI_OIL } from "utils/Api"
+
+
+
+class PhotoSliderList extends Component {
+
+ state = {
+ loading: false,
+ mounted: false,
+ photoSliderLimit: false
+ }
+
+ async componentDidMount () {
+
+ try {
+ let photoSlider = await API_UNI_OIL('photoSliderCount');
+ if(photoSlider)
+ this.setState({photoSliderLimit: false})
+ } catch ({response:error}) {
+ this.setState({photoSliderLimit: true})
+ }
+
+
+ try {
+
+ let response = await API_GET('photoSlider');
+
+ if(response.status == 200) {
+ if(response.data && response.data.data) {
+ this.setState({
+ mounted: true
+ })
+ }
+ }
+
+ } catch ({response:error}) {
+ notification.error({
+ message: "Error",
+ description:
+
Something went wrong loading data.
+ - {error && error.data && error.data.message}
+
,
+ duration: 3,
+ });
+
+ this.setState({ mounted: false })
+ }
+
+ }
+
+ delete =()=> {
+ let success = true;
+ // if(success)
+ // message.info('Clicked on Yes.');
+ }
+
+ dataResponse =(val)=> {
+ if(val) {
+ if(val < 10) {
+ this.setState({photoSliderLimit: false})
+ } else {
+ this.setState({photoSliderLimit: true})
+ }
+ }
+ }
+
+ // updateDropDown = async(e) => {
+ // let params = e.item.props.record;
+ // //console.log(e.item.props.eventKey,' eventKey')
+ // }
+
+ render() {
+
+ if(!this.state.mounted) return null;
+
+ const { photoSliderLimit } = this.state;
+ const { match, history } = this.props;
+
+ return (
+
+
history.push({ pathname: `${match.url}/create` })}
+ disabled={photoSliderLimit}
+ actionBtnName="Add Content"
+ />
+ {
+ if(moment(date_start).format("DD-MMM-YYYY") !== "Invalid date")
+ return moment(date_start).format("DD-MMM-YYYY")
+ },
+ },
+ {
+ title: 'End Date',
+ dataIndex: 'date_end',
+ key: 'date_end',
+ sortByValue: 'date_end',
+ sorter: true,
+ filters:[],
+ render: date_end => {
+ if(moment(date_end).format("DD-MMM-YYYY") !== "Invalid date")
+ return moment(date_end).format("DD-MMM-YYYY")
+ },
+ },
+ // {
+ // title: 'Slider Arrangement',
+ // dataIndex: 'status',
+ // key: 'status',
+ // sorter: true,
+ // width: "17%",
+ // render: (text, record) => {
+ // const menu = (
+ //
+ // 1 - First
+ // 2 - Second
+ // 3 - Third
+ // 4 - Fourth
+ // 5 - Fifth
+ //
+ // );
+ // return(
+ //
+ //
+ // Choose Number
+ //
+ //
+ // )
+ // },
+ // },
+ {
+ title: 'Action',
+ dataIndex: 'action',
+ key: 'action',
+ width: 150,
+ buttons: [
+ {
+ key: 'edit',
+ title: "Edit",
+ icon: 'edit',
+ url: '/user-management/edit'
+ },
+ {
+ key: 'delete',
+ title: "Delete",
+ icon: 'delete',
+ url: '',
+ action: this.delete
+ },
+ {
+ key: 'view',
+ title: "View",
+ icon: 'right-circle-o',
+ url: '/user-management/view'
+ }
+ ]
+ },
+ ]
+ }
+ />
+
+ );
+ }
+}
+
+PhotoSliderList = connect(
+ state => ({
+ //user: state.viewUser.data,
+ //status: state.viewUser.code,
+ //responseMsg: state.viewUser.messages
+ }),
+ { customAction }
+)(PhotoSliderList);
+
+export default PhotoSliderList;
\ No newline at end of file
diff --git a/src/containers/private/HomePage/PhotoSlider/View/components/ViewPhotoSliderForm.js b/src/containers/private/HomePage/PhotoSlider/View/components/ViewPhotoSliderForm.js
new file mode 100644
index 0000000..73d5c02
--- /dev/null
+++ b/src/containers/private/HomePage/PhotoSlider/View/components/ViewPhotoSliderForm.js
@@ -0,0 +1,94 @@
+// LIBRARIES
+import React from 'react'
+import { connect } from 'react-redux'
+import { Icon, Avatar, Row , Col } from 'antd'
+import moment from 'moment'
+
+// COMPONENTS
+import HeaderForm from "components/Forms/HeaderForm"
+
+// HELPER FUNCTIONS
+
+
+function ViewPhotoSliderForm(props) {
+ const {
+ isSubmitting,
+ userInfo
+ } = props;
+
+ return (
+
+
+ {
+ userInfo && (
+
+ )
+ }
+
+
+
+
Details
+ CONTENT DETAILS
+
+ {userInfo && userInfo.title}
+ Title:
+
+
+ {userInfo && userInfo.description}
+ Description:
+
+
+ {/*Account Details */}
+
+
SCHEDULE DETAILS
+
+ {userInfo && userInfo.date_start && moment(userInfo.date_start, 'YYYY-MM-DDTHH:mm:ss').format("DD-MMM-YYYY")}
+ Start Appeareance Date:
+
+
+ {userInfo && userInfo.date_end && moment(userInfo.date_end, 'YYYY-MM-DDTHH:mm:ss').format("DD-MMM-YYYY")}
+ End Appeareance Date:
+
+
+ {userInfo && userInfo.date_start && moment(userInfo.date_start, 'YYYY-MM-DDTHH:mm:ss').format('HH:mm:ss')}
+ Start Time:
+
+
+ {userInfo && userInfo.date_end && moment(userInfo.date_end, 'YYYY-MM-DDTHH:mm:ss').format('HH:mm:ss')}
+ End Time:
+
+
+ {userInfo && userInfo.created_by}
+ Created By:
+
+
+ {userInfo && userInfo.created_at && moment(userInfo.created_at, 'YYYY-MM-DDTHH:mm:ss').format("DD-MMM-YYYY")}
+ Date Created:
+
+
+ {userInfo && userInfo.updated_by}
+ Last Updated By:
+
+
+ {userInfo && userInfo.updated_at && moment(userInfo.updated_at, 'YYYY-MM-DDTHH:mm:ss').format("DD-MMM-YYYY")}
+ Last Date Updated:
+
+
+
+
+ );
+};
+
+
+ViewPhotoSliderForm = connect(
+ state => ({
+
+ }),
+)(ViewPhotoSliderForm);
+
+
+export default ViewPhotoSliderForm;
+
diff --git a/src/containers/private/HomePage/PhotoSlider/View/index.js b/src/containers/private/HomePage/PhotoSlider/View/index.js
new file mode 100644
index 0000000..8d3f0ea
--- /dev/null
+++ b/src/containers/private/HomePage/PhotoSlider/View/index.js
@@ -0,0 +1,96 @@
+// LIBRARIES
+import React, { Component } from 'react'
+import { notification, message } from "antd"
+
+// COMPONENTS
+import HeaderForm from 'components/Forms/HeaderForm'
+import ViewPhotoSliderForm from './components/ViewPhotoSliderForm'
+
+// HELPER FUNCTIONS
+import { API_UNI_OIL } from "utils/Api";
+
+
+class PhotoSliderView extends Component {
+ state ={
+ mounted: false,
+ userInfo: null
+ }
+
+ async componentDidMount() {
+
+ const { match } = this.props;
+
+ try {
+ let response = await API_UNI_OIL.get(`photoSlider/${match.params.id}`)
+ this.setState({
+ userInfo: {...response.data.data},
+ mounted: true
+ })
+ } catch ({response: error}) {
+ notification.error({
+ message: "Error",
+ description:
+
Something went wrong loading data.
+ - { error && error.data && error.data.message }
+
,
+ duration: 3,
+ });
+ if(error.status == 404) {
+ if(this.props.location.pathname)
+ this.props.history.push(`${this.props.location.pathname}/404`);
+ } else {
+ this.setState({ mounted: false })
+ }
+
+ }
+
+ }
+
+ delete = async (uuid) => {
+
+ const { userInfo } = this.state
+ const { match } = this.props;
+
+ try {
+ await API_UNI_OIL.delete(`photoSlider/${userInfo.photoslider_uuid}`);
+ message.success('Record was successfully deleted.');
+ this.props.history.push("/home-page/photo-slider");
+ } catch ({response:error}) {
+ notification.error({
+ message: "Error",
+ description:
+
Something went wrong deleting record.
+ - { error && error.data && error.data.message }
+
,
+ duration: 3,
+ });
+ }
+ }
+
+ render() {
+
+ if(!this.state.mounted) return null;
+
+ const { userInfo } = this.state
+ const { history, match } = this.props
+
+ return (
+
+
{this.props.history.push(`/home-page/photo-slider/edit/${match.params.id}`)}}
+ styleBtn={{background: 'white', borderColor: 'rgb(184, 187, 201)',color: 'rgb(101, 105, 127)'}}
+ actionBtnName="Update"
+ deleteAction={this.delete}
+ deleteBtnName="Delete"
+ />
+
+
+
+
+ )
+ }
+}
+
+
+export default PhotoSliderView
\ No newline at end of file
diff --git a/src/containers/private/HomePage/PhotoSlider/index.js b/src/containers/private/HomePage/PhotoSlider/index.js
new file mode 100644
index 0000000..c431f3f
--- /dev/null
+++ b/src/containers/private/HomePage/PhotoSlider/index.js
@@ -0,0 +1,72 @@
+// LIBRARIES
+import React, { Component } from 'react';
+import { Switch, Route, Redirect } from 'react-router-dom';
+
+// COMPONENTS
+import PhotoSliderList from './List';
+import PhotoSliderEdit from './Edit';
+import PhotoSliderCreate from './Create';
+import PhotoSliderView from './View';
+
+import { PAGE404 } from "components/PageError/index"
+import MainContent from 'components/Dashboard/Layout/components/MainContent';
+
+// HELPER FUNCTIONS
+
+
+
+class PhotoSlider extends Component {
+ state = {
+ pageRoutes: [
+ {
+ path: `${this.props.match.url}/photo-slider`,
+ name: "Photo Slider",
+ component: PhotoSliderList,
+ },
+ {
+ path: `${this.props.match.url}/photo-slider/create`,
+ name: "Create Photo Slider",
+ component: PhotoSliderCreate,
+ },
+ {
+ path: `${this.props.match.url}/photo-slider/edit`,
+ params: ':id',
+ name: "Update Photo Slider",
+ component: PhotoSliderEdit,
+ },
+ {
+ path: `${this.props.match.url}/photo-slider/view`,
+ params: ':id',
+ name: "View Photo Slider",
+ component: PhotoSliderView,
+ },
+
+ ]
+ }
+
+
+ render() {
+
+ const { pageRoutes } = this.state;
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+ }
+}
+
+export default PhotoSlider;
\ No newline at end of file
diff --git a/src/containers/private/MemberManagement/CardMember/List/index.js b/src/containers/private/MemberManagement/CardMember/List/index.js
new file mode 100644
index 0000000..e65f423
--- /dev/null
+++ b/src/containers/private/MemberManagement/CardMember/List/index.js
@@ -0,0 +1,133 @@
+// LIBRARIES
+import React, { Component } from 'react';
+import { message } from 'antd';
+import { connect } from "react-redux";
+import moment from 'moment'
+
+// COMPONENTS
+import AdvanceTable from "components/Tables/AdvanceTable";
+import HeaderForm from "components/Forms/HeaderForm";
+
+// HELPER FUNCTIONS
+import { customAction } from 'actions';
+
+
+class CardMemberList extends Component {
+
+ componentDidMount() {
+
+ }
+
+ componentDidUpdate() {
+ }
+
+ render() {
+
+ const { match, history } = this.props;
+
+ return (
+
+
+
{
+ if(moment(date).format("DD-MMM-YYYY") !== "Invalid date")
+ return moment(date).format("DD-MMM-YYYY")
+ },
+ },
+ {
+ title: 'Card Type',
+ dataIndex: 'card_type',
+ key: 'card_type',
+ sorter: true,
+ width: "18%",
+ },
+ {
+ title: 'Status',
+ dataIndex: 'status',
+ key: 'status',
+ sorter: true,
+ width: "10%",
+ filters: [
+ { text: 'Active', value: 1},
+ { text: 'Inactive', value: 0 }
+ ],
+ render: (text, record) => (
+
+ {record && record.status == "inactive" ? "Inactive": "Active"}
+
+ )
+ },
+ {
+ title: 'Action',
+ dataIndex: 'action',
+ key: 'action',
+ width: 100,
+ buttons: [
+ {
+ key: 'view',
+ title: "View",
+ icon: 'right-circle-o',
+ url: '/member-management/card-member/view'
+ }
+ ]
+ },
+ ]
+ }
+ />
+
+ );
+ }
+}
+
+CardMemberList = connect(
+ state => ({
+ //user: state.viewUser.data,
+ //status: state.viewUser.code,
+ //responseMsg: state.viewUser.messages
+ }),
+ { customAction }
+)(CardMemberList);
+
+export default CardMemberList;
\ No newline at end of file
diff --git a/src/containers/private/MemberManagement/CardMember/View/components/CardMemberViewForm.js b/src/containers/private/MemberManagement/CardMember/View/components/CardMemberViewForm.js
new file mode 100644
index 0000000..8b6b070
--- /dev/null
+++ b/src/containers/private/MemberManagement/CardMember/View/components/CardMemberViewForm.js
@@ -0,0 +1,82 @@
+// LIBRARIES
+import React from 'react'
+import { connect } from 'react-redux'
+import { Icon, Avatar, Row , Col } from 'antd'
+import moment from 'moment'
+
+// COMPONENTS
+import HeaderForm from "components/Forms/HeaderForm"
+
+// HELPER FUNCTIONS
+
+
+function ViewUserManagementForm(props) {
+ const {
+ isSubmitting,
+ userInfo
+ } = props;
+
+ return (
+
+
+
+
Details
+ {/*Account Details */}
+ Card Details
+
+ {userInfo && userInfo.card_number}
+ Card Number:
+
+
+ {userInfo && userInfo.firstname}
+ First Name:
+
+
+ {userInfo && userInfo.lastname}
+ Last Name:
+
+
+ {userInfo && userInfo.birthdate}
+ Birthday:
+
+
+ {userInfo && userInfo.card_type}
+ Card Type:
+
+
+ {/*Account Details */}
+
+
Account Details
+
+ {userInfo && userInfo.is_locked == 1 ? "Locked" : "Active"}
+ Account Status:
+
+ {/*
+ {userInfo && userInfo.reason}
+ Lock Account Description:
+
+
+
+ {userInfo && userInfo.lock_dt && userInfo.lock_dt && moment(userInfo.lock_dt, 'YYYY-MM-DDTHH:mm:ss').format("DD-MMM-YYYY")}
+ Locked Date:
+
*/}
+
+ {userInfo && userInfo.unlocked_by}
+ Unlocked By:
+
+
+
+
+ );
+};
+
+
+ViewUserManagementForm = connect(
+ state => ({
+
+ }),
+)(ViewUserManagementForm);
+
+
+export default ViewUserManagementForm;
+
diff --git a/src/containers/private/MemberManagement/CardMember/View/index.js b/src/containers/private/MemberManagement/CardMember/View/index.js
new file mode 100644
index 0000000..2479ed7
--- /dev/null
+++ b/src/containers/private/MemberManagement/CardMember/View/index.js
@@ -0,0 +1,67 @@
+// LIBRARIES
+import React, { Component } from 'react'
+import { withRouter } from "react-router-dom"
+import { notification, Icon } from "antd"
+
+// COMPONENTS
+import HeaderForm from 'components/Forms/HeaderForm'
+import CardMemberViewForm from './components/CardMemberViewForm'
+
+// HELPER FUNCTIONS
+import { API_UNI_OIL } from "utils/Api";
+
+
+class CardMemberView extends Component {
+ state = {
+ userInfo: null
+ }
+
+ async componentDidMount() {
+
+ const { match } = this.props;
+
+ try {
+ let response = await API_UNI_OIL.get(`member/${match.params.id}`)
+ this.setState({
+ userInfo: {...response.data.data},
+ mounted: true
+ })
+ } catch ({response: error}) {
+ notification.error({
+ message: "Error",
+ description:
+
Something went wrong loading data.
+ - {error && error.data && error.data.message}
+
,
+ duration: 3,
+ });
+ if(error.status == 404) {
+ if(this.props.location.pathname)
+ this.props.history.push(`${this.props.location.pathname}/404`);
+ } else {
+ this.setState({ mounted: false })
+ }
+
+ }
+ }
+
+ render() {
+
+ const { userInfo } = this.state
+ const { history } = this.props
+
+ return (
+
+ )
+ }
+}
+
+
+export default withRouter(CardMemberView);
\ No newline at end of file
diff --git a/src/containers/private/MemberManagement/LockAccount/List/index.js b/src/containers/private/MemberManagement/LockAccount/List/index.js
new file mode 100644
index 0000000..a91f5b2
--- /dev/null
+++ b/src/containers/private/MemberManagement/LockAccount/List/index.js
@@ -0,0 +1,127 @@
+// LIBRARIES
+import React, { Component } from 'react';
+import { message } from 'antd';
+import { connect } from "react-redux";
+import moment from 'moment'
+
+// COMPONENTS
+import AdvanceTable from "components/Tables/AdvanceTable";
+import HeaderForm from "components/Forms/HeaderForm";
+
+// HELPER FUNCTIONS
+import { customAction } from 'actions';
+
+
+
+class LockedAccountList extends Component {
+
+ componentDidMount() {
+
+ }
+
+ componentDidUpdate() {
+ }
+
+ render() {
+ const { match, history } = this.props;
+
+ return (
+
+
+
{
+ if(moment(date).format("DD-MMM-YYYY") !== "Invalid date")
+ return moment(date).format("DD-MMM-YYYY")
+ },
+ },
+ {
+ title: 'Card Type',
+ dataIndex: 'card_type',
+ key: 'card_type',
+ sorter: true,
+ width: "18%",
+ },
+ {
+ title: 'Status',
+ dataIndex: 'status',
+ key: 'status',
+ //sorter: true,
+ width: "10%",
+ render: (text, record) => (
+
+ {record && record.status == "locked" ? "Locked" : "Locked"}
+
+ )
+ },
+ {
+ title: 'Action',
+ dataIndex: 'action',
+ key: 'action',
+ width: 100,
+ buttons: [
+ {
+ key: 'view',
+ title: "View",
+ icon: 'right-circle-o',
+ url: 'member-management/lock-account'
+ }
+ ]
+ },
+ ]
+ }
+ />
+
+ );
+ }
+}
+
+LockedAccountList = connect(
+ state => ({
+ //user: state.viewUser.data,
+ //status: state.viewUser.code,
+ //responseMsg: state.viewUser.messages
+ }),
+ { customAction }
+)(LockedAccountList);
+
+export default LockedAccountList;
\ No newline at end of file
diff --git a/src/containers/private/MemberManagement/LockAccount/View/components/LockAccountViewForm.js b/src/containers/private/MemberManagement/LockAccount/View/components/LockAccountViewForm.js
new file mode 100644
index 0000000..1c44d24
--- /dev/null
+++ b/src/containers/private/MemberManagement/LockAccount/View/components/LockAccountViewForm.js
@@ -0,0 +1,80 @@
+// LIBRARIES
+import React from 'react'
+import { connect } from 'react-redux'
+import { Icon, Avatar, Row , Col } from 'antd'
+import moment from 'moment'
+
+// COMPONENTS
+import HeaderForm from "components/Forms/HeaderForm"
+
+// HELPER FUNCTIONS
+
+function LockAccountViewForm(props) {
+ const {
+ isSubmitting,
+ userInfo
+ } = props;
+
+ return (
+
+
+
+
Details
+ {/*Account Details */}
+ Card Details
+
+ {userInfo && userInfo.card_number}
+ Card Number:
+
+
+ {userInfo && userInfo.firstname}
+ First Name:
+
+
+ {userInfo && userInfo.lastname}
+ Last Name:
+
+
+ {userInfo && userInfo.birthdate}
+ Birthday:
+
+
+ {userInfo && userInfo.card_type}
+ Card Type:
+
+
+ {/*Account Details */}
+
+
Account Details
+
+ {userInfo && userInfo.is_locked == 1 ? "Locked" : "Active"}
+ Account Status:
+
+
+ {userInfo && userInfo.reason}
+ Lock Account Description:
+
+
+ {userInfo && userInfo.lock_dt && userInfo.lock_dt && moment(userInfo.lock_dt, 'YYYY-MM-DDTHH:mm:ss').format("DD-MMM-YYYY")}
+ Locked Date:
+
+ {/*
+ {userInfo && userInfo.unlocked_by}
+ Unlocked By:
+
*/}
+
+
+
+ );
+};
+
+
+LockAccountViewForm = connect(
+ state => ({
+
+ }),
+)(LockAccountViewForm);
+
+
+export default LockAccountViewForm;
+
diff --git a/src/containers/private/MemberManagement/LockAccount/View/index.js b/src/containers/private/MemberManagement/LockAccount/View/index.js
new file mode 100644
index 0000000..a00adf0
--- /dev/null
+++ b/src/containers/private/MemberManagement/LockAccount/View/index.js
@@ -0,0 +1,91 @@
+// LIBRARIES
+import React, { Component } from 'react'
+import { withRouter } from "react-router-dom"
+import { notification, Icon, message } from "antd"
+
+// COMPONENTS
+import HeaderForm from 'components/Forms/HeaderForm'
+import LockAccountViewForm from './components/LockAccountViewForm'
+
+// HELPER FUNCTIONS
+import { API_UNI_OIL, API_POST } from "utils/Api";
+
+class LockAccountView extends Component {
+
+ state = {
+ userInfo: null,
+ loading: false
+ }
+
+ async componentDidMount() {
+
+ const { match } = this.props;
+
+ try {
+ let response = await API_UNI_OIL.get(`member/${match.params.id}`)
+ this.setState({
+ userInfo: {...response.data.data},
+ mounted: true
+ })
+ } catch ({response: error}) {
+ notification.error({
+ message: "Error",
+ description:
+
Something went wrong loading data.
+ - {error && error.data && error.data.message}
+
,
+ duration: 3,
+ });
+ if(error.status == 404) {
+ if(this.props.location.pathname)
+ this.props.history.push(`${this.props.location.pathname}/404`);
+ } else {
+ this.setState({ mounted: false })
+ }
+ }
+ }
+
+ activateAccount = async ()=> {
+ const { match,history } = this.props;
+
+ this.setState({loading: true})
+ try {
+ let response = await API_POST(`memberActivate/${match.params.id}`);
+ message.success('Record was successfully update.');
+ history.replace({ pathname: '/member-management/lock-account' });
+ } catch ({response: error}) {
+ notification.error({
+ message: "Error",
+ description:
+
Something went wrong updating record.
+ - { error && error.data && error.data.message }
+
,
+ duration: 3,
+ });
+ this.setState({loading: false})
+ }
+ }
+
+ render() {
+
+ const { userInfo,loading } = this.state
+ const { history } = this.props
+
+ return (
+
+ )
+ }
+}
+
+
+export default withRouter(LockAccountView);
\ No newline at end of file
diff --git a/src/containers/private/MemberManagement/index.js b/src/containers/private/MemberManagement/index.js
new file mode 100644
index 0000000..06e0c03
--- /dev/null
+++ b/src/containers/private/MemberManagement/index.js
@@ -0,0 +1,86 @@
+// LIBRARIES
+import React, { Component, Fragment } from 'react';
+import { Switch, Route, Redirect } from 'react-router-dom';
+import { connect } from 'react-redux';
+
+// COMPONENTS
+import CardMemberList from './CardMember/List';
+import CardMemberView from './CardMember/View';
+import LockAccountList from './LockAccount/List';
+import LockAccountView from './LockAccount/View';
+import { PAGE404 } from "components/PageError/index"
+import MainContent from 'components/Dashboard/Layout/components/MainContent';
+
+// HELPER FUNCTIONS
+
+
+
+class MemberManagement extends Component {
+ state = {
+ pageRoutes: [
+
+ {
+ path: `${this.props.match.url}/card-member`,
+ name: "Card Member",
+ component: CardMemberList,
+ },
+ {
+ path: `${this.props.match.url}/card-member/view`,
+ params: ':id',
+ name: "View Card Member",
+ component: CardMemberView,
+ },
+ {
+ path: `${this.props.match.url}/lock-account`,
+ name: "Locked Accounts",
+ component: CardMemberList,
+ },
+ {
+ path: `${this.props.match.url}/lock-account/view`,
+ params: ':id',
+ name: "View Locked Account",
+ component: CardMemberView,
+ }
+ ],
+ }
+
+
+ render() {
+
+ const { pageRoutes } = this.state;
+ const { userInfo } = this.props
+
+ return (
+
+
+
+ {
+ userInfo.data.userInfo.role == 1
+ ?
+
+
+
+
+
+
+
+
+ :
+
+
+
+ }
+
+
+ );
+ }
+}
+
+MemberManagement = connect(
+ state => ({
+ userInfo: state.login
+ }),
+)(MemberManagement);
+
+
+export default MemberManagement;
\ No newline at end of file
diff --git a/src/containers/private/MyProfile/View/MyProfileView.js b/src/containers/private/MyProfile/View/MyProfileView.js
new file mode 100644
index 0000000..4f004e5
--- /dev/null
+++ b/src/containers/private/MyProfile/View/MyProfileView.js
@@ -0,0 +1,62 @@
+// LIBRARIES
+import React, { Component } from 'react'
+import { Icon, Avatar, Row , Col } from 'antd'
+
+// COMPONENTS
+import HeaderForm from "components/Forms/HeaderForm"
+
+// HELPER FUNCTIONS
+
+
+
+export default class MyProfileView extends Component {
+
+ componentDidMount() {
+
+ }
+
+ render() {
+
+ const { userInfo } = this.props;
+
+ return (
+
+
+
+
+
{userInfo && `${userInfo.firstname} ${userInfo.lastname} `}
+
+
+
+
+
Access Role
+
+
+ {
+ userInfo && (userInfo.role == "1" || userInfo.role == "3")
+ ? (userInfo.role == "3" ? "Super Admin" : "System Admin")
+ : userInfo && "Marketing Personnel"
+ }
+
+ Role:
+
+
+
+
+ )
+ }
+}
diff --git a/src/containers/private/MyProfile/index.js b/src/containers/private/MyProfile/index.js
new file mode 100644
index 0000000..1e0bd73
--- /dev/null
+++ b/src/containers/private/MyProfile/index.js
@@ -0,0 +1,60 @@
+// LIBRARIES
+import React, { Component } from 'react';
+import { Switch, Route, Redirect, withRouter } from 'react-router-dom';
+import { notification, Icon } from "antd"
+
+// COMPONENTS
+import MyProfileView from './View/MyProfileView';
+import MainContent from '../../../components/Dashboard/Layout/components/MainContent';
+import { PAGE404 } from "components/PageError/index"
+
+// HELPER FUNCTIONS
+import { API_UNI_OIL } from "utils/Api";
+
+
+class MyProfile extends Component {
+ state = {
+ pageRoutes: [
+ ],
+ mounted: false,
+ userInfo: null
+ }
+
+ async componentDidMount() {
+
+ notification.close('idle-notification-1')
+
+ const { match } = this.props;
+
+ API_UNI_OIL.post(`adminProfile`)
+ .then((response) => {
+ this.setState({
+ userInfo: {...response.data.data},
+ mounted: true
+ })
+ })
+ .catch(({response: error}) => {
+ notification.error({ message: "Error", description: error.data.message , duration: 20, });
+ this.setState({ mounted: false })
+ });
+
+ }
+
+ render() {
+
+ const { pageRoutes, userInfo } = this.state
+
+ return (
+
+ );
+ }
+}
+
+export default withRouter(MyProfile);
\ No newline at end of file
diff --git a/src/containers/private/Notifications/Create/components/AddNotificationForm.js b/src/containers/private/Notifications/Create/components/AddNotificationForm.js
new file mode 100644
index 0000000..9f0d385
--- /dev/null
+++ b/src/containers/private/Notifications/Create/components/AddNotificationForm.js
@@ -0,0 +1,107 @@
+// LIBRARIES
+import React from 'react';
+import { Row, Button, Col } from 'antd';
+import { Form, Field } from 'formik';
+import { connect } from 'react-redux';
+import HeaderForm from 'components/Forms/HeaderForm';
+
+// COMPONENTS
+import { Inputs, InputTextArea, Radio, DatePicker } from 'components/Forms';
+
+// HELPER FUNCTIONS
+
+const formItemLayout = {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 },
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 10 },
+ },
+};
+
+function AddNotificationForm(props) {
+ const { isSubmitting, handleSubmit, loading, history, schedule, handleScheduleStatus } = props;
+ return (
+
+ );
+}
+
+AddNotificationForm = connect((state) => ({}))(AddNotificationForm);
+
+export default AddNotificationForm;
diff --git a/src/containers/private/Notifications/Create/index.js b/src/containers/private/Notifications/Create/index.js
new file mode 100644
index 0000000..bec622b
--- /dev/null
+++ b/src/containers/private/Notifications/Create/index.js
@@ -0,0 +1,120 @@
+// LIBRARIES
+import React, { Component } from 'react'
+import { connect } from "react-redux"
+import { Formik } from 'formik'
+import { message,notification } from 'antd';
+
+// COMPONENTS
+import HeaderForm from "components/Forms/HeaderForm"
+import AddNotificationForm from './components/AddNotificationForm'
+
+// HELPER FUNCTIONS
+import { userDetailsSchema } from './validationSchema'
+import { customAction } from "actions";
+import { API_GET, API_POST } from "utils/NotificationApi";
+
+
+class CreateNotification extends Component {
+ state = {
+ userInfo: null,
+ loading: false,
+ schedule: 'false',
+ }
+
+ componentDidMount() {
+
+ }
+
+ // handleSubmit = async (values, actions) => {
+
+ // const { setErrors, setSubmitting } = actions;
+ // let { history } = this.props;
+ // let _self = this;
+ // this.setState({loading: true})
+ // values.role = parseInt(values.role);
+ // if(values.status) {
+ // values.status = values.status
+ // } else {
+ // values.status = "active"
+ // }
+ // if(values.username) {
+ // values.username = values.username.toLowerCase()
+ // }
+
+ // this.props.customAction({
+ // type: "USERMANAGEMENT_CREATE_REQUEST",
+ // payload: {
+ // values,
+ // setSubmitting,
+ // setErrors,
+ // history,
+ // _self
+ // }
+ // });
+ // }
+
+ handleAddUser =()=> {
+ this.form.submitForm()
+ }
+
+ handleScheduleStatus = (e) => {
+ this.setState({schedule:e})
+ }
+
+ render() {
+ const { userManagement } = this.props
+ const { loading, schedule } = this.state;
+
+ return (
+
+ {/*
{ this.props.history.push("/user-management")}}
+ cancelBtnName="Cancel"
+ /> */}
+
+
Notification Details
+
(this.form = node)}
+ enableReinitialize={true}
+ validationSchema={userDetailsSchema}
+ onSubmit={this.handleSubmit }
+ render = {(props)=>
+
+ }
+ />
+
+
+ )
+ }
+}
+
+
+CreateNotification = connect(
+ state => ({
+ //userInfo: state
+ userManagement: state.userManagement,
+ }),
+ { customAction }
+)(CreateNotification);
+
+export default CreateNotification;
\ No newline at end of file
diff --git a/src/containers/private/Notifications/Create/reducer.js b/src/containers/private/Notifications/Create/reducer.js
new file mode 100644
index 0000000..f15f688
--- /dev/null
+++ b/src/containers/private/Notifications/Create/reducer.js
@@ -0,0 +1,33 @@
+const NOTIFICATION_CREATE_REQUEST = "NOTIFICATION_CREATE_REQUEST";
+const NOTIFICATION_CREATE_SUCCESS = "NOTIFICATION_CREATE_SUCCESS";
+const NOTIFICATION_CREATE_ERROR = "NOTIFICATION_CREATE_ERROR";
+
+const initialState = {
+ data: [],
+ createRequestPending: false
+}
+
+const NotificationCreateReducer = (state = initialState, { type, payload }) => {
+ switch(type) {
+ case NOTIFICATION_CREATE_REQUEST:
+ return {
+ ...state,
+ createRequestPending: true
+ };
+ case NOTIFICATION_CREATE_SUCCESS:
+ return {
+ ...state,
+ data: payload.data,
+ createRequestPending: false
+ };
+ case NOTIFICATION_CREATE_ERROR:
+ return {
+ ...state,
+ createRequestPending: false
+ };
+ default:
+ return state;
+ }
+};
+
+ export default NotificationCreateReducer;
\ No newline at end of file
diff --git a/src/containers/private/Notifications/Create/saga.js b/src/containers/private/Notifications/Create/saga.js
new file mode 100644
index 0000000..d191338
--- /dev/null
+++ b/src/containers/private/Notifications/Create/saga.js
@@ -0,0 +1,53 @@
+import React, { Component } from 'react'
+import { call, takeLatest, put } from "redux-saga/effects";
+import { API_UNI_OIL } from "utils/Api";
+import { setCookie } from "utils/cookie";
+import { notification, message } from "antd";
+
+import { apiFormValidation } from 'utils/helper';
+const NOTIFICATION_CREATE_REQUEST = "NOTIFICATION_CREATE_REQUEST";
+const NOTIFICATION_CREATE_SUCCESS = "NOTIFICATION_CREATE_SUCCESS";
+const NOTIFICATION_CREATE_ERROR = "NOTIFICATION_CREATE_ERROR";
+
+function* NotificationSagaFlow({ payload }) {
+ const {
+ values,
+ setSubmitting,
+ setErrors,
+ history,
+ _self
+ } = payload;
+ try {
+ const { data } = yield call(() => API_UNI_OIL.post('admin', { ...values })); //username
+
+ yield put({ type: NOTIFICATION_CREATE_SUCCESS, payload: data.data });
+ message.success('User account created successfully. Please send the login credentials to the user.'); _self.setState({loading: false})
+ history.push({ pathname: '/user-management' });
+
+ } catch ({response: error}) {
+ notification.error({
+ message: 'Error',
+ description:
+ Something went wrong creating new record.
+ { error && error.data && error.data.data && error.data.data.username
+ && (
- {error.data.data.username[0]}
) }
+ { error && error.data && error.data.data && error.data.data.email
+ && (
- {error.data.data.email[0]}
) }
+
,
+ duration: 3,
+ });
+ yield put({ type: NOTIFICATION_CREATE_ERROR });
+ setSubmitting(false); _self.setState({loading: false})
+
+ if (error.status === 422) {
+ apiFormValidation({ data: error.data.data, setErrors });
+ }
+ }
+}
+
+
+function* NotificationCreateSaga() {
+ yield takeLatest(NOTIFICATION_CREATE_REQUEST, NotificationSagaFlow);
+}
+
+export default NotificationCreateSaga;
\ No newline at end of file
diff --git a/src/containers/private/Notifications/Create/validationSchema.js b/src/containers/private/Notifications/Create/validationSchema.js
new file mode 100644
index 0000000..8b1a88e
--- /dev/null
+++ b/src/containers/private/Notifications/Create/validationSchema.js
@@ -0,0 +1,42 @@
+
+import * as Yup from 'yup'
+
+export const userDetailsSchema = Yup.object().shape({
+ username: Yup.string()
+ .trim()
+ .max(128, "Maximum character is 128.")
+ .required('Username is required!')
+ .matches(
+ /^[a-zA-Z0-9_@.ñÑ ]+$/,
+ {
+ message: 'Invalid Username.',
+ excludeEmptyString: true,
+ },
+ ),
+ firstname: Yup.string()
+ .trim()
+ .max(128, "Maximum character is 128.")
+ .matches(/^[A-Za-z ñÑ-]+$/, { excludeEmptyString: false, message: "Invalid First Name" })
+ .required('First Name is required!'),
+ lastname: Yup.string()
+ .trim()
+ .max(128, "Maximum character is 128.")
+ .matches(/^[A-Za-z ñÑ-]+$/, { excludeEmptyString: false, message: "Invalid Last Name" })
+ .trim()
+ .required('Last Name is required!'),
+ email: Yup.string()
+ .trim()
+ .max(128, "Maximum character is 128.")
+ .required('Email is required!')
+ .matches(/^[A-Za-z0-9@_.ñÑ ]+$/, { excludeEmptyString: false, message: "Invalid Email Address" })
+ .email("Invalid Email Address"),
+ role: Yup.string()
+ .required('Role is required!'),
+ status: Yup.string()
+ .required('Status is required!'),
+ password: Yup.string()
+ .required('Default Password is required!')
+})
+
+
+
\ No newline at end of file
diff --git a/src/containers/private/Notifications/List/index.js b/src/containers/private/Notifications/List/index.js
new file mode 100644
index 0000000..f0e521e
--- /dev/null
+++ b/src/containers/private/Notifications/List/index.js
@@ -0,0 +1,228 @@
+// LIBRARIES
+import React, { Component } from 'react';
+import { Menu, Dropdown, notification, Icon, message } from 'antd';
+import { connect } from 'react-redux';
+import { Link } from 'react-router-dom';
+import { getCookie } from '../../../../utils/cookie';
+
+// COMPONENTS
+import AdvanceTable from 'components/Tables/AdvanceTable';
+import HeaderForm from 'components/Forms/HeaderForm';
+
+// HELPER FUNCTIONS
+import { API_UNI_OIL } from 'utils/Api';
+import { customAction } from 'actions';
+
+class NotificationList extends Component {
+ state = {
+ updating: false,
+ modal: false,
+ subject: '',
+ description: '',
+ };
+
+ onChange = ({ target }) => {
+ this.setState({ [target.name]: target.value }, () => console.log(this.state));
+ };
+
+ componentDidMount = () => {
+ console.log(getCookie('TOKEN').token);
+ };
+
+ render() {
+ const { match, history } = this.props;
+
+ return (
+
+ {this.state.modal && (
+
+
+
+ Add Notification
+ {
+ this.setState({ modal: false });
+ }}
+ >
+ x
+
+
+
+
+
+
+
+
+
+
+
+ {
+ console.log('its here');
+ const rawResponse = await fetch('https://mobileapid.unioil.com/api/cms/notification', {
+ method: 'POST',
+ headers: {
+ Accept: '*/*',
+ 'Content-Type': 'application/json',
+ Authorization: `Bearer ${getCookie('TOKEN').token}`,
+ },
+ body: JSON.stringify({
+ subject: this.state.subject,
+ description: this.state.description,
+ }),
+ });
+ console.log(rawResponse);
+ const content = await rawResponse.json();
+ console.log(content);
+ window.location.reload();
+ }}
+ />
+ this.setState({ modal: false })}
+ />
+
+
+
+ )}
+
history.push({ pathname: `${match.url}/create` })}
+ actionBtnName='Add Notification'
+ />
+
+
+ );
+ }
+}
+
+NotificationList = connect(
+ (state) => ({
+ //user: state.viewUser.data,
+ //status: state.viewUser.code,
+ //responseMsg: state.viewUser.messages
+ }),
+ { customAction }
+)(NotificationList);
+
+export default NotificationList;
diff --git a/src/containers/private/Notifications/index.js b/src/containers/private/Notifications/index.js
new file mode 100644
index 0000000..2de3d0d
--- /dev/null
+++ b/src/containers/private/Notifications/index.js
@@ -0,0 +1,70 @@
+// LIBRARIES
+import React, { Component, Fragment } from 'react';
+import { Switch, Route, Redirect } from 'react-router-dom';
+import { connect } from 'react-redux';
+
+// COMPONENTS
+import DashboardList from './List';
+import NotificationsCreate from './Create';
+import MainContent from '../../../components/Dashboard/Layout/components/MainContent';
+import { PAGE404 } from 'components/PageError/index';
+
+// HELPER FUNCTIONS
+
+class Dashboard extends Component {
+ state = {
+ pageRoutes: [
+ {
+ path: `${this.props.match.url}`,
+ name: 'Notifications',
+ component: DashboardList,
+ },
+ {
+ path: `${this.props.match.url}/create`,
+ name: 'Create Notification',
+ component: NotificationsCreate,
+ }
+ ],
+ };
+
+ componentDidUpdate() {}
+
+ render() {
+ const { pageRoutes } = this.state;
+ const { userInfo } = this.props;
+
+ return (
+
+
+ {userInfo.data.userInfo.role == 1 ? (
+ //|| userInfo.data.userInfo.role == 3
+
+
+
+
+
+ ) : (
+
+
+
+ )}
+
+
+ );
+ }
+}
+
+Dashboard = connect((state) => ({
+ userInfo: state.login,
+}))(Dashboard);
+
+export default Dashboard;
diff --git a/src/containers/private/Promotions/Create/components/AddPromotionForm.js b/src/containers/private/Promotions/Create/components/AddPromotionForm.js
new file mode 100644
index 0000000..fca0839
--- /dev/null
+++ b/src/containers/private/Promotions/Create/components/AddPromotionForm.js
@@ -0,0 +1,220 @@
+// LIBRARIES
+import React from 'react';
+import { Row, Button, Col } from 'antd';
+import { Form, Field } from 'formik';
+import { connect } from 'react-redux';
+import moment from 'moment'
+
+// COMPONENTS
+import HeaderForm from "components/Forms/HeaderForm"
+import { Inputs, Radio, InputTextArea, UploadImage, Select,
+ DatePicker, TimePickerForm } from 'components/Forms';
+
+// HELPER FUNCTIONS
+
+
+
+const formItemLayout = {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 },
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 10 },
+ },
+};
+
+function AddPromotionForm(props) {
+ const {
+ isSubmitting,
+ loading,
+ handleSubmit,
+ branchesOptions,
+ promoTypeOptions,
+ handleFileUpload,
+ responsePromotionTopUp,
+ branchesOptionsTwo,
+ history
+ } = props;
+
+ return (
+
+ );
+};
+
+
+AddPromotionForm = connect(
+ state => ({
+
+ }),
+)(AddPromotionForm);
+
+
+export default AddPromotionForm;
+
diff --git a/src/containers/private/Promotions/Create/index.js b/src/containers/private/Promotions/Create/index.js
new file mode 100644
index 0000000..e444c1a
--- /dev/null
+++ b/src/containers/private/Promotions/Create/index.js
@@ -0,0 +1,253 @@
+// LIBRARIES
+import React, { Component } from 'react'
+import { Formik } from 'formik'
+import { message, notification } from 'antd';
+import moment from 'moment';
+
+// COMPONENTS
+import HeaderForm from "components/Forms/HeaderForm"
+import AddPromotionForm from './components/AddPromotionForm'
+
+// HELPER FUNCTIONS
+import { userDetailsSchema } from './validationSchema'
+import { API_GET, API_POST, API_UNI_OIL } from "utils/Api";
+import { apiFormValidation } from "utils/helper";
+
+
+
+class PromotionsCreate extends Component {
+ state = {
+ loading: false,
+ branchesOptions: null,
+ branchesOptionsTwo: [],
+ promoTypeOptions: null,
+ mounted: false,
+ responsePromotionTopUp: null
+ }
+
+ async componentDidMount () {
+
+ try {
+ let stationList = await API_GET('getStations');
+
+ let promoTypesList = await API_GET('promoTypes');
+
+ let responsePromotionTopUp = await API_UNI_OIL.get(`promotionDisableTopTwo`);
+
+ if(stationList) {
+
+ let branchesOptions = [] ,branchesOptionsTwo = [];
+
+ await stationList.data.data.map(item => {
+ branchesOptions.push({
+ label: item.description,
+ value: item.station_uuid
+ })
+ branchesOptionsTwo.push(item.description)
+ })
+
+ this.setState({
+ branchesOptions: branchesOptions,
+ branchesOptionsTwo: branchesOptionsTwo,
+ mounted: true,
+ responsePromotionTopUp : responsePromotionTopUp.data && responsePromotionTopUp.data.data.is_toppromotion
+ })
+ }
+
+ if(promoTypesList) {
+
+ let promoTypeOptions = []
+
+ for (var property in promoTypesList.data.data) {
+ if (promoTypesList.data.data.hasOwnProperty(property)) {
+ promoTypeOptions.push({
+ label: promoTypesList.data.data[property],
+ value: property
+ })
+ }
+ }
+
+ this.setState({
+ promoTypeOptions: promoTypeOptions,
+ mounted: true
+ })
+
+ }
+ } catch ({response: error}) {
+ notification.error({
+ message: "Error",
+ description:
+
Something went wrong loading data.
+ {error && error.data && (- error.data.message)}
+
,
+ duration: 3,
+ });
+ this.setState({ mounted: false })
+ }
+ }
+
+ handleSubmit = async (values, actions) => {
+
+ const { fileUpload, branchesOptions } = this.state;
+ const { history } = this.props;
+ const { setErrors } = actions;
+
+ if(branchesOptions && branchesOptions.length > 0)
+ {
+
+ if(values.station_uuid && values.station_uuid.length > 0) {
+
+ let newValue = [];
+
+ branchesOptions.map(branchesOptions => {
+ values.station_uuid.map(station_uuid=> {
+ if(branchesOptions.label == station_uuid) {
+ newValue.push(branchesOptions.value);
+ }
+ })
+ })
+
+ values.station_uuid = newValue
+
+ }
+ }
+
+ this.setState({loading: true})
+ try {
+ const headers = {
+ 'ContentType': 'multipart/form-data',
+ };
+ const formData = new FormData();
+
+ if(fileUpload) {
+ fileUpload.forEach((t, i) => {
+ formData.append( `image`, t.originFileObj);
+ });
+ }
+
+ let date_start = moment(values.date_start).format('YYYY-MM-DD');
+ let start_time = moment(values.start_time).format('HH:mm:ss');
+
+ if(start_time == 'Invalid date') {
+ start_time = values.start_time
+ } else {
+ start_time = moment(values.start_time).format('HH:mm:ss');
+ }
+
+ let date_end = moment(values.date_end).format('YYYY-MM-DD');
+ let end_time = moment(values.end_time).format('HH:mm:ss');
+
+ if(end_time == 'Invalid date') {
+ end_time = values.end_time
+ } else {
+ end_time = moment(values.end_time).format('HH:mm:ss');
+ }
+
+ let startDateTime = moment(date_start + ' ' + start_time, 'YYYY-MM-DDTHH:mm:ss');
+ let endDateTime = moment(date_end + ' ' + end_time, 'YYYY-MM-DDTHH:mm:ss');
+
+ values.station_uuid && (formData.append('station_uuid', JSON.stringify(values.station_uuid)));
+ values.title && (formData.append('title', values.title));
+ values.description && (formData.append('description', values.description));
+ values.date_start && (formData.append('date_start', startDateTime.format('YYYY-MM-DDTHH:mm:ss') ) );
+ values.date_end && (formData.append('date_end', endDateTime.format('YYYY-MM-DDTHH:mm:ss') ) );
+ formData.append('is_toppromotion', values.is_toppromotion ? values.is_toppromotion : 0);
+ formData.append('is_gps', values.is_gps ? values.is_gps : 0);
+ values.promo_type && (formData.append('promo_type', values.promo_type));
+
+ let response = await API_UNI_OIL.post('promotion', formData , headers)
+
+ if(response) {
+ message.success('New record added.');
+ this.setState({loading: false})
+ history.push({ pathname: "/promotions" })
+ }
+
+ } catch ({response: error}) {
+ if (error.status === 422) {
+ apiFormValidation({ data: error.data.data, setErrors });
+ }
+ notification.error({
+ message: 'Error',
+ description:
+ { error && error.data && error.data.data && error.data.data.image
+ && (
{error.data.data.image[0] ? `- ${error.data.data.image[0]}` : "Something went wrong creating new record."}
) }
+
+ });
+ this.setState({loading: false})
+ }
+
+ }
+
+ handleAddPromotions =()=> {
+ this.form.submitForm()
+ }
+
+
+
+ handleFileUpload =(e)=> {
+ if (Array.isArray(e)) {
+ return this.setState({fileUpload: e});
+ }
+ return e && this.setState({fileUpload: e.fileList});
+ }
+
+ render() {
+
+ if(!this.state.mounted) return null;
+
+ const { branchesOptions, branchesOptionsTwo, promoTypeOptions, responsePromotionTopUp, loading } = this.state
+
+ return (
+
+ {/*
{ this.props.history.push("/promotions")}}
+ cancelBtnName="Cancel"
+ /> */}
+
+
Promotion Content Details
+
(this.form = node)}
+ enableReinitialize={true}
+ validationSchema={userDetailsSchema}
+ onSubmit={this.handleSubmit }
+ render = {(props)=>
+
+ }
+ />
+
+
+ )
+ }
+}
+
+
+
+export default PromotionsCreate;
\ No newline at end of file
diff --git a/src/containers/private/Promotions/Create/validationSchema.js b/src/containers/private/Promotions/Create/validationSchema.js
new file mode 100644
index 0000000..43d6f4b
--- /dev/null
+++ b/src/containers/private/Promotions/Create/validationSchema.js
@@ -0,0 +1,35 @@
+
+import * as Yup from 'yup'
+
+export const userDetailsSchema = Yup.object().shape({
+ // station_uuid: Yup.string()
+ // .required('Branch is required!'),
+ title: Yup.string()
+ .trim()
+ .max(128, "Maximum character is 128.")
+ .required('Title is required!'),
+ description: Yup.string()
+ .trim()
+ .max(32000, "Maximum character is 32,000.")
+ .required('Description is required!'),
+ image: Yup.string()
+ .required('Upload Image is required!'),
+ date_start: Yup.string()
+ .required('Start Date is required!'),
+ date_end: Yup.string()
+ .required('End Date is required!'),
+ start_time: Yup.string()
+ .required('Start Time is required!'),
+ end_time: Yup.string()
+ .required('End Time is required!'),
+ is_toppromotion: Yup.string(),
+ // .required('FAQs is required!'),
+ promo_type: Yup.string()
+ .required('Promo Type is required!'),
+ is_gps: Yup.string(),
+ // .required('FAQs is required!'),
+
+})
+
+
+
\ No newline at end of file
diff --git a/src/containers/private/Promotions/Edit/components/EditUserManagementForm.js b/src/containers/private/Promotions/Edit/components/EditUserManagementForm.js
new file mode 100644
index 0000000..c9407a8
--- /dev/null
+++ b/src/containers/private/Promotions/Edit/components/EditUserManagementForm.js
@@ -0,0 +1,227 @@
+// LIBRARIES
+import React from 'react';
+import { Row, Button, Col } from 'antd';
+import { Form, Field } from 'formik';
+import { connect } from 'react-redux';
+import moment from 'moment';
+
+// COMPONENTS
+import HeaderForm from "components/Forms/HeaderForm"
+import { Inputs, Radio, InputTextArea, UploadImage, Select, DatePicker ,TimePickerForm } from 'components/Forms';
+
+// HELPER FUNCTIONS
+
+
+
+const formItemLayout = {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 },
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 10 },
+ },
+};
+
+function EditUserManagementForm(props) {
+ const {
+ isSubmitting,
+ loading,
+ handleSubmit,
+ handleFileUpload,
+ branchesOptions,
+ promoTypeOptions,
+ branchDefaultValue ,
+ promoTypeDefaultValue,
+ responsePromotionTopUp,
+ branchesOptionsTwo,
+ history
+ } = props;
+
+ return (
+
+ );
+};
+
+
+EditUserManagementForm = connect(
+ state => ({
+
+ }),
+)(EditUserManagementForm);
+
+
+export default EditUserManagementForm;
+
diff --git a/src/containers/private/Promotions/Edit/index.js b/src/containers/private/Promotions/Edit/index.js
new file mode 100644
index 0000000..cd7406d
--- /dev/null
+++ b/src/containers/private/Promotions/Edit/index.js
@@ -0,0 +1,299 @@
+// LIBRARIES
+import React, { Component } from 'react'
+import { Formik } from 'formik'
+import { notification, message } from "antd"
+import moment from 'moment'
+
+// COMPONENTS
+import HeaderForm from "components/Forms/HeaderForm"
+import EditUserManagementForm from './components/EditUserManagementForm'
+
+// HELPER FUNCTIONS
+import { userDetailsSchema } from './validationSchema'
+import { API_GET, API_PUT, API_POST } from "utils/Api";
+import { API_UNI_OIL } from "utils/Api";
+import { apiFormValidation } from "utils/helper";
+
+
+
+class PromotionsEdit extends Component {
+ state = {
+ loading: false,
+ userInfo: null,
+ mounted: false,
+ branchDefaultValue: null,
+ branchesOptions: null,
+ promoTypeOptions: null,
+ responsePromotionTopUp: null,
+ branchesOptionsTwo: [],
+ }
+
+ async componentDidMount() {
+
+ const { match } = this.props;
+ let branchDefaultValue = []
+ let branchDefaultKeyValue = []
+ let promoTypeDefaultValue = []
+ let promoTypeDefaultKeyValue = []
+
+ try {
+ let response = await API_UNI_OIL.get(`promotion/${match.params.id}`);
+
+ let responsePromotionTopUp = await API_UNI_OIL.get(`promotionDisableTopTwo?promotion_uuid=${match.params.id}`);
+
+ // default options branch
+ response.data.data.stations.map(item => {
+ branchDefaultValue.push(
+ item.description
+ )
+ branchDefaultKeyValue.push(
+ item.station_uuid
+ )
+ })
+ // default options promotype
+
+ let promotype = []
+
+ if(response.data.data.promo_type) {
+ promotype.push(response.data.data.promo_type)
+
+ promotype.map(item => {
+ promoTypeDefaultValue.push(
+ item.name
+ )
+ promoTypeDefaultKeyValue.push(
+ item.id
+ )
+ })
+ }
+
+ this.setState({
+ userInfo: {...response.data.data},
+ mounted: true,
+ branchDefaultValue,
+ branchDefaultKeyValue,
+ promoTypeDefaultValue,
+ promoTypeDefaultKeyValue,
+ responsePromotionTopUp : responsePromotionTopUp.data && responsePromotionTopUp.data.data.is_toppromotion
+ })
+
+
+ } catch ({response: error}) {
+ notification.error({
+ message: "Error",
+ description:
+
Something went wrong loading data.
+ - {error && error.data && error.data.message}
+
,
+ duration: 3,
+ });
+ if(error.status == 404) {
+ if(this.props.location.pathname)
+ this.props.history.push(`${this.props.location.pathname}/404`);
+ }
+ this.setState({ mounted: false })
+ }
+
+ // options
+ try {
+
+ let branchesOptions = []; let promoTypeOptions = [], branchesOptionsTwo = [];
+
+ let stationList = await API_GET('getStations');
+ let promoTypesList = await API_GET('promoTypes');
+
+ if(stationList) {
+ await stationList.data.data.map(item => {
+ branchesOptions.push({
+ label: item.description,
+ value: item.station_uuid,
+ })
+ branchesOptionsTwo.push(item.description)
+ })
+ }
+
+ if(promoTypesList) {
+ for (var property in promoTypesList.data.data) {
+ if (promoTypesList.data.data.hasOwnProperty(property)) {
+ promoTypeOptions.push({
+ label: promoTypesList.data.data[property],
+ value: property
+ })
+ }
+ }
+ }
+
+ this.setState({
+ promoTypeOptions: promoTypeOptions,
+ branchesOptions: branchesOptions,
+ branchesOptionsTwo: branchesOptionsTwo,
+ mounted: true
+ })
+
+ } catch ({response: error}) {
+ this.setState({ mounted: false })
+ }
+
+
+ }
+
+
+ handleSubmit = async (values, actions) => {
+
+ const { fileUpload, branchesOptions, userInfo } = this.state;
+ const { history } = this.props;
+ const { setErrors } = actions;
+
+ this.setState({loading: true})
+ try {
+ const headers = {
+ 'ContentType': 'multipart/form-data',
+ };
+
+ const formData = new FormData();
+
+ if(fileUpload) {
+ fileUpload.forEach((t, i) => {
+ formData.append( `image`, t.originFileObj);
+ });
+ }
+
+ let date_start = moment(values.date_start).format('YYYY-MM-DD');
+ let start_time = moment(values.start_time).format('HH:mm:ss');
+
+ if(start_time == 'Invalid date') {
+ start_time = values.start_time
+ } else {
+ start_time = moment(values.start_time).format('HH:mm:ss');
+ }
+
+ let date_end = moment(values.date_end).format('YYYY-MM-DD');
+ let end_time = moment(values.end_time).format('HH:mm:ss');
+
+ if(end_time == 'Invalid date') {
+ end_time = values.end_time
+ } else {
+ end_time = moment(values.end_time).format('HH:mm:ss');
+ }
+
+ let startDateTime = moment(date_start + ' ' + start_time, 'YYYY-MM-DDTHH:mm:ss');
+ let endDateTime = moment(date_end + ' ' + end_time, 'YYYY-MM-DDTHH:mm:ss');
+
+ let branchesList = []
+
+ values.station_uuid.map(item => {
+ branchesOptions.map(userInfo => {
+ if(userInfo.label == item || userInfo.value == item) {
+ branchesList.push(userInfo.value);
+ }
+ })
+ })
+
+ values.station_uuid && (formData.append('station_uuid', JSON.stringify(branchesList)));
+ values.title && (formData.append('title', values.title));
+ values.description && (formData.append('description', values.description));
+ values.date_start && (formData.append('date_start', startDateTime.format('YYYY-MM-DDTHH:mm:ss') ) );
+ values.date_end && (formData.append('date_end', endDateTime.format('YYYY-MM-DDTHH:mm:ss') ) );
+ formData.append('is_toppromotion', values.is_toppromotion ? values.is_toppromotion : 0);
+ formData.append('is_gps', values.is_gps ? values.is_gps : 0);
+ values.promo_type && (formData.append('promo_type', values.promo_type));
+
+
+ let response = await API_UNI_OIL.post(`updatePromotion/${userInfo.promotion_uuid}`, formData , headers)
+
+ if(response) {
+ message.success('Record was successfully update.');
+ this.setState({loading: false})
+ history.push({ pathname: "/promotions" })
+ }
+
+ } catch ({response: error}) {
+ if (error.status === 422) {
+ apiFormValidation({ data: error.data.data, setErrors });
+ }
+ notification.error({
+ message: 'Error',
+ description:
+ { error && error.data && error.data.data && error.data.data.image
+ && (
{error.data.data.image[0] ? `- ${error.data.data.image[0]}` : "Something went wrong updating record."}
) }
+
+ });
+ this.setState({loading: false})
+ }
+
+ }
+
+ handleEditPromotions =()=> {
+ this.form.submitForm()
+ }
+
+ handleFileUpload =(e)=> {
+ if (Array.isArray(e)) {
+ return this.setState({fileUpload: e});
+ }
+ return e && this.setState({fileUpload: e.fileList});
+ }
+
+ render() {
+
+ if(!this.state.mounted) return null;
+
+ const { loading, userInfo, branchesOptions, promoTypeOptions, branchDefaultValue,
+ branchDefaultKeyValue , promoTypeDefaultValue, promoTypeDefaultKeyValue,
+ responsePromotionTopUp , branchesOptionsTwo} = this.state
+
+ return (
+
+ {/*
this.props.history.push("/promotions")}
+ cancelBtnName="Cancel"
+ /> */}
+
+
Promotions Content Details
+ (this.form = node)}
+ enableReinitialize={true}
+ validationSchema={userDetailsSchema}
+ onSubmit={this.handleSubmit }
+ render = {(props)=>
+
+ }
+ />
+
+
+ )
+ }
+}
+
+
+export default PromotionsEdit
\ No newline at end of file
diff --git a/src/containers/private/Promotions/Edit/validationSchema.js b/src/containers/private/Promotions/Edit/validationSchema.js
new file mode 100644
index 0000000..83be8ca
--- /dev/null
+++ b/src/containers/private/Promotions/Edit/validationSchema.js
@@ -0,0 +1,34 @@
+
+import * as Yup from 'yup'
+
+export const userDetailsSchema = Yup.object().shape({
+ // station_uuid: Yup.string()
+ // .required('Branch is required!'),
+ title: Yup.string()
+ .trim()
+ .max(128, "Maximum character is 128.")
+ .required('Title is required!'),
+ description: Yup.string()
+ .trim()
+ .max(32000, "Maximum character is 32,000.")
+ .required('Description is required!'),
+ image: Yup.string()
+ .required('Upload Image is required!'),
+ date_start: Yup.string()
+ .required('Start Date is required!'),
+ date_end: Yup.string()
+ .required('End Date is required!'),
+ start_time: Yup.string()
+ .required('Start Time is required!'),
+ end_time: Yup.string()
+ .required('End Time is required!'),
+ is_toppromotion: Yup.string(),
+ // .required('FAQs is required!'),
+ promo_type: Yup.string()
+ .required('Promo Type is required!'),
+ is_gps: Yup.string(),
+ // .required('FAQs is required!'),
+})
+
+
+
\ No newline at end of file
diff --git a/src/containers/private/Promotions/List/index.js b/src/containers/private/Promotions/List/index.js
new file mode 100644
index 0000000..aa77850
--- /dev/null
+++ b/src/containers/private/Promotions/List/index.js
@@ -0,0 +1,143 @@
+// LIBRARIES
+import React, { Component } from 'react';
+import { message } from 'antd';
+import { connect } from "react-redux";
+import { Link } from 'react-router-dom';
+import moment from 'moment'
+
+// COMPONENTS
+import AdvanceTable from "components/Tables/AdvanceTable";
+import HeaderForm from "components/Forms/HeaderForm";
+
+// HELPER FUNCTIONS
+import { customAction } from 'actions';
+
+
+class PromotionsList extends Component {
+
+ componentDidMount() {
+
+ }
+
+ componentDidUpdate() {
+ }
+
+ delete =()=> {
+ let success = true;
+ // if(success)
+ // message.info('Clicked on Yes.');
+ }
+
+ render() {
+ const { match, history } = this.props;
+
+ return (
+
+
history.push({ pathname: `${match.url}/create` })}
+ actionBtnName="Add Content"
+ />
+ `${promo.name}`,
+ filters:[],
+ width: 150
+ },
+ {
+ title: 'Start Date',
+ dataIndex: 'date_start',
+ key: 'date_start',
+ sorter: true,
+ render: date => {
+ if(moment(date).format("DD-MMM-YYYY") !== "Invalid date")
+ return moment(date).format("DD-MMM-YYYY")
+ },
+ filters:[],
+ width: 150
+ },
+ {
+ title: 'End Date',
+ dataIndex: 'date_end',
+ key: 'date_end',
+ sorter: true,
+ render: date => {
+ if(moment(date).format("DD-MMM-YYYY") !== "Invalid date")
+ return moment(date).format("DD-MMM-YYYY")
+ },
+ filters:[],
+ width: 150
+ },
+ {
+ title: 'Status',
+ dataIndex: 'status',
+ key: 'status',
+ sorter: false,
+ width: 110,
+ },
+ {
+ title: 'Action',
+ dataIndex: 'action',
+ key: 'action',
+ width: 150,
+ buttons: [
+ {
+ key: 'edit',
+ title: "Edit",
+ icon: 'edit',
+ url: '/user-management/edit'
+ },
+ {
+ key: 'delete',
+ title: "Delete",
+ icon: 'delete',
+ url: '',
+ action: this.delete
+ },
+ {
+ key: 'view',
+ title: "View",
+ icon: 'right-circle-o',
+ url: '/user-management/view'
+ }
+ ]
+ },
+ ]
+ }
+ />
+
+ );
+ }
+}
+
+PromotionsList = connect(
+ state => ({
+ //user: state.viewUser.data,
+ //status: state.viewUser.code,
+ //responseMsg: state.viewUser.messages
+ }),
+ { customAction }
+)(PromotionsList);
+
+export default PromotionsList;
\ No newline at end of file
diff --git a/src/containers/private/Promotions/View/components/ViewPromotionsForm.js b/src/containers/private/Promotions/View/components/ViewPromotionsForm.js
new file mode 100644
index 0000000..a252b0f
--- /dev/null
+++ b/src/containers/private/Promotions/View/components/ViewPromotionsForm.js
@@ -0,0 +1,124 @@
+// LIBRARIES
+import React from 'react'
+import { connect } from 'react-redux'
+import { Icon, Avatar, Row , Col } from 'antd'
+import moment from 'moment'
+
+// COMPONENTS
+import HeaderForm from "components/Forms/HeaderForm"
+
+// HELPER FUNCTIONS
+
+
+function ViewPromotionsForm(props) {
+ const {
+ isSubmitting,
+ userInfo
+ } = props;
+// imageUrl={props.values.image && `${process.env.REACT_APP_IMG_URL}${props.values.image}`}
+ return (
+
+
+ {
+ userInfo && (
+
+ )
+ }
+
+
+
+
Details
+ CONTENT DETAILS
+
+ {userInfo && userInfo.title}
+ Title:
+
+
+ {userInfo && userInfo.description}
+ Description:
+
+
+
+
+ {
+ userInfo && userInfo.stations &&
+ userInfo.stations.length > 0 ?
+ userInfo.stations.map(item => {
+ return {`${item.description}. `}
+ })
+ : "All"
+ }
+
+ Branch:
+
+
+ {userInfo && userInfo.is_toppromotion == 1 ? "Yes" : "No" }
+ Add in top 2 promos:
+
+
+ {userInfo && userInfo.is_gps == 1 ? "Yes" : "No"}
+ Add in GPS:
+
+
+ {userInfo && userInfo.status}
+ Status:
+
+
+ {userInfo && userInfo.promo_type && userInfo.promo_type.name}
+ Promo Type:
+
+
+ {/*Account Details */}
+
+
SCHEDULE DETAILS
+
+ {userInfo && userInfo.date_start && moment(userInfo.date_start, 'YYYY-MM-DDTHH:mm:ss').format("DD-MMM-YYYY")}
+ Start Appeareance Date:
+
+
+ {userInfo && userInfo.date_end && moment(userInfo.date_end, 'YYYY-MM-DDTHH:mm:ss').format("DD-MMM-YYYY")}
+ End Appeareance Date:
+
+
+ {userInfo && userInfo.date_start && moment(userInfo.date_start, 'YYYY-MM-DDTHH:mm:ss').format('HH:mm:ss')}
+ Start Time:
+
+
+ {userInfo && userInfo.date_end && moment(userInfo.date_end, 'YYYY-MM-DDTHH:mm:ss').format('HH:mm:ss')}
+ End Time:
+
+
+ {userInfo && userInfo.created_by}
+ Created By:
+
+
+ {userInfo && userInfo.created_at && moment(userInfo.created_at, 'YYYY-MM-DDTHH:mm:ss').format("DD-MMM-YYYY")}
+ Date Created:
+
+
+ {userInfo && userInfo.updated_by}
+ Last Updated By:
+
+
+ {userInfo && userInfo.updated_at && moment(userInfo.updated_at, 'YYYY-MM-DDTHH:mm:ss').format("DD-MMM-YYYY")}
+ Last Updated Date:
+
+
+
+
+ );
+};
+
+
+ViewPromotionsForm = connect(
+ state => ({
+
+ }),
+)(ViewPromotionsForm);
+
+
+export default ViewPromotionsForm;
+
diff --git a/src/containers/private/Promotions/View/index.js b/src/containers/private/Promotions/View/index.js
new file mode 100644
index 0000000..d1411ac
--- /dev/null
+++ b/src/containers/private/Promotions/View/index.js
@@ -0,0 +1,95 @@
+// LIBRARIES
+import React, { Component } from 'react'
+import { withRouter } from "react-router-dom"
+import { notification, message } from "antd"
+
+// COMPONENTS
+import HeaderForm from 'components/Forms/HeaderForm'
+import ViewPromotionsForm from './components/ViewPromotionsForm'
+
+// HELPER FUNCTIONS
+import { API_UNI_OIL } from "utils/Api";
+
+
+class PromotionsView extends Component {
+ state ={
+ mounted: false,
+ userInfo: null
+ }
+
+ async componentDidMount() {
+
+ const { match } = this.props;
+
+ try {
+ let response = await API_UNI_OIL.get(`promotion/${match.params.id}`)
+ this.setState({
+ userInfo: {...response.data.data},
+ mounted: true
+ })
+ } catch ({response: error}) {
+ notification.error({
+ message: "Error",
+ description:
+
Something went wrong loading data.
+ - { error && error.data && error.data.message }
+
,
+ duration: 3,
+ });
+ if(error.status == 404) {
+ if(this.props.location.pathname)
+ this.props.history.push(`${this.props.location.pathname}/404`);
+ }
+ this.setState({ mounted: false })
+ }
+
+ }
+
+ delete = async (uuid) => {
+
+ const { userInfo } = this.state
+ const { match } = this.props;
+
+ try {
+ await API_UNI_OIL.delete(`promotion/${userInfo.promotion_uuid}`);
+ message.success('Record was successfully deleted.');
+ this.props.history.push("/promotions");
+ } catch ({response:error}) {
+ notification.error({
+ message: "Error",
+ description:
+
Something went wrong deleting record.
+ - { error && error.data && error.data.message }
+
,
+ duration: 3,
+ });
+ }
+ }
+
+ render() {
+
+ if(!this.state.mounted) return null;
+
+ const { userInfo } = this.state
+ const { history, match } = this.props
+
+ return (
+
+
{this.props.history.push(`/promotions/edit/${match.params.id}`)}}
+ styleBtn={{background: 'white', borderColor: 'rgb(184, 187, 201)',color: 'rgb(101, 105, 127)'}}
+ actionBtnName="Update"
+ deleteAction={this.delete}
+ deleteBtnName="Delete"
+ />
+
+
+
+
+ )
+ }
+}
+
+
+export default withRouter(PromotionsView)
\ No newline at end of file
diff --git a/src/containers/private/Promotions/index.js b/src/containers/private/Promotions/index.js
new file mode 100644
index 0000000..213ed8a
--- /dev/null
+++ b/src/containers/private/Promotions/index.js
@@ -0,0 +1,70 @@
+// LIBRARIES
+import React, { Component } from 'react';
+import { Switch, Route, Redirect } from 'react-router-dom';
+
+// COMPONENTS
+import PromotionsList from './List';
+import PromotionsCreate from './Create';
+import PromotionsEdit from './Edit';
+import PromotionsView from './View';
+
+import MainContent from '../../../components/Dashboard/Layout/components/MainContent';
+import { PAGE404 } from "components/PageError/index"
+
+// HELPER FUNCTIONS
+
+
+class Promotions extends Component {
+ state = {
+ pageRoutes: [
+ {
+ path: `${this.props.match.url}`,
+ name: "Promotions",
+ component: PromotionsList,
+ },
+ {
+ path: `${this.props.match.url}/create`,
+ name: "Add Content",
+ component: PromotionsCreate,
+ },
+ {
+ path: `${this.props.match.url}/edit`,
+ params: ':id',
+ name: "Update Promotions",
+ component: PromotionsEdit,
+ },
+ {
+ path: `${this.props.match.url}/view`,
+ params: ':id',
+ name: "View Promotions",
+ component: PromotionsView,
+ }
+ ],
+ }
+
+ componentDidUpdate() {
+
+ }
+
+ render() {
+
+ const { pageRoutes } = this.state
+
+ return (
+
+
+ );
+ }
+}
+
+export default Promotions;
\ No newline at end of file
diff --git a/src/containers/private/Reports/MobileUsageReport/List/index.js b/src/containers/private/Reports/MobileUsageReport/List/index.js
new file mode 100644
index 0000000..e3f286f
--- /dev/null
+++ b/src/containers/private/Reports/MobileUsageReport/List/index.js
@@ -0,0 +1,100 @@
+ // LIBRARIES
+import React, { Component } from 'react';
+import { Menu, Dropdown, notification, Icon, message } from "antd"
+import { connect } from "react-redux";
+import moment from 'moment'
+
+// COMPONENTS
+import AdvanceTable from "components/Tables/AdvanceTable";
+import HeaderForm from "components/Forms/HeaderForm";
+
+// HELPER FUNCTIONS
+import { API_UNI_OIL } from "utils/Api";
+import { customAction } from 'actions';
+
+class MobileList extends Component {
+ state= {
+ updating: false,
+ }
+
+ delete =(admin_uuid)=> {
+
+ }
+
+ updateDropDown = async(e) => {
+
+ }
+
+ render() {
+ const { match, history } = this.props;
+
+ return (
+
+
+
{
+ if(moment(date).format("DD-MMM-YYYY") !== "Invalid date")
+ return moment(date).format("DD-MMM-YYYY")
+ },
+ },
+ {
+ title: 'Active Registered Users',
+ dataIndex: 'active',
+ key: 'active',
+ sorter: true,
+ filters:[],
+ },
+ {
+ title: 'Inactive Registered Users',
+ dataIndex: 'inactive',
+ key: 'inactive',
+ sorter: true,
+ filters:[],
+ },
+ {
+ title: 'Locked Registered Users',
+ dataIndex: 'locked',
+ key: 'locked',
+ sorter: true,
+ filters:[],
+ },
+
+ ]
+ }
+ />
+
+ );
+ }
+}
+
+MobileList = connect(
+ state => ({
+ //user: state.viewUser.data,
+ //status: state.viewUser.code,
+ //responseMsg: state.viewUser.messages
+ }),
+ { customAction }
+)(MobileList);
+
+export default MobileList;
\ No newline at end of file
diff --git a/src/containers/private/Reports/RegistrationReport/List/index.js b/src/containers/private/Reports/RegistrationReport/List/index.js
new file mode 100644
index 0000000..b1aa988
--- /dev/null
+++ b/src/containers/private/Reports/RegistrationReport/List/index.js
@@ -0,0 +1,93 @@
+ // LIBRARIES
+import React, { Component } from 'react';
+import { Menu, Dropdown, notification, Icon, message } from "antd"
+import { connect } from "react-redux";
+import moment from 'moment'
+
+// COMPONENTS
+import AdvanceTable from "components/Tables/AdvanceTable";
+import HeaderForm from "components/Forms/HeaderForm";
+
+// HELPER FUNCTIONS
+import { API_UNI_OIL } from "utils/Api";
+import { customAction } from 'actions';
+
+class RegistrationList extends Component {
+ state= {
+ updating: false,
+ }
+
+ delete =(admin_uuid)=> {
+
+ }
+
+ updateDropDown = async(e) => {
+
+ }
+
+ render() {
+ const { match, history } = this.props;
+
+ return (
+
+
+
{
+ if(moment(date).format("DD-MMM-YYYY") !== "Invalid date")
+ return moment(date).format("DD-MMM-YYYY")
+ },
+ },
+ {
+ title: 'No. of Activated Cards',
+ dataIndex: 'activated',
+ key: 'activated',
+ sorter: true,
+ filters:[],
+ },
+ {
+ title: 'No. of Registered Members',
+ dataIndex: 'registered',
+ key: 'registered',
+ sorter: true,
+ filters:[],
+ },
+
+ ]
+ }
+ />
+
+ );
+ }
+}
+
+RegistrationList = connect(
+ state => ({
+ //user: state.viewUser.data,
+ //status: state.viewUser.code,
+ //responseMsg: state.viewUser.messages
+ }),
+ { customAction }
+)(RegistrationList);
+
+export default RegistrationList;
\ No newline at end of file
diff --git a/src/containers/private/Reports/StationRatingReport/List/index.js b/src/containers/private/Reports/StationRatingReport/List/index.js
new file mode 100644
index 0000000..5e09fb4
--- /dev/null
+++ b/src/containers/private/Reports/StationRatingReport/List/index.js
@@ -0,0 +1,104 @@
+ // LIBRARIES
+import React, { Component } from 'react';
+import { Menu, Dropdown, notification, Icon, message } from "antd"
+import { connect } from "react-redux";
+import moment from 'moment'
+
+// COMPONENTS
+import AdvanceTable from "components/Tables/AdvanceTable";
+import HeaderForm from "components/Forms/HeaderForm";
+
+// HELPER FUNCTIONS
+import { API_UNI_OIL } from "utils/Api";
+import { customAction } from 'actions';
+
+class StationList extends Component {
+ state= {
+ updating: false,
+ }
+
+ delete =(admin_uuid)=> {
+
+ }
+
+ updateDropDown = async(e) => {
+
+ }
+
+ render() {
+ const { match, history } = this.props;
+
+ return (
+
+ );
+ }
+}
+
+StationList = connect(
+ state => ({
+ //user: state.viewUser.data,
+ //status: state.viewUser.code,
+ //responseMsg: state.viewUser.messages
+ }),
+ { customAction }
+)(StationList);
+
+export default StationList;
\ No newline at end of file
diff --git a/src/containers/private/Reports/TopUpUsageReport/List/index.js b/src/containers/private/Reports/TopUpUsageReport/List/index.js
new file mode 100644
index 0000000..0c98963
--- /dev/null
+++ b/src/containers/private/Reports/TopUpUsageReport/List/index.js
@@ -0,0 +1,90 @@
+ // LIBRARIES
+import React, { Component } from 'react';
+import { Menu, Dropdown, notification, Icon, message } from "antd"
+import { connect } from "react-redux";
+import moment from 'moment'
+
+// COMPONENTS
+import AdvanceTable from "components/Tables/AdvanceTable";
+import HeaderForm from "components/Forms/HeaderForm";
+
+// HELPER FUNCTIONS
+import { API_UNI_OIL } from "utils/Api";
+import { customAction } from 'actions';
+
+class TopUpList extends Component {
+ state= {
+ updating: false,
+ }
+
+ delete =(admin_uuid)=> {
+
+ }
+
+ updateDropDown = async(e) => {
+
+ }
+
+ render() {
+ const { match, history } = this.props;
+
+ return (
+
+ );
+ }
+}
+
+TopUpList = connect(
+ state => ({
+ //user: state.viewUser.data,
+ //status: state.viewUser.code,
+ //responseMsg: state.viewUser.messages
+ }),
+ { customAction }
+)(TopUpList);
+
+export default TopUpList;
\ No newline at end of file
diff --git a/src/containers/private/Reports/index.js b/src/containers/private/Reports/index.js
new file mode 100644
index 0000000..0a1f1cb
--- /dev/null
+++ b/src/containers/private/Reports/index.js
@@ -0,0 +1,97 @@
+// LIBRARIES
+import React, { Component } from 'react';
+import { Switch, Route, Redirect } from 'react-router-dom';
+
+// COMPONENTS
+import TopUpList from './TopUpUsageReport/List';
+import StationList from './StationRatingReport/List';
+import MobileList from './MobileUsageReport/List';
+import RegistrationList from './RegistrationReport/List';
+
+import { PAGE404 } from "components/PageError/index"
+import MainContent from 'components/Dashboard/Layout/components/MainContent';
+
+// HELPER FUNCTIONS
+
+
+
+class Reports extends Component {
+ state = {
+ pageRoutes: [
+ {
+ path: `${this.props.match.url}/top-up`,
+ name: "Top-Up Usage Report",
+ component: TopUpList,
+ },
+
+ {
+ path: `${this.props.match.url}/station-rating`,
+ name: "Station Rating Report",
+ component: StationList,
+ },
+
+ {
+ path: `${this.props.match.url}/mobile-report`,
+ name: "Mobile Usage Report",
+ component: MobileList,
+ },
+
+ {
+ path: `${this.props.match.url}/registration-report`,
+ name: "Registration Report",
+ component: RegistrationList,
+ },
+
+ // {
+ // path: `${this.props.match.url}/lock-account`,
+ // name: "Locked Accounts",
+ // component: CardMemberList,
+ // },
+ // {
+ // path: `${this.props.match.url}/lock-account/view`,
+ // params: ':id',
+ // name: "View Locked Account",
+ // component: CardMemberView,
+ // }
+ ],
+ }
+
+
+ render() {
+
+ const { pageRoutes } = this.state;
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {/*
+
+ */}
+
+
+
+
+
+
+
+
+ );
+ }
+}
+
+export default Reports;
\ No newline at end of file
diff --git a/src/containers/private/StationLocator/Branches/Create/index.js b/src/containers/private/StationLocator/Branches/Create/index.js
new file mode 100644
index 0000000..cead548
--- /dev/null
+++ b/src/containers/private/StationLocator/Branches/Create/index.js
@@ -0,0 +1,118 @@
+ // LIBRARIES
+import React, { Component } from 'react';
+import { Menu, Dropdown, Row, Col, Input, Button, Modal } from "antd"
+import { Formik } from 'formik'
+import { connect } from "react-redux"
+import { customAction } from "actions";
+import { message,notification } from 'antd';
+import { apiFormValidation } from "utils/helper";
+import { branchSchema } from '../../components/branchSchema'
+import AddUserManagementForm from '../../components/branchesForm'
+import {API_POST_BRANCH, API_UNI_OIL} from 'utils/StationApi'
+
+ class CreateBranch extends Component {
+ state= {
+ updating: false,
+ isGenerated: false,
+ loading: false,
+ }
+
+ // handleSubmit = async (values, actions) => {
+ // const { setErrors } = actions;
+ // let { history } = this.props;
+ // let params = { ...values }
+ // this.setState({ loading: true });
+
+ // try {
+ // const response = await API_UNI_OIL.post('branches/add',params);
+ // if(response) {
+ // message.success('New branch added.');
+ // this.setState({ loading: false });
+ // history.push({ pathname: '/branches' });
+ // }
+ // console.log(response)
+ // } catch (error) {
+ // // if (error.status === 422) {
+ // // apiFormValidation({ data: error.data.data, setErrors });
+ // // }
+ // console.log(error)
+ // notification.error({
+ // message: 'Error',
+ // description:
+ // Something went wrong creating new record..
+ // { error && error.data && error.data.data && error.data.data.fee_code
+ // && (
- {error.data.data.fee_code[0]}
) }
+ //
+ // });
+ // this.setState({ loading: false });
+ // }
+ // }
+
+ handleSubmit = async (values, actions) => {
+
+ const { setErrors, setSubmitting } = actions;
+ let { history } = this.props;
+ let _self = this;
+ this.setState({loading: true})
+
+ this.props.customAction({
+ type: "BRANCHES_CREATE_REQUEST",
+ payload: {
+ values,
+ setSubmitting,
+ setErrors,
+ history,
+ _self
+ }
+ });
+ }
+
+ handleAddUser =()=> {
+ this.form.submitForm()
+ }
+
+ render() {
+ const { match, history } = this.props;
+ let user = localStorage.getItem('user')
+ const { branchesCreate } = this.props
+ console.log(branchesCreate)
+ const { loading, isGenerated } = this.state;
+ return (
+
+
(this.form = node)}
+ enableReinitialize={true}
+ validationSchema={branchSchema}
+ onSubmit={this.handleSubmit }
+ render = {(props)=>
+
+ }
+ />
+
+ );
+ }
+ }
+
+CreateBranch = connect(
+ state => ({
+ //userInfo: state
+ branchesCreate: state.branchesCreate,
+ }),
+ { customAction }
+ )(CreateBranch);
+
+ export default CreateBranch;
\ No newline at end of file
diff --git a/src/containers/private/StationLocator/Branches/Create/reducer.js b/src/containers/private/StationLocator/Branches/Create/reducer.js
new file mode 100644
index 0000000..5750190
--- /dev/null
+++ b/src/containers/private/StationLocator/Branches/Create/reducer.js
@@ -0,0 +1,33 @@
+const BRANCHES_CREATE_REQUEST = "BRANCHES_CREATE_REQUEST";
+const BRANCHES_CREATE_SUCCESS = "BRANCHES_CREATE_SUCCESS";
+const BRANCHES_CREATE_ERROR = "BRANCHES_CREATE_ERROR";
+
+const initialState = {
+ data: [],
+ createRequestPending: false
+}
+
+const branchesCreateReducer = (state = initialState, { type, payload }) => {
+ switch(type) {
+ case BRANCHES_CREATE_REQUEST:
+ return {
+ ...state,
+ createRequestPending: true
+ };
+ case BRANCHES_CREATE_SUCCESS:
+ return {
+ ...state,
+ data: payload.data,
+ createRequestPending: false
+ };
+ case BRANCHES_CREATE_ERROR:
+ return {
+ ...state,
+ createRequestPending: false
+ };
+ default:
+ return state;
+ }
+};
+
+ export default branchesCreateReducer;
\ No newline at end of file
diff --git a/src/containers/private/StationLocator/Branches/Create/saga.js b/src/containers/private/StationLocator/Branches/Create/saga.js
new file mode 100644
index 0000000..13d8be0
--- /dev/null
+++ b/src/containers/private/StationLocator/Branches/Create/saga.js
@@ -0,0 +1,51 @@
+import React, { Component } from 'react'
+import { call, takeLatest, put } from "redux-saga/effects";
+import { API_UNI_OIL } from "utils/StationApi";
+import { setCookie } from "utils/cookie";
+import { notification, message } from "antd";
+
+import { apiFormValidation } from 'utils/helper';
+const BRANCHES_CREATE_REQUEST = "BRANCHES_CREATE_REQUEST";
+const BRANCHES_CREATE_SUCCESS = "BRANCHES_CREATE_SUCCESS";
+const BRANCHES_CREATE_ERROR = "BRANCHES_CREATE_ERROR";
+
+function* BranchSagaFlow({ payload }) {
+ const {
+ values,
+ setSubmitting,
+ setErrors,
+ history,
+ _self
+ } = payload;
+ try {
+ const { data } = yield call(() => API_UNI_OIL.post('/branches/add', { ...values })); //username
+ console.log({history})
+
+ yield put({ type: BRANCHES_CREATE_SUCCESS, payload: data.data });
+ message.success('Branch created successfully.') && message.success("Don't forget to sync created branch to system parameters!"); _self.setState({loading: false})
+ history.push({ pathname: '/branches' });
+
+ } catch ({response: error}) {
+ console.log(error.data.message)
+ notification.error({
+ message: 'Something went wrong creating new record!',
+ description:
+
{error.data.message}
+ ,
+ duration: 4,
+ });
+ yield put({ type: BRANCHES_CREATE_ERROR });
+ setSubmitting(false); _self.setState({loading: false})
+
+ if (error.status === 422) {
+ apiFormValidation({ data: error.data.data, setErrors });
+ }
+ }
+}
+
+
+function* BranchCreateSaga() {
+ yield takeLatest(BRANCHES_CREATE_REQUEST, BranchSagaFlow);
+}
+
+export default BranchCreateSaga;
\ No newline at end of file
diff --git a/src/containers/private/StationLocator/Branches/Edit/index.js b/src/containers/private/StationLocator/Branches/Edit/index.js
new file mode 100644
index 0000000..ef729c0
--- /dev/null
+++ b/src/containers/private/StationLocator/Branches/Edit/index.js
@@ -0,0 +1,120 @@
+ // LIBRARIES
+ import React, { Component } from 'react';
+ import { Menu, Dropdown, Row, Col, Input, Button, Modal, message, notification } from "antd"
+ import { Formik } from 'formik'
+import queryString from 'query-string';
+
+ import { branchSchema } from '../../components/branchSchema'
+ import AddUserManagementForm from '../../components/branchesForm'
+ import {API_UNI_OIL, API_PUT_BRANCH} from 'utils/StationApi'
+ class CreateBranch extends Component {
+ state= {
+ mounted: false,
+ isGenerated: false,
+ loading: false,
+ name: '',
+ details: '',
+ branchCode:'',
+ }
+
+ async componentDidMount(){
+ // let id = window.location.pathname.split('/')[3] '
+
+ const { match } = this.props;
+
+ try {
+ let response = await API_UNI_OIL.get(`branches/${match.params.id}`)
+ console.log('branches', response.data)
+ this.setState({
+ branchCode: response.data.code,
+ name: response.data.name,
+ details: response.data.details,
+ mounted: true
+ })
+ } catch ({response: error}) {
+ notification.error({
+ message: "Error",
+ description:
+
Something went wrong loading data.
+ - { error && error.data && error.data.message }
+
,
+ duration: 3,
+ });
+ if(error.status == 404) {
+ if(this.props.location.pathname)
+ this.props.history.push(`${this.props.location.pathname}/404`); return
+ }
+ this.setState({ mounted: false })
+ }
+ }
+
+ handleSubmit = async (values, actions) => {
+ const { match } = this.props;
+
+ const { setErrors } = actions;
+ let { history } = this.props;
+ let params = { ...values }
+ this.setState({ loading: true });
+
+ try {
+ const response = await API_PUT_BRANCH(`branches/${match.params.id}`,params);
+ console.log(params)
+ if(response) {
+ message.success('Branch updated.') && message.success("Don't forget to sync updated branch to system parameters!");
+ this.setState({ loading: false });
+ history.push({ pathname: '/branches' });
+ }
+ console.log(response)
+ } catch (error) {
+ // if (error.status === 422) {
+ // apiFormValidation({ data: error.data.data, setErrors });
+ // }
+ console.log(error)
+ notification.error({
+ message: 'Something went wrong updating the record!',
+ description:
+
{error.data.message}
+ {/* { error && error.data && error.data.data && error.data.data.fee_code
+ && (
- {error.data.data.fee_code[0]}
) } */}
+
+ });
+ this.setState({ loading: false });
+ }
+ }
+
+
+ render() {
+ const { match, history } = this.props;
+ let { isGenerated } = this.state;
+ let user = localStorage.getItem('user')
+ return (
+
+
(this.form = node)}
+ enableReinitialize={true}
+ validationSchema={branchSchema}
+ onSubmit={this.handleSubmit }
+ render = {(props)=>
+
+ }
+ />
+
+ );
+ }
+ }
+
+ export default CreateBranch;
\ No newline at end of file
diff --git a/src/containers/private/StationLocator/Branches/List/index.js b/src/containers/private/StationLocator/Branches/List/index.js
new file mode 100644
index 0000000..df31f71
--- /dev/null
+++ b/src/containers/private/StationLocator/Branches/List/index.js
@@ -0,0 +1,150 @@
+ // LIBRARIES
+ import React, { Component } from 'react';
+ import { Menu, Dropdown, notification, Icon, message } from "antd"
+ import { connect } from "react-redux";
+ import { Link } from 'react-router-dom'
+
+ // COMPONENTS
+ import AdvanceTable from "components/StationTables";
+ import HeaderForm from "components/Forms/HeaderForm";
+
+ // HELPER FUNCTIONS
+ import { API_UNI_OIL } from "utils/Api";
+ import { customAction } from 'actions';
+ import moment from 'moment'
+
+
+ class StationLocator extends Component {
+ state= {
+ updating: false,
+ }
+
+ delete =(admin_uuid)=> {
+ alert('as')
+ }
+
+ updateDropDown = async(e) => {
+
+ }
+
+ render() {
+ const { match, history } = this.props;
+
+ return (
+
+
history.push({ pathname: `${match.url}/create` })}
+ actionBtnName='Add branch'
+ />
+ {
+ return {moment(value).format('LLL')}
+ },
+ key: 'dateCreated',
+ // sorter: true,
+ filters:[],
+ },
+ {
+ title: 'Created By',
+ dataIndex: 'created_by',
+ width: 120,
+ key: 'createdBy',
+ // sorter: true,
+ filters:[],
+ },
+ {
+ title: 'Date Modified',
+ dataIndex: 'updatedAt',
+ width: 200,
+ render: value => {
+ return {moment(value).format('LLL')}
+ },
+ key: 'dateModified',
+ // sorter: true,
+ filters:[],
+ },
+ // {
+ // title: 'Modified By',
+ // dataIndex: 'modifiedBy',
+ // key: 'modifiedBy',
+ // sorter: true,
+ // filters:[],
+ // },
+ {
+ title: 'Action',
+ dataIndex: 'action',
+ key: 'action',
+ width: 80,
+ buttons: [
+ {
+ key: 'edit',
+ title: "Edit",
+ icon: 'form',
+ url: '',
+ },
+ {
+ key: 'delete',
+ title: "Delete",
+ icon: 'delete',
+ url: '',
+ action: this.delete
+ }
+ ]
+ },
+ ]
+ }
+ />
+
+
+ );
+ }
+ }
+
+ StationLocator = connect(
+ state => ({
+ //user: state.viewUser.data,
+ //status: state.viewUser.code,
+ //responseMsg: state.viewUser.messages
+ }),
+ { customAction }
+ )(StationLocator);
+
+ export default StationLocator;
\ No newline at end of file
diff --git a/src/containers/private/StationLocator/Branches/index.js b/src/containers/private/StationLocator/Branches/index.js
new file mode 100644
index 0000000..6a05612
--- /dev/null
+++ b/src/containers/private/StationLocator/Branches/index.js
@@ -0,0 +1,54 @@
+// LIBRARIES
+import React, { Component } from 'react';
+import { Switch, Route, Redirect } from 'react-router-dom';
+
+// COMPONENTS
+
+import MainContent from 'components/Dashboard/Layout/components/MainContent';
+import BranchList from './List'
+import CreateBranch from './Create'
+import EditBranch from './Edit'
+import { PAGE404 } from "components/PageError/index"
+// import EditStation from './Location/Edit';
+
+class StationLocator extends Component {
+ state = {
+ pageRoutes: [
+ {
+ path: `${this.props.match.url}`,
+ name: "Branch List",
+ component: BranchList,
+ },
+ {
+ path: `${this.props.match.url}/create`,
+ name: "Create Branch",
+ component: CreateBranch,
+ },
+ {
+ path: `${this.props.match.url}/view`,
+ params: ':id',
+ name: "Edit Branch",
+ component: EditBranch,
+ },
+ ],
+ }
+
+ render() {
+ const { pageRoutes } = this.state
+ console.log('here')
+ return (
+
+ );
+ }
+}
+
+export default StationLocator;
\ No newline at end of file
diff --git a/src/containers/private/StationLocator/Fuels/Create/index.js b/src/containers/private/StationLocator/Fuels/Create/index.js
new file mode 100644
index 0000000..3b8c594
--- /dev/null
+++ b/src/containers/private/StationLocator/Fuels/Create/index.js
@@ -0,0 +1,116 @@
+ // LIBRARIES
+ import React, { Component } from 'react';
+ import { Menu, Dropdown, Row, Col, Input, Button, Modal } from "antd"
+ import { Formik } from 'formik'
+ import { connect } from "react-redux"
+ import { customAction } from "actions";
+ import { message,notification } from 'antd';
+ import { apiFormValidation } from "utils/helper";
+ import { fuelSchema } from '../../components/fuelSchema'
+ import AddUserManagementForm from '../../components/fuelsForm'
+ import {API_POST_BRANCH, API_UNI_OIL} from 'utils/StationApi'
+
+ class CreateFuel extends Component {
+ state= {
+ updating: false,
+ isGenerated: false,
+ loading: false,
+ }
+
+ // handleSubmit = async (values, actions) => {
+ // const { setErrors } = actions;
+ // let { history } = this.props;
+ // let params = { ...values }
+ // this.setState({ loading: true });
+
+ // try {
+ // const response = await API_UNI_OIL.post('branches/add',params);
+ // if(response) {
+ // message.success('New branch added.');
+ // this.setState({ loading: false });
+ // history.push({ pathname: '/branches' });
+ // }
+ // console.log(response)
+ // } catch (error) {
+ // // if (error.status === 422) {
+ // // apiFormValidation({ data: error.data.data, setErrors });
+ // // }
+ // console.log(error)
+ // notification.error({
+ // message: 'Error',
+ // description:
+ // Something went wrong creating new record..
+ // { error && error.data && error.data.data && error.data.data.fee_code
+ // && (
- {error.data.data.fee_code[0]}
) }
+ //
+ // });
+ // this.setState({ loading: false });
+ // }
+ // }
+
+ handleSubmit = async (values, actions) => {
+
+ const { setErrors, setSubmitting } = actions;
+ let { history } = this.props;
+ let _self = this;
+ this.setState({loading: true})
+
+ this.props.customAction({
+ type: "FUELS_CREATE_REQUEST",
+ payload: {
+ values,
+ setSubmitting,
+ setErrors,
+ history,
+ _self
+ }
+ });
+ }
+
+ handleAddUser =()=> {
+ this.form.submitForm()
+ }
+
+ render() {
+ const { match, history } = this.props;
+ let user = localStorage.getItem('user')
+ const { fuelsCreate } = this.props
+ console.log(fuelsCreate, 'asda')
+ const { loading, isGenerated } = this.state;
+ return (
+
+
(this.form = node)}
+ enableReinitialize={true}
+ validationSchema={fuelSchema}
+ onSubmit={this.handleSubmit }
+ render = {(props)=>
+
+ }
+ />
+
+ );
+ }
+ }
+
+ CreateFuel = connect(
+ state => ({
+ //userInfo: state
+ fuelsCreate: state.fuelsCreate,
+ }),
+ { customAction }
+)(CreateFuel);
+
+export default CreateFuel;
\ No newline at end of file
diff --git a/src/containers/private/StationLocator/Fuels/Create/reducer.js b/src/containers/private/StationLocator/Fuels/Create/reducer.js
new file mode 100644
index 0000000..5b15312
--- /dev/null
+++ b/src/containers/private/StationLocator/Fuels/Create/reducer.js
@@ -0,0 +1,34 @@
+const FUELS_CREATE_REQUEST = "FUELS_CREATE_REQUEST";
+const FUELS_CREATE_SUCCESS = "FUELS_CREATE_SUCCESS";
+const FUELS_CREATE_ERROR = "FUELS_CREATE_ERROR";
+
+const initialState = {
+ data: [],
+ createRequestPending: false
+}
+
+const fuelsCreateReducer = (state = initialState, { type, payload }) => {
+ switch(type) {
+ case FUELS_CREATE_REQUEST:
+ return {
+ ...state,
+ createRequestPending: true
+ };
+ case FUELS_CREATE_SUCCESS:
+ return {
+ ...state,
+ data: payload.data,
+ createRequestPending: false
+ };
+ case FUELS_CREATE_ERROR:
+ return {
+ ...state,
+ createRequestPending: false,
+ data: payload.data
+ };
+ default:
+ return state;
+ }
+};
+
+ export default fuelsCreateReducer;
\ No newline at end of file
diff --git a/src/containers/private/StationLocator/Fuels/Create/saga.js b/src/containers/private/StationLocator/Fuels/Create/saga.js
new file mode 100644
index 0000000..fb933df
--- /dev/null
+++ b/src/containers/private/StationLocator/Fuels/Create/saga.js
@@ -0,0 +1,54 @@
+import React, { Component } from 'react'
+import { call, takeLatest, put } from "redux-saga/effects";
+import { API_UNI_OIL } from "utils/StationApi";
+import { setCookie } from "utils/cookie";
+import { notification, message } from "antd";
+
+import { apiFormValidation } from 'utils/helper';
+const FUELS_CREATE_REQUEST = "FUELS_CREATE_REQUEST";
+const FUELS_CREATE_SUCCESS = "FUELS_CREATE_SUCCESS";
+const FUELS_CREATE_ERROR = "FUELS_CREATE_ERROR";
+
+function* FuelCreateSagaFlow({ payload }) {
+ const {
+ values,
+ setSubmitting,
+ setErrors,
+ history,
+ _self
+ } = payload;
+ try {
+ const { data } = yield call(() => API_UNI_OIL.post('/fuels/add', { ...values })); //username
+ console.log({history})
+
+ yield put({ type: FUELS_CREATE_SUCCESS, payload: data.data });
+ message.success('Fuel created successfully.') && message.success("Don't forget to sync created fuel to system parameters!"); _self.setState({loading: false})
+ history.push({ pathname: '/fuels' });
+
+ } catch ({response: error}) {
+ notification.error({
+ message: 'Error',
+ description:
+ Something went wrong creating new record.
+ { error && error.data && error.data.data && error.data.data.username
+ && (
- {error.data.data.username[0]}
) }
+ { error && error.data && error.data.data && error.data.data.email
+ && (
- {error.data.data.email[0]}
) }
+
,
+ duration: 3,
+ });
+ yield put({ type: FUELS_CREATE_ERROR });
+ setSubmitting(false); _self.setState({loading: false})
+
+ if (error.status === 422) {
+ apiFormValidation({ data: error.data.data, setErrors });
+ }
+ }
+}
+
+
+function* FuelCreateSaga() {
+ yield takeLatest(FUELS_CREATE_REQUEST, FuelCreateSagaFlow);
+}
+
+export default FuelCreateSaga;
\ No newline at end of file
diff --git a/src/containers/private/StationLocator/Fuels/Edit/index.js b/src/containers/private/StationLocator/Fuels/Edit/index.js
new file mode 100644
index 0000000..d44eb28
--- /dev/null
+++ b/src/containers/private/StationLocator/Fuels/Edit/index.js
@@ -0,0 +1,111 @@
+ // LIBRARIES
+ import React, { Component } from 'react';
+ import { Menu, Dropdown, Row, Col, Input, Button, Modal, message, notification } from "antd"
+ import { Formik } from 'formik'
+import queryString from 'query-string';
+
+ import { fuelSchema } from '../../components/fuelSchema'
+ import AddUserManagementForm from '../../components/fuelsForm'
+ import {API_UNI_OIL, API_PUT_FUEL} from 'utils/StationApi'
+ class EditFuel extends Component {
+ state= {
+ mounted: false,
+ isGenerated: false,
+ loading: false,
+ name: '',
+ }
+
+ async componentDidMount(){
+ // let id = window.location.pathname.split('/')[3] '
+
+ const { match } = this.props;
+
+ try {
+ let response = await API_UNI_OIL.get(`fuels/${match.params.id}`)
+ this.setState({
+ name: response.data.name,
+ mounted: true
+ })
+ } catch ({response: error}) {
+ notification.error({
+ message: "Error",
+ description:
+
Something went wrong loading data.
+ - { error && error.data && error.data.message }
+
,
+ duration: 3,
+ });
+ if(error.status == 404) {
+ if(this.props.location.pathname)
+ this.props.history.push(`${this.props.location.pathname}/404`); return
+ }
+ this.setState({ mounted: false })
+ }
+ }
+
+ handleSubmit = async (values, actions) => {
+ const { match } = this.props;
+
+ const { setErrors } = actions;
+ let { history } = this.props;
+ let params = { ...values }
+ this.setState({ loading: true });
+
+ try {
+ const response = await API_PUT_FUEL(`fuels/${match.params.id}`,params);
+ console.log(params)
+ if(response) {
+ message.success('Fuel updated successfully.') && message.success("Don't forget to sync updated fuel to system parameters!");
+ this.setState({ loading: false });
+ history.push({ pathname: '/fuels' });
+ }
+ console.log(response)
+ } catch (error) {
+ // if (error.status === 422) {
+ // apiFormValidation({ data: error.data.data, setErrors });
+ // }
+ console.log(error)
+ notification.error({
+ message: 'Something went wrong updating record',
+ description:
+ { error && error.data && error.data.data && error.data.data.fee_code
+ && (
{error.data.data.fee_code[0]} ) }
+
+ });
+ this.setState({ loading: false });
+ }
+ }
+
+
+ render() {
+ const { match, history } = this.props;
+ let { isGenerated } = this.state;
+ let user = localStorage.getItem('user')
+ return (
+
+
(this.form = node)}
+ enableReinitialize={true}
+ validationSchema={fuelSchema}
+ onSubmit={this.handleSubmit }
+ render = {(props)=>
+
+ }
+ />
+
+ );
+ }
+ }
+
+ export default EditFuel;
\ No newline at end of file
diff --git a/src/containers/private/StationLocator/Fuels/List/index.js b/src/containers/private/StationLocator/Fuels/List/index.js
new file mode 100644
index 0000000..b52c138
--- /dev/null
+++ b/src/containers/private/StationLocator/Fuels/List/index.js
@@ -0,0 +1,118 @@
+ // LIBRARIES
+ import React, { Component } from 'react';
+ import { Menu, Dropdown, notification, Icon, message } from "antd"
+ import { connect } from "react-redux";
+ import { Link } from 'react-router-dom'
+
+ // COMPONENTS
+ import AdvanceTable from "components/StationTables";
+ import HeaderForm from "components/Forms/HeaderForm";
+
+ // HELPER FUNCTIONS
+ import { API_UNI_OIL } from "utils/Api";
+ import { customAction } from 'actions';
+import moment from 'moment'
+
+
+ class StationLocator extends Component {
+ state= {
+ updating: false,
+ }
+
+ delete =(admin_uuid)=> {
+ alert('as')
+ }
+
+ updateDropDown = async(e) => {
+
+ }
+
+ render() {
+ const { match, history } = this.props;
+
+ return (
+
+
history.push({ pathname: `${match.url}/create` })}
+ actionBtnName='Add fuel'
+ />
+ {
+ return {moment(value).format('LLL')}
+ },
+ key: 'dateCreated',
+ // sorter: true,
+ filters:[],
+ },
+ {
+ title: 'Date Modified',
+ dataIndex: 'updatedAt',
+ render: value => {
+ return {moment(value).format('LLL')}
+ },
+ key: 'dateModified',
+ // sorter: true,
+ filters:[],
+ },
+ {
+ title: 'Action',
+ dataIndex: 'action',
+ key: 'action',
+ width: 80,
+ buttons: [
+ {
+ key: 'edit',
+ title: "Edit",
+ icon: 'form',
+ url: '',
+ },
+ {
+ key: 'delete',
+ title: "Delete",
+ icon: 'delete',
+ url: '',
+ action: this.delete
+ }
+ ]
+ },
+ ]
+ }
+ />
+
+
+ );
+ }
+ }
+
+ StationLocator = connect(
+ state => ({
+ //user: state.viewUser.data,
+ //status: state.viewUser.code,
+ //responseMsg: state.viewUser.messages
+ }),
+ { customAction }
+ )(StationLocator);
+
+ export default StationLocator;
\ No newline at end of file
diff --git a/src/containers/private/StationLocator/Fuels/index.js b/src/containers/private/StationLocator/Fuels/index.js
new file mode 100644
index 0000000..cff4218
--- /dev/null
+++ b/src/containers/private/StationLocator/Fuels/index.js
@@ -0,0 +1,54 @@
+// LIBRARIES
+import React, { Component } from 'react';
+import { Switch, Route, Redirect } from 'react-router-dom';
+
+// COMPONENTS
+
+import MainContent from 'components/Dashboard/Layout/components/MainContent';
+import FuelList from './List/index.js'
+import CreateFuel from './Create/index.js'
+import EditFuel from './Edit/index.js'
+import { PAGE404 } from "components/PageError/index"
+// import EditStation from './Location/Edit';
+
+class Fuels extends Component {
+ state = {
+ pageRoutes: [
+ {
+ path: `${this.props.match.url}`,
+ name: "Fuel Lists",
+ component: FuelList,
+ },
+ {
+ path: `${this.props.match.url}/create`,
+ name: "Create Fuel",
+ component: CreateFuel,
+ },
+ {
+ path: `${this.props.match.url}/view`,
+ params: ':id',
+ name: "Edit Fuels",
+ component: EditFuel,
+ },
+ ],
+ }
+
+ render() {
+ const { pageRoutes } = this.state
+ console.log('here')
+ return (
+
+ );
+ }
+}
+
+export default Fuels;
\ No newline at end of file
diff --git a/src/containers/private/StationLocator/Location/Create/index.js b/src/containers/private/StationLocator/Location/Create/index.js
new file mode 100644
index 0000000..3478c45
--- /dev/null
+++ b/src/containers/private/StationLocator/Location/Create/index.js
@@ -0,0 +1,132 @@
+ // LIBRARIES
+ import React, { Component } from 'react';
+ import { Formik } from 'formik'
+ import { Menu, Dropdown, Row, Col, Modal, Radio,DatePicker, notification, Button, Select, Input } from "antd"
+ import { connect } from "react-redux"
+ import { customAction } from "actions";
+ import { locationDetailsSchema } from '../validationSchema'
+ import AddUserManagementForm from '../components/stationForm'
+
+ class AddStation extends Component {
+ state= {
+ updating: false,
+ isGenerated: false,
+ loading: false,
+ latitude: '',
+ longitude: '',
+ urlMap: '',
+ fuels: [],
+ }
+
+
+ handleSubmit = async (data, actions) => {
+ console.log("Upon Submit", this.state.fuels)
+ const { setErrors, setSubmitting } = actions;
+ let { history } = this.props;
+ let _self = this;
+ const result = this.state.fuels.map(({ FuelId, price }) => ({FuelId, price}));
+ let user = localStorage.getItem('user')
+ let values = {
+ 'name': data.name,
+ 'location': data.location,
+ 'map_Url': data.map_URL,
+ 'lat': data.lat,
+ 'long':data.long,
+ 'contact_number': data.contact_number.toString(),
+ 'created_by': user,
+ 'BranchId': data.BranchId.toString(),
+ 'StationFuels': result,
+ 'code': data.code.toString()
+ }
+
+ let inv = false;
+ this.state.fuels.map((value) => {
+ if(value.price == 0 || value.price == 0.00 || value.price == "0.00" || value.price == "00.00" || value.id == undefined){
+ inv = true
+ }
+ })
+ if(inv){
+ notification.error({
+ message: "Error",
+ description:
+
Invalid Price for Fuel.
+
,
+ duration: 3,
+ });
+ return
+ }
+ this.props.customAction({
+ type: "STATION_CREATE_REQUEST",
+ payload: {
+ values,
+ setSubmitting,
+ setErrors,
+ history,
+ _self
+ }
+ });
+ }
+
+ handleAddUser =()=> {
+ this.form.submitForm()
+ }
+
+ getMapdata = (url, lat, long) => {
+ // console.log(url, lat, long)
+ this.setState({urlMap: url, latitude: lat, longitude: long})
+ }
+
+ getFuelData = (data) => {
+ // console.log(data)
+ this.setState({fuels: data})
+ }
+
+ render() {
+ const { match, history, stationCreate } = this.props;
+ let { isGenerated, loading } = this.state;
+ let user = localStorage.getItem('user')
+ return (
+
+
(this.form = node)}
+ enableReinitialize={true}
+ validationSchema={locationDetailsSchema}
+ onSubmit={this.handleSubmit }
+ render = {(props)=>
+
+ }
+ />
+
+ );
+ }
+ }
+
+ AddStation = connect(
+ state => ({
+ //userInfo: state
+ stationCreate: state.stationCreate,
+ }),
+ { customAction }
+ )(AddStation);
+
+ export default AddStation;
\ No newline at end of file
diff --git a/src/containers/private/StationLocator/Location/Create/reducer.js b/src/containers/private/StationLocator/Location/Create/reducer.js
new file mode 100644
index 0000000..c476d69
--- /dev/null
+++ b/src/containers/private/StationLocator/Location/Create/reducer.js
@@ -0,0 +1,33 @@
+const STATION_CREATE_REQUEST = "STATION_CREATE_REQUEST";
+const STATION_CREATE_SUCCESS = "STATION_CREATE_SUCCESS";
+const STATION_CREATE_ERROR = "STATION_CREATE_ERROR";
+
+const initialState = {
+ data: [],
+ createRequestPending: false
+}
+
+const stationCreateReducer = (state = initialState, { type, payload }) => {
+ switch(type) {
+ case STATION_CREATE_REQUEST:
+ return {
+ ...state,
+ createRequestPending: true
+ };
+ case STATION_CREATE_SUCCESS:
+ return {
+ ...state,
+ data: payload.data,
+ createRequestPending: false
+ };
+ case STATION_CREATE_ERROR:
+ return {
+ ...state,
+ createRequestPending: false
+ };
+ default:
+ return state;
+ }
+};
+
+ export default stationCreateReducer;
\ No newline at end of file
diff --git a/src/containers/private/StationLocator/Location/Create/saga.js b/src/containers/private/StationLocator/Location/Create/saga.js
new file mode 100644
index 0000000..06a03be
--- /dev/null
+++ b/src/containers/private/StationLocator/Location/Create/saga.js
@@ -0,0 +1,51 @@
+import React, { Component } from 'react'
+import { call, takeLatest, put } from "redux-saga/effects";
+import { API_UNI_OIL } from "utils/StationApi";
+import { setCookie } from "utils/cookie";
+import { notification, message } from "antd";
+
+import { apiFormValidation } from 'utils/helper';
+const STATION_CREATE_REQUEST = "STATION_CREATE_REQUEST";
+const STATION_CREATE_SUCCESS = "STATION_CREATE_SUCCESS";
+const STATION_CREATE_ERROR = "STATION_CREATE_ERROR";
+
+function* stationSagaFlow({ payload }) {
+ const {
+ values,
+ setSubmitting,
+ setErrors,
+ history,
+ _self
+ } = payload;
+ try {
+ const { data } = yield call(() => API_UNI_OIL.post('/stations/add', { ...values })); //username
+ console.log({history})
+
+ yield put({ type: STATION_CREATE_SUCCESS, payload: data.data });
+ message.success('Station created successfully.') && message.success("Don't forget to sync created station to system parameters!"); _self.setState({loading: false})
+ history.push({ pathname: '/stations' });
+
+ } catch (error) {
+ console.log({response: error.response.data.message})
+ notification.error({
+ message: 'Something went wrong creating new record!',
+ description:
+
{error.response.data.message}
+ ,
+ duration: 4,
+ });
+ yield put({ type: STATION_CREATE_ERROR });
+ setSubmitting(false); _self.setState({loading: false})
+
+ if (error.status === 422) {
+ apiFormValidation({ data: error.data.data, setErrors });
+ }
+ }
+}
+
+
+function* stationCreateSaga() {
+ yield takeLatest(STATION_CREATE_REQUEST, stationSagaFlow);
+}
+
+export default stationCreateSaga;
\ No newline at end of file
diff --git a/src/containers/private/StationLocator/Location/Edit/index.js b/src/containers/private/StationLocator/Location/Edit/index.js
new file mode 100644
index 0000000..3e89dce
--- /dev/null
+++ b/src/containers/private/StationLocator/Location/Edit/index.js
@@ -0,0 +1,465 @@
+// LIBRARIES
+import React, { Component } from 'react';
+import { Menu, Dropdown, Row, Col, Modal, Radio,DatePicker, notification, Button, Select, Input } from "antd"
+import { Formik , Field} from 'formik'
+import { connect } from "react-redux"
+import { customAction } from "actions";
+import { locationDetailsSchema } from '../validationSchema'
+import AddUserManagementForm from '../components/stationForm'
+import {API_UNI_OIL, API_PUT_BRANCH} from 'utils/StationApi'
+import moment from 'moment'
+import { DeleteFilled } from '@ant-design/icons';
+import * as Yup from 'yup'
+import { secretbox } from '../../../../../../node_modules/tweetnacl/nacl';
+
+const styles = {
+ ':select': {
+ backgroundColor: 'yellow',
+ color: 'red'
+ }
+};
+
+const formItemLayout = {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 4 },
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 18 },
+ },
+};
+ class EditStation extends Component {
+ state= {
+ updating: false,
+ isGenerated: false,
+ loading: false,
+ latitude: '',
+ longitude: '',
+ urlMap: '',
+ name: '',
+ location: '',
+ contactNum: '',
+ branchId: '',
+ fuels: [],
+ isSched: 2,
+ date: null,
+ latLong: {},
+ fuelModal: false,
+ newFuel: [],
+ fuelsData: [],
+ value: [],
+ removeModal: false,
+ fuelName: '',
+ fuelIndex: '',
+ stationCode: '',
+ selectMenu: false,
+ }
+
+ ref;
+
+ async componentDidMount(){
+
+ const { match } = this.props;
+
+ try {
+ let response = await API_UNI_OIL.get(`stations/${match.params.id}`)
+ console.log('Data Fetched',response.data)
+ let data = {lat: parseFloat(response.data.lat), lng: parseFloat(response.data.long)}
+ this.setState({
+ name: response.data.name,
+ location: response.data.location,
+ contactNum: response.data.contact_number,
+ branchId: response.data.BranchId,
+ urlMap: response.data.map_Url,
+ latitude: response.data.lat,
+ longitude: response.data.long,
+ fuels: this.sortFuels(response.data.StationFuels),
+ mounted: true,
+ latLong: data,
+ date: response.data.Schedule,
+ stationCode: response.data.code,
+ isSched: response.data.Schedule == null ? 2 : 1
+ })
+ } catch ({response: error}) {
+ notification.error({
+ message: "Error",
+ description:
+
Something went wrong loading data.
+ - { error && error.data && error.data.message }
+
,
+ duration: 3,
+ });
+ if(error.status == 404) {
+ if(this.props.location.pathname)
+ this.props.history.push(`${this.props.location.pathname}/404`); return
+ }
+ this.setState({ mounted: false })
+ }
+ this.getFuels()
+ }
+
+ getFuels = async() => {
+ try {
+ const response = await API_UNI_OIL.get('fuels', '');
+ if(response) {
+ this.setState({ newFuel: response.data.data, fuelsData: response.data.data });
+ let data = this.state.fuels
+ data.map(fuel => {
+ let newArray = this.state.newFuel.filter(function(element) {
+ return element.id !== fuel.FuelId;
+ });
+
+ let allFuels = newArray.sort((a, b) => {
+ if (a.name < b.name)
+ return -1;
+ if (a.name > b.name)
+ return 1;
+ return 0;
+ })
+
+
+ this.setState({newFuel: allFuels})
+ })
+ }
+ } catch (error) {
+ console.log(error)
+ }
+ }
+
+
+ handleSubmit = async (data, actions) => {
+ const { setErrors, setSubmitting } = actions;
+ let { history, match } = this.props;
+ let _self = this;
+ const result = this.state.fuels.map(({ FuelId, price }) => ({FuelId: FuelId, price}));
+ let id = match.params.id
+ let user = localStorage.getItem('user')
+ let values = {
+ 'name': data.name,
+ 'location': data.location,
+ 'map_Url': data.map_URL,
+ 'lat': data.lat,
+ 'long':data.long,
+ 'contact_number': data.contact_number.toString(),
+ 'modified_by': user,
+ 'BranchId': data.BranchId.toString(),
+ 'Schedule': this.state.isSched === 1 ? this.state.date : this.state.isSched === 0 ? null : null,
+ 'NewStationFuel': result,
+ 'code': data.code.toString()
+ }
+ let inv = false;
+ this.state.fuels.map((value) => {
+ if(value.price == 0 || value.price == 0.00 || value.price == "0.00" || value.price == "00.00" || value.id == undefined){
+ inv = true
+ }
+ })
+ if(inv){
+ notification.error({
+ message: "Error",
+ description:
+
Invalid Price for Fuel.
+
,
+ duration: 3,
+ });
+ return
+ }
+ if(this.state.fuels == 0 && this.state.isSched == 1){
+ notification.error({
+ message: "Error",
+ description:
+
Can't schedule a station without Fuel.
+
,
+ duration: 3,
+ });
+ return;
+ }
+ if(this.state.isSched == 2) {
+ notification.error({
+ message: "Error",
+ description:
+
Please select a schedule update value.
+
,
+ duration: 3,
+ });
+ }
+ else {
+ this.props.customAction({
+ type: "STATION_UPDATE_REQUEST",
+ payload: {
+ id,
+ values,
+ setSubmitting,
+ setErrors,
+ history,
+ _self
+ }
+ });
+ }
+ console.log('Data Submitted', values)
+ }
+
+ getMapdata = (url, lat, long) => {
+ this.setState({urlMap: url, latitude: lat, longitude: long})
+ }
+
+ updateFuels = (e, id, bool) => {
+ if(bool){
+ const newState = this.state.fuels.map(obj =>
+ obj.FuelId === id ? { ...obj, price: e, FuelId: id } : obj
+ );
+ this.setState({fuels: newState})
+ }else{
+ const newState = this.state.fuels.map(obj =>
+ obj.id === id ? { ...obj, price: e, FuelId: id } : obj
+ );
+ this.setState({fuels: newState})
+ }
+ }
+
+ handleChangeRadio = (e) => {
+ this.setState({isSched: e.target.value})
+ }
+
+ onDateChange = (date, dateString) => {
+ console.log('date', dateString)
+ this.setState({date: dateString})
+ }
+
+ getAddedFuel = (select, data) => {
+ console.log(select, data)
+ const obj = [];
+ const result = this.state.fuelsData.filter(({id}) => data.includes(id),{...obj, FuelId: data});
+ this.setState({value: result, selectMenu: false});
+ select.blur()
+ }
+
+ addToStationFuel = () => {
+ let data = this.state.fuels
+ let val = this.state.value
+ let nf = this.state.newFuel
+ let arr1 = val.filter(id => !data.includes(id));
+ let sa = data.concat(arr1)
+ let arr2 = nf.filter(id => !val.includes(id))
+ this.setState({fuelModal: false, fuels: sa, newFuel:arr2, selectMenu:false, })
+ }
+
+ handleFuelModal = () => {
+ const Option = Select.Option;
+ return(
+ {
+ this.addToStationFuel()
+ this.ref.rcSelect.fireChange([])
+ }}>
+ Add fuel
+ ,
+ this.handleShowFuelAdd()}>
+ Close
+
+ ]}
+ >
+ {this.fuels = select; this.ref = select}}
+ optionLabelProp="label"
+ mode="multiple"
+ onChange={(e)=> this.getAddedFuel(this.fuels,e)}
+ open={this.state.selectMenu}
+ onFocus={()=> this.setState({selectMenu:true})}
+ defaultOpen={false}
+ >
+ {
+ this.state.newFuel.map((item,i) => {
+ return {item.name}
+ })
+ }
+
+
+ )
+ }
+
+ handleShowFuelAdd = () => {
+ this.setState({fuelModal: !this.state.fuelModal, selectMenu:false})
+ }
+
+ handleShowConfirmationModal = () => {
+ return(
+ this.removeFuel()}>
+ Remove
+ ,
+ this.setState({removeModal: false})}>
+ Close
+
+ ]}
+ >
+ Are you sure you want to remove {this.state.fuelName} ?
+
+ )
+ }
+
+ removeFuel = () => {
+ let data = this.state.fuels
+ data.splice(this.state.fuelIndex, 1)
+ console.log(data)
+ this.setState({fuels: data, removeModal: false})
+ }
+
+ disabledDate(current) {
+ // Can not select days before today and today
+ return current && current < moment().startOf('day');
+ }
+
+ onOk(value) {
+ console.log('onOk: ', value);
+ }
+
+ sortFuels(data){
+ let tosort = [];
+ for(var x=0;x {
+ return a.val - b.val
+ })
+ let fts = ttss.map((item, i) => {
+ return item.data
+ })
+ return fts
+ }
+
+ render() {
+ const { match, history } = this.props;
+ let { isGenerated,loading } = this.state;
+
+ return (
+
+
(this.form = node)}
+ enableReinitialize={true}
+ validationSchema={locationDetailsSchema}
+ onSubmit={this.handleSubmit }
+ render = {(props)=>
+
+ }
+ />
+ {
+
+
+ Scheduled Update:
+
+
+ this.handleChangeRadio(e)}>
+ No
+ Yes
+
+
+
+ {
+ this.state.isSched == true ?
+
+
+ Scheduled Date and Time:
+
+
+
+
+
+ :
+ ''
+ }
+
+
+ {
+ this.handleShowFuelAdd()
+ }}>Add fuel
+
+
+ }
+ {
+ this.state.fuels.map((item,index)=>{
+ let name = item.Fuel ? item.Fuel.name : item.name
+ return (
+
+
+ {name}
+
+
+ this.setState({fuelIndex:index, fuelName: name, removeModal: !this.state.removeModal})}/>}
+ type="number"
+ value={item.FuelId != 'null' || item.FuelId != '' ? item.price == "0.00" ? "0" + item.price : item.price : 0}
+ label={name}
+ placeholder={name}
+ onChange={(e)=> this.updateFuels(e.target.value, item.Fuel ? item.FuelId : item.id, item.Fuel ? true : false)}
+ />
+
+
+ )
+ })
+ }
+ {this.handleFuelModal()}
+ {this.handleShowConfirmationModal()}
+
+ );
+ }
+ }
+
+ EditStation = connect(
+ state => ({
+ //userInfo: state
+ stationUpdate: state.stationUpdate,
+ }),
+ { customAction }
+ )(EditStation);
+
+ export default EditStation;
\ No newline at end of file
diff --git a/src/containers/private/StationLocator/Location/Edit/reducer.js b/src/containers/private/StationLocator/Location/Edit/reducer.js
new file mode 100644
index 0000000..265f49d
--- /dev/null
+++ b/src/containers/private/StationLocator/Location/Edit/reducer.js
@@ -0,0 +1,33 @@
+const STATION_UPDATE_REQUEST = "STATION_UPDATE_REQUEST";
+const STATION_UPDATE_SUCCESS = "STATION_UPDATE_SUCCESS";
+const STATION_UPDATE_ERROR = "STATION_UPDATE_ERROR";
+
+const initialState = {
+ data: [],
+ createRequestPending: false
+}
+
+const stationUpdateReducer = (state = initialState, { type, payload }) => {
+ switch(type) {
+ case STATION_UPDATE_REQUEST:
+ return {
+ ...state,
+ createRequestPending: true
+ };
+ case STATION_UPDATE_SUCCESS:
+ return {
+ ...state,
+ data: payload.data,
+ createRequestPending: false
+ };
+ case STATION_UPDATE_ERROR:
+ return {
+ ...state,
+ createRequestPending: false
+ };
+ default:
+ return state;
+ }
+};
+
+ export default stationUpdateReducer;
\ No newline at end of file
diff --git a/src/containers/private/StationLocator/Location/Edit/saga.js b/src/containers/private/StationLocator/Location/Edit/saga.js
new file mode 100644
index 0000000..537d9e8
--- /dev/null
+++ b/src/containers/private/StationLocator/Location/Edit/saga.js
@@ -0,0 +1,52 @@
+import React, { Component } from 'react'
+import { call, takeLatest, put } from "redux-saga/effects";
+import { API_UNI_OIL } from "utils/StationApi";
+import { setCookie } from "utils/cookie";
+import { notification, message } from "antd";
+
+import { apiFormValidation } from 'utils/helper';
+const STATION_UPDATE_REQUEST = "STATION_UPDATE_REQUEST";
+const STATION_UPDATE_SUCCESS = "STATION_UPDATE_SUCCESS";
+const STATION_UPDATE_ERROR = "STATION_UPDATE_ERROR";
+
+function* stationUpdateSagaFlow({ payload }) {
+ const {
+ id,
+ values,
+ setSubmitting,
+ setErrors,
+ history,
+ _self
+ } = payload;
+ try {
+ const { data } = yield call(() => API_UNI_OIL.put(`/stations/${id}`, { ...values })); //username
+ console.log({history})
+
+ yield put({ type: STATION_UPDATE_SUCCESS, payload: data.data });
+ message.success('Station updated successfully.') && message.success("Don't forget to sync updated station to system parameters!"); _self.setState({loading: false})
+ history.push({ pathname: '/stations' });
+
+ } catch (error) {
+ console.log(error.response.data.message)
+ notification.error({
+ message: 'Something went wrong updating record!',
+ description:
+
{error.response.data.message}
+ ,
+ duration: 3,
+ });
+ yield put({ type: STATION_UPDATE_ERROR });
+ setSubmitting(false); _self.setState({loading: false})
+
+ if (error.status === 422) {
+ apiFormValidation({ data: error.data.data, setErrors });
+ }
+ }
+}
+
+
+function* stationUpdateSaga() {
+ yield takeLatest(STATION_UPDATE_REQUEST, stationUpdateSagaFlow);
+}
+
+export default stationUpdateSaga;
\ No newline at end of file
diff --git a/src/containers/private/StationLocator/Location/List/index.js b/src/containers/private/StationLocator/Location/List/index.js
new file mode 100644
index 0000000..9aee262
--- /dev/null
+++ b/src/containers/private/StationLocator/Location/List/index.js
@@ -0,0 +1,175 @@
+import React, { Component } from 'react';
+import { Col } from "antd"
+import { PlusCircleFilled } from '@ant-design/icons';
+import AdvanceTable from "components/StationTables";
+import HeaderForm from "../components/HeaderForm";
+import UploadPriceModal from '../components/UploadPricesModal'
+import LocatioModal from '../components/LocationModal'
+import moment from 'moment'
+
+class StationLocator extends Component {
+ state= {
+ updating: false,
+ visible: true,
+ editModal: false,
+ closeLocModal: false,
+ uploadPriceModal: false,
+ onRemove: '',
+ dataLocation: {}
+ }
+
+ delete =(admin_uuid)=> {
+
+ }
+
+ edit =(admin_uuid)=> {
+ // this.setState({editModal: !this.state.editModal})
+ }
+
+ modalVisible = () => {
+ this.setState({visible: !this.state.visible})
+ }
+
+ closeModal = () => {
+ this.setState({visible: false})
+
+ }
+
+ location = (admin_uuid) => {
+ this.setState({closeLocModal: !this.state.closeLocModal, dataLocation: {}})
+ }
+
+ uploadPrice = () => {
+ this.setState({uploadPriceModal: !this.state.uploadPriceModal})
+ }
+
+ getLocationData = (data) => {
+ console.log(data)
+ this.setState({dataLocation: data, closeLocModal: !this.state.closeLocModal})
+ }
+
+ render() {
+ const { match, history } = this.props;
+ return (
+
+
history.push({ pathname: `${match.url}/create` })}
+ actionBtnName="Upload Prices"
+ onClick={()=> this.uploadPrice()}
+ />
+ {
+ return {moment(value).format('LLL')}
+ },
+ // sorter: true,
+ filters:[],
+ },
+ {
+ title: 'Created By',
+ dataIndex: 'created_by',
+ key: 'createdBy',
+ // sorter: true,
+ filters:[],
+ },
+ {
+ title: 'Modified By',
+ dataIndex: 'modified_by',
+ key: 'modifiedBy',
+ // sorter: true,
+ filters:[],
+ },
+ {
+ title: 'Date Modified',
+ dataIndex: 'updatedAt',
+ render: value => {
+ return {moment(value).format('LLL')}
+ },
+ key: 'dateModified',
+ // sorter: true,
+ filters:[],
+ },
+ // {
+ // title: 'Modified By',
+ // dataIndex: 'modifiedBy',
+ // key: 'modifiedBy',
+ // sorter: true,
+ // filters:[],
+ // },
+ {
+ title: 'Action',
+ dataIndex: 'action',
+ key: 'action',
+ width: 100,
+ buttons: [
+ {
+ key: 'location',
+ title: "Location",
+ icon: 'environment',
+ url: '',
+ action: this.location
+ },
+ {
+ key: 'edit',
+ title: "Edit",
+ icon: 'form',
+ url: '',
+ action: this.edit
+ },
+ {
+ key: 'delete',
+ title: "Delete",
+ icon: 'delete',
+ url: '',
+ action: this.delete,
+ }
+ ]
+ }]
+ }
+ />
+
+ history.push({ pathname: `${match.url}/create` })} style={{fontSize: '50px', color: 'green', backgroundColor: 'white'}}/>
+
+
+
+
+ );
+ }
+}
+
+export default StationLocator;
\ No newline at end of file
diff --git a/src/containers/private/StationLocator/Location/components/HeaderForm.js b/src/containers/private/StationLocator/Location/components/HeaderForm.js
new file mode 100644
index 0000000..b6c1d99
--- /dev/null
+++ b/src/containers/private/StationLocator/Location/components/HeaderForm.js
@@ -0,0 +1,50 @@
+
+import React, { Component } from 'react';
+import { Button, } from 'antd';
+class HeaderForm extends Component {
+ confirm(action) {
+ action();
+ // message.success('Click on Yes');
+ }
+
+ cancel(e) {
+ // console.log(e);
+ // message.error('Click on No');
+ }
+
+ render() {
+ const { title , actionBtnName, loading, disabled, isInsideForm } = this.props;
+ return (
+
+
{title}
+
+
+
+ {actionBtnName}
+
+
+
+
+ );
+ }
+}
+
+export default HeaderForm;
\ No newline at end of file
diff --git a/src/containers/private/StationLocator/Location/components/LocationModal.js b/src/containers/private/StationLocator/Location/components/LocationModal.js
new file mode 100644
index 0000000..53ff4f1
--- /dev/null
+++ b/src/containers/private/StationLocator/Location/components/LocationModal.js
@@ -0,0 +1,74 @@
+ // LIBRARIES
+import React, { Component } from 'react';
+import { Button, Modal } from "antd"
+import { compose, withProps, lifecycle } from "recompose"
+import { GoogleMap, withScriptjs, withGoogleMap, Marker } from 'react-google-maps';
+
+ const containerStyle = {
+ width: '100%',
+ height: '200px'
+ };
+ // const MyMapComponent = compose(
+ // withProps({
+ // googleMapURL: "https://maps.googleapis.com/maps/api/js?key=AIzaSyARzdIELzb2Uvoly4-Er4B7-QzXKr4j3bg&libraries=geometry,drawing,places",
+ // loadingElement:
,
+ // containerElement:
,
+ // mapElement:
,
+ // }),
+ // lifecycle({
+ // componentWillMount() {
+ // const refs = {}
+ // this.setState({
+ // position: null,
+ // onMarkerMounted: ref => {
+ // refs.marker = ref;
+ // },
+ // onPositionChanged: () => {
+ // const position = refs.marker.getPosition();
+ // console.log(refs.marker.context.__SECRET_MAP_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.mapUrl)
+ // let urlMap =refs.marker.context.__SECRET_MAP_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.mapUrl
+ // let sample = position.toString()
+ // let lat = sample.split(',')[0].substring(1)
+ // let long = sample.split(',')[1].slice(1,-1)
+ // console.log(sample)
+ // }
+ // })
+ // },
+ // }),
+ // withScriptjs,
+ // withGoogleMap
+ // )
+ // ((props) =>
+ //
+ // {props.isMarkerShown && }
+ //
+ // )
+
+ class LocationModal extends Component {
+ state= {};
+
+ render() {
+ let {data}=this.props,
+ center1={lat:parseFloat(data.lat), lng:parseFloat(data.long)},
+ branch={...data.Branch}
+ console.log('datass', data)
+ return (
+
+ Close
+
+ ]}
+ >
+ {/* */}
+
+ Station: {data.name}
Branch: {branch.name}
+
+ );
+ }
+ }
+
+ export default LocationModal;
\ No newline at end of file
diff --git a/src/containers/private/StationLocator/Location/components/UploadPricesModal.js b/src/containers/private/StationLocator/Location/components/UploadPricesModal.js
new file mode 100644
index 0000000..04516d8
--- /dev/null
+++ b/src/containers/private/StationLocator/Location/components/UploadPricesModal.js
@@ -0,0 +1,312 @@
+// LIBRARIES
+import React, { Component } from 'react';
+import { Modal, Button, DatePicker, Row, Col, notification } from "antd"
+import { CSVLink } from "react-csv";
+import { CSVReader } from 'react-papaparse'
+import {API_CSV} from 'utils/StationApi'
+import {API_UNI_OIL, API_PUT_BRANCH} from 'utils/StationApi'
+import moment from 'moment'
+
+ // HELPER FUNCTIONS
+ const center = {
+ lat: 16.1505,
+ lng: 119.9856
+ };
+ const containerStyle = {
+ width: '100%',
+ height: '200px'
+ };
+ class UploadPricesModal extends Component {
+ state= {
+ updating: false,
+ isGenerated: false,
+ value: [],
+ map: null,
+ prices: [],
+ date: "null",
+ data: [],
+ fuels: [],
+ fuelsData: [],
+ newFuel: [],
+ csvData: [],
+ btnDisabled: false,
+ btnLoading: false
+ };
+
+ componentDidMount(){
+ this.getStations()
+
+ }
+
+
+
+ componentDidUpdate(preProps, prevState){
+ console.log("===componentWillUpdate===")
+ if(this.state.csvData.length > 0){
+ this.handleSuperManipulatingJutsu(this.state.csvData, this.state.date, prevState.date)
+ }
+ }
+
+ getStations = async() => {
+ try{
+ const response = await API_CSV.get('stations/export/csv', '');
+ this.setState({data: response.data})
+ console.log(response)
+ }catch(error){
+ console.log(error)
+ }
+ this.getFuels()
+ }
+
+ handleForce = data => {
+ this.setState({ data: data })
+ console.log(data)
+ };
+
+
+ getFuels = async() => {
+ try {
+ const response = await API_UNI_OIL.get('fuels', '');
+ if(response) {
+ console.log(response.data.data, 'All Fuels')
+ this.setState({ newFuel: response.data.data, fuelsData: response.data.data });
+ let data = this.state.fuels
+ data.map(fuel => {
+ let newArray = this.state.newFuel.filter(function(element) {
+ return element.id !== fuel.FuelId;
+ });
+
+ let allFuels = newArray.sort((a, b) => {
+ if (a.name < b.name)
+ return -1;
+ if (a.name > b.name)
+ return 1;
+ return 0;
+ })
+
+
+ this.setState({newFuel: allFuels})
+ })
+ }
+ } catch (error) {
+ console.log(error)
+ }
+ }
+
+ handleSuperManipulatingJutsu = (data, date, prevDate) => {
+
+ var postData = []
+ var keys = data[0].data
+ var values = []
+ let user = localStorage.getItem('user')
+
+ if(keys[0].toLowerCase() != "name"){
+ localStorage.setItem("headers", "null")
+ }
+ keys.splice(1, 0, "Update Schedule")
+ keys.splice(2, 0, "User" )
+ keys = keys.filter((a, b) => keys.indexOf(a) === b)
+
+
+
+ for(var dd=1;dd {
+ this.setState({csvData: data})
+ console.log(data)
+ this.getFuels()
+ }
+
+ handleOnError = (err, file, inputElem, reason) => {
+ console.log(err)
+ localStorage.removeItem("prices")
+ localStorage.removeItem("headers")
+ }
+
+ handleOnRemoveFile = (data) => {
+ console.log(data)
+ localStorage.removeItem("prices")
+ localStorage.removeItem("headers")
+ }
+
+ onDateChange = (date, dateString) => {
+ this.setState({date: dateString})
+ }
+
+ handleUpdatePrices = async () => {
+ let sam = localStorage.getItem("prices")
+ let empty = localStorage.getItem("headers")
+ console.log(sam)
+ console.log("Body", JSON.parse(sam))
+ if(empty){
+ localStorage.removeItem("headers")
+ notification.error({
+ message: "Error",
+ description: `Please recheck the CSV File, Invalid header.`,
+ duration: 3
+ });
+ }
+ else if(sam){
+ this.setState({btnLoading:true, btnDisabled:true})
+ try{
+ const response = await API_CSV.post('stations/import/csv', JSON.parse(sam))
+ console.log(response)
+ if(response.data.code == 200){
+ this.setState({btnLoading:false, btnDisabled:false})
+ notification.success({
+ message: 'Success',
+ description: `Upload Successful.`,
+ });
+ this.props.cancel()
+ }
+ else if(response.data.code == 404){
+ this.setState({btnLoading:false, btnDisabled:false})
+ notification.error({
+ message: 'Error',
+ description: `Please recheck the CSV File, Some fuels doesn't exist.`,
+ duration: 3
+ });
+ this.props.cancel()
+ }
+ else if(response.data.code == 500){
+ this.setState({btnLoading:false, btnDisabled:false})
+ notification.error({
+ message: 'Error',
+ description: `Please recheck the CSV File, Some stations doesn't exist.`,
+ duration: 3
+ });
+ this.props.cancel()
+ }
+ }
+ catch(error){
+ console.log(error)
+ this.setState({btnLoading:false, btnDisabled:false})
+ notification.error({
+ message: 'Error',
+ description: `Something went wrong loading the data, Please try again.`,
+ duration: 3
+ });
+ this.props.cancel()
+ }
+ }
+ else{
+ notification.warning({
+ message: "Warning",
+ description: `Please upload a csv file.`,
+ duration: 3
+ });
+ }
+ localStorage.removeItem("prices")
+ localStorage.removeItem("headers")
+ setTimeout(function(){
+ window.location.reload();
+ }, 3000);
+ }
+
+ disabledDate(current) {
+ // Can not select days before today and today
+ return current && current < moment().startOf('day');
+ }
+
+ onOk(value) {
+ console.log('onOk: ', value);
+ }
+
+ render() {
+ let prices = this.prices? this.prices : null
+ console.log(prices)
+ let { btnDisabled, btnLoading } = this.state;
+ return (
+
+ Close
+ ,
+
+ Upload New Pricelist
+
+ ]}
+ >
+ Download Prices Template
+
+ Drop CSV file here or click to upload.
+
+
+
+
+
+
+
+
+
+
+ This is for scheduling update for group or station.
+ Schedule will be applied to uploaded stations.
+
+ If you want to schedule update for another group of stations please upload new file.
+
+
+
+
+
+ );
+ }
+ }
+
+ export default UploadPricesModal;
diff --git a/src/containers/private/StationLocator/Location/components/editStationForm.js b/src/containers/private/StationLocator/Location/components/editStationForm.js
new file mode 100644
index 0000000..6cd1f12
--- /dev/null
+++ b/src/containers/private/StationLocator/Location/components/editStationForm.js
@@ -0,0 +1,221 @@
+// LIBRARIES
+import React, {Component} from 'react';
+import { Row, TreeSelect, Col } from 'antd';
+import { Form, Field } from 'formik';
+import { connect } from 'react-redux';
+import HeaderForm from "components/Forms/HeaderForm"
+// COMPONENTS
+import { GoogleMap, LoadScript, Marker } from '@react-google-maps/api';
+import { Input, Select, InputTextArea, MultiSelectOptions, DatePicker, TimePickerForm } from 'components/Forms';
+// import { MultiSelectOptions } from 'components/Forms/index';
+import ScheduledEdit from './scheduledEdit'
+
+// HELPER FUNCTIONS
+
+const { TreeNode } = TreeSelect;
+
+const formItemLayout = {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 4 },
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 18 },
+ },
+};
+
+const center = {
+ lat: 16.1505,
+ lng: 119.9856
+};
+const containerStyle = {
+ width: 'inherit',
+ height: '300px',
+ marginBottom: '20px'
+};
+
+class FormLocation extends Component {
+ state = {
+ value: [
+ {value: 'autoGas', label: "Auto Gas"},
+ { value: 'gasoline95', label: "Auto Gas"}
+],
+ map: null
+ };
+
+
+ onChange = (e) => {
+ this.setState({value: e})
+ console.log(e)
+ }
+
+ handleSubmit = async (values, actions) => {
+
+ console.log(values, actions)
+ }
+
+ handleChange = (data) => {
+ console.log(data)
+ this.setState({value: data})
+ }
+ render(){
+ console.log(this.props.title)
+ const { handleSubmit } = this.props
+ return (
+
+ )};
+};
+
+
+FormLocation = connect(
+ state => ({
+
+ }),
+)(FormLocation);
+
+
+export default FormLocation;
+
diff --git a/src/containers/private/StationLocator/Location/components/stationForm.js b/src/containers/private/StationLocator/Location/components/stationForm.js
new file mode 100644
index 0000000..475f404
--- /dev/null
+++ b/src/containers/private/StationLocator/Location/components/stationForm.js
@@ -0,0 +1,415 @@
+// LIBRARIES
+import React, {Component} from 'react';
+import { Row, Col, Tooltip, Button, Modal, Select, Input } from 'antd';
+import { Form, Field } from 'formik';
+import { connect } from 'react-redux';
+import HeaderForm from "components/Forms/HeaderForm"
+import { API_UNI_OIL } from 'utils/StationApi';
+import { compose, withProps, lifecycle } from "recompose"
+import { DeleteFilled } from '@ant-design/icons';
+import { GoogleMap, withScriptjs, withGoogleMap, Marker } from 'react-google-maps';
+import { Inputs, InputTextArea, MultiSelectOptions, MultiSelect } from 'components/Forms';
+import { all } from '../../../../../../node_modules/redux-saga/effects';
+
+
+const formItemLayout = {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 4 },
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 18 },
+ },
+};
+
+const center = {
+ lat: 16.1505,
+ lng: 119.9856
+};
+const containerStyle = {
+ width: 'inherit',
+ height: '300px',
+ marginBottom: '20px'
+};
+const text =
+
+ Accepted Numbers Format:
+ +(63)9*********
+ +639*********
+ (02)****-****
+ 6***-****
+
+
+
+const MyMapComponent = compose(
+ withProps({
+ googleMapURL: "https://maps.googleapis.com/maps/api/js?key=AIzaSyARzdIELzb2Uvoly4-Er4B7-QzXKr4j3bg&libraries=geometry,drawing,places",
+ loadingElement:
,
+ containerElement:
,
+ mapElement:
,
+ }),
+ lifecycle({
+ componentWillMount() {
+ const refs = {}
+ this.setState({
+ position: null,
+ onMarkerMounted: ref => {
+ refs.marker = ref;
+ },
+ onPositionChanged: () => {
+ const position = refs.marker.getPosition();
+ let urlMap =refs.marker.context.__SECRET_MAP_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.mapUrl
+ let sample = position.toString()
+ let lat = sample.split(',')[0].substring(1)
+ let long = sample.split(',')[1].slice(1,-1)
+ this.props.getData(urlMap, lat, long)
+ }
+ })
+ },
+ }),
+ withScriptjs,
+ withGoogleMap
+ )
+ ((props) =>
+
+ {props.isMarkerShown && }
+
+ )
+
+ const styles = {
+ ':select': {
+ backgroundColor: 'yellow',
+ color: 'red'
+ }
+ };
+
+class FormLocation extends Component {
+ state = {
+ value: [],
+ map: null,
+ selectData: [],
+ fuelsData: [],
+ fuels:[],
+ newData: [],
+ isSched: false,
+ fuelsToUpdate: [],
+ addFuelModal: false,
+ newFuel: [],
+ removeModal: false,
+ fuelName: '',
+ fuelIndex: '',
+ };
+
+ ref;
+
+ // onChange = (e) => {
+ // this.setState({value: e})
+ // }
+
+ handleSubmit = async (values, actions) => {
+ }
+
+ // handleChange = (data) => {
+ // const obj = [];
+ // const result = this.state.fuelsData.filter(({id}) => data.includes(id));
+ // this.setState({value: result})
+ // }
+
+ getUrl = (url, lat, long) => {
+ this.props.mapData(url, lat, long)
+ }
+
+ componentDidMount(){
+ this.getBranches()
+ this.getFuels()
+ }
+
+ getBranches = async() => {
+ try {
+ const response = await API_UNI_OIL.get('branches/noLimit', '');
+ if(response) {
+ this.setState({ loading: false, selectData: response.data.data });
+ }
+ } catch (error) {
+ this.setState({ loading: false });
+ }
+ }
+
+ getFuels = async() => {
+ try {
+ const response = await API_UNI_OIL.get('fuels', '');
+ if(response) {
+ this.setState({ loading: false, fuelsData: response.data.data, fuels: response.data.data });
+ }
+ } catch (error) {
+ console.log(error)
+ this.setState({ loading: false });
+ }
+ }
+
+ handleChangeFuels = (e, id) => {
+ const newState = this.state.newFuel.map(obj =>
+ obj.id === id ? { ...obj, price: e, FuelId: id } : obj
+ );
+ console.log("Fuel Changed", this.state.newFuel)
+ this.setState({value: newState, newFuel: newState})
+ this.props.fuelId(newState)
+ }
+
+ handleShowFuelAdd = () => {
+ this.setState({fuelModal: !this.state.fuelModal, selectMenu:false})
+ }
+
+ addToStationFuel = () => {
+ let data = this.state.fuelsData
+ let val = this.state.value
+ let nf = this.state.newFuel
+ let arr1 = val.filter(id => !nf.includes(id));
+ let sa = nf.concat(arr1)
+ let arr2 = data.filter(id => !val.includes(id))
+ this.props.fuelId(sa)
+ this.setState({fuelModal: false, newFuel: sa, fuelsData:arr2, selectMenu: false})
+ }
+
+ handleShowConfirmationModal = () => {
+ return(
+ this.removeFuel()}>
+ Remove
+ ,
+ this.setState({removeModal: false})}>
+ Close
+
+ ]}
+ >
+ Are you sure you want to remove {this.state.fuelName} ?
+
+ )
+ }
+
+ removeFuel = () => {
+ let data = this.state.newFuel
+ data.splice(this.state.fuelIndex, 1)
+ console.log(data)
+ this.setState({newFuel: data, removeModal: false})
+ }
+
+ getAddedFuel = (select, data) => {
+ console.log(select, data)
+ const obj = [];
+ const result = this.state.fuels.filter(({id}) => data.includes(id),{...obj, FuelId: data});
+ this.setState({value: result, selectMenu: false});
+ select.blur()
+ }
+
+ handleAddFuelModal = () => {
+ const Option = Select.Option;
+ return(
+ {
+ this.addToStationFuel()
+ this.ref.rcSelect.fireChange([])
+ }}>
+ Add fuel
+ ,
+ this.handleShowFuelAdd()}>
+ Close
+
+ ]}
+ >
+ {this.fuelsData = select; this.ref = select}}
+ optionLabelProp="label"
+ mode="multiple"
+ onChange={(e)=> this.getAddedFuel(this.fuelsData,e)}
+ open={this.state.selectMenu}
+ onFocus={()=> this.setState({selectMenu:true})}
+ defaultOpen={false}
+ >
+ {
+ this.state.fuelsData.map((item,i) => {
+ return {item.name}
+ })
+ }
+
+
+ )
+ }
+
+
+
+ render(){
+ const { handleSubmit, history,dataToDisplay } = this.props
+ return (
+
+ )};
+};
+
+
+FormLocation = connect(
+ state => ({
+
+ }),
+)(FormLocation);
+
+
+export default FormLocation;
+
diff --git a/src/containers/private/StationLocator/Location/index.js b/src/containers/private/StationLocator/Location/index.js
new file mode 100644
index 0000000..80b0bf6
--- /dev/null
+++ b/src/containers/private/StationLocator/Location/index.js
@@ -0,0 +1,54 @@
+// LIBRARIES
+import React, { Component } from 'react';
+import { Switch, Route } from 'react-router-dom';
+
+// COMPONENTS
+import StationList from './List';
+import StationCreate from './Create'
+
+import MainContent from 'components/Dashboard/Layout/components/MainContent';
+import { PAGE404 } from "components/PageError/index"
+import EditStation from './Edit';
+
+class StationLocator extends Component {
+ state = {
+ pageRoutes: [
+ {
+ path: `${this.props.match.url}`,
+ name: "Station List",
+ component: StationList,
+ },
+ {
+ path: `${this.props.match.url}/create`,
+ name: "Add Station",
+ component: StationCreate,
+ },
+ {
+ path: `${this.props.match.url}/view`,
+ params: '1',
+ name: "Edit Station",
+ component: EditStation,
+ }
+ ],
+ }
+
+ render() {
+ const { pageRoutes } = this.state
+ console.log('here')
+ return (
+
+
+
+
+
+
+ {/* */}
+
+
+
+
+ );
+ }
+}
+
+export default StationLocator;
\ No newline at end of file
diff --git a/src/containers/private/StationLocator/Location/validationSchema.js b/src/containers/private/StationLocator/Location/validationSchema.js
new file mode 100644
index 0000000..26ea5db
--- /dev/null
+++ b/src/containers/private/StationLocator/Location/validationSchema.js
@@ -0,0 +1,31 @@
+import * as Yup from 'yup'
+var validNum = /(\W?\+\([0-9]+\) [0-9]{10}|\+\([0-9]+\)[0-9]{10}|\([0-9]+\) [0-9]*-[0-9]*|\([0-9]+\)[0-9]*-[0-9]*|\([0-9]+\) [0-9]* [0-9]*|[0-9]*-[0-9]*-[0-9]*-[0-9]*|[0-9]{11}|\+[0-9]{2} \([0-9]+\) [0-9]*-[0-9]*)\W/
+export const locationDetailsSchema = Yup.object().shape({
+ name: Yup.string()
+ .trim()
+ .max(128, "Maximum character is 128.")
+ .required('Station name is required!'),
+ location: Yup.string()
+ .trim()
+ .max(128, "Maximum character is 128.")
+ .required('Station location is required!'),
+ map_URL: Yup.string()
+ .required('Url is required!'),
+ lat: Yup.string()
+ .required('Lat is required!'),
+ long: Yup.string()
+ .required('Long is required!'),
+ BranchId: Yup.string()
+ .required('Branch is required!'),
+ contact_number: Yup.array()
+ .transform(function(value, originalValue) {
+ return originalValue ? originalValue.split(/[\s/]+/) : [];
+ })
+ .of(Yup.string().min(7, "Minimum character is 7").matches(/^[+]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-\s\./0-9]*$/, "Please enter a valid contact number"))
+ .required('Contact number is required!'),
+ code: Yup.string()
+ .required('Station code is required!')
+})
+
+
+
\ No newline at end of file
diff --git a/src/containers/private/StationLocator/components/branchSchema.js b/src/containers/private/StationLocator/components/branchSchema.js
new file mode 100644
index 0000000..1936b60
--- /dev/null
+++ b/src/containers/private/StationLocator/components/branchSchema.js
@@ -0,0 +1,39 @@
+
+import * as Yup from 'yup'
+
+export const branchSchema = Yup.object().shape({
+// stationName: Yup.string()
+// .trim()
+// .max(128, "Maximum character is 128.")
+// .required('Station name is required!')
+// .matches(
+// /^[a-zA-Z0-9_@.ñÑ ]+$/,
+// {
+// message: 'Invalid Station name.',
+// },
+// ),
+// stationLocation: Yup.string()
+// .trim()
+// .max(128, "Maximum character is 128.")
+// .required('Station location is required!')
+// .matches(
+// /^[a-zA-Z0-9_@.ñÑ ]+$/,
+// {
+// message: 'Invalid Station location.',
+// },
+// ),
+// mapURL: Yup.string()
+// .required('Url is required!'),
+// lat: Yup.string()
+// .required('Lat is required!'),
+// long: Yup.string()
+// .required('Long is required!'),
+ code: Yup.string()
+ .required('Branch code is required'),
+ name: Yup.string()
+ .required('Branch name is required!'),
+ details: Yup.string()
+ .required('Branch details is required!')
+})
+
+
diff --git a/src/containers/private/StationLocator/components/branchesForm.js b/src/containers/private/StationLocator/components/branchesForm.js
new file mode 100644
index 0000000..fa2431b
--- /dev/null
+++ b/src/containers/private/StationLocator/components/branchesForm.js
@@ -0,0 +1,118 @@
+// LIBRARIES
+import React, {Component} from 'react';
+import { Row, TreeSelect, Col } from 'antd';
+import { Form, Field } from 'formik';
+import { connect } from 'react-redux';
+import HeaderForm from "components/Forms/HeaderForm"
+// COMPONENTS
+import { GoogleMap, LoadScript, Marker } from '@react-google-maps/api';
+import { Inputs, Select, InputTextArea, MultiSelectOptions } from 'components/Forms';
+// import { MultiSelectOptions } from 'components/Forms/index';
+
+// HELPER FUNCTIONS
+
+const { TreeNode } = TreeSelect;
+
+const formItemLayout = {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 4 },
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 18 },
+ },
+};
+
+const center = {
+ lat: 16.1505,
+ lng: 119.9856
+};
+const containerStyle = {
+ width: 'inherit',
+ height: '300px',
+ marginBottom: '20px'
+};
+
+class AddBranch
+ extends Component {
+ state = {
+ value: [],
+ map: null
+ };
+
+
+ onChange = (e) => {
+ this.setState({value: e})
+ console.log(e)
+ }
+
+ handleSubmit = async (values, actions) => {
+
+ console.log(values, actions)
+ }
+
+ handleChange = (data) => {
+ console.log(data)
+ this.setState({value: data})
+ }
+ render(){
+ console.log(this.props.title)
+ const { handleSubmit, history} = this.props
+ return (
+
+ )};
+};
+
+
+AddBranch
+ = connect(
+ state => ({
+
+ }),
+)(AddBranch
+ );
+
+
+export default AddBranch
+;
+
diff --git a/src/containers/private/StationLocator/components/fuelSchema.js b/src/containers/private/StationLocator/components/fuelSchema.js
new file mode 100644
index 0000000..1c18f58
--- /dev/null
+++ b/src/containers/private/StationLocator/components/fuelSchema.js
@@ -0,0 +1,6 @@
+import * as Yup from 'yup'
+
+export const fuelSchema = Yup.object().shape({
+ name: Yup.string()
+ .required('Fuel name is required!')
+})
\ No newline at end of file
diff --git a/src/containers/private/StationLocator/components/fuelsForm.js b/src/containers/private/StationLocator/components/fuelsForm.js
new file mode 100644
index 0000000..3465a25
--- /dev/null
+++ b/src/containers/private/StationLocator/components/fuelsForm.js
@@ -0,0 +1,94 @@
+// LIBRARIES
+import React, {Component} from 'react';
+import { Row, TreeSelect, Col } from 'antd';
+import { Form, Field } from 'formik';
+import { connect } from 'react-redux';
+import HeaderForm from "components/Forms/HeaderForm"
+// COMPONENTS
+import { GoogleMap, LoadScript, Marker } from '@react-google-maps/api';
+import { Inputs, Select, InputTextArea, MultiSelectOptions } from 'components/Forms';
+// import { MultiSelectOptions } from 'components/Forms/index';
+
+// HELPER FUNCTIONS
+
+const { TreeNode } = TreeSelect;
+
+const formItemLayout = {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 4 },
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 18 },
+ },
+};
+
+const center = {
+ lat: 16.1505,
+ lng: 119.9856
+};
+const containerStyle = {
+ width: 'inherit',
+ height: '300px',
+ marginBottom: '20px'
+};
+
+class AddFuel
+ extends Component {
+ state = {
+ value: [],
+ map: null
+ };
+
+
+ onChange = (e) => {
+ this.setState({value: e})
+ console.log(e)
+ }
+
+ handleSubmit = async (values, actions) => {
+
+ console.log(values, actions)
+ }
+
+ handleChange = (data) => {
+ console.log(data)
+ this.setState({value: data})
+ }
+ render(){
+ console.log(this.props)
+ const { handleSubmit, history} = this.props
+ return (
+
+ )};
+};
+
+
+AddFuel = connect(
+ state => ({}),
+)(AddFuel);
+
+
+export default AddFuel;
\ No newline at end of file
diff --git a/src/containers/private/SystemPreferences/Create/components/CreateSystemPreferencesForm.js b/src/containers/private/SystemPreferences/Create/components/CreateSystemPreferencesForm.js
new file mode 100644
index 0000000..0bdaf23
--- /dev/null
+++ b/src/containers/private/SystemPreferences/Create/components/CreateSystemPreferencesForm.js
@@ -0,0 +1,188 @@
+// LIBRARIES
+import React from 'react';
+import { Button, Popover } from 'antd';
+import { Form, Field } from 'formik';
+import { connect } from 'react-redux';
+
+// COMPONENTS
+import HeaderForm from "components/Forms/HeaderForm"
+import { Inputs, UploadImage, InputNumberAntD,
+ InputMaskNumber, InputTextArea } from 'components/Forms';
+
+// HELPER FUNCTIONS
+
+
+const content = (
+
+
Select this button to sync the below data from the
+ Unioil Website to the Unioil Mobile App system.
+
- City and Province
+
- Products
+
- Stations
+ {/*
- About Us
*/}
+
+);
+
+const formItemLayout = {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 },
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 10 },
+ },
+};
+
+function CreateSystemPreferencesForm(props) {
+ const {
+ isSubmitting,
+ loading,
+ handleSubmit,
+ handleFileUpload,
+ onRemoveImage,
+ syncStratuscast
+ } = props;
+
+ return (
+
+ );
+};
+
+
+CreateSystemPreferencesForm = connect(
+ state => ({
+
+ }),
+)(CreateSystemPreferencesForm);
+
+
+export default CreateSystemPreferencesForm;
+
+
+
+const styles = {
+ borderDivision: {
+ background: '#fcfcfc',
+ borderTop: '1px solid #e6ecf5',
+ borderBottom: '1px solid #e6ecf5',
+ padding: '6px',
+ margin: '43px 0px',
+ }
+}
\ No newline at end of file
diff --git a/src/containers/private/SystemPreferences/Create/index.js b/src/containers/private/SystemPreferences/Create/index.js
new file mode 100644
index 0000000..2c6c290
--- /dev/null
+++ b/src/containers/private/SystemPreferences/Create/index.js
@@ -0,0 +1,264 @@
+// LIBRARIES
+import React, { Component } from 'react'
+import { Formik } from 'formik'
+import { message } from 'antd';
+import { connect } from "react-redux"
+import { notification, Icon } from "antd"
+
+// COMPONENTS
+import HeaderForm from "components/Forms/HeaderForm"
+import CreateSystemPreferencesForm from './components/CreateSystemPreferencesForm'
+
+// HELPER FUNCTIONS
+import { customAction } from "actions";
+import { API_GET, API_PUT, API_POST, API_UNI_OIL } from "utils/Api";
+import { apiFormValidation } from "utils/helper";
+import { userDetailsSchema } from './validationSchema'
+import axios from 'axios'
+// import { REACT_APP_API_SYNC } from '.env'
+import { getCookie } from '../../../../utils/cookie'
+
+class CreateSystemPreferences extends Component {
+ state = {
+ loading: false,
+ mounted: false,
+ systemPreference: null,
+ fileUpload: null
+ }
+ async componentDidMount() {
+ console.log(process.env.REACT_APP_API_SYNC, 'ito si sync')
+ const { match } = this.props;
+
+ try {
+ let response = await API_UNI_OIL.get(`systemPreference`)
+ this.setState({
+ systemPreference: {...response.data.data},
+ mounted: true
+ })
+ } catch ({response: error}) {
+ notification.error({
+ message: "Error",
+ description:
+
Something went wrong loading data.
+ - { error && error.data && error.data.message }
+
,
+ duration: 3,
+ });
+ this.setState({ mounted: false })
+ }
+
+ }
+
+
+ handleSubmit = async (values, actions) => {
+
+ const { fileUpload } = this.state;
+ const { setSubmitting, setErrors } = actions;
+
+ this.setState({loading: true})
+ try {
+ const headers = {
+ 'ContentType': 'multipart/form-data',
+ };
+ const formData = new FormData();
+
+ if(fileUpload) {
+ fileUpload.forEach((t, i) => {
+ formData.append( `logo`, t.originFileObj);
+ });
+ }
+
+ let newNumber = values && values.contact_number_mobile
+ && values.contact_number_mobile && String(values.contact_number_mobile).split(' ').join('')
+
+ values.gps && (formData.append('gps', values.gps));
+ values.contact_email_address_mobile && (formData.append('contact_email_address_mobile', values.contact_email_address_mobile))
+ values.contact_details && (formData.append('contact_details', values.contact_details));
+ newNumber && (formData.append('contact_number_mobile', newNumber ));
+ formData.append('information_guide_details', values.information_guide_details && values.information_guide_details);
+
+ let response = await API_UNI_OIL.post('systemPreference', formData , headers)
+
+ if(response) {
+ message.success('Record was successfully update.');
+ this.setState({loading: false})
+
+ this.props.customAction({
+ type: "SYSTEMPREFERENCES_CREATE_REQUEST",
+ payload: {
+ values
+ }
+ });
+
+ }
+
+
+ } catch ({response: error}) {
+ if (error.status === 422) {
+ apiFormValidation({ data: error.data.data, setErrors });
+ }
+ notification.error({
+ message: 'Error',
+ description:
+ Something went wrong creating new record.
+ { error && error.data && error.data.data && error.data.data.contact_email_address_mobile
+ && (
- {error.data.data.contact_email_address_mobile[0]}
) }
+ { error && error.data && error.data.data && error.data.data.contact_number_mobile
+ && (
- {error.data.data.contact_number_mobile[0]}
) }
+
+ });
+ this.setState({loading: false})
+ setSubmitting(false);
+ }
+
+ }
+
+ handleAddUser =()=> {
+ this.form.submitForm()
+ }
+
+ handleFileUpload =(e)=> {
+ if (Array.isArray(e)) {
+ return this.setState({fileUpload: e});
+ }
+ return e && this.setState({fileUpload: e.fileList});
+ }
+
+ syncStratuscast = async () => {
+ this.setState({loading: true})
+ // try {
+ // let stratuscastAboutUs = await API_UNI_OIL.get('stratuscastAboutUs')
+ // } catch (error) {
+ // // notification.error({
+ // // message: 'Error',
+ // // description:
+ // // Something went wrong in Stratuscast About Us.
+ // //
+ // // });
+ // }
+ await axios.get(process.env.REACT_APP_API_SYNC+'syncstations')
+ .then((response)=>{
+ message.success('Successfully Sync Data.');
+ })
+ .catch((e)=>{
+ console.log(e)
+ notification.error({
+ message: 'Error',
+ description:
+ Something went wrong. Please try again!
+
+ });
+ })
+
+ await axios.get(process.env.REACT_APP_API_SYNC+'synccities', {
+ headers: {
+ 'Authorization': `Bearer ${getCookie('TOKEN').token}`
+ }
+ })
+ .then((response)=>{
+ message.success('Successfully Sync Cities.');
+ })
+ .catch((e)=>{
+ console.log(e)
+ notification.error({
+ message: 'Error',
+ description:
+ Something went wrong. Please try again!
+
+ });
+ })
+
+ // try {
+ // await axios.get('https://mobileapid.unioil.com/api/mobile/syncstations')
+ // } catch (error) {
+ // notification.error({
+ // message: 'Error',
+ // description:
+ // Something went wrong in Stratuscast City Province.
+ //
+ // });
+ // }
+
+ // try {
+ // await axios.get('https://mobileapid.unioil.com/api/mobile/syncstations')
+ // } catch (error) {
+ // notification.error({
+ // message: 'Error',
+ // description:
+ // Something went wrong in Stratuscast Products.
+ //
+ // });
+ // }
+
+ // try {
+ // await axios.get('https://mobileapid.unioil.com/api/mobile/syncstations')
+ // } catch (error) {
+ // notification.error({
+ // message: 'Error',
+ // description:
+ // Something went wrong in Stratuscast Station.
+ //
+ // });
+ // }
+
+ // message.success('Successfully Sync Data.');
+ this.setState({loading: false})
+ }
+
+ render() {
+
+
+
+ if(!this.state.mounted) return null;
+
+ const { systemPreference, loading } = this.state
+
+ return (
+
+ {/*
{console.log('cancel button')}}
+ // cancelBtnName="Cancel"
+ /> */}
+
+ (this.form = node)}
+ enableReinitialize={true}
+ validationSchema={userDetailsSchema}
+ onSubmit={this.handleSubmit }
+ render = {(props)=>
+
+ }
+ />
+
+
+ )
+ }
+}
+
+
+CreateSystemPreferences = connect(
+ state => ({
+ //userInfo: state
+ //userManagement: state.userManagement,
+ }),
+ { customAction }
+)(CreateSystemPreferences);
+
+export default CreateSystemPreferences;
diff --git a/src/containers/private/SystemPreferences/Create/reducer.js b/src/containers/private/SystemPreferences/Create/reducer.js
new file mode 100644
index 0000000..efc555e
--- /dev/null
+++ b/src/containers/private/SystemPreferences/Create/reducer.js
@@ -0,0 +1,27 @@
+const SYSTEMPREFERENCES_CREATE_REQUEST = "SYSTEMPREFERENCES_CREATE_REQUEST";
+const SYSTEMPREFERENCES_CREATE_SUCCESS = "SYSTEMPREFERENCES_CREATE_SUCCESS";
+
+const initialState = {
+ data: [],
+ createRequestPending: false
+}
+
+const systemPreferencesCreateReducer = (state = initialState, { type, payload }) => {
+ switch(type) {
+ case SYSTEMPREFERENCES_CREATE_REQUEST:
+ return {
+ ...state,
+ createRequestPending: true
+ };
+ case SYSTEMPREFERENCES_CREATE_SUCCESS:
+ return {
+ ...state,
+ data: payload,
+ createRequestPending: false
+ };
+ default:
+ return state;
+ }
+};
+
+ export default systemPreferencesCreateReducer;
\ No newline at end of file
diff --git a/src/containers/private/SystemPreferences/Create/saga.js b/src/containers/private/SystemPreferences/Create/saga.js
new file mode 100644
index 0000000..9d6c86d
--- /dev/null
+++ b/src/containers/private/SystemPreferences/Create/saga.js
@@ -0,0 +1,34 @@
+import React, { Component } from 'react'
+import { call, takeLatest, put } from "redux-saga/effects";
+import { API_UNI_OIL } from "utils/Api";
+import { setCookie } from "utils/cookie";
+import { notification, message } from "antd";
+
+import { apiFormValidation } from 'utils/helper';
+
+const SYSTEMPREFERENCES_CREATE_REQUEST = "SYSTEMPREFERENCES_CREATE_REQUEST";
+const SYSTEMPREFERENCES_CREATE_SUCCESS = "SYSTEMPREFERENCES_CREATE_SUCCESS";
+
+function* systemPreferencesSagaFlow({ payload }) {
+ const {
+ values,
+ setSubmitting,
+ setErrors,
+ history,
+ _self
+ } = payload;
+ try {
+
+ yield put({ type: SYSTEMPREFERENCES_CREATE_SUCCESS, payload: values });
+
+ } catch ({response: error}) {
+ console.log(error)
+ }
+}
+
+
+function* systemPreferencesCreateSaga() {
+ yield takeLatest(SYSTEMPREFERENCES_CREATE_REQUEST, systemPreferencesSagaFlow);
+}
+
+export default systemPreferencesCreateSaga;
\ No newline at end of file
diff --git a/src/containers/private/SystemPreferences/Create/validationSchema.js b/src/containers/private/SystemPreferences/Create/validationSchema.js
new file mode 100644
index 0000000..ae43dd9
--- /dev/null
+++ b/src/containers/private/SystemPreferences/Create/validationSchema.js
@@ -0,0 +1,29 @@
+
+import * as Yup from 'yup'
+
+export const userDetailsSchema = Yup.object().shape({
+ logo: Yup.string()
+ .required('Upload Image is required!'),
+ gps: Yup.string()
+ .trim()
+ .max(128, "Maximum character is 128.")
+ .required('GPS Radius is required!'),
+ contact_email_address_mobile: Yup.string()
+ .trim()
+ .max(128, "Maximum character is 128.")
+ .email("Invalid Contact Email Address.")
+ .required('Contact Email Address is required!'),
+ contact_number_mobile: Yup.string()
+ .required('Contact Number is required!'),
+ contact_details: Yup.string()
+ .trim()
+ .max(128, "Maximum character is 128.")
+ .email("Invalid Contact Details.")
+ .required('Contact Details is required!'),
+ information_guide_details: Yup.string()
+ .trim()
+ .max(100, "Maximum character is 100.")
+})
+
+
+
\ No newline at end of file
diff --git a/src/containers/private/SystemPreferences/index.js b/src/containers/private/SystemPreferences/index.js
new file mode 100644
index 0000000..bb8b2e7
--- /dev/null
+++ b/src/containers/private/SystemPreferences/index.js
@@ -0,0 +1,61 @@
+// LIBRARIES
+import React, { Component, Fragment } from 'react';
+import { Switch, Route, Redirect } from 'react-router-dom';
+import { connect } from 'react-redux';
+
+// COMPONENTS
+import CreateSystemPreferences from './Create';
+import MainContent from '../../../components/Dashboard/Layout/components/MainContent';
+import { PAGE404 } from "components/PageError/index"
+
+// HELPER FUNCTIONS
+
+class SystemPreferences extends Component {
+ state = {
+ pageRoutes: [
+ {
+ path: `${this.props.match.url}`,
+ name: "System Parameters",
+ component: CreateSystemPreferences,
+ },
+ ],
+ }
+
+ componentDidUpdate() {
+
+ }
+
+ render() {
+
+ const { userInfo } = this.props
+ const { pageRoutes } = this.state
+
+ return (
+
+
+
+
+ {
+ userInfo.data.userInfo.role == 1 ? (
+
+
+
+ ) : null
+ }
+
+
+
+
+ );
+ }
+}
+
+
+SystemPreferences = connect(
+ state => ({
+ userInfo: state.login
+ }),
+)(SystemPreferences);
+
+
+export default SystemPreferences;
\ No newline at end of file
diff --git a/src/containers/private/TopUp/Create/components/TopUpCreateForm.js b/src/containers/private/TopUp/Create/components/TopUpCreateForm.js
new file mode 100644
index 0000000..ead9a87
--- /dev/null
+++ b/src/containers/private/TopUp/Create/components/TopUpCreateForm.js
@@ -0,0 +1,122 @@
+// LIBRARIES
+import React from 'react';
+import { Row, Button, Col } from 'antd';
+import { Form, Field } from 'formik';
+import { connect } from 'react-redux';
+
+// COMPONENTS
+import HeaderForm from "components/Forms/HeaderForm"
+import { Inputs, InputNumberAntD, Radio } from 'components/Forms';
+
+// HELPER FUNCTIONS
+
+
+const formItemLayout = {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 },
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 10 },
+ },
+};
+
+function TopUpCreateForm(props) {
+ const {
+ isSubmitting,
+ handleSubmit,
+ loading,
+ handleResetValue,
+ amount,
+ history
+ } = props;
+
+ return (
+
+ );
+};
+
+
+TopUpCreateForm = connect(
+ state => ({
+
+ }),
+)(TopUpCreateForm);
+
+
+export default TopUpCreateForm;
+
diff --git a/src/containers/private/TopUp/Create/index.js b/src/containers/private/TopUp/Create/index.js
new file mode 100644
index 0000000..8e13a47
--- /dev/null
+++ b/src/containers/private/TopUp/Create/index.js
@@ -0,0 +1,155 @@
+// LIBRARIES
+import React, { Component } from 'react'
+import { connect } from "react-redux"
+import { Formik } from 'formik'
+import { message,notification } from 'antd';
+
+// COMPONENTS
+import HeaderForm from "components/Forms/HeaderForm"
+import TopUpCreateForm from './components/TopUpCreateForm'
+
+// HELPER FUNCTIONS
+import { API_GET, API_POST, API_UNI_OIL } from "utils/Api";
+import { apiFormValidation } from "utils/helper";
+import { customAction } from "actions";
+import { userDetailsSchema } from './validationSchema'
+
+
+class TopUpCreate extends Component {
+ state = {
+ generatedCode: null,
+ mounted: false,
+ loading: false,
+ //amount: ''
+ }
+
+ async componentDidMount() {
+
+ const { match } = this.props;
+
+ if(match.path == "/top-up/create") {
+ try {
+ let response = await API_UNI_OIL.get(`generateFeeCode`);
+ this.setState({
+ generatedCode: {...response.data.data},
+ mounted: true
+ })
+ } catch ({response: error}) {
+ notification.error({
+ message: "Error",
+ description:
+
Something went wrong generating fee code.
+ - { error && error.data && error.data.message }
+
,
+ duration: 3,
+ });
+ this.setState({ mounted: false })
+ }
+ }
+
+ }
+
+ handleSubmit = async (values, actions) => {
+ const { setErrors } = actions;
+ let { history } = this.props;
+ let params = { ...values }
+ this.setState({ loading: true });
+
+ if(params.type) {
+ params.type = String(params.type)
+ } else {
+ params.type = "1"
+ }
+
+ try {
+ const response = await API_UNI_OIL.post('topUp',params);
+ if(response) {
+ message.success('New record added.');
+ this.setState({ loading: false });
+ history.push({ pathname: '/top-up' });
+ }
+
+ } catch ({response:error}) {
+ if (error.status === 422) {
+ apiFormValidation({ data: error.data.data, setErrors });
+ }
+ notification.error({
+ message: 'Error',
+ description:
+ Something went creating new record..
+ { error && error.data && error.data.data && error.data.data.fee_code
+ && (
- {error.data.data.fee_code[0]}
) }
+
+ });
+ this.setState({ loading: false });
+ }
+
+ }
+
+ handleCreateTopUp =()=> {
+ this.form.submitForm()
+ }
+
+ handleResetValue=(props)=> {
+ // this.setState({
+ // amount: 0
+ // })
+ props.setValues({...props.values, amount: ''})
+ }
+
+
+ render() {
+
+ if(!this.state.mounted) return null;
+
+ const { loading, generatedCode } = this.state;
+
+ return (
+
+ {/*
{ this.props.history.push("/top-up")}}
+ cancelBtnName="Cancel"
+ /> */}
+
+
Top-Up Details
+ (this.form = node)}
+ enableReinitialize={true}
+ validationSchema={userDetailsSchema}
+ onSubmit={this.handleSubmit }
+ render = {(props)=>
+
+ }
+ />
+
+
+ )
+ }
+}
+
+
+TopUpCreate = connect(
+ state => ({
+ //userInfo: state
+ userManagement: state.userManagement,
+ }),
+ { customAction }
+)(TopUpCreate);
+
+export default TopUpCreate;
\ No newline at end of file
diff --git a/src/containers/private/TopUp/Create/validationSchema.js b/src/containers/private/TopUp/Create/validationSchema.js
new file mode 100644
index 0000000..197d9da
--- /dev/null
+++ b/src/containers/private/TopUp/Create/validationSchema.js
@@ -0,0 +1,18 @@
+
+import * as Yup from 'yup'
+
+export const userDetailsSchema = Yup.object().shape({
+ fee_code: Yup.string()
+ .required('Free Code is required!'),
+ name: Yup.string()
+ .trim()
+ .max(128, "Maximum character is 128.")
+ .required('Name is required!')
+ .matches(/^[A-Za-z0-9.ñÑ ]+$/, { excludeEmptyString: false, message: "Invalid Name" }),
+ amount: Yup.number()
+ .required('Amount is required!'),
+ type: Yup.string()
+})
+
+
+
\ No newline at end of file
diff --git a/src/containers/private/TopUp/Edit/components/EditUserManagementForm.js b/src/containers/private/TopUp/Edit/components/EditUserManagementForm.js
new file mode 100644
index 0000000..475275b
--- /dev/null
+++ b/src/containers/private/TopUp/Edit/components/EditUserManagementForm.js
@@ -0,0 +1,124 @@
+// LIBRARIES
+import React from 'react';
+import { Row, Button, Col } from 'antd';
+import { Form, Field } from 'formik';
+import { connect } from 'react-redux';
+
+// COMPONENTS
+import HeaderForm from "components/Forms/HeaderForm"
+import { Inputs, InputNumberAntD, Radio } from 'components/Forms';
+
+// HELPER FUNCTIONS
+
+
+const formItemLayout = {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 },
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 10 },
+ },
+};
+
+function EditUserManagementForm(props) {
+ const {
+ isSubmitting,
+ generatePassword,
+ loading,
+ handleSubmit,
+ isGenerated,
+ handleResetValue,
+ history
+ } = props;
+
+ return (
+
+ );
+};
+
+
+EditUserManagementForm = connect(
+ state => ({
+
+ }),
+)(EditUserManagementForm);
+
+
+export default EditUserManagementForm;
+
diff --git a/src/containers/private/TopUp/Edit/index.js b/src/containers/private/TopUp/Edit/index.js
new file mode 100644
index 0000000..3ff79b8
--- /dev/null
+++ b/src/containers/private/TopUp/Edit/index.js
@@ -0,0 +1,145 @@
+// LIBRARIES
+import React, { Component } from 'react'
+import { Formik } from 'formik'
+import { withRouter } from "react-router-dom"
+import { notification, message } from "antd"
+
+// COMPONENTS
+import HeaderForm from "components/Forms/HeaderForm"
+import EditUserManagementForm from './components/EditUserManagementForm'
+
+// HELPER FUNCTIONS
+import { userDetailsSchema } from './validationSchema'
+import { API_GET, API_PUT, API_POST } from "utils/Api";
+import { apiFormValidation } from "utils/helper";
+import { API_UNI_OIL } from "utils/Api";
+
+class TopUpEdit extends Component {
+ state = {
+ loading: false,
+ userInfo: null,
+ mounted: false,
+ }
+
+ async componentDidMount() {
+
+ const { match } = this.props;
+
+ try {
+ let response = await API_UNI_OIL.get(`topUp/${match.params.id}`);
+ this.setState({
+ userInfo: {...response.data.data},
+ mounted: true
+ })
+ } catch ({response: error}) {
+ notification.error({
+ message: "Error",
+ description:
+
Something went wrong loading data.
+ - {error && error.data && error.data.message}
+
,
+ duration: 3,
+ });
+ if(error.status == 404) {
+ if(this.props.location.pathname)
+ this.props.history.push(`${this.props.location.pathname}/404`); return
+ }
+ this.setState({ mounted: false })
+ }
+
+ }
+
+ handleEditUserManagement =()=> {
+ this.form.submitForm()
+ }
+
+ handleSubmit = async (values, actions) => {
+
+ const { setErrors, setSubmitting } = actions;
+ const { userInfo } = this.state;
+ let { history } = this.props;
+
+ const params = {
+ ...values,
+ }
+
+ if(params.type) {
+ params.type = String(params.type)
+ } else {
+ params.type = "1"
+ }
+
+ this.setState({loading: true})
+ try {
+ const response = await API_PUT(`topUp/${userInfo.topup_uuid}`, params);
+ if(response.status === 422){
+ apiFormValidation({ data: response.data.data, setErrors })
+ notification.error({ message: "Success", description: "Something went wrong updating record" });
+ setSubmitting(false)
+ this.setState({loading: false})
+ }else {
+ message.success('Record was successfully update.');
+ this.setState({loading: false})
+ this.props.history.push("/top-up");
+ }
+ } catch (error) {
+ setSubmitting(false)
+ this.setState({loading: false})
+ }
+
+ }
+
+ handleResetValue=(props)=> {
+ // this.setState({
+ // amount: 0
+ // })
+ props.setValues({...props.values, amount: ''})
+ }
+
+ render() {
+
+ if(!this.state.mounted) return null;
+
+ const { loading, userInfo, timerCount, isGenerated } = this.state
+
+ return (
+
+ {/*
{ this.props.history.push("/top-up")}}
+ cancelBtnName="Cancel"
+ /> */}
+
+
Details
+ (this.form = node)}
+ enableReinitialize={true}
+ validationSchema={userDetailsSchema}
+ onSubmit={this.handleSubmit }
+ render = {(props)=>
+
+ }
+ />
+
+
+ )
+ }
+}
+
+export default withRouter(TopUpEdit);
\ No newline at end of file
diff --git a/src/containers/private/TopUp/Edit/validationSchema.js b/src/containers/private/TopUp/Edit/validationSchema.js
new file mode 100644
index 0000000..197d9da
--- /dev/null
+++ b/src/containers/private/TopUp/Edit/validationSchema.js
@@ -0,0 +1,18 @@
+
+import * as Yup from 'yup'
+
+export const userDetailsSchema = Yup.object().shape({
+ fee_code: Yup.string()
+ .required('Free Code is required!'),
+ name: Yup.string()
+ .trim()
+ .max(128, "Maximum character is 128.")
+ .required('Name is required!')
+ .matches(/^[A-Za-z0-9.ñÑ ]+$/, { excludeEmptyString: false, message: "Invalid Name" }),
+ amount: Yup.number()
+ .required('Amount is required!'),
+ type: Yup.string()
+})
+
+
+
\ No newline at end of file
diff --git a/src/containers/private/TopUp/List/index.js b/src/containers/private/TopUp/List/index.js
new file mode 100644
index 0000000..eecb986
--- /dev/null
+++ b/src/containers/private/TopUp/List/index.js
@@ -0,0 +1,116 @@
+ // LIBRARIES
+import React, { Component } from 'react';
+import { Menu, Dropdown, notification, Icon, message } from "antd"
+import { connect } from "react-redux";
+
+// COMPONENTS
+import AdvanceTable from "components/Tables/AdvanceTable";
+import HeaderForm from "components/Forms/HeaderForm";
+
+// HELPER FUNCTIONS
+import { API_UNI_OIL } from "utils/Api";
+import { customAction } from 'actions';
+
+
+class TopUpList extends Component {
+ state= {
+ updating: false,
+ }
+
+ render() {
+ const { match, history } = this.props;
+
+ return (
+
+
history.push({ pathname: `${match.url}/create` })}
+ actionBtnName="Add"
+ />
+
+
+ );
+ }
+}
+
+TopUpList = connect(
+ state => ({
+ //user: state.viewUser.data,
+ //status: state.viewUser.code,
+ //responseMsg: state.viewUser.messages
+ }),
+ { customAction }
+)(TopUpList);
+
+export default TopUpList;
\ No newline at end of file
diff --git a/src/containers/private/TopUp/View/components/ViewTopUpForm.js b/src/containers/private/TopUp/View/components/ViewTopUpForm.js
new file mode 100644
index 0000000..58011b4
--- /dev/null
+++ b/src/containers/private/TopUp/View/components/ViewTopUpForm.js
@@ -0,0 +1,54 @@
+// LIBRARIES
+import React from 'react'
+import { connect } from 'react-redux'
+import { Icon, Avatar, Row , Col } from 'antd'
+
+// COMPONENTS
+import HeaderForm from "components/Forms/HeaderForm"
+
+// HELPER FUNCTIONS
+
+
+function ViewTopUpForm(props) {
+ const {
+ isSubmitting,
+ userInfo
+ } = props;
+
+ return (
+
+
+
+
Details
+
+ {userInfo && userInfo.fee_code}
+ Fee Code:
+
+
+ {userInfo && userInfo.name}
+ Name:
+
+
+ {userInfo && userInfo.amount}
+ Value:
+
+
+ {userInfo && userInfo.type}
+ Type:
+
+
+
+
+ );
+};
+
+
+ViewTopUpForm = connect(
+ state => ({
+
+ }),
+)(ViewTopUpForm);
+
+
+export default ViewTopUpForm;
+
diff --git a/src/containers/private/TopUp/View/index.js b/src/containers/private/TopUp/View/index.js
new file mode 100644
index 0000000..2c70969
--- /dev/null
+++ b/src/containers/private/TopUp/View/index.js
@@ -0,0 +1,93 @@
+// LIBRARIES
+import React, { Component } from 'react'
+import { withRouter } from "react-router-dom"
+import { notification, message } from "antd"
+
+// COMPONENTS
+import HeaderForm from 'components/Forms/HeaderForm'
+import ViewTopUpForm from './components/ViewTopUpForm'
+
+// HELPER FUNCTIONS
+import { API_UNI_OIL } from "utils/Api";
+
+
+class TopUpView extends Component {
+ state = {
+ mounted: false,
+ userInfo: null
+ }
+
+ async componentDidMount() {
+
+ const { match } = this.props;
+
+ try {
+ let response = await API_UNI_OIL.get(`topUp/${match.params.id}`)
+ this.setState({
+ userInfo: {...response.data.data},
+ mounted: true
+ })
+ } catch ({response: error}) {
+ notification.error({
+ message: "Error",
+ description:
+
Something went wrong loading data.
+ - { error && error.data && error.data.message }
+
,
+ duration: 3,
+ });
+ if(error.status == 404) {
+ if(this.props.location.pathname)
+ this.props.history.push(`${this.props.location.pathname}/404`); return
+ }
+ this.setState({ mounted: false })
+ }
+
+ }
+
+ delete = async (uuid) => {
+
+ const { userInfo } = this.state
+ const { match } = this.props;
+
+ try {
+ await API_UNI_OIL.delete(`topUp/${userInfo.topup_uuid}`);
+ message.success('Record was successfully deleted.');
+ this.props.history.push("/top-up");
+ } catch ({response:error}) {
+ notification.error({
+ message: "Error",
+ description:
+
Something went wrong deleting record.
+ - { error && error.data && error.data.message }
+
,
+ duration: 3,
+ });
+ }
+ }
+
+ render() {
+
+ const { userInfo } = this.state
+ const { history, match } = this.props
+
+ return (
+
+
{this.props.history.push(`/top-up/edit/${match.params.id}`)}}
+ actionBtnName="Update"
+ styleBtn={{background: 'white', borderColor: 'rgb(184, 187, 201)',color: 'rgb(101, 105, 127)'}}
+ deleteAction={this.delete}
+ deleteBtnName="Delete"
+ />
+
+
+
+
+ )
+ }
+}
+
+
+export default withRouter(TopUpView);
\ No newline at end of file
diff --git a/src/containers/private/TopUp/index.js b/src/containers/private/TopUp/index.js
new file mode 100644
index 0000000..45a67a1
--- /dev/null
+++ b/src/containers/private/TopUp/index.js
@@ -0,0 +1,85 @@
+// LIBRARIES
+import React, { Component, Fragment } from 'react';
+import { Switch, Route, Redirect } from 'react-router-dom';
+import { connect } from 'react-redux';
+
+// COMPONENTS
+import TopUpList from './List';
+import TopUpCreate from './Create';
+import TopUpEdit from './Edit';
+import TopUpView from './View';
+import MainContent from '../../../components/Dashboard/Layout/components/MainContent';
+import { PAGE404 } from "components/PageError/index"
+
+// HELPER FUNCTIONS
+
+class TopUp extends Component {
+ state = {
+ pageRoutes: [
+ {
+ path: `${this.props.match.url}`,
+ name: "Top-Up",
+ component: TopUpList,
+ },
+ {
+ path: `${this.props.match.url}/create`,
+ name: "Add Top-Up",
+ component: TopUpCreate,
+ },
+ {
+ path: `${this.props.match.url}/edit`,
+ params: ':id',
+ name: "Update Top-Up",
+ component: TopUpEdit,
+ },
+ {
+ path: `${this.props.match.url}/view`,
+ params: ':id',
+ name: "View Top-Up",
+ component: TopUpView,
+ }
+ ],
+ }
+
+ componentDidUpdate() {
+
+ }
+
+ render() {
+
+ const { userInfo } = this.props
+ const { pageRoutes } = this.state
+
+ return (
+
+
+
+ {
+ userInfo.data.userInfo.role == 1
+ ?
+
+
+
+
+
+
+
+ :
+
+
+
+ }
+
+
+ );
+ }
+}
+
+
+TopUp = connect(
+ state => ({
+ userInfo: state.login
+ }),
+)(TopUp);
+
+export default TopUp;
\ No newline at end of file
diff --git a/src/containers/private/UserManagement/Create/components/AddUserManagementForm.js b/src/containers/private/UserManagement/Create/components/AddUserManagementForm.js
new file mode 100644
index 0000000..cffa0ae
--- /dev/null
+++ b/src/containers/private/UserManagement/Create/components/AddUserManagementForm.js
@@ -0,0 +1,161 @@
+// LIBRARIES
+import React from 'react';
+import { Row, Button, Col } from 'antd';
+import { Form, Field } from 'formik';
+import { connect } from 'react-redux';
+import HeaderForm from "components/Forms/HeaderForm"
+
+// COMPONENTS
+import { Inputs, Radio } from 'components/Forms';
+
+// HELPER FUNCTIONS
+
+
+const formItemLayout = {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 },
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 10 },
+ },
+};
+
+function AddUserManagementForm(props) {
+ const {
+ isSubmitting,
+ handleSubmit,
+ generatePassword,
+ loading,
+ isGenerated,
+ history,
+ copyActionHandler
+ } = props;
+
+ return (
+
+ );
+};
+
+
+AddUserManagementForm = connect(
+ state => ({
+
+ }),
+)(AddUserManagementForm);
+
+
+export default AddUserManagementForm;
+
diff --git a/src/containers/private/UserManagement/Create/index.js b/src/containers/private/UserManagement/Create/index.js
new file mode 100644
index 0000000..7e2044b
--- /dev/null
+++ b/src/containers/private/UserManagement/Create/index.js
@@ -0,0 +1,149 @@
+// LIBRARIES
+import React, { Component } from 'react'
+import { connect } from "react-redux"
+import { Formik } from 'formik'
+import { message,notification } from 'antd';
+
+// COMPONENTS
+import HeaderForm from "components/Forms/HeaderForm"
+import AddUserManagementForm from './components/AddUserManagementForm'
+
+// HELPER FUNCTIONS
+import { userDetailsSchema } from './validationSchema'
+import { customAction } from "actions";
+import { API_GET, API_POST } from "utils/Api";
+
+
+class CreateUserManagement extends Component {
+ state = {
+ generated_password: null,
+ userInfo: null,
+ loading: false,
+ isGenerated: false
+ }
+
+ componentDidMount() {
+
+ }
+
+ handleSubmit = async (values, actions) => {
+
+ const { setErrors, setSubmitting } = actions;
+ let { history } = this.props;
+ let _self = this;
+ this.setState({loading: true})
+ values.role = parseInt(values.role);
+ if(values.status) {
+ values.status = values.status
+ } else {
+ values.status = "active"
+ }
+ if(values.username) {
+ values.username = values.username.toLowerCase()
+ }
+
+ this.props.customAction({
+ type: "USERMANAGEMENT_CREATE_REQUEST",
+ payload: {
+ values,
+ setSubmitting,
+ setErrors,
+ history,
+ _self
+ }
+ });
+ }
+
+ handleAddUser =()=> {
+ this.form.submitForm()
+ }
+
+ generatePassword = async (props) => {
+
+ this.setState({loading: true})
+
+ try {
+ let adminProfile = await API_POST('adminProfile');
+ let userInfo = { ...adminProfile.data.data[0]}
+ let response = await API_POST('generatePassword', userInfo.admin_uuid)
+ if(response) {
+ props.setValues({...props.values, password: response.data.data.password})
+ this.setState({loading: false, isGenerated: true})
+ }
+ } catch ({response:error}) {
+ notification.error({
+ message: "Error",
+ description:
+
Something went wrong generating password.
+ - { error && error.data && error.data.message }
+
,
+ duration: 3,
+ });
+ this.setState({loading: false})
+ }
+ }
+
+ copyActionHandler = (props) => {
+ message.success('Password successfully copied.');
+ }
+
+ render() {
+ const { userManagement } = this.props
+ const { loading, isGenerated } = this.state;
+ console.log("UM", userManagement)
+ return (
+
+ {/*
{ this.props.history.push("/user-management")}}
+ cancelBtnName="Cancel"
+ /> */}
+
+
User Details
+
(this.form = node)}
+ enableReinitialize={true}
+ validationSchema={userDetailsSchema}
+ onSubmit={this.handleSubmit }
+ render = {(props)=>
+
+ }
+ />
+
+
+ )
+ }
+}
+
+
+CreateUserManagement = connect(
+ state => ({
+ //userInfo: state
+ branchCreate: state.userManagement,
+ }),
+ { customAction }
+)(CreateUserManagement);
+
+export default CreateUserManagement;
\ No newline at end of file
diff --git a/src/containers/private/UserManagement/Create/reducer.js b/src/containers/private/UserManagement/Create/reducer.js
new file mode 100644
index 0000000..64b0c27
--- /dev/null
+++ b/src/containers/private/UserManagement/Create/reducer.js
@@ -0,0 +1,33 @@
+const USERMANAGEMENT_CREATE_REQUEST = "USERMANAGEMENT_CREATE_REQUEST";
+const USERMANAGEMENT_CREATE_SUCCESS = "USERMANAGEMENT_CREATE_SUCCESS";
+const USERMANAGEMENT_CREATE_ERROR = "USERMANAGEMENT_CREATE_ERROR";
+
+const initialState = {
+ data: [],
+ createRequestPending: false
+}
+
+const userManagementCreateReducer = (state = initialState, { type, payload }) => {
+ switch(type) {
+ case USERMANAGEMENT_CREATE_REQUEST:
+ return {
+ ...state,
+ createRequestPending: true
+ };
+ case USERMANAGEMENT_CREATE_SUCCESS:
+ return {
+ ...state,
+ data: payload.data,
+ createRequestPending: false
+ };
+ case USERMANAGEMENT_CREATE_ERROR:
+ return {
+ ...state,
+ createRequestPending: false
+ };
+ default:
+ return state;
+ }
+};
+
+ export default userManagementCreateReducer;
\ No newline at end of file
diff --git a/src/containers/private/UserManagement/Create/saga.js b/src/containers/private/UserManagement/Create/saga.js
new file mode 100644
index 0000000..d7a62ee
--- /dev/null
+++ b/src/containers/private/UserManagement/Create/saga.js
@@ -0,0 +1,53 @@
+import React, { Component } from 'react'
+import { call, takeLatest, put } from "redux-saga/effects";
+import { API_UNI_OIL } from "utils/Api";
+import { setCookie } from "utils/cookie";
+import { notification, message } from "antd";
+
+import { apiFormValidation } from 'utils/helper';
+const USERMANAGEMENT_CREATE_REQUEST = "USERMANAGEMENT_CREATE_REQUEST";
+const USERMANAGEMENT_CREATE_SUCCESS = "USERMANAGEMENT_CREATE_SUCCESS";
+const USERMANAGEMENT_CREATE_ERROR = "USERMANAGEMENT_CREATE_ERROR";
+
+function* userManagementSagaFlow({ payload }) {
+ const {
+ values,
+ setSubmitting,
+ setErrors,
+ history,
+ _self
+ } = payload;
+ try {
+ const { data } = yield call(() => API_UNI_OIL.post('admin', { ...values })); //username
+
+ yield put({ type: USERMANAGEMENT_CREATE_SUCCESS, payload: data.data });
+ message.success('User account created successfully. Please send the login credentials to the user.'); _self.setState({loading: false})
+ history.push({ pathname: '/user-management' });
+
+ } catch ({response: error}) {
+ notification.error({
+ message: 'Error',
+ description:
+ Something went wrong creating new record.
+ { error && error.data && error.data.data && error.data.data.username
+ && (
- {error.data.data.username[0]}
) }
+ { error && error.data && error.data.data && error.data.data.email
+ && (
- {error.data.data.email[0]}
) }
+
,
+ duration: 3,
+ });
+ yield put({ type: USERMANAGEMENT_CREATE_ERROR });
+ setSubmitting(false); _self.setState({loading: false})
+
+ if (error.status === 422) {
+ apiFormValidation({ data: error.data.data, setErrors });
+ }
+ }
+}
+
+
+function* userManagementCreateSaga() {
+ yield takeLatest(USERMANAGEMENT_CREATE_REQUEST, userManagementSagaFlow);
+}
+
+export default userManagementCreateSaga;
\ No newline at end of file
diff --git a/src/containers/private/UserManagement/Create/validationSchema.js b/src/containers/private/UserManagement/Create/validationSchema.js
new file mode 100644
index 0000000..8b1a88e
--- /dev/null
+++ b/src/containers/private/UserManagement/Create/validationSchema.js
@@ -0,0 +1,42 @@
+
+import * as Yup from 'yup'
+
+export const userDetailsSchema = Yup.object().shape({
+ username: Yup.string()
+ .trim()
+ .max(128, "Maximum character is 128.")
+ .required('Username is required!')
+ .matches(
+ /^[a-zA-Z0-9_@.ñÑ ]+$/,
+ {
+ message: 'Invalid Username.',
+ excludeEmptyString: true,
+ },
+ ),
+ firstname: Yup.string()
+ .trim()
+ .max(128, "Maximum character is 128.")
+ .matches(/^[A-Za-z ñÑ-]+$/, { excludeEmptyString: false, message: "Invalid First Name" })
+ .required('First Name is required!'),
+ lastname: Yup.string()
+ .trim()
+ .max(128, "Maximum character is 128.")
+ .matches(/^[A-Za-z ñÑ-]+$/, { excludeEmptyString: false, message: "Invalid Last Name" })
+ .trim()
+ .required('Last Name is required!'),
+ email: Yup.string()
+ .trim()
+ .max(128, "Maximum character is 128.")
+ .required('Email is required!')
+ .matches(/^[A-Za-z0-9@_.ñÑ ]+$/, { excludeEmptyString: false, message: "Invalid Email Address" })
+ .email("Invalid Email Address"),
+ role: Yup.string()
+ .required('Role is required!'),
+ status: Yup.string()
+ .required('Status is required!'),
+ password: Yup.string()
+ .required('Default Password is required!')
+})
+
+
+
\ No newline at end of file
diff --git a/src/containers/private/UserManagement/Edit/components/EditUserManagementForm.js b/src/containers/private/UserManagement/Edit/components/EditUserManagementForm.js
new file mode 100644
index 0000000..1c169e5
--- /dev/null
+++ b/src/containers/private/UserManagement/Edit/components/EditUserManagementForm.js
@@ -0,0 +1,169 @@
+// LIBRARIES
+import React, { Fragment } from 'react';
+import { Row, Button, Col } from 'antd';
+import { Form, Field } from 'formik';
+import { connect } from 'react-redux';
+import HeaderForm from "components/Forms/HeaderForm"
+
+// COMPONENTS
+import { Inputs, Radio } from 'components/Forms';
+
+// HELPER FUNCTIONS
+
+const formItemLayout = {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 },
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 10 },
+ },
+};
+
+function EditUserManagementForm(props) {
+ const {
+ isSubmitting,
+ handleSubmit,
+ generatePassword,
+ loading,
+ isGenerated,
+ userInfo,
+ history,
+ copyActionHandler
+ } = props;
+ return (
+
+ );
+};
+
+
+EditUserManagementForm = connect(
+ state => ({
+
+ }),
+)(EditUserManagementForm);
+
+
+export default EditUserManagementForm;
+
diff --git a/src/containers/private/UserManagement/Edit/index.js b/src/containers/private/UserManagement/Edit/index.js
new file mode 100644
index 0000000..4f9d704
--- /dev/null
+++ b/src/containers/private/UserManagement/Edit/index.js
@@ -0,0 +1,206 @@
+// LIBRARIES
+import React, { Component } from 'react'
+import { Formik } from 'formik'
+import { withRouter } from "react-router-dom"
+import { notification, message } from "antd"
+
+// COMPONENTS
+import HeaderForm from "components/Forms/HeaderForm"
+import EditUserManagementForm from './components/EditUserManagementForm'
+
+// HELPER FUNCTIONS
+import { userDetailsSchema } from './validationSchema'
+import { API_GET, API_PUT, API_POST } from "utils/Api";
+import { API_UNI_OIL } from "utils/Api";
+import { apiFormValidation } from "utils/helper";
+
+class EditUserManagement extends Component {
+ state = {
+ loading: false,
+ userInfo: null,
+ mounted: false,
+ timerCount: 20,
+ isGenerated: false
+ }
+
+ async componentDidMount() {
+
+ const { match } = this.props;
+
+ try {
+ let response = await API_UNI_OIL.get(`admin/${match.params.id}`);
+ this.setState({
+ userInfo: {...response.data.data},
+ mounted: true
+ })
+ } catch ({response: error}) {
+ notification.error({
+ message: "Error",
+ description:
+
Something went wrong loading data.
+ - {error && error.data && error.data.message}
+
,
+ duration: 3,
+ });
+ if(error.status == 404) {
+ if(this.props.location.pathname)
+ this.props.history.push(`${this.props.location.pathname}/404`);
+ } else {
+ this.setState({ mounted: false })
+ }
+
+ }
+
+ }
+
+ handleEditUserManagement =()=> {
+ this.form.submitForm()
+ }
+
+ handleSubmit = async (values, actions) => {
+
+ const { setErrors, setSubmitting } = actions;
+ const { userInfo, isGenerated } = this.state;
+ let { history } = this.props;
+
+ if(values.username) {
+ values.username = values.username.toLowerCase()
+ }
+
+ const params = {
+ ...values,
+ }
+
+ if(params.password == "*******************" ) {
+ delete params.password
+ }
+
+ this.setState({loading: true})
+ try {
+ const response = await API_PUT(`admin/${userInfo.admin_uuid}`, params);
+ if(response.status === 422){
+ apiFormValidation({ data: response.data.data, setErrors })
+
+ let errors = []
+ if(response.data) {
+ if(response.data.data)
+ for(const key of Object.keys(response.data.data)) {
+ errors.push(response.data.data[key][0])
+ }
+ }
+ notification.error({
+ message: "Error",
+ description:
+
+
Something went wrong updating record
+ { response && response.data && response.data.data &&
+ errors.map(item =>
- {item}
)
+ }
+ {/* {
+ Object.keys(response.data.data).forEach(function(key) {
+
{response.data.data[key][0]}
+ })
+ } */}
+
+ });
+ setSubmitting(false)
+ this.setState({loading: false})
+ } else {
+ let messageSuccess = isGenerated
+ ? 'User account updated successfully. Please send the new temporary password to the user.'
+ : 'User account updated successfully.'
+
+ message.success(messageSuccess);
+ this.setState({loading: false})
+ this.props.history.push("/user-management");
+ }
+ } catch ({response:error}) {
+ setSubmitting(false)
+ this.setState({loading: false})
+ }
+
+ }
+
+ generatePassword = async (props) => {
+
+ const { userInfo } = this.state;
+ let params = {}; params.admin_uuid = userInfo.admin_uuid
+
+ this.setState({loading: true})
+ try {
+ let response = await API_POST('generatePassword', params)
+ if(response) {
+ props.setValues({...props.values, password: response.data.data.password})
+ this.setState({loading: false, isGenerated: true})
+ }
+ } catch ({response: error}) {
+ notification.error({
+ message: 'Error',
+ description:
+
Something went wrong generating password.
+ {/* - {error && (error)} */}
+
+ })
+ this.setState({loading: false})
+ }
+ }
+
+ copyActionHandler = (props) => {
+ message.success('Password successfully copied.');
+ }
+
+ render() {
+
+ if(!this.state.mounted) return null;
+
+ const { loading, userInfo, timerCount, isGenerated } = this.state
+
+ return (
+
+ {/*
{ this.props.history.push("/user-management")}}
+ cancelBtnName="Cancel"
+ /> */}
+
+
User Details
+ (this.form = node)}
+ enableReinitialize={true}
+ validationSchema={userDetailsSchema}
+ onSubmit={this.handleSubmit }
+ render = {(props)=>
+
+ }
+ />
+
+
+ )
+ }
+}
+
+export default withRouter(EditUserManagement);
\ No newline at end of file
diff --git a/src/containers/private/UserManagement/Edit/validationSchema.js b/src/containers/private/UserManagement/Edit/validationSchema.js
new file mode 100644
index 0000000..1c0b5d4
--- /dev/null
+++ b/src/containers/private/UserManagement/Edit/validationSchema.js
@@ -0,0 +1,40 @@
+
+import * as Yup from 'yup'
+
+export const userDetailsSchema = Yup.object().shape({
+ username: Yup.string()
+ .trim()
+ .max(128, "Maximum character is 128.")
+ .required('Username is required!')
+ .matches(
+ /^[a-zA-Z0-9_@.ñÑ ]+$/,
+ {
+ message: 'Invalid username.',
+ excludeEmptyString: true,
+ },
+ ),
+ firstname: Yup.string()
+ .trim()
+ .max(128, "Maximum character is 128.")
+ .matches(/^[A-Za-z ñÑ-]+$/, { excludeEmptyString: false, message: "Invalid First Name" })
+ .required('First Name is required!'),
+ lastname: Yup.string()
+ .trim()
+ .max(128, "Maximum character is 128.")
+ .matches(/^[A-Za-z ñÑ-]+$/, { excludeEmptyString: false, message: "Invalid Last Name" })
+ .required('Last Name is required!'),
+ email: Yup.string()
+ .max(128, "Maximum character is 128.")
+ .required('Email is required!')
+ .matches(/^[A-Za-z0-9@_.ñÑ ]+$/, { excludeEmptyString: false, message: "Invalid Email Address" })
+ .email("Invalid Email Address"),
+ role: Yup.string()
+ .required('Role is required!'),
+ status: Yup.string()
+ .required('Status is required!'),
+ password: Yup.string()
+ .required('Default Password is required!')
+})
+
+
+
\ No newline at end of file
diff --git a/src/containers/private/UserManagement/List/index.js b/src/containers/private/UserManagement/List/index.js
new file mode 100644
index 0000000..0b4e65a
--- /dev/null
+++ b/src/containers/private/UserManagement/List/index.js
@@ -0,0 +1,187 @@
+ // LIBRARIES
+import React, { Component } from 'react';
+import { Menu, Dropdown, notification, Icon, message } from "antd"
+import { connect } from "react-redux";
+import { Link } from 'react-router-dom'
+
+// COMPONENTS
+import AdvanceTable from "components/Tables/AdvanceTable";
+import HeaderForm from "components/Forms/HeaderForm";
+
+// HELPER FUNCTIONS
+import { API_UNI_OIL } from "utils/Api";
+import { customAction } from 'actions';
+
+class UserManagementList extends Component {
+ state= {
+ updating: false,
+ }
+
+ delete =(admin_uuid)=> {
+
+ }
+
+ updateDropDown = async(e) => {
+ let params = e.item.props.record;
+ params = { admin_uuid : params.admin_uuid , status: e.item.props.eventKey}
+ try {
+ const response = await API_UNI_OIL.post(`adminChangeStatus`,params);
+ if(response.status == 200) {
+ message.success(response.data.message);
+ }
+ this.setState({ updating: !this.state.updating });
+ } catch ({response:error}) {
+ notification.error({
+ message: "Error",
+ description:
+
Something went wrong updating record.
+ - { error && error.data && error.data.message }
+
,
+ duration: 3,
+ });
+ }
+ }
+
+ render() {
+ const { match, history } = this.props;
+
+ return (
+
+
history.push({ pathname: `${match.url}/create` })}
+ actionBtnName="Add User"
+ />
+ (
+
+ {record && record.role == 1 ? "Admin": "Marketing Personnel"}
+
+ )
+ },
+ {
+ title: 'Email',
+ dataIndex: 'email',
+ key: 'email',
+ sorter: true,
+ width: "20%",
+ },
+ {
+ title: 'Status',
+ dataIndex: 'status',
+ key: 'status',
+ sorter: true,
+ filters: [
+ { text: 'Active', value: 'active'},
+ { text: 'Inactive', value: 'inactive' },
+ ],
+ width: "10%",
+ render: (text, record) => {
+ const menu = (
+
+ Active
+ Inactive
+
+ );
+ return(
+
+
+ {text && text == 'active' ? 'Active' : 'Inactive'}
+
+
+ )
+ },
+ },
+ {
+ title: 'Action',
+ dataIndex: 'action',
+ key: 'action',
+ width: 150,
+ buttons: [
+ {
+ key: 'edit',
+ title: "Edit",
+ icon: 'edit',
+ url: '/user-management/edit'
+ },
+ {
+ key: 'delete',
+ title: "Delete",
+ icon: 'delete',
+ url: '',
+ action: this.delete
+ },
+ {
+ key: 'view',
+ title: "View",
+ icon: 'right-circle-o',
+ url: '/user-management/view'
+ }
+ ]
+ },
+ ]
+ }
+ />
+
+ );
+ }
+}
+
+UserManagementList = connect(
+ state => ({
+ //user: state.viewUser.data,
+ //status: state.viewUser.code,
+ //responseMsg: state.viewUser.messages
+ }),
+ { customAction }
+)(UserManagementList);
+
+export default UserManagementList;
\ No newline at end of file
diff --git a/src/containers/private/UserManagement/View/components/ViewUserManagementForm.js b/src/containers/private/UserManagement/View/components/ViewUserManagementForm.js
new file mode 100644
index 0000000..03a9f2e
--- /dev/null
+++ b/src/containers/private/UserManagement/View/components/ViewUserManagementForm.js
@@ -0,0 +1,87 @@
+// LIBRARIES
+import React from 'react'
+import { connect } from 'react-redux'
+import { Icon, Avatar, Row , Col } from 'antd'
+
+// COMPONENTS
+import HeaderForm from "components/Forms/HeaderForm"
+
+// HELPER FUNCTIONS
+
+function ViewUserManagementForm(props) {
+ const {
+ isSubmitting,
+ userInfo
+ } = props;
+
+ return (
+
+
+
+
Details
+ {/*Account Details */}
+
User Details
+
+ Username:
+ {userInfo && userInfo.username}
+
+
+
+ User Role:
+ {userInfo && userInfo.role == "1" ? "System Admin" : userInfo && "Marketing Personnel" }
+
+
+
+ First Name:
+ {userInfo && userInfo.firstname}
+
+
+
+ Last Name:
+ {userInfo && userInfo.lastname}
+
+
+ Email Address:
+ {userInfo && userInfo.email}
+
+
+
+ {/*Account Details */}
+
+
Account Details
+
+ Status:
+ {userInfo && userInfo.status}
+
+
+ Created By:
+ {userInfo && userInfo.created_by}
+
+
+ Created Date:
+ {userInfo && userInfo.created_at}
+
+
+ Last Updated by:
+ {userInfo && userInfo.updated_by}
+
+
+ Last Updated date:
+ {userInfo && userInfo.updated_at}
+
+
+
+
+ );
+};
+
+
+ViewUserManagementForm = connect(
+ state => ({
+
+ }),
+)(ViewUserManagementForm);
+
+
+export default ViewUserManagementForm;
+
diff --git a/src/containers/private/UserManagement/View/index.js b/src/containers/private/UserManagement/View/index.js
new file mode 100644
index 0000000..019d1ef
--- /dev/null
+++ b/src/containers/private/UserManagement/View/index.js
@@ -0,0 +1,97 @@
+// LIBRARIES
+import React, { Component } from 'react'
+import { withRouter } from "react-router-dom"
+import { notification, message } from "antd"
+
+// COMPONENTS
+import HeaderForm from 'components/Forms/HeaderForm'
+import ViewUserManagementForm from './components/ViewUserManagementForm'
+
+// HELPER FUNCTIONS
+import { API_UNI_OIL } from "utils/Api";
+
+
+class UserManagementView extends Component {
+ state = {
+ mounted: false,
+ userInfo: null
+ }
+
+ async componentDidMount() {
+
+ const { match } = this.props;
+
+ try {
+ let response = await API_UNI_OIL.get(`admin/${match.params.id}`)
+ this.setState({
+ userInfo: {...response.data.data},
+ mounted: true
+ })
+ } catch ({response: error}) {
+ notification.error({
+ message: "Error",
+ description:
+
Something went wrong loading data.
+ - {error && error.data && error.data.message}
+
,
+ duration: 3,
+ });
+ if(error.status == 404) {
+ if(this.props.location.pathname)
+ this.props.history.push(`${this.props.location.pathname}/404`);
+ } else {
+ this.setState({ mounted: true })
+ }
+
+ }
+
+ }
+
+ delete = async (uuid) => {
+
+ const { userInfo } = this.state
+ const { match } = this.props;
+
+ try {
+ await API_UNI_OIL.delete(`admin/${userInfo.admin_uuid}`);
+ message.success('Record was successfully deleted.');
+ this.props.history.push("/user-management");
+ } catch ({response:error}) {
+ notification.error({
+ message: "Error",
+ description:
+
Something went wrong deleting record.
+ - { error && error.data && error.data.message }
+
,
+ duration: 3,
+ });
+ }
+ }
+
+ render() {
+
+ if(!this.state.mounted) return null;
+
+ const { userInfo } = this.state
+ const { history, match } = this.props
+
+ return (
+
+
{this.props.history.push(`/user-management/edit/${match.params.id}`)}}
+ actionBtnName="Update"
+ styleBtn={{background: 'white', borderColor: 'rgb(184, 187, 201)',color: 'rgb(101, 105, 127)'}}
+ deleteAction={userInfo.editable == true ? this.delete : null}
+ deleteBtnName={userInfo.editable == true ? "Delete" : null}
+ />
+
+
+
+
+ )
+ }
+}
+
+
+export default withRouter(UserManagementView);
\ No newline at end of file
diff --git a/src/containers/private/UserManagement/View/validationSchema.js b/src/containers/private/UserManagement/View/validationSchema.js
new file mode 100644
index 0000000..0cd6936
--- /dev/null
+++ b/src/containers/private/UserManagement/View/validationSchema.js
@@ -0,0 +1,17 @@
+
+import * as Yup from 'yup'
+
+export const userDetailsSchema = Yup.object().shape({
+ username: Yup.string()
+ .required('Username is required!')
+ .matches(
+ /^[a-zA-Z0-9_@.]+$/,
+ {
+ message: 'Invalid username.',
+ excludeEmptyString: true,
+ },
+ ),
+})
+
+
+
\ No newline at end of file
diff --git a/src/containers/private/UserManagement/index.js b/src/containers/private/UserManagement/index.js
new file mode 100644
index 0000000..d9a65d5
--- /dev/null
+++ b/src/containers/private/UserManagement/index.js
@@ -0,0 +1,86 @@
+// LIBRARIES
+import React, { Component, Fragment } from 'react';
+import { Switch, Route, Redirect } from 'react-router-dom';
+import { connect } from 'react-redux';
+
+// COMPONENTS
+import DashboardList from './List';
+import UserManagementCreate from './Create';
+import UserManagementEdit from './Edit';
+import UserManagementView from './View';
+import MainContent from '../../../components/Dashboard/Layout/components/MainContent';
+import { PAGE404 } from 'components/PageError/index';
+
+// HELPER FUNCTIONS
+
+class Dashboard extends Component {
+ state = {
+ pageRoutes: [
+ {
+ path: `${this.props.match.url}`,
+ name: 'User Management',
+ component: DashboardList,
+ },
+ {
+ path: `${this.props.match.url}/create`,
+ name: 'Add User',
+ component: UserManagementCreate,
+ },
+ {
+ path: `${this.props.match.url}/edit`,
+ params: ':id',
+ name: 'Update User',
+ component: UserManagementEdit,
+ },
+ {
+ path: `${this.props.match.url}/view`,
+ params: ':id',
+ name: 'View User',
+ component: UserManagementView,
+ },
+ ],
+ };
+
+ componentDidUpdate() {}
+
+ render() {
+ const { pageRoutes } = this.state;
+ const { userInfo } = this.props;
+
+ return (
+
+
+ {userInfo.data.userInfo.role == 1 ? (
+ //|| userInfo.data.userInfo.role == 3
+
+
+
+
+
+
+
+ ) : (
+
+
+
+ )}
+
+
+ );
+ }
+}
+
+Dashboard = connect((state) => ({
+ userInfo: state.login,
+}))(Dashboard);
+
+export default Dashboard;
diff --git a/src/containers/public/ChangePassword/components/ChangePasswordForm.js b/src/containers/public/ChangePassword/components/ChangePasswordForm.js
new file mode 100644
index 0000000..585822d
--- /dev/null
+++ b/src/containers/public/ChangePassword/components/ChangePasswordForm.js
@@ -0,0 +1,88 @@
+import React from 'react';
+import { Row, Button, Col, Popover } from 'antd';
+import { Link } from "react-router-dom";
+import { Form, Field } from 'formik';
+import { connect } from 'react-redux';
+import { InputPassword } from 'components/Forms'
+
+const content = (
+
+
- Must be at least six(6) characters long
+
- Must be a combination of alphanumeric character
+ (letters, numbers, punctuation mark)
+
+
- Must be a combination of uppercase and
+ lowercase letters
+
+
+);
+
+function ChangePasswordForm(props) {
+ const {
+ isSubmitting,
+ } = props;
+
+ return (
+
+ );
+};
+
+
+ChangePasswordForm = connect(
+ state => ({
+
+ }),
+)(ChangePasswordForm);
+
+
+export default ChangePasswordForm;
+
diff --git a/src/containers/public/ChangePassword/index.js b/src/containers/public/ChangePassword/index.js
new file mode 100644
index 0000000..f9dcb1c
--- /dev/null
+++ b/src/containers/public/ChangePassword/index.js
@@ -0,0 +1,90 @@
+//@flow
+import React, { Component } from 'react';
+import { connect } from "react-redux";
+import { Row, Col , notification} from 'antd';
+import { Formik, Field, Form } from 'formik'
+import ChangePasswordForm from './components/ChangePasswordForm'
+import { changePasswordSchema } from './validationSchema'
+import { API_POST } from "utils/Api";
+
+// HELPER FUNCTIONS
+import { customAction } from "actions";
+
+
+class ChangePassword extends Component {
+ state = {
+ username: null
+ }
+
+ componentDidMount() {
+ let { history } = this.props;
+
+ if(history) {
+ if(!history.location.state) {
+ notification.error({ message: 'Error', description: 'Sign In first before changing password.' });
+ return history.push({ pathname: '/login' });
+ }
+ }
+ }
+
+
+ handleLoginApi = async(values, actions) => {
+
+ const { confirmpassword } = values;
+ const { setSubmitting } = actions;
+ let { history } = this.props;
+ let params = {
+ username: history.location.state.username,
+ admin_uuid: history.location.state.admin_uuid,
+ password: confirmpassword
+ }
+
+ let response = await API_POST("login_changePassword", params);
+
+ if(response.data.code == 200) {
+ notification.success({ message: 'Password successfully updated', description: `You may now login using your new password.` });
+ history.replace({ pathname: '/login' });
+ } else {
+ notification.error({ message: 'Error Changing Password', description: response.data.data.password ? `${response.data.data.password}.` : response.data.message });
+ setSubmitting(false);
+ }
+
+ }
+
+
+ render() {
+ return (
+
+
+
+
+
+
+
+
Change Password
+
+
+
+
+ }
+ />
+
+
+ )
+ }
+}
+
+
+ChangePassword = connect(
+ state => ({
+ }),
+ { customAction }
+)(ChangePassword);
+
+export default ChangePassword;
\ No newline at end of file
diff --git a/src/containers/public/ChangePassword/validationSchema.js b/src/containers/public/ChangePassword/validationSchema.js
new file mode 100644
index 0000000..291c094
--- /dev/null
+++ b/src/containers/public/ChangePassword/validationSchema.js
@@ -0,0 +1,28 @@
+
+import * as Yup from 'yup'
+
+export const changePasswordSchema = Yup.object().shape({
+ newpassword: Yup.string()
+ .required('New password is required!')
+ .min(6,'Password must be alteast 6 characters')
+
+ // .matches(
+ // /^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=]).*$/,
+ // {
+ // message: 'Invalid password atleast 1 upper and lower case letter, 1 special character and 1 numbers.',
+ // excludeEmptyString: true,
+ // },
+ // ),
+
+ .required('This field is required.')
+ .matches(/[!@#$%^&*(),.?":{}|<>]/, "Password must contain special character")
+ .matches(/[a-z]/, "Password must contain small letter")
+ .matches(/[A-Z]/, "Password must contain capital letter")
+ .matches(/\d+/, "Password must contain number"),
+ confirmpassword: Yup.string()
+ .oneOf([Yup.ref('newpassword')], 'Passwords do not match.')
+ .required('Confirm password is required')
+})
+
+
+
\ No newline at end of file
diff --git a/src/containers/public/Login/components/LoginForm.js b/src/containers/public/Login/components/LoginForm.js
new file mode 100644
index 0000000..b4de1b6
--- /dev/null
+++ b/src/containers/public/Login/components/LoginForm.js
@@ -0,0 +1,120 @@
+import React from 'react';
+import { Row, Button, Col, Icon, Avatar } from 'antd';
+import { Form, Field } from 'formik';
+import { connect } from 'react-redux';
+import { Inputs, InputPassword } from 'components/Forms';
+
+function Login(props) {
+ const {
+ isSubmitting,
+ userVerified,
+ showModalForgotUsername,
+ showModalChangePassword,
+ backToLogin,
+ onCloseIdleNotification
+ } = props;
+
+ return (
+
+ );
+};
+
+
+Login = connect(
+ state => ({
+
+ }),
+)(Login);
+
+
+export default Login;
+
diff --git a/src/containers/public/Login/constants.js b/src/containers/public/Login/constants.js
new file mode 100644
index 0000000..14cf51a
--- /dev/null
+++ b/src/containers/public/Login/constants.js
@@ -0,0 +1,7 @@
+export const LOGIN = 'LOGIN'
+export const LOGIN_SUCCESS = 'LOGIN_SUCCESS'
+export const LOGIN_FIELD_ERROR = 'LOGIN_FIELD_ERROR'
+export const LOGIN_ERROR = 'LOGIN_ERROR'
+export const LOGIN_RESET = 'LOGIN_RESET'
+
+
diff --git a/src/containers/public/Login/index.js b/src/containers/public/Login/index.js
new file mode 100644
index 0000000..e19469d
--- /dev/null
+++ b/src/containers/public/Login/index.js
@@ -0,0 +1,208 @@
+//@flow
+import React, { Component } from 'react';
+import { connect } from "react-redux";
+import Helmet from 'react-helmet';
+import LoginForm from './components/LoginForm'
+import { Row, Col , Modal, Button , notification} from 'antd';
+import { Formik } from 'formik';
+import { Redirect } from 'react-router-dom'
+
+import { loginSchema } from './validationSchema'
+
+// HELPER FUNCTIONS
+import { customAction } from "actions";
+import { API_UNI_OIL } from "utils/Api";
+
+
+class Login extends Component {
+ state = {
+ username: null,
+ userVerified: false,
+ isModalVisible: false,
+ forgotUsername: false,
+ userEmail: null,
+ userLogo: null,
+ mounted: false,
+ }
+
+ componentDidMount = async ()=> {
+ try {
+ let response = await API_UNI_OIL.get('systemPreference/contact_details')
+ let response_logo = await API_UNI_OIL.get('systemPreference/logo')
+
+ if(response) {
+ this.setState({
+ userEmail: response.data.data.value,
+ userLogo: response_logo.data.data.value,
+ mounted: true,
+ })
+ }
+ } catch ({response:error}) {
+
+ }
+ }
+
+ handleCheckUserApi = async (values, actions) => {
+
+ const { username } = values;
+ const { setErrors, setSubmitting } = actions;
+
+ try {
+ const { data } = await API_UNI_OIL.post('/login_username', {
+ username
+ });
+ const { is_verified, role } = data.data;
+ this.setState({ username, userVerified: is_verified, role });
+ setSubmitting(false);
+ } catch ({response: error}) {
+ setErrors({ username: error.data.message });
+ setSubmitting(false);
+ }
+ }
+
+ handleLoginApi = (values, actions) => {
+
+ const { password, username } = values;
+ const { setErrors, setSubmitting } = actions;
+ const { role } = this.state;
+ let { history, location } = this.props;
+
+ //let usernameInitialValue = location.state && location.state.username;
+ //let userName = username ? username : usernameInitialValue;
+
+ this.props.customAction({
+ type: "LOGIN" ,
+ payload: {
+ username,
+ password,
+ setSubmitting,
+ setErrors,
+ history,
+ role
+ }
+ });
+ }
+
+ showModalForgotUsername = () => {
+ this.setState({
+ isModalVisible: true,
+ forgotUsername: true
+ });
+ }
+
+ showModalChangePassword = () => {
+ this.setState({
+ isModalVisible: true,
+ forgotUsername: false
+ });
+ }
+
+ handleOk = () => {
+ this.setState({ isModalVisible: false });
+ }
+
+ handleCancel = () => {
+ this.setState({ isModalVisible: false });
+ }
+
+ backToLogin =(values)=> {
+ if(values) {
+ values.setFieldValue('username','')
+ values.setFieldValue('password','')
+ }
+
+ let { history } = this.props;
+ this.setState({userVerified: false})
+ history.push({ pathname: '/login' });
+ }
+
+ onCloseIdleNotification() {
+ notification.close('idle-notification-1')
+ }
+
+ render() {
+
+ if(!this.state.mounted) return null;
+
+ const { userVerified, isModalVisible, forgotUsername, role, userEmail, userLogo } = this.state;
+
+ const { isAuthenticated, location, userInfo } = this.props
+ //const { from } = this.props.location.state || { from: { pathname: "/my-profile" } };
+ //const { from } = { from: { pathname: role == 1 ? "/user-management" : "/my-profile" } };
+ const { from } = { from: { pathname: "/my-profile" } };
+
+ if (isAuthenticated) {
+ return ;
+ }
+
+ let usernameInitialValue = location.state && location.state.username;
+ return (
+
+
+
+
+
+
+
+
Welcome
+ { !userVerified && Sign in to continue }
+
+
+
+
+ }
+ />
+
+
+ Forgot {forgotUsername ? 'Username' : 'Password'}
+
+ To have your {forgotUsername ? 'username' : 'password reset'}, please contact
+ Unioil's admin at {userEmail && userEmail}
+
+
+
+ Ok
+
+
+
+
+ );
+ }
+}
+
+Login = connect(
+ state => ({
+ isAuthenticated: state.auth.isAuthenticated,
+ register: state.register,
+ userInfo: state.login
+ }),
+ { customAction }
+)(Login);
+
+export default Login;
diff --git a/src/containers/public/Login/loginReducer.js b/src/containers/public/Login/loginReducer.js
new file mode 100644
index 0000000..15b4d58
--- /dev/null
+++ b/src/containers/public/Login/loginReducer.js
@@ -0,0 +1,69 @@
+import {
+ LOGIN,
+ LOGIN_SUCCESS,
+ LOGIN_FIELD_ERROR,
+ LOGIN_ERROR,
+ LOGIN_RESET,
+} from "./constants";
+
+const initialState = {
+ data: {},
+ status: '',
+ messages: "",
+ error: '',
+ isAuthenticated: false,
+ code: 0,
+};
+
+const loginReducer = (state = initialState, { type, payload, field_error }) => {
+ // console.log("my reducser",payload);
+
+ switch (type) {
+ case LOGIN:
+ return {
+ ...state,
+
+ isAuthenticated: false,
+ status: "loading",
+ messages: [{ body: "Fetching data...", time: new Date() }],
+ };
+ case LOGIN_SUCCESS:
+ return {
+ ...state,
+ status: "success",
+ isAuthenticated: true,
+ messages: [{ body: "Receiving data successful", time: new Date() }],
+ data: payload,
+ code: 200
+ };
+ case LOGIN_FIELD_ERROR:
+ return {
+ ...state,
+ status: "error",
+ isAuthenticated: false,
+ messages: [{ body: "Something went wrong", time: new Date() }],
+ error: field_error,
+ code: payload.status
+ };
+ case LOGIN_ERROR:
+ return {
+ ...state,
+ status: "error",
+ isAuthenticated: false,
+ messages: [{ body: "Something went wrong", time: new Date() }],
+ error: payload.data.error,
+ data: {},
+ code: payload.status
+ };
+
+
+ case LOGIN_RESET:
+ return {
+ ...initialState
+ };
+ default:
+ return state;
+ }
+};
+
+export default loginReducer;
diff --git a/src/containers/public/Login/loginSaga.js b/src/containers/public/Login/loginSaga.js
new file mode 100644
index 0000000..e5aea44
--- /dev/null
+++ b/src/containers/public/Login/loginSaga.js
@@ -0,0 +1,42 @@
+import { call, takeLatest, put } from "redux-saga/effects";
+import { API_UNI_OIL, API_POST } from "utils/Api";
+import { setCookie } from "utils/cookie";
+import { notification } from "antd";
+
+function* loginFlow({ payload }) {
+ const {
+ username, //username
+ password,
+ setSubmitting,
+ setErrors,
+ history,
+ role
+ } = payload;
+
+ try {
+ const { data } = yield call(() => API_UNI_OIL.post('login_password', { username, password })); //username
+
+ if(data.data.prompt_password)
+ return history.push({ pathname: '/change-password', state: { username, admin_uuid : data.data.admin_uuid, password } });
+
+ if(data.data.token) {
+ API_UNI_OIL.defaults.headers.common['Authorization'] = `Bearer ${data.data.token}`;
+ setCookie({ token: data.data.token }, "TOKEN");
+
+ const response = yield call(() => API_POST(`adminProfile`));
+ data.data['userInfo'] = {...response.data.data}
+ localStorage.setItem('user', `${response.data.data.firstname} ${response.data.data.lastname}`)
+ yield put({ type: "LOGIN_SUCCESS", payload: {...data.data} });
+ }
+
+ } catch ({response: error}) {
+ setErrors({ password : error.data.message});
+ setSubmitting(false);
+ }
+}
+
+function* loginSaga() {
+ yield takeLatest("LOGIN", loginFlow);
+}
+
+export default loginSaga;
\ No newline at end of file
diff --git a/src/containers/public/Login/validationSchema.js b/src/containers/public/Login/validationSchema.js
new file mode 100644
index 0000000..bea39fb
--- /dev/null
+++ b/src/containers/public/Login/validationSchema.js
@@ -0,0 +1,27 @@
+
+import * as Yup from 'yup'
+
+export const loginSchema = Yup.object().shape({
+ username: Yup.string()
+ .required('Username is required!')
+ .matches(
+ /^[A-Za-z0-9_@. ]+$/,
+ {
+ message: 'Invalid username.',
+ excludeEmptyString: true,
+ },
+ ),
+ //password: Yup.string()
+
+ //.min(10,'Atleast 10 character')
+ // .matches(
+ // /^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=]).*$/,
+ // {
+ // message: 'Invalid password atleast 1 upper and lower case letter, 1 special character , 1 numbers.',
+ // excludeEmptyString: true,
+ // },
+ // )
+})
+
+
+
\ No newline at end of file
diff --git a/src/containers/public/PublicTopErrorPage/index.js b/src/containers/public/PublicTopErrorPage/index.js
new file mode 100644
index 0000000..a428f14
--- /dev/null
+++ b/src/containers/public/PublicTopErrorPage/index.js
@@ -0,0 +1,72 @@
+//@flow
+import React, { Component } from 'react';
+import { Button } from 'antd';
+import {isAndroid, isIOS} from 'react-device-detect';
+
+
+class PublicTopErrorPage extends Component {
+ state = {
+ }
+
+ backHandler () {
+
+ if(isIOS) {
+ // For iOS isIOS
+ window.iOStopUpFailed()
+ }
+
+ if (isAndroid) {
+ // For Adoird isAndroid
+ window.AndroidTopUpFailed()
+ }
+
+ }
+
+ render() {
+
+ return (
+
+
+
+
+ Transaction Failed.
+ Your purchase for top-up is not successful. Please try again.
+
+
+
+
+ Return to Top-Up Page
+
+
+
+ )
+ }
+}
+
+
+export default PublicTopErrorPage;
+
+
+const styles = {
+ bottomAlign: {
+ position: 'absolute',
+ right: '0',
+ bottom: '0',
+ left: '0',
+ margin: '20px',
+ textAlign: 'center'
+ },
+ topAlign: {
+ position: 'absolute',
+ right: '0',
+ top: '10%',
+ left: '0',
+ margin: '20px',
+ textAlign: 'center'
+ },
+}
\ No newline at end of file
diff --git a/src/containers/public/PublicTopSuccessPage/index.js b/src/containers/public/PublicTopSuccessPage/index.js
new file mode 100644
index 0000000..3d168bf
--- /dev/null
+++ b/src/containers/public/PublicTopSuccessPage/index.js
@@ -0,0 +1,183 @@
+//@flow
+import React, { Component } from 'react';
+import queryString from "query-string";
+import { API_UNI_OIL } from "utils/Api";
+import { Row, Button, Col, Icon, Avatar } from 'antd';
+import {isAndroid, isIOS} from 'react-device-detect';
+
+
+class PublicTopSuccessPage extends Component {
+ state = {
+ loading: false,
+ userInfo: null
+ }
+
+ async componentDidMount() {
+
+ const { location } = this.props;
+ let { search } = location;
+ let urlParamsObject = queryString.parse(search);
+
+ let payload = {
+ paymentId: urlParamsObject.paymentId,
+ token: urlParamsObject.token,
+ PayerID: urlParamsObject.PayerID
+ }
+
+ this.setState({ loading: true })
+
+ try {
+ let response = await API_UNI_OIL.post(`paypalExecute`,payload);
+ this.setState({
+ status: response.status,
+ userInfo: {...response.data.data},
+ loading: false
+ })
+ } catch ({response: error}) {
+ this.setState({
+ status: error.status,
+ loading: false,
+ message: error && error.data && error.data.message
+ })
+ }
+
+ }
+
+ backHandler () {
+
+ if(isIOS) {
+ // For iOS isIOS
+ window.iOStopUpFailed()
+ }
+
+ if (isAndroid) {
+ // For Adoird isAndroid
+ window.AndroidTopUpFailed()
+ }
+
+ }
+
+ backHandlerSuccess () {
+ if(isIOS) {
+ // For iOS isIOS
+ window.iOStopUpSuccess()
+ }
+
+ if (isAndroid) {
+ // For Adoird isAndroid
+ window.AndroidTopUpFailed()
+ }
+ }
+
+ render() {
+
+ const { loading, status, userInfo, message } = this.state;
+
+ return (
+
+ {
+ loading
+ ?
+ Loading Top-Up Please wait...
+
+ :
+
+ {
+ status == 200
+ ?
+
+
+
+
+ Your purchase for top-up points is successful!
+
+
+
+
+
+ {userInfo && userInfo.date}
+
+
+ {userInfo && `Card Number ${userInfo.card_number}`}
+ {userInfo && `Sales Invoice Number ${userInfo.invoice}`}
+
+
+
+ Top-up Points Value
+ {userInfo && ` ${userInfo.points}`}
+
+
+ Payment Value
+ {userInfo && `Php ${userInfo.payment_val}`}
+
+
+ Paypal Fee
+ {userInfo && `Php ${userInfo.paypal_fee}`}
+
+
+
+
+
+
+ Return to Home Page
+
+
+
+ :
+
+
+
+
+ {/* Your purchase for top-up is not successful. Please try again. */}
+ Transaction Failed.
+ {message && `${message}.`}
+
+
+
+
+ Return to Top-Up Page
+
+
+
+ }
+
+ }
+
+ )
+ }
+}
+
+
+export default PublicTopSuccessPage;
+
+
+const styles = {
+ bottomAlign: {
+ position: 'absolute',
+ right: '0',
+ bottom: '0',
+ left: '0',
+ margin: '20px',
+ textAlign: 'center'
+ },
+ topAlign: {
+ position: 'absolute',
+ right: '0',
+ top: '0',
+ left: '0',
+ margin: '20px',
+ textAlign: 'center'
+ },
+}
\ No newline at end of file
diff --git a/src/containers/public/Registration/components/RegistrationForm.js b/src/containers/public/Registration/components/RegistrationForm.js
new file mode 100644
index 0000000..de48119
--- /dev/null
+++ b/src/containers/public/Registration/components/RegistrationForm.js
@@ -0,0 +1,113 @@
+import React from 'react';
+import { Button } from 'antd';
+import { Form, Field } from 'formik';
+import { connect } from 'react-redux';
+import { Inputs, Select, /* AutoComplete, Cascader, DatePicker */ } from 'components/Forms';
+import { customAction } from 'actions';
+
+const formItemLayout = {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 8 },
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 16 },
+ }
+};
+
+function Register(props) {
+ const {
+ // values,
+ // touched,
+ // errors,
+ // dirty,
+ // handleChange,
+ // handleBlur,
+ // handleSubmit,
+ // handleReset,
+ // handleSearch,
+ // setFieldValue,
+ // setFieldTouched,
+ isSubmitting,
+ loading,
+ } = props;
+
+ return (
+
+ )
+
+};
+
+Register = connect(
+ state => ({
+ loading: state.login.status
+ }),
+ { customAction }
+)(Register);
+
+export default Register;
\ No newline at end of file
diff --git a/src/containers/public/Registration/constants.js b/src/containers/public/Registration/constants.js
new file mode 100644
index 0000000..205d8db
--- /dev/null
+++ b/src/containers/public/Registration/constants.js
@@ -0,0 +1,5 @@
+export const REGISTRATION = "REGISTRATION"
+export const REGISTRATION_SUCCESS = "REGISTRATION_SUCCESS"
+export const REGISTRATION_FIELD_ERROR = "REGISTRATION_FIELD_ERROR"
+export const REGISTRATION_ERROR = "REGISTRATION_ERROR"
+export const REGISTRATION_RESET = "REGISTRATION_RESET"
\ No newline at end of file
diff --git a/src/containers/public/Registration/index.js b/src/containers/public/Registration/index.js
new file mode 100644
index 0000000..7988838
--- /dev/null
+++ b/src/containers/public/Registration/index.js
@@ -0,0 +1,64 @@
+//@flow
+import React, { Component, Fragment } from 'react';
+import { connect } from 'react-redux';
+import { Row, Col , Alert} from 'antd';
+import { Formik } from 'formik';
+import { Redirect, Link } from 'react-router-dom';
+import { registrationSchema } from './validationSchema';
+// import { customAction } from 'actions';
+import { customAction } from '../../../actions';
+import RegistrationForm from './components/RegistrationForm';
+
+
+class Registration extends Component {
+
+ render() {
+ const { customAction, errors, status, isRegistered } = this.props;
+
+ if (isRegistered) {
+ return ;
+ }
+
+ return (
+
+
+
+ Registration
+ {
+ status == "error" &&
+ }
+ {
+ customAction({type: 'REGISTRATION' , payload: {values, url: '/register'}})
+ actions.setSubmitting(false);
+ }}
+ component={RegistrationForm}
+ />
+ Back to Login
+
+
+
+ );
+ }
+}
+
+Registration = connect(
+ state => ({
+ errors: state.register.messages[0],
+ status: state.register.status,
+ isRegistered: state.register.isRegistered,
+ }),
+ { customAction }
+)(Registration);
+
+export default Registration;
\ No newline at end of file
diff --git a/src/containers/public/Registration/registrationReducer.js b/src/containers/public/Registration/registrationReducer.js
new file mode 100644
index 0000000..d3ffec5
--- /dev/null
+++ b/src/containers/public/Registration/registrationReducer.js
@@ -0,0 +1,63 @@
+import {
+ REGISTRATION,
+ REGISTRATION_SUCCESS,
+ REGISTRATION_FIELD_ERROR,
+ REGISTRATION_ERROR,
+ REGISTRATION_RESET
+} from "./constants";
+
+const initialState = {
+ data: {},
+ status: '',
+ messages: "",
+ error: '',
+ isRegistered: false,
+ code: 0
+}
+
+const registrationReducer = (state = initialState, { type, payload, field_error }) => {
+ switch(type) {
+ case REGISTRATION:
+ return {
+ ...state,
+ status: "loading",
+ messages: [{ body: "Fetching data...", time: new Date() }],
+ };
+ case REGISTRATION_SUCCESS:
+ return {
+ ...state,
+ status: "success",
+ messages: [{ body: "Registration successful.", time: new Date() }],
+ isRegistered: true,
+ code: 200
+ };
+ case REGISTRATION_FIELD_ERROR:
+ return {
+ ...state,
+ status: "error",
+ messages: [{ body: payload.error, time: new Date() }],
+ error: field_error,
+ data: {},
+ isRegistered: false,
+ code: payload.status
+ };
+ case REGISTRATION_ERROR:
+ return {
+ ...state,
+ status: "error",
+ messages: [{ body: "Something went wrong", time: new Date() }],
+ error: payload.data.error,
+ data: {},
+ isRegistered: false,
+ code: payload.status
+ };
+ case REGISTRATION_RESET:
+ return {
+ ...initialState
+ };
+ default:
+ return state;
+ }
+};
+
+export default registrationReducer;
\ No newline at end of file
diff --git a/src/containers/public/Registration/registrationSaga.js b/src/containers/public/Registration/registrationSaga.js
new file mode 100644
index 0000000..eb8e38c
--- /dev/null
+++ b/src/containers/public/Registration/registrationSaga.js
@@ -0,0 +1,42 @@
+import { delay } from "redux-saga";
+import { API_POST } from "utils/Api";
+import { call, takeLatest, put } from "redux-saga/effects";
+
+import {
+ REGISTRATION,
+ REGISTRATION_SUCCESS,
+ REGISTRATION_FIELD_ERROR,
+} from "./constants";
+
+const loadingTime = 1000;
+
+function* registrationFlow({ payload }) {
+ const {
+ values,
+ url
+ } = payload
+
+ try {
+ const response = yield call(() => API_POST(url, values));
+ yield delay(loadingTime);
+
+ if (response && response.status === 201) {
+ yield put({ type: REGISTRATION_SUCCESS, payload: response });
+ // yield put(push('/login'));
+ }
+
+ } catch (error) {
+ yield delay(loadingTime);
+ if (error.response) {
+ if (error.response.status === 400) {
+ yield put({ type: REGISTRATION_FIELD_ERROR, payload: error.response.data });
+ }
+ }
+ }
+}
+
+function* registrationSaga() {
+ yield takeLatest(REGISTRATION, registrationFlow);
+}
+
+export default registrationSaga;
\ No newline at end of file
diff --git a/src/containers/public/Registration/validationSchema.js b/src/containers/public/Registration/validationSchema.js
new file mode 100644
index 0000000..cdcf474
--- /dev/null
+++ b/src/containers/public/Registration/validationSchema.js
@@ -0,0 +1,25 @@
+
+import * as Yup from 'yup'
+
+export const registrationSchema = Yup.object().shape({
+
+ email: Yup.string()
+ .email('Invalid Email address.')
+ .required('Email is required.'),
+ password: Yup.string()
+ .required('Password is required.'),
+ confirm_password: Yup.string()
+ .oneOf([Yup.ref('password')], 'Passwords do not match.')
+ .required('Confirm password is required.'),
+ first_name: Yup.string()
+ .required('First name is required.'),
+ middle_name: Yup.string()
+ .required('Middle name is required.'),
+ last_name: Yup.string()
+ .required('Last name is required.'),
+ website: Yup.string()
+ .required('Website is required.'),
+})
+
+
+
\ No newline at end of file
diff --git a/src/default.css b/src/default.css
new file mode 100644
index 0000000..5c8fd8a
--- /dev/null
+++ b/src/default.css
@@ -0,0 +1,192 @@
+
+
+#root { height: 100%; overflow: hidden; }
+
+.ant-dropdown-menu-item-active {
+ background: #fef4f1 !important;
+ color: #e74610 !important;
+}
+
+.ant-dropdown-menu-item-active > a {
+ color: #e74610 !important;
+}
+.cXBAwU:hover {
+ background-color: #e746100f !important;
+}
+.kOsaSu:hover {
+ color: #e74610;
+}
+
+.ant-menu-inline-collapsed {
+ width: 79px !important;
+}
+.ant-menu-root.ant-menu-inline::-webkit-scrollbar-track
+{
+ -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
+ box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
+ border-radius: 10px;
+ background-color: #F5F5F5;
+}
+.ant-menu-root.ant-menu-inline::-webkit-scrollbar
+{
+ width: 12px;
+ background-color: #F5F5F5;
+}
+.ant-menu-root.ant-menu-inline::-webkit-scrollbar-thumb
+{
+ border-radius: 10px;
+ -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.3);
+ box-shadow: inset 0 0 6px rgba(0,0,0,.3);
+ background-color: #b8bbc9;
+}
+.ant-menu-inline .ant-menu-item, .ant-menu-inline .ant-menu-submenu-title {
+ width: calc(100% + 0px) !important;
+}
+
+.ant-menu-item-selected > a, .ant-menu-item-selected > a:hover {
+ color: #e74610 !important;
+}
+
+.ant-menu-item:hover, .ant-menu-item-active, .ant-menu:not(.ant-menu-inline) .ant-menu-submenu-open, .ant-menu-submenu-active, .ant-menu-submenu-title:hover {
+ color: #e74610 !important;
+}
+.ant-menu-vertical .ant-menu-item:after, .ant-menu-vertical-left .ant-menu-item:after, .ant-menu-vertical-right .ant-menu-item:after, .ant-menu-inline .ant-menu-item:after {
+ border-right: 0px solid #e74610 !important;
+}
+
+.ant-menu-submenu-vertical > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after, .ant-menu-submenu-vertical-left > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after, .ant-menu-submenu-vertical-right > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after, .ant-menu-submenu-inline > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after, .ant-menu-submenu-vertical > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before, .ant-menu-submenu-vertical-left > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before, .ant-menu-submenu-vertical-right > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before, .ant-menu-submenu-inline > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before {
+ background: -webkit-linear-gradient(left, #e74610, #e74610) !important;
+ background: -o-linear-gradient(left, #e74610, #e74610) !important;
+ background: linear-gradient(to right, #e74610, #e74610) !important;
+}
+.ant-menu-item > a:hover {
+ color: #e74610 !important;
+}
+
+.ant-menu:not(.ant-menu-horizontal) .ant-menu-item-selected {
+ background-color: #e7461000 !important;
+}
+
+.ant-radio-inner:after {
+ background-color :#e74610 !important
+}
+
+.ant-radio-checked .ant-radio-inner {
+ border-color: #e74610 !important;
+}
+
+.ant-form-item {
+ margin-bottom: 5px !important;
+}
+
+.ant-popover-inner-content {
+ position: relative;
+}
+.ant-btn-sm {
+ padding: 0 20px !important;
+ height: 27px !important;
+}
+
+.ant-spin-nested-loading > div > .ant-spin {
+ top: 70% !important;
+}
+
+.ant-breadcrumb a:focus {
+ text-decoration: none;
+}
+
+.ant-breadcrumb a:hover {
+ color: #e74610 !important;
+}
+
+.ant-breadcrumb > span:last-child a{
+ color: #4D4D4D;
+ font-weight: 500;
+ opacity: 0.85;
+}
+
+.generated-input .ant-input-disabled {
+ cursor: text !important;
+}
+
+.ant-message-notice-content {
+ background: #fdfdfd;
+}
+
+.ant-calendar-selected-date .ant-calendar-date ,
+.ant-calendar-selected-end-date .ant-calendar-date,
+.ant-calendar-selected-start-date .ant-calendar-date {
+ background: #E74610 !important;
+}
+
+.ant-calendar-range .ant-calendar-in-range-cell:before,
+.ant-calendar-date:hover {
+ background: #e7461026 !important
+}
+
+.terms-management {
+
+ position: absolute;
+ left: -42px;
+}
+
+.terms-management-parent {
+
+ left: -30px;
+}
+
+.terms-management-parent .terms-management {
+ position: relative;
+ left: 37px;
+ border-color: #e74610 !important;
+ background: #E74610;
+ width: 100px;
+ color: #fff;
+ text-align: right;
+}
+
+.terms-management-parent .ant-btn:hover,
+.terms-management-parent .ant-btn:focus {
+ background: #e74610;
+ color: #fff;
+}
+
+.ant-menu-submenu-popup {
+ z-index: 999 !important;
+}
+
+.ant-select-selection__clear-icon {
+ font-size: 23px;
+ line-height: 7px;
+}
+.ant-input-group-addon {
+ position: relative;
+ padding: 0 11px;
+ color: rgba(0, 0, 0, 0.65);
+ font-weight: normal;
+ font-size: 14px;
+ text-align: center;
+ background-color: transparent !important;
+ border: none !important;
+ border-radius: 4px;
+ -webkit-transition: all 0.3s;
+ -o-transition: all 0.3s;
+ transition: all 0.3s;
+}
+/* #addStationModal .ant-modal-content {
+ position: relative;
+ background-color: #fff;
+ background-clip: padding-box;
+ border: 0;
+ border-radius: 4px;
+ -webkit-box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
+ pointer-events: auto;
+ margin-top: -70px;
+} */
+@media only screen and (max-width: 480px) {
+ .appContainer {
+ position: fixed ;
+ width: 100%
+ }
+}
\ No newline at end of file
diff --git a/src/index.js b/src/index.js
new file mode 100644
index 0000000..f44eb9e
--- /dev/null
+++ b/src/index.js
@@ -0,0 +1,28 @@
+import React from "react";
+import ReactDOM from "react-dom";
+import { BrowserRouter } from 'react-router-dom';
+import { Provider } from "react-redux";
+import Helmet from 'react-helmet';
+import App from "./App";
+import registerServiceWorker from "./registerServiceWorker";
+import store, { history } from "./store";
+
+import "./default.css";
+
+// Add these lines:
+if (process.env.NODE_ENV !== "production") {
+ localStorage.setItem("debug", "awesome-react-app:*");
+}
+
+ReactDOM.render(
+
+
+ ,
+ document.getElementById("root")
+);
+registerServiceWorker();
diff --git a/src/reducers/authReducer.js b/src/reducers/authReducer.js
new file mode 100644
index 0000000..243100b
--- /dev/null
+++ b/src/reducers/authReducer.js
@@ -0,0 +1,26 @@
+
+const initialState = {
+ data: {},
+ isAuthenticated: false,
+};
+
+const authReducer = (state = initialState, { type, payload }) => {
+ switch (type) {
+ case "LOGIN_SUCCESS":
+ return {
+ ...state,
+ data: payload,
+ isAuthenticated: true
+ };
+
+ case "LOGOUT_SUCCESS":
+ return {
+ ...initialState
+ };
+ default:
+ return state;
+ }
+};
+
+ export default authReducer;
+
\ No newline at end of file
diff --git a/src/reducers/fetchDataReducer.js b/src/reducers/fetchDataReducer.js
new file mode 100644
index 0000000..dcba695
--- /dev/null
+++ b/src/reducers/fetchDataReducer.js
@@ -0,0 +1,38 @@
+
+import { FETCH_DATA, FETCH_DATA_SUCCESS , FETCH_DATA_ERROR, FETCH_DATA_RESET } from 'constants/Types';
+
+const initialState = {
+ code: '',
+ status: '',
+ data: {}
+};
+const fetchDataReducer = (state = initialState, { type, payload }) => {
+ switch (type) {
+ case FETCH_DATA:
+ return {
+ ...state,
+ status: 'loading...',
+ };
+ case FETCH_DATA_SUCCESS:
+ return {
+ ...state,
+ status: 'sucess',
+ code: payload.status,
+ data: payload.data.data
+ };
+ case FETCH_DATA_ERROR:
+ return {
+ ...state,
+ status: 'error',
+ code: payload.status
+ };
+ case FETCH_DATA_RESET:
+ return {
+ ...initialState
+ };
+ default:
+ return state;
+ }
+};
+
+export default fetchDataReducer;
diff --git a/src/reducers/index.js b/src/reducers/index.js
new file mode 100644
index 0000000..d0f4192
--- /dev/null
+++ b/src/reducers/index.js
@@ -0,0 +1,25 @@
+import { combineReducers } from 'redux';
+import loginReducer from 'containers/public/Login/loginReducer';
+import logoutReducer from './logoutReducer';
+import userManagementCreateReducer from 'containers/private/UserManagement/Create/reducer';
+import systemPreferencesCreateReducer from 'containers/private/SystemPreferences/Create/reducer';
+import branchesCreateReducer from 'containers/private/StationLocator/Branches/Create/reducer';
+import fuelsCreateReducer from 'containers/private/StationLocator/Fuels/Create/reducer'
+import stationCreateReducer from 'containers/private/StationLocator/Location/Create/reducer';
+import stationUpdateReducer from 'containers/private/StationLocator/Location/Edit/reducer';
+
+import authReducer from "./authReducer";
+
+const reducers = combineReducers({
+ auth: authReducer,
+ login: loginReducer,
+ logout: logoutReducer,
+ userManagement: userManagementCreateReducer,
+ systemPreferences: systemPreferencesCreateReducer,
+ branchesCreate: branchesCreateReducer,
+ fuelsCreate: fuelsCreateReducer,
+ stationCreate: stationCreateReducer,
+ stationUpdate: stationUpdateReducer
+});
+
+export default reducers;
diff --git a/src/reducers/logoutReducer.js b/src/reducers/logoutReducer.js
new file mode 100644
index 0000000..c31a4bd
--- /dev/null
+++ b/src/reducers/logoutReducer.js
@@ -0,0 +1,35 @@
+
+import { LOGOUT, LOGOUT_SUCCESS , LOGOUT_RESET} from "constants/Types";
+
+const initialState = {
+
+ messages: "",
+ isLogout: false,
+};
+
+const logoutReducer = (state = initialState, { type }) => {
+ // console.log("my reducser",payload);
+
+ switch (type) {
+ case LOGOUT:
+ return {
+ ...state,
+ isLogout: false,
+
+ };
+ case LOGOUT_SUCCESS:
+ return {
+ ...state,
+ isLogout: true,
+ messages:"You successful logout"
+ };
+ case LOGOUT_RESET:
+ return {
+ ...initialState
+ };
+ default:
+ return state;
+ }
+};
+
+export default logoutReducer;
diff --git a/src/registerServiceWorker.js b/src/registerServiceWorker.js
new file mode 100644
index 0000000..a3e6c0c
--- /dev/null
+++ b/src/registerServiceWorker.js
@@ -0,0 +1,117 @@
+// In production, we register a service worker to serve assets from local cache.
+
+// This lets the app load faster on subsequent visits in production, and gives
+// it offline capabilities. However, it also means that developers (and users)
+// will only see deployed updates on the "N+1" visit to a page, since previously
+// cached resources are updated in the background.
+
+// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.
+// This link also includes instructions on opting out of this behavior.
+
+const isLocalhost = Boolean(
+ window.location.hostname === 'localhost' ||
+ // [::1] is the IPv6 localhost address.
+ window.location.hostname === '[::1]' ||
+ // 127.0.0.1/8 is considered localhost for IPv4.
+ window.location.hostname.match(
+ /^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/
+ )
+);
+
+export default function register() {
+ if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {
+ // The URL constructor is available in all browsers that support SW.
+ const publicUrl = new URL(process.env.PUBLIC_URL, window.location);
+ if (publicUrl.origin !== window.location.origin) {
+ // Our service worker won't work if PUBLIC_URL is on a different origin
+ // from what our page is served on. This might happen if a CDN is used to
+ // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374
+ return;
+ }
+
+ window.addEventListener('load', () => {
+ const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;
+
+ if (isLocalhost) {
+ // This is running on localhost. Lets check if a service worker still exists or not.
+ checkValidServiceWorker(swUrl);
+
+ // Add some additional logging to localhost, pointing developers to the
+ // service worker/PWA documentation.
+ navigator.serviceWorker.ready.then(() => {
+ console.log(
+ 'This web app is being served cache-first by a service ' +
+ 'worker. To learn more, visit https://goo.gl/SC7cgQ'
+ );
+ });
+ } else {
+ // Is not local host. Just register service worker
+ registerValidSW(swUrl);
+ }
+ });
+ }
+}
+
+function registerValidSW(swUrl) {
+ navigator.serviceWorker
+ .register(swUrl)
+ .then(registration => {
+ registration.onupdatefound = () => {
+ const installingWorker = registration.installing;
+ installingWorker.onstatechange = () => {
+ if (installingWorker.state === 'installed') {
+ if (navigator.serviceWorker.controller) {
+ // At this point, the old content will have been purged and
+ // the fresh content will have been added to the cache.
+ // It's the perfect time to display a "New content is
+ // available; please refresh." message in your web app.
+ console.log('New content is available; please refresh.');
+ } else {
+ // At this point, everything has been precached.
+ // It's the perfect time to display a
+ // "Content is cached for offline use." message.
+ console.log('Content is cached for offline use.');
+ }
+ }
+ };
+ };
+ })
+ .catch(error => {
+ console.error('Error during service worker registration:', error);
+ });
+}
+
+function checkValidServiceWorker(swUrl) {
+ // Check if the service worker can be found. If it can't reload the page.
+ fetch(swUrl)
+ .then(response => {
+ // Ensure service worker exists, and that we really are getting a JS file.
+ if (
+ response.status === 404 ||
+ response.headers.get('content-type').indexOf('javascript') === -1
+ ) {
+ // No service worker found. Probably a different app. Reload the page.
+ navigator.serviceWorker.ready.then(registration => {
+ registration.unregister().then(() => {
+ window.location.reload();
+ });
+ });
+ } else {
+ // Service worker found. Proceed as normal.
+ registerValidSW(swUrl);
+ }
+ })
+ .catch(() => {
+ console.log(
+ 'No internet connection found. App is running in offline mode.'
+ );
+ });
+}
+
+export function unregister() {
+ if ('serviceWorker' in navigator) {
+ navigator.serviceWorker.ready.then(registration => {
+ registration.unregister();
+ });
+ }
+}
diff --git a/src/sagas/errorHanlder.js b/src/sagas/errorHanlder.js
new file mode 100644
index 0000000..65b3d93
--- /dev/null
+++ b/src/sagas/errorHanlder.js
@@ -0,0 +1,47 @@
+import React, { Component } from 'react';
+import { takeLatest, put } from "redux-saga/effects";
+import { delay } from "redux-saga";
+import { API_UNI_OIL } from "utils/Api";
+import { removeCookie } from "utils/cookie";
+import { notification } from "antd";
+import { replace } from 'react-router-redux';
+
+function* handleErrors({payload}){
+ yield delay(100);
+
+ if(payload){
+ let { status, data } = payload;
+ if(status === 401){
+ API_UNI_OIL.defaults.headers.common['Authorization'] = undefined;
+ removeCookie('TOKEN');
+ yield put({ type: "LOGOUT_SUCCESS" });
+ notification.error({ message: 'Error',
+ description:
+
Something went wrong
+ - {data.message}
+
+ });
+ }else if(status === 404){
+ yield put(replace('/404'))
+ }else {
+ notification.error({
+ message: 'Something went wrong!',
+ description:
+
+ {data.message}
+
+
+ });
+ }
+ }else {
+ // TO BE ADDED LATER WHEN ALL API IS COMPLETED
+ // yield put(replace('/404'))
+ notification.error({ message: 'A.P.I not found' });
+ }
+}
+
+function* errorHandler() {
+ yield takeLatest("UNCAUGHT_ERROR", handleErrors);
+}
+
+export default errorHandler;
diff --git a/src/sagas/fetchDataSaga.js b/src/sagas/fetchDataSaga.js
new file mode 100644
index 0000000..0688c27
--- /dev/null
+++ b/src/sagas/fetchDataSaga.js
@@ -0,0 +1,36 @@
+import { delay } from 'redux-saga';
+import {
+ call,
+ takeLatest,
+ put
+} from 'redux-saga/effects';
+import { fetchData } from 'utils/Api';
+import { FETCH_DATA, FETCH_DATA_SUCCESS , FETCH_DATA_ERROR, /* FETCH_DATA_RESET */ } from 'constants/Types';
+
+const loadingTime = 1000;
+
+function* fetchSagaFlow({ payload }) {
+ const { url } = payload;
+
+ try {
+ const response = yield call(() => fetchData(url));
+ yield delay(loadingTime);
+
+ if (response.status === 200) {
+ yield put({ type: FETCH_DATA_SUCCESS, payload: response });
+ }
+ } catch(error) {
+ yield delay(loadingTime);
+ if (error.response) {
+ if (error.response.status === 404) {
+ yield put({ type: FETCH_DATA_ERROR, payload: error });
+ }
+ }
+ }
+}
+
+function* fetchDataSaga() {
+ yield takeLatest(FETCH_DATA, fetchSagaFlow);
+}
+
+export default fetchDataSaga;
\ No newline at end of file
diff --git a/src/sagas/index.js b/src/sagas/index.js
new file mode 100644
index 0000000..2dfaf9f
--- /dev/null
+++ b/src/sagas/index.js
@@ -0,0 +1,29 @@
+import { all, fork } from 'redux-saga/effects';
+import loginSaga from 'containers/public/Login/loginSaga';
+import registrationSaga from 'containers/public/Registration/registrationSaga';
+import logoutSaga from './logoutSaga';
+import fetchDataSaga from './fetchDataSaga';
+import errorHandler from "./errorHanlder";
+
+import userManagementCreateSaga from "containers/private/UserManagement/Create/saga"
+import systemPreferencesCreateSaga from "containers/private/SystemPreferences/Create/saga"
+import BranchCreateSaga from 'containers/private/StationLocator/Branches/Create/saga'
+import FuelCreateSaga from 'containers/private/StationLocator/Fuels/Create/saga'
+import stationCreateSaga from 'containers/private/StationLocator/Location/Create/saga'
+import stationUpdateSaga from 'containers/private/StationLocator/Location/Edit/saga';
+
+export default function* rootSaga() {
+ yield all([
+ fork(loginSaga),
+ fork(logoutSaga),
+ fork(registrationSaga),
+ fork(errorHandler),
+ fork(userManagementCreateSaga),
+ fork(systemPreferencesCreateSaga),
+ fork(BranchCreateSaga),
+ fork(FuelCreateSaga),
+ fork(stationCreateSaga),
+ fork(fetchDataSaga),
+ fork(stationUpdateSaga)
+ ]);
+}
diff --git a/src/sagas/logoutSaga.js b/src/sagas/logoutSaga.js
new file mode 100644
index 0000000..2928e4f
--- /dev/null
+++ b/src/sagas/logoutSaga.js
@@ -0,0 +1,30 @@
+import { takeLatest, put, call } from "redux-saga/effects";
+import { notification } from "antd";
+import { LOGOUT, LOGOUT_SUCCESS } from "constants/Types";
+
+import { removeCookie } from "utils/cookie";
+import { API_UNI_OIL } from "utils/Api";
+
+
+function* logoutFlow({payload}) {
+ try {
+ yield call(() => API_UNI_OIL.get('logout'));
+ API_UNI_OIL.defaults.headers.common['Authorization'] = undefined;
+ removeCookie('TOKEN');
+ yield put({ type: "LOGOUT_SUCCESS" });
+ notification.success({ message: 'Success', description: `Logout successfully.`, duration: 3 });
+ } catch ({ response: error }) {
+ API_UNI_OIL.defaults.headers.common['Authorization'] = undefined;
+ removeCookie('TOKEN');
+ yield put({ type: "LOGOUT_SUCCESS" });
+
+ notification.error({ message: 'Error', description: error.data.message, duration: 3 });
+ }
+ }
+
+
+function* logoutSaga() {
+ yield takeLatest(LOGOUT, logoutFlow);
+}
+
+export default logoutSaga;
diff --git a/src/store/index.js b/src/store/index.js
new file mode 100644
index 0000000..a4f725e
--- /dev/null
+++ b/src/store/index.js
@@ -0,0 +1,48 @@
+
+import { compose, createStore, applyMiddleware } from 'redux'
+import createSagaMiddleware from 'redux-saga'
+
+
+import logger from 'redux-logger'
+
+
+// import {ActionSaga} from '../actionSaga';
+import rootSaga from "sagas";
+
+import reducers from 'reducers' // Or wherever you keep your reducers
+import createHistory from 'history/createBrowserHistory';
+
+// import { createBrowserHistory } from 'history'
+
+export const history = createHistory()
+// Saga Middleware
+const sagaMiddleware = createSagaMiddleware()
+
+
+// Build the middleware for intercepting and dispatching navigation actions
+
+
+
+let enhancers = null
+if (process.env.NODE_ENV === 'production') {
+ enhancers = compose(
+ applyMiddleware( sagaMiddleware)
+ );
+} else {
+ enhancers = compose(
+ applyMiddleware(sagaMiddleware, logger),
+ window.devToolsExtension ? window.devToolsExtension() : f => f
+ );
+}
+
+
+// const action = type => store.dispatch({type})
+// Add the reducer to your store on the `router` key
+// Also apply our middleware for navigating
+const store = createStore(
+ reducers,
+ enhancers
+)
+sagaMiddleware.run(rootSaga)
+
+export default store;
\ No newline at end of file
diff --git a/src/utils/Api.js b/src/utils/Api.js
new file mode 100644
index 0000000..6e2a945
--- /dev/null
+++ b/src/utils/Api.js
@@ -0,0 +1,50 @@
+import axios from 'axios';
+import store from 'store/index';
+import queryString from 'query-string';
+
+export const API_UNI_OIL = axios.create({
+ baseURL: process.env.REACT_APP_API,
+ responseType: 'json',
+});
+
+export const fetchData = async (url) => {
+ return await false;
+};
+
+export const API_GET = async (url, params) => {
+ console.log(await API_UNI_OIL.get(url, { params }));
+ try {
+ return await API_UNI_OIL.get(url, { params });
+ } catch ({ response }) {
+ if (response.status === 422) return response;
+ store.dispatch({ type: 'UNCAUGHT_ERROR', payload: response });
+ }
+};
+
+export const API_POST = async (url, params) => {
+ try {
+ return await API_UNI_OIL.post(url, params);
+ } catch ({ response }) {
+ if (response.status === 422) return response;
+ store.dispatch({ type: 'UNCAUGHT_ERROR', payload: response });
+ }
+};
+
+export const API_PUT = async (url, params) => {
+ try {
+ return await API_UNI_OIL.put(url, params);
+ } catch ({ response }) {
+ if (response.status === 422) return response;
+ store.dispatch({ type: 'UNCAUGHT_ERROR', payload: response });
+ }
+};
+
+// NOT MOST COMMONLY USED
+export const API_DELETE = async (url, params) => {
+ try {
+ return await API_UNI_OIL.delete(url, { params });
+ } catch ({ response }) {
+ if (response.status === 422) return response;
+ store.dispatch({ type: 'UNCAUGHT_ERROR', payload: response });
+ }
+};
diff --git a/src/utils/NotificationApi.js b/src/utils/NotificationApi.js
new file mode 100644
index 0000000..3e3662a
--- /dev/null
+++ b/src/utils/NotificationApi.js
@@ -0,0 +1,31 @@
+import axios from 'axios';
+import store from 'store/index';
+import queryString from 'query-string';
+
+export const API_UNI_OIL = axios.create({
+ baseURL: process.env.REACT_APP_NOTIF_API,
+ responseType: 'json',
+});
+
+export const fetchData = async (url) => {
+ return await false;
+};
+
+export const API_GET_NOTIF = async (url, params) => {
+ console.log(await API_UNI_OIL.get(url, { params }));
+ try {
+ return await API_UNI_OIL.get(url, { params });
+ } catch ({ response }) {
+ if (response.status === 422) return response;
+ store.dispatch({ type: 'UNCAUGHT_ERROR', payload: response });
+ }
+};
+
+export const API_POST_NOTIF = async (url, params) => {
+ try {
+ return await API_UNI_OIL.post(url, params);
+ } catch ({ response }) {
+ if (response.status === 422) return response;
+ store.dispatch({ type: 'UNCAUGHT_ERROR', payload: response });
+ }
+};
diff --git a/src/utils/StationApi.js b/src/utils/StationApi.js
new file mode 100644
index 0000000..4c8c55f
--- /dev/null
+++ b/src/utils/StationApi.js
@@ -0,0 +1,83 @@
+import axios from 'axios';
+import store from 'store/index';
+import queryString from 'query-string';
+
+export const API_CSV = axios.create({
+ baseURL: process.env.REACT_APP_STATION_API,
+ headers: {
+ 'X-Requested-With':'station-locator-api'
+ },
+ responseType: 'text',
+});
+
+export const API_UNI_OIL = axios.create({
+ baseURL: process.env.REACT_APP_STATION_API,
+ headers: {
+ 'X-Requested_Width':'station-locator-api'
+ },
+ responseType: 'json',
+});
+
+export const fetchData = async (url) => {
+ return await false;
+};
+
+export const API_GET_BRANCH = async (url, params) => {
+ try {
+ return await API_UNI_OIL.get(url, { params });
+ } catch ({ response }) {
+ if (response.status === 422) return response;
+ store.dispatch({ type: 'UNCAUGHT_ERROR', payload: response });
+ }
+};
+
+export const API_POST_BRANCH = async (url, params) => {
+ try {
+ return await API_UNI_OIL.post(url, params);
+ } catch ({ response }) {
+ if (response.status === 422) return response;
+ store.dispatch({ type: 'UNCAUGHT_ERROR', payload: response });
+ }
+};
+export const API_PUT_BRANCH = async (url, params) => {
+ try {
+ return await API_UNI_OIL.put(url, params);
+ } catch ({ response }) {
+ if (response.status === 422) return response;
+ store.dispatch({ type: 'UNCAUGHT_ERROR', payload: response });
+ }
+};
+export const API_DELETE_BRANCH = async (url, params) => {
+ try {
+ return await API_UNI_OIL.delete(url, params);
+ } catch ({ response }) {
+ if (response.status === 422) return response;
+ store.dispatch({ type: 'UNCAUGHT_ERROR', payload: response });
+ }
+};
+
+export const API_POST_FUEL = async (url, params) => {
+ try {
+ return await API_UNI_OIL.post(url, params);
+ } catch ({ response }) {
+ if (response.status === 422) return response;
+ store.dispatch({ type: 'UNCAUGHT_ERROR', payload: response });
+ }
+};
+export const API_PUT_FUEL = async (url, params) => {
+ try {
+ return await API_UNI_OIL.put(url, params);
+ } catch ({ response }) {
+ if (response.status === 422) return response;
+ store.dispatch({ type: 'UNCAUGHT_ERROR', payload: response });
+ }
+};
+export const API_GET_FUELS = async (url, params) => {
+ console.log(await API_UNI_OIL.get(url, { params }));
+ try {
+ return await API_UNI_OIL.get(url, { params });
+ } catch ({ response }) {
+ if (response.status === 422) return response;
+ store.dispatch({ type: 'UNCAUGHT_ERROR', payload: response });
+ }
+};
diff --git a/src/utils/cookie.js b/src/utils/cookie.js
new file mode 100644
index 0000000..0ba11e8
--- /dev/null
+++ b/src/utils/cookie.js
@@ -0,0 +1,49 @@
+import Cookies from "universal-cookie";
+import CryptoJSEncUtf8 from "crypto-js/enc-utf8";
+import CryptoJSAES from "crypto-js/aes";
+
+export const COOKIE_NAME = "FRONT_END_REST";
+const PUBLIC_KEY = "PUBLIC_00001";
+const timeOut = 60;
+const cookies = new Cookies();
+
+export function setCookie(params, name = COOKIE_NAME) {
+ Date.prototype.addHours = function(h) {
+ this.setHours(this.getHours() + h);
+ return this;
+ }
+
+ let expiration = new Date().addHours(timeOut);
+ let options = { path: '/', expires: expiration };
+
+ try {
+ if (params instanceof Object) {
+ cookies.set(name.toUpperCase(), CryptoJSAES.encrypt(JSON.stringify(params), PUBLIC_KEY).toString(), options);
+ } else {
+ throw new TypeError('setCookie params should be object type.', "utils/cookies.js", 20);
+ }
+ } catch(e) {
+ console.error(e);
+ }
+
+ return true;
+}
+
+export function getCookie(name = COOKIE_NAME) {
+ let ctext = cookies.get(name.toUpperCase());
+
+ if (!ctext)
+ return undefined;
+
+ try {
+ let bytes = CryptoJSAES.decrypt(ctext.toString(), PUBLIC_KEY);
+ return JSON.parse(bytes.toString(CryptoJSEncUtf8));
+ } catch (e) {
+ return undefined;
+ }
+}
+
+export function removeCookie(name = COOKIE_NAME) {
+ cookies.remove(name, { path: '/' });
+ return true;
+}
\ No newline at end of file
diff --git a/src/utils/encrypto.js b/src/utils/encrypto.js
new file mode 100644
index 0000000..93ee9cb
--- /dev/null
+++ b/src/utils/encrypto.js
@@ -0,0 +1,40 @@
+import crypto from "crypto";
+import buffer from "buffer";
+import { getCookie } from './cookie';
+
+
+const algorithm = 'aes-256-ctr'
+const password = getCookie(process.env.REACT_APP_TOKEN)
+
+export function encrypt(text){
+
+ let cipher = crypto.createCipher(algorithm,password.token)
+
+ let crypted = cipher.update(text,'utf8','hex')
+ crypted += cipher.final('hex');
+ return crypted;
+}
+
+ export function decrypt(text){
+
+ let decipher = crypto.createDecipher(algorithm,password.token)
+ let dec = decipher.update(text,'hex','utf8')
+ dec += decipher.final('utf8');
+
+ console.log('====================================');
+ console.log(dec, "decrypt");
+ console.log('====================================');
+
+ let regexp = /^[0-9a-fA-F]+$/;
+
+
+ if (regexp.test(dec)) {
+ alert("hex")
+ return dec
+ } else {
+ alert("Not hex")
+ return false
+ }
+
+}
+
diff --git a/src/utils/helper.js b/src/utils/helper.js
new file mode 100644
index 0000000..456ca8c
--- /dev/null
+++ b/src/utils/helper.js
@@ -0,0 +1,34 @@
+export const fnQueryParams = (params) => {
+ let query = '';
+ for (var key in params) {
+ if(params[key]){
+ if(Array.isArray(params[key])){
+ for (let index = 0; index < params[key].length; index++) {
+ const value = params[key][index];
+ query += encodeURIComponent(key) + '=' + encodeURIComponent(value) + '&';
+ }
+ }else{
+ query += encodeURIComponent(key) + '=' + encodeURIComponent(params[key]) + '&';
+ }
+ }
+ }
+ if(query.length === 0) return '';
+
+ query = query.slice(0, -1);
+ return "?"+query;
+}
+
+export const isEmpty = (obj) => {
+ for(var key in obj) {
+ if(obj.hasOwnProperty(key))
+ return false;
+ }
+ return true;
+}
+
+export const apiFormValidation = ({data, setErrors}) => {
+ let errors = {};
+ Object.keys(data).map( (key) => errors = { ...errors, [key] : data[key][0] });
+ setErrors(errors);
+}
+
\ No newline at end of file
diff --git a/src/utils/logs.js b/src/utils/logs.js
new file mode 100644
index 0000000..c24b64e
--- /dev/null
+++ b/src/utils/logs.js
@@ -0,0 +1,41 @@
+import debug from 'debug';
+
+const BASE = 'awesome-react-app';
+const COLOURS = {
+ trace: 'lightblue',
+ info: 'blue',
+ warn: 'pink',
+ error: 'red'
+}; // choose better colours :)
+
+class Log {
+ generateMessage(level, message, source) {
+ // Set the prefix which will cause debug to enable the message
+ const namespace = `${BASE}:${level}`;
+ const createDebug = debug(namespace);
+
+ // Set the colour of the message based on the level
+ createDebug.color = COLOURS[level];
+
+ if(source) { createDebug(source, message); }
+ else { createDebug(message); }
+ }
+
+ trace(message, source) {
+ return this.generateMessage('trace', message, source);
+ }
+
+ info(message, source) {
+ return this.generateMessage('info', message, source);
+ }
+
+ warn(message, source) {
+ return this.generateMessage('warn', message, source);
+ }
+
+ error(message, source) {
+ return this.generateMessage('error', message, source);
+ }
+}
+
+export default new Log();
\ No newline at end of file
diff --git a/src/utils/sodium.js b/src/utils/sodium.js
new file mode 100644
index 0000000..e654f7c
--- /dev/null
+++ b/src/utils/sodium.js
@@ -0,0 +1,27 @@
+
+
+const _sodium = require('libsodium-wrappers');
+(async() => {
+ await _sodium.ready;
+ const sodium = _sodium;
+
+ let key = sodium.crypto_secretstream_xchacha20poly1305_keygen();
+
+ let res = sodium.crypto_secretstream_xchacha20poly1305_init_push(key);
+ let [state_out, header] = [res.state, res.header];
+ let c1 = sodium.crypto_secretstream_xchacha20poly1305_push(state_out,
+ sodium.from_string('message 1'), null,
+ sodium.crypto_secretstream_xchacha20poly1305_TAG_MESSAGE);
+ let c2 = sodium.crypto_secretstream_xchacha20poly1305_push(state_out,
+ sodium.from_string('message 2'), null,
+ sodium.crypto_secretstream_xchacha20poly1305_TAG_FINAL);
+
+ let state_in = sodium.crypto_secretstream_xchacha20poly1305_init_pull(header, key);
+ let r1 = sodium.crypto_secretstream_xchacha20poly1305_pull(state_in, c1);
+ let [m1, tag1] = [sodium.to_string(r1.message), r1.tag];
+ let r2 = sodium.crypto_secretstream_xchacha20poly1305_pull(state_in, c2);
+ let [m2, tag2] = [sodium.to_string(r2.message), r2.tag];
+
+ console.log(m1);
+ console.log(m2);
+})();
\ No newline at end of file
diff --git a/variables.json b/variables.json
new file mode 100644
index 0000000..9b56050
--- /dev/null
+++ b/variables.json
@@ -0,0 +1,28 @@
+{
+ "primary-color": "#1890ff",
+ "info-color": "#1890ff",
+ "success-color": "#52c41a",
+ "processing-color": "#1890ff",
+ "error-color": "#f5222d",
+ "highlight-color": "#f5222d",
+ "warning-color": "#faad14",
+ "normal-color": "#d9d9d9",
+ "yellow-6": "#faad14",
+ "body-background": "#fff",
+ "component-background": "#fff",
+ "font-family-no-number": "\"Chinese Quote\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"PingFang SC\", \"Hiragino Sans GB\", \"Microsoft YaHei\", \"Helvetica Neue\", Helvetica, Arial, sans-serif",
+ "font-family": "\"Monospaced Number\", \"Chinese Quote\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"PingFang SC\", \"Hiragino Sans GB\", \"Microsoft YaHei\", \"Helvetica Neue\", Helvetica, Arial, sans-serif",
+ "code-family": "Consolas, Menlo, Courier, monospace",
+ "heading-color": "rgba(0, 0, 0, 0.85)",
+ "text-color": "rgba(0, 0, 0, 0.65)",
+ "text-color-secondary": "rgba(0, 0, 0, 0.45)",
+ "heading-color-dark": "#ffffff",
+ "text-color-dark": "rgba(255, 255, 255, 0.85)",
+ "text-color-secondary-dark": "rgba(255, 255, 255, 0.65)",
+ "font-size-base": "21px",
+ "font-size-lg": "23px",
+ "font-size-sm": "12px",
+ "line-height-base": "1.5",
+ "border-radius-base": "4px",
+ "border-radius-sm": "2px"
+}
\ No newline at end of file
diff --git a/yarn.lock b/yarn.lock
new file mode 100644
index 0000000..2fce7ff
--- /dev/null
+++ b/yarn.lock
@@ -0,0 +1,11336 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+"@ant-design/colors@^3.1.0":
+ version "3.2.2"
+ resolved "https://registry.yarnpkg.com/@ant-design/colors/-/colors-3.2.2.tgz#5ad43d619e911f3488ebac303d606e66a8423903"
+ integrity sha512-YKgNbG2dlzqMhA9NtI3/pbY16m3Yl/EeWBRa+lB1X1YaYxHrxNexiQYCLTWO/uDvAjLFMEDU+zR901waBtMtjQ==
+ dependencies:
+ tinycolor2 "^1.4.1"
+
+"@ant-design/create-react-context@^0.2.4":
+ version "0.2.5"
+ resolved "https://registry.yarnpkg.com/@ant-design/create-react-context/-/create-react-context-0.2.5.tgz#f5f5a9163b4772097712837397ad30e22e79f858"
+ integrity sha512-1rMAa4qgP2lfl/QBH9i78+Gjxtj9FTMpMyDGZsEBW5Kih72EuUo9958mV8PgpRkh4uwPSQ7vVZWXeyNZXVAFDg==
+ dependencies:
+ gud "^1.0.0"
+ warning "^4.0.3"
+
+"@ant-design/css-animation@^1.7.2":
+ version "1.7.3"
+ resolved "https://registry.yarnpkg.com/@ant-design/css-animation/-/css-animation-1.7.3.tgz#60a1c970014e86b28f940510d69e503e428f1136"
+ integrity sha512-LrX0OGZtW+W6iLnTAqnTaoIsRelYeuLZWsrmBJFUXDALQphPsN8cE5DCsmoSlL0QYb94BQxINiuS70Ar/8BNgA==
+
+"@ant-design/icons-react@~2.0.1":
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/@ant-design/icons-react/-/icons-react-2.0.1.tgz#17a2513571ab317aca2927e58cea25dd31e536fb"
+ integrity sha512-r1QfoltMuruJZqdiKcbPim3d8LNsVPB733U0gZEUSxBLuqilwsW28K2rCTWSMTjmFX7Mfpf+v/wdiFe/XCqThw==
+ dependencies:
+ "@ant-design/colors" "^3.1.0"
+ babel-runtime "^6.26.0"
+
+"@ant-design/icons-svg@^4.0.0":
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/@ant-design/icons-svg/-/icons-svg-4.1.0.tgz#480b025f4b20ef7fe8f47d4a4846e4fee84ea06c"
+ integrity sha512-Fi03PfuUqRs76aI3UWYpP864lkrfPo0hluwGqh7NJdLhvH4iRDc3jbJqZIvRDLHKbXrvAfPPV3+zjUccfFvWOQ==
+
+"@ant-design/icons@4.0.0":
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/@ant-design/icons/-/icons-4.0.0.tgz#cdb870777f185422cfc0e235392592d3e4795ef6"
+ integrity sha512-oJTNTyo/6DjVmK/DSa58A+7gZRGgzBCAEJ9Pfa6U+BAZO28tvOE3YzlQd9gq9Qu6d47JL1ixyID3qsmRFqitlQ==
+ dependencies:
+ "@ant-design/colors" "^3.1.0"
+ "@ant-design/icons-svg" "^4.0.0"
+ classnames "^2.2.6"
+ insert-css "^2.0.0"
+ rc-util "^4.9.0"
+
+"@ant-design/icons@~2.1.1":
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/@ant-design/icons/-/icons-2.1.1.tgz#7b9c08dffd4f5d41db667d9dbe5e0107d0bd9a4a"
+ integrity sha512-jCH+k2Vjlno4YWl6g535nHR09PwCEmTBKAG6VqF+rhkrSPRLfgpU2maagwbZPLjaHuU5Jd1DFQ2KJpQuI6uG8w==
+
+"@babel/helper-module-imports@^7.0.0":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz#4c5c54be04bd31670a7382797d75b9fa2e5b5620"
+ integrity sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==
+ dependencies:
+ "@babel/types" "^7.10.4"
+
+"@babel/helper-validator-identifier@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2"
+ integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==
+
+"@babel/runtime@7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.0.0.tgz#adeb78fedfc855aa05bc041640f3f6f98e85424c"
+ integrity sha512-7hGhzlcmg01CvH1EHdSPVXYX1aJ8KCEyz6I9xYIi/asDtzBPMyMhVibhM/K6g/5qnKBwjZtp10bNZIEFTRW1MA==
+ dependencies:
+ regenerator-runtime "^0.12.0"
+
+"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2":
+ version "7.11.0"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.11.0.tgz#f10245877042a815e07f7e693faff0ae9d3a2aac"
+ integrity sha512-qArkXsjJq7H+T86WrIFV0Fnu/tNOkZ4cgXmjkzAu3b/58D5mFIO8JH/y77t7C9q0OdDRdh9s7Ue5GasYssxtXw==
+ dependencies:
+ regenerator-runtime "^0.13.4"
+
+"@babel/types@^7.10.4":
+ version "7.11.0"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.11.0.tgz#2ae6bf1ba9ae8c3c43824e5861269871b206e90d"
+ integrity sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.10.4"
+ lodash "^4.17.19"
+ to-fast-properties "^2.0.0"
+
+"@iarna/cli@^1.2.0":
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/@iarna/cli/-/cli-1.2.0.tgz#0f7af5e851afe895104583c4ca07377a8094d641"
+ integrity sha512-ukITQAqVs2n9HGmn3car/Ir7d3ta650iXhrG7pjr3EWdFmJuuOVWgYsu7ftsSe5VifEFFhjxVuX9+8F7L8hwcA==
+ dependencies:
+ signal-exit "^3.0.2"
+ update-notifier "^2.2.0"
+ yargs "^8.0.2"
+
+"@react-google-maps/api@^1.9.7":
+ version "1.9.9"
+ resolved "https://registry.yarnpkg.com/@react-google-maps/api/-/api-1.9.9.tgz#6cf2e7429770ca9b9454224e9b48c66d315256a8"
+ integrity sha512-yy/mh0uqF5JCGGzoGYaBoFBbtdr1XKgRlQvalOQ1pITguhRwRIELOHesIJQvAOrdqgCmE3noCa838pFIPZ1Sag==
+ dependencies:
+ "@react-google-maps/infobox" "1.9.9"
+ "@react-google-maps/marker-clusterer" "1.9.9"
+ acorn "7.3.1"
+ acorn-jsx "^5.2.0"
+ invariant "2.2.4"
+
+"@react-google-maps/infobox@1.9.9":
+ version "1.9.9"
+ resolved "https://registry.yarnpkg.com/@react-google-maps/infobox/-/infobox-1.9.9.tgz#cef278590524604e453cd6792a4f48f22e94c3a5"
+ integrity sha512-pneWal21CHa7eSjBLy5aG11boFXHPKvwV88K2TuwzQV1ncDOIWoZO/S9fZQc6Pzd4F0V8tf9la1c9P9audDiMQ==
+
+"@react-google-maps/marker-clusterer@1.9.9":
+ version "1.9.9"
+ resolved "https://registry.yarnpkg.com/@react-google-maps/marker-clusterer/-/marker-clusterer-1.9.9.tgz#5b967d26c12a2726700720570d1afff47598d922"
+ integrity sha512-MA+Z+S77csV+httWjZhmE1pOJitmB9Jk1BnNO7ub+81jae5ipY3lf7kXpVBLeNmWy/AXs61bchuXRyzsKyLdqQ==
+
+"@types/cookie@^0.3.1":
+ version "0.3.3"
+ resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.3.3.tgz#85bc74ba782fb7aa3a514d11767832b0e3bc6803"
+ integrity sha512-LKVP3cgXBT9RYj+t+9FDKwS5tdI+rPBXaNSkma7hvqy35lc7mAokC2zsqWJH0LaqIt3B962nuYI77hsJoT1gow==
+
+"@types/node@*":
+ version "14.0.27"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.27.tgz#a151873af5a5e851b51b3b065c9e63390a9e0eb1"
+ integrity sha512-kVrqXhbclHNHGu9ztnAwSncIgJv/FaxmzXJvGXNdcCpV1b8u1/Mi6z6m0vwy0LzKeXFTPLH0NzwmoJ3fNCIq0g==
+
+"@types/object-assign@^4.0.30":
+ version "4.0.30"
+ resolved "https://registry.yarnpkg.com/@types/object-assign/-/object-assign-4.0.30.tgz#8949371d5a99f4381ee0f1df0a9b7a187e07e652"
+ integrity sha1-iUk3HVqZ9Dge4PHfCpt6GH4H5lI=
+
+"@types/papaparse@^5.0.3", "@types/papaparse@^5.0.4":
+ version "5.0.6"
+ resolved "https://registry.yarnpkg.com/@types/papaparse/-/papaparse-5.0.6.tgz#4fee1a17dc24fed839d276c807f875bd653abbb4"
+ integrity sha512-fCQnycsOSviVLtxuydQ82IhTAv1lSPIA8zY3sYaRHI00lERsa7QSA616HsQZixqEF2asGXZag3hM13N8bm/jAw==
+ dependencies:
+ "@types/node" "*"
+
+"@types/prop-types@*":
+ version "15.7.3"
+ resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7"
+ integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==
+
+"@types/react-slick@^0.23.4":
+ version "0.23.4"
+ resolved "https://registry.yarnpkg.com/@types/react-slick/-/react-slick-0.23.4.tgz#c97e2a9e7e3d1933c68593b8e82752fab1e8ce53"
+ integrity sha512-vXoIy4GUfB7/YgqubR4H7RALo+pRdMYCeLgWwV3MPwl5pggTlEkFBTF19R7u+LJc85uMqC7RfsbkqPLMQ4ab+A==
+ dependencies:
+ "@types/react" "*"
+
+"@types/react@*":
+ version "16.9.43"
+ resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.43.tgz#c287f23f6189666ee3bebc2eb8d0f84bcb6cdb6b"
+ integrity sha512-PxshAFcnJqIWYpJbLPriClH53Z2WlJcVZE+NP2etUtWQs2s7yIMj3/LDKZT/5CHJ/F62iyjVCDu2H3jHEXIxSg==
+ dependencies:
+ "@types/prop-types" "*"
+ csstype "^2.2.0"
+
+JSONStream@^1.3.4, JSONStream@^1.3.5:
+ version "1.3.5"
+ resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0"
+ integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==
+ dependencies:
+ jsonparse "^1.2.0"
+ through ">=2.2.7 <3"
+
+abab@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.4.tgz#5faad9c2c07f60dd76770f71cf025b62a63cfd4e"
+ integrity sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=
+
+abbrev@1, abbrev@~1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
+ integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
+
+accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7:
+ version "1.3.7"
+ resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd"
+ integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==
+ dependencies:
+ mime-types "~2.1.24"
+ negotiator "0.6.2"
+
+acorn-dynamic-import@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz#c752bd210bef679501b6c6cb7fc84f8f47158cc4"
+ integrity sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=
+ dependencies:
+ acorn "^4.0.3"
+
+acorn-globals@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-3.1.0.tgz#fd8270f71fbb4996b004fa880ee5d46573a731bf"
+ integrity sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8=
+ dependencies:
+ acorn "^4.0.4"
+
+acorn-jsx@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b"
+ integrity sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=
+ dependencies:
+ acorn "^3.0.4"
+
+acorn-jsx@^5.2.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe"
+ integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==
+
+acorn@7.3.1:
+ version "7.3.1"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.3.1.tgz#85010754db53c3fbaf3b9ea3e083aa5c5d147ffd"
+ integrity sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA==
+
+acorn@^3.0.4:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
+ integrity sha1-ReN/s56No/JbruP/U2niu18iAXo=
+
+acorn@^4.0.3, acorn@^4.0.4:
+ version "4.0.13"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787"
+ integrity sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=
+
+acorn@^5.0.0, acorn@^5.5.0:
+ version "5.7.4"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e"
+ integrity sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==
+
+add-dom-event-listener@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/add-dom-event-listener/-/add-dom-event-listener-1.1.0.tgz#6a92db3a0dd0abc254e095c0f1dc14acbbaae310"
+ integrity sha512-WCxx1ixHT0GQU9hb0KI/mhgRQhnU+U3GvwY6ZvVjYq8rsihIGoaIOUbY0yMPBxLH5MDtr0kz3fisWGNcbWW7Jw==
+ dependencies:
+ object-assign "4.x"
+
+address@1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/address/-/address-1.0.3.tgz#b5f50631f8d6cec8bd20c963963afb55e06cbce9"
+ integrity sha512-z55ocwKBRLryBs394Sm3ushTtBeg6VAeuku7utSoSnsJKvKcnXFIyC6vh27n3rXyxSgkJBBCAvyOn7gSUcTYjg==
+
+address@^1.0.1:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6"
+ integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==
+
+agent-base@4, agent-base@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee"
+ integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==
+ dependencies:
+ es6-promisify "^5.0.0"
+
+agent-base@~4.2.1:
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9"
+ integrity sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==
+ dependencies:
+ es6-promisify "^5.0.0"
+
+agentkeepalive@^3.4.1:
+ version "3.5.2"
+ resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-3.5.2.tgz#a113924dd3fa24a0bc3b78108c450c2abee00f67"
+ integrity sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ==
+ dependencies:
+ humanize-ms "^1.2.1"
+
+ajv-keywords@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762"
+ integrity sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=
+
+ajv-keywords@^3.0.0:
+ version "3.5.2"
+ resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d"
+ integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==
+
+ajv@^5.0.0, ajv@^5.1.5, ajv@^5.2.0:
+ version "5.5.2"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965"
+ integrity sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=
+ dependencies:
+ co "^4.6.0"
+ fast-deep-equal "^1.0.0"
+ fast-json-stable-stringify "^2.0.0"
+ json-schema-traverse "^0.3.0"
+
+ajv@^6.0.1, ajv@^6.12.3:
+ version "6.12.3"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.3.tgz#18c5af38a111ddeb4f2697bd78d68abc1cabd706"
+ integrity sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==
+ dependencies:
+ fast-deep-equal "^3.1.1"
+ fast-json-stable-stringify "^2.0.0"
+ json-schema-traverse "^0.4.1"
+ uri-js "^4.2.2"
+
+align-text@^0.1.1, align-text@^0.1.3:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117"
+ integrity sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=
+ dependencies:
+ kind-of "^3.0.2"
+ longest "^1.0.1"
+ repeat-string "^1.5.2"
+
+alphanum-sort@^1.0.1, alphanum-sort@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3"
+ integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=
+
+ansi-align@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f"
+ integrity sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=
+ dependencies:
+ string-width "^2.0.0"
+
+ansi-escapes@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e"
+ integrity sha1-06ioOzGapneTZisT52HHkRQiMG4=
+
+ansi-escapes@^3.0.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b"
+ integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==
+
+ansi-html@0.0.7:
+ version "0.0.7"
+ resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e"
+ integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4=
+
+ansi-regex@^2.0.0, ansi-regex@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
+ integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8=
+
+ansi-regex@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
+ integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
+
+ansi-regex@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997"
+ integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==
+
+ansi-styles@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
+ integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=
+
+ansi-styles@^3.0.0, ansi-styles@^3.2.0, ansi-styles@^3.2.1:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
+ integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
+ dependencies:
+ color-convert "^1.9.0"
+
+ansicolors@~0.3.2:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.3.2.tgz#665597de86a9ffe3aa9bfbe6cae5c6ea426b4979"
+ integrity sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk=
+
+ansistyles@~0.1.3:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/ansistyles/-/ansistyles-0.1.3.tgz#5de60415bda071bb37127854c864f41b23254539"
+ integrity sha1-XeYEFb2gcbs3EnhUyGT0GyMlRTk=
+
+antd-input-password@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/antd-input-password/-/antd-input-password-0.3.0.tgz#9ec2504d24d13ae987d122d48bda85ad14e8d557"
+ integrity sha512-g/jrZLeRRLu3HaMqXRNdVmAH+eGagDa/EVWtdWd47yZvKKl2jpD1ha8nPpSIT+Iogc6dj9SA4cvCU8tYUYOKeg==
+ dependencies:
+ prop-types "^15.6.0"
+ styled-components "^3.2.3"
+
+antd@^3.9.1:
+ version "3.26.18"
+ resolved "https://registry.yarnpkg.com/antd/-/antd-3.26.18.tgz#541e26a6865dd20e5d192027c45599b963146e67"
+ integrity sha512-TPuacNJJNPji+LnapU46uWGqi+6JlyH75paMNs95IH0F7gGYtp4oSkua88gGsoAaUbDxTIF+cWI9mdIsr7ywlw==
+ dependencies:
+ "@ant-design/create-react-context" "^0.2.4"
+ "@ant-design/icons" "~2.1.1"
+ "@ant-design/icons-react" "~2.0.1"
+ "@types/react-slick" "^0.23.4"
+ array-tree-filter "^2.1.0"
+ babel-runtime "6.x"
+ classnames "~2.2.6"
+ copy-to-clipboard "^3.2.0"
+ css-animation "^1.5.0"
+ dom-closest "^0.2.0"
+ enquire.js "^2.1.6"
+ is-mobile "^2.1.0"
+ lodash "^4.17.13"
+ moment "^2.24.0"
+ omit.js "^1.0.2"
+ prop-types "^15.7.2"
+ raf "^3.4.1"
+ rc-animate "^2.10.2"
+ rc-calendar "~9.15.7"
+ rc-cascader "~0.17.4"
+ rc-checkbox "~2.1.6"
+ rc-collapse "~1.11.3"
+ rc-dialog "~7.6.0"
+ rc-drawer "~3.1.1"
+ rc-dropdown "~2.4.1"
+ rc-editor-mention "^1.1.13"
+ rc-form "^2.4.10"
+ rc-input-number "~4.5.0"
+ rc-mentions "~0.4.0"
+ rc-menu "~7.5.1"
+ rc-notification "~3.3.1"
+ rc-pagination "~1.20.11"
+ rc-progress "~2.5.0"
+ rc-rate "~2.5.0"
+ rc-resize-observer "^0.1.0"
+ rc-select "~9.2.0"
+ rc-slider "~8.7.1"
+ rc-steps "~3.5.0"
+ rc-switch "~1.9.0"
+ rc-table "~6.10.5"
+ rc-tabs "~9.7.0"
+ rc-time-picker "~3.7.1"
+ rc-tooltip "~3.7.3"
+ rc-tree "~2.1.0"
+ rc-tree-select "~2.9.1"
+ rc-trigger "^2.6.2"
+ rc-upload "~2.9.1"
+ rc-util "^4.16.1"
+ react-lazy-load "^3.0.13"
+ react-lifecycles-compat "^3.0.4"
+ react-slick "~0.25.2"
+ resize-observer-polyfill "^1.5.1"
+ shallowequal "^1.1.0"
+ warning "~4.0.3"
+
+anymatch@^1.3.0:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a"
+ integrity sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==
+ dependencies:
+ micromatch "^2.1.5"
+ normalize-path "^2.0.0"
+
+anymatch@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb"
+ integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==
+ dependencies:
+ micromatch "^3.1.4"
+ normalize-path "^2.1.1"
+
+anymatch@~3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142"
+ integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==
+ dependencies:
+ normalize-path "^3.0.0"
+ picomatch "^2.0.4"
+
+append-transform@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991"
+ integrity sha1-126/jKlNJ24keja61EpLdKthGZE=
+ dependencies:
+ default-require-extensions "^1.0.0"
+
+aproba@^1.0.3, aproba@^1.1.1, aproba@^1.1.2:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
+ integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==
+
+"aproba@^1.1.2 || 2", aproba@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc"
+ integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==
+
+archy@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40"
+ integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=
+
+are-we-there-yet@~1.1.2:
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21"
+ integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==
+ dependencies:
+ delegates "^1.0.0"
+ readable-stream "^2.0.6"
+
+argparse@^1.0.7:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
+ integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
+ dependencies:
+ sprintf-js "~1.0.2"
+
+aria-query@^0.7.0:
+ version "0.7.1"
+ resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-0.7.1.tgz#26cbb5aff64144b0a825be1846e0b16cfa00b11e"
+ integrity sha1-Jsu1r/ZBRLCoJb4YRuCxbPoAsR4=
+ dependencies:
+ ast-types-flow "0.0.7"
+ commander "^2.11.0"
+
+arr-diff@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf"
+ integrity sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=
+ dependencies:
+ arr-flatten "^1.0.1"
+
+arr-diff@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
+ integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=
+
+arr-flatten@^1.0.1, arr-flatten@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
+ integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==
+
+arr-union@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
+ integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=
+
+array-equal@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93"
+ integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=
+
+array-filter@~0.0.0:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec"
+ integrity sha1-fajPLiZijtcygDWB/SH2fKzS7uw=
+
+array-find-index@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1"
+ integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=
+
+array-flatten@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
+ integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=
+
+array-flatten@^2.1.0:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099"
+ integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==
+
+array-includes@^3.0.3, array-includes@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348"
+ integrity sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==
+ dependencies:
+ define-properties "^1.1.3"
+ es-abstract "^1.17.0"
+ is-string "^1.0.5"
+
+array-map@~0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662"
+ integrity sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=
+
+array-reduce@~0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b"
+ integrity sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=
+
+array-tree-filter@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/array-tree-filter/-/array-tree-filter-2.1.0.tgz#873ac00fec83749f255ac8dd083814b4f6329190"
+ integrity sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw==
+
+array-union@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39"
+ integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=
+ dependencies:
+ array-uniq "^1.0.1"
+
+array-uniq@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6"
+ integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=
+
+array-unique@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
+ integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=
+
+array-unique@^0.3.2:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
+ integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=
+
+arrify@^1.0.0, arrify@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
+ integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=
+
+asap@^2.0.0, asap@~2.0.3:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46"
+ integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=
+
+asn1.js@^4.0.0:
+ version "4.10.1"
+ resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0"
+ integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==
+ dependencies:
+ bn.js "^4.0.0"
+ inherits "^2.0.1"
+ minimalistic-assert "^1.0.0"
+
+asn1@~0.2.3:
+ version "0.2.4"
+ resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136"
+ integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==
+ dependencies:
+ safer-buffer "~2.1.0"
+
+assert-plus@1.0.0, assert-plus@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
+ integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=
+
+assert@^1.1.1:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb"
+ integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==
+ dependencies:
+ object-assign "^4.1.1"
+ util "0.10.3"
+
+assign-symbols@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
+ integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=
+
+ast-types-flow@0.0.7:
+ version "0.0.7"
+ resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad"
+ integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0=
+
+async-each@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf"
+ integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==
+
+async-validator@~1.11.3:
+ version "1.11.5"
+ resolved "https://registry.yarnpkg.com/async-validator/-/async-validator-1.11.5.tgz#9d43cf49ef6bb76be5442388d19fb9a6e47597ea"
+ integrity sha512-XNtCsMAeAH1pdLMEg1z8/Bb3a8cdCbui9QbJATRFHHHW5kT6+NPI3zSVQUXgikTFITzsg+kYY5NTWhM2Orwt9w==
+
+async@^2.1.2, async@^2.1.4, async@^2.4.1, async@^2.6.2:
+ version "2.6.3"
+ resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff"
+ integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==
+ dependencies:
+ lodash "^4.17.14"
+
+asynckit@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
+ integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
+
+atob@^2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
+ integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
+
+autoprefixer@7.1.6:
+ version "7.1.6"
+ resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-7.1.6.tgz#fb933039f74af74a83e71225ce78d9fd58ba84d7"
+ integrity sha512-C9yv/UF3X+eJTi/zvfxuyfxmLibYrntpF3qoJYrMeQwgUJOZrZvpJiMG2FMQ3qnhWtF/be4pYONBBw95ZGe3vA==
+ dependencies:
+ browserslist "^2.5.1"
+ caniuse-lite "^1.0.30000748"
+ normalize-range "^0.1.2"
+ num2fraction "^1.2.2"
+ postcss "^6.0.13"
+ postcss-value-parser "^3.2.3"
+
+autoprefixer@^6.3.1:
+ version "6.7.7"
+ resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.7.7.tgz#1dbd1c835658e35ce3f9984099db00585c782014"
+ integrity sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=
+ dependencies:
+ browserslist "^1.7.6"
+ caniuse-db "^1.0.30000634"
+ normalize-range "^0.1.2"
+ num2fraction "^1.2.2"
+ postcss "^5.2.16"
+ postcss-value-parser "^3.2.3"
+
+aws-sign2@~0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
+ integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=
+
+aws4@^1.8.0:
+ version "1.10.0"
+ resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.0.tgz#a17b3a8ea811060e74d47d306122400ad4497ae2"
+ integrity sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==
+
+axios@^0.18.0:
+ version "0.18.1"
+ resolved "https://registry.yarnpkg.com/axios/-/axios-0.18.1.tgz#ff3f0de2e7b5d180e757ad98000f1081b87bcea3"
+ integrity sha512-0BfJq4NSfQXd+SkFdrvFbG7addhYSBA2mQwISr46pD6E5iqkWg02RAs8vyTT/j0RTnoYmeXauBuSv1qKwR179g==
+ dependencies:
+ follow-redirects "1.5.10"
+ is-buffer "^2.0.2"
+
+axobject-query@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-0.1.0.tgz#62f59dbc59c9f9242759ca349960e7a2fe3c36c0"
+ integrity sha1-YvWdvFnJ+SQnWco0mWDnov48NsA=
+ dependencies:
+ ast-types-flow "0.0.7"
+
+babel-code-frame@6.26.0, babel-code-frame@^6.11.0, babel-code-frame@^6.22.0, babel-code-frame@^6.26.0:
+ version "6.26.0"
+ resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b"
+ integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=
+ dependencies:
+ chalk "^1.1.3"
+ esutils "^2.0.2"
+ js-tokens "^3.0.2"
+
+babel-core@6.26.0:
+ version "6.26.0"
+ resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.0.tgz#af32f78b31a6fcef119c87b0fd8d9753f03a0bb8"
+ integrity sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=
+ dependencies:
+ babel-code-frame "^6.26.0"
+ babel-generator "^6.26.0"
+ babel-helpers "^6.24.1"
+ babel-messages "^6.23.0"
+ babel-register "^6.26.0"
+ babel-runtime "^6.26.0"
+ babel-template "^6.26.0"
+ babel-traverse "^6.26.0"
+ babel-types "^6.26.0"
+ babylon "^6.18.0"
+ convert-source-map "^1.5.0"
+ debug "^2.6.8"
+ json5 "^0.5.1"
+ lodash "^4.17.4"
+ minimatch "^3.0.4"
+ path-is-absolute "^1.0.1"
+ private "^0.1.7"
+ slash "^1.0.0"
+ source-map "^0.5.6"
+
+babel-core@^6.0.0, babel-core@^6.26.0:
+ version "6.26.3"
+ resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207"
+ integrity sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==
+ dependencies:
+ babel-code-frame "^6.26.0"
+ babel-generator "^6.26.0"
+ babel-helpers "^6.24.1"
+ babel-messages "^6.23.0"
+ babel-register "^6.26.0"
+ babel-runtime "^6.26.0"
+ babel-template "^6.26.0"
+ babel-traverse "^6.26.0"
+ babel-types "^6.26.0"
+ babylon "^6.18.0"
+ convert-source-map "^1.5.1"
+ debug "^2.6.9"
+ json5 "^0.5.1"
+ lodash "^4.17.4"
+ minimatch "^3.0.4"
+ path-is-absolute "^1.0.1"
+ private "^0.1.8"
+ slash "^1.0.0"
+ source-map "^0.5.7"
+
+babel-eslint@7.2.3:
+ version "7.2.3"
+ resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-7.2.3.tgz#b2fe2d80126470f5c19442dc757253a897710827"
+ integrity sha1-sv4tgBJkcPXBlELcdXJTqJdxCCc=
+ dependencies:
+ babel-code-frame "^6.22.0"
+ babel-traverse "^6.23.1"
+ babel-types "^6.23.0"
+ babylon "^6.17.0"
+
+babel-generator@^6.18.0, babel-generator@^6.26.0:
+ version "6.26.1"
+ resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90"
+ integrity sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==
+ dependencies:
+ babel-messages "^6.23.0"
+ babel-runtime "^6.26.0"
+ babel-types "^6.26.0"
+ detect-indent "^4.0.0"
+ jsesc "^1.3.0"
+ lodash "^4.17.4"
+ source-map "^0.5.7"
+ trim-right "^1.0.1"
+
+babel-helper-builder-binary-assignment-operator-visitor@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664"
+ integrity sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=
+ dependencies:
+ babel-helper-explode-assignable-expression "^6.24.1"
+ babel-runtime "^6.22.0"
+ babel-types "^6.24.1"
+
+babel-helper-builder-react-jsx@^6.24.1:
+ version "6.26.0"
+ resolved "https://registry.yarnpkg.com/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz#39ff8313b75c8b65dceff1f31d383e0ff2a408a0"
+ integrity sha1-Of+DE7dci2Xc7/HzHTg+D/KkCKA=
+ dependencies:
+ babel-runtime "^6.26.0"
+ babel-types "^6.26.0"
+ esutils "^2.0.2"
+
+babel-helper-call-delegate@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d"
+ integrity sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=
+ dependencies:
+ babel-helper-hoist-variables "^6.24.1"
+ babel-runtime "^6.22.0"
+ babel-traverse "^6.24.1"
+ babel-types "^6.24.1"
+
+babel-helper-define-map@^6.24.1:
+ version "6.26.0"
+ resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f"
+ integrity sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=
+ dependencies:
+ babel-helper-function-name "^6.24.1"
+ babel-runtime "^6.26.0"
+ babel-types "^6.26.0"
+ lodash "^4.17.4"
+
+babel-helper-explode-assignable-expression@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa"
+ integrity sha1-8luCz33BBDPFX3BZLVdGQArCLKo=
+ dependencies:
+ babel-runtime "^6.22.0"
+ babel-traverse "^6.24.1"
+ babel-types "^6.24.1"
+
+babel-helper-function-name@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9"
+ integrity sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=
+ dependencies:
+ babel-helper-get-function-arity "^6.24.1"
+ babel-runtime "^6.22.0"
+ babel-template "^6.24.1"
+ babel-traverse "^6.24.1"
+ babel-types "^6.24.1"
+
+babel-helper-get-function-arity@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d"
+ integrity sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=
+ dependencies:
+ babel-runtime "^6.22.0"
+ babel-types "^6.24.1"
+
+babel-helper-hoist-variables@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76"
+ integrity sha1-HssnaJydJVE+rbyZFKc/VAi+enY=
+ dependencies:
+ babel-runtime "^6.22.0"
+ babel-types "^6.24.1"
+
+babel-helper-optimise-call-expression@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257"
+ integrity sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=
+ dependencies:
+ babel-runtime "^6.22.0"
+ babel-types "^6.24.1"
+
+babel-helper-regex@^6.24.1:
+ version "6.26.0"
+ resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72"
+ integrity sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=
+ dependencies:
+ babel-runtime "^6.26.0"
+ babel-types "^6.26.0"
+ lodash "^4.17.4"
+
+babel-helper-remap-async-to-generator@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b"
+ integrity sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=
+ dependencies:
+ babel-helper-function-name "^6.24.1"
+ babel-runtime "^6.22.0"
+ babel-template "^6.24.1"
+ babel-traverse "^6.24.1"
+ babel-types "^6.24.1"
+
+babel-helper-replace-supers@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a"
+ integrity sha1-v22/5Dk40XNpohPKiov3S2qQqxo=
+ dependencies:
+ babel-helper-optimise-call-expression "^6.24.1"
+ babel-messages "^6.23.0"
+ babel-runtime "^6.22.0"
+ babel-template "^6.24.1"
+ babel-traverse "^6.24.1"
+ babel-types "^6.24.1"
+
+babel-helpers@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2"
+ integrity sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=
+ dependencies:
+ babel-runtime "^6.22.0"
+ babel-template "^6.24.1"
+
+babel-jest@20.0.3, babel-jest@^20.0.3:
+ version "20.0.3"
+ resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-20.0.3.tgz#e4a03b13dc10389e140fc645d09ffc4ced301671"
+ integrity sha1-5KA7E9wQOJ4UD8ZF0J/8TO0wFnE=
+ dependencies:
+ babel-core "^6.0.0"
+ babel-plugin-istanbul "^4.0.0"
+ babel-preset-jest "^20.0.3"
+
+babel-loader@7.1.2:
+ version "7.1.2"
+ resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-7.1.2.tgz#f6cbe122710f1aa2af4d881c6d5b54358ca24126"
+ integrity sha512-jRwlFbINAeyDStqK6Dd5YuY0k5YuzQUvlz2ZamuXrXmxav3pNqe9vfJ402+2G+OmlJSXxCOpB6Uz0INM7RQe2A==
+ dependencies:
+ find-cache-dir "^1.0.0"
+ loader-utils "^1.0.2"
+ mkdirp "^0.5.1"
+
+babel-messages@^6.23.0:
+ version "6.23.0"
+ resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e"
+ integrity sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-check-es2015-constants@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a"
+ integrity sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-dynamic-import-node@1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-1.1.0.tgz#bd1d88ac7aaf98df4917c384373b04d971a2b37a"
+ integrity sha512-tTfZbM9Ecwj3GK50mnPrUpinTwA4xXmDiQGCk/aBYbvl1+X8YqldK86wZ1owVJ4u3mrKbRlXMma80J18qwiaTQ==
+ dependencies:
+ babel-plugin-syntax-dynamic-import "^6.18.0"
+ babel-template "^6.26.0"
+ babel-types "^6.26.0"
+
+babel-plugin-import@^1.7.0:
+ version "1.13.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-import/-/babel-plugin-import-1.13.0.tgz#c532fd533df9db53b47d4d4db3676090fc5c07a5"
+ integrity sha512-bHU8m0SrY89ub2hBBuYjbennOeH0YUYkVpH6jxKFk0uD8rhN+0jNHIPtXnac+Vn7N/hgkLGGDcIoYK7je3Hhew==
+ dependencies:
+ "@babel/helper-module-imports" "^7.0.0"
+ "@babel/runtime" "^7.0.0"
+
+babel-plugin-istanbul@^4.0.0:
+ version "4.1.6"
+ resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz#36c59b2192efce81c5b378321b74175add1c9a45"
+ integrity sha512-PWP9FQ1AhZhS01T/4qLSKoHGY/xvkZdVBGlKM/HuxxS3+sC66HhTNR7+MpbO/so/cz/wY94MeSWJuP1hXIPfwQ==
+ dependencies:
+ babel-plugin-syntax-object-rest-spread "^6.13.0"
+ find-up "^2.1.0"
+ istanbul-lib-instrument "^1.10.1"
+ test-exclude "^4.2.1"
+
+babel-plugin-jest-hoist@^20.0.3:
+ version "20.0.3"
+ resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-20.0.3.tgz#afedc853bd3f8dc3548ea671fbe69d03cc2c1767"
+ integrity sha1-r+3IU70/jcNUjqZx++adA8wsF2c=
+
+babel-plugin-syntax-async-functions@^6.8.0:
+ version "6.13.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95"
+ integrity sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=
+
+babel-plugin-syntax-class-properties@^6.8.0:
+ version "6.13.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de"
+ integrity sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=
+
+babel-plugin-syntax-dynamic-import@6.18.0, babel-plugin-syntax-dynamic-import@^6.18.0:
+ version "6.18.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da"
+ integrity sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=
+
+babel-plugin-syntax-exponentiation-operator@^6.8.0:
+ version "6.13.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de"
+ integrity sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=
+
+babel-plugin-syntax-flow@^6.18.0:
+ version "6.18.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz#4c3ab20a2af26aa20cd25995c398c4eb70310c8d"
+ integrity sha1-TDqyCiryaqIM0lmVw5jE63AxDI0=
+
+babel-plugin-syntax-jsx@^6.3.13, babel-plugin-syntax-jsx@^6.8.0:
+ version "6.18.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946"
+ integrity sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=
+
+babel-plugin-syntax-object-rest-spread@^6.13.0, babel-plugin-syntax-object-rest-spread@^6.8.0:
+ version "6.13.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5"
+ integrity sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=
+
+babel-plugin-syntax-trailing-function-commas@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3"
+ integrity sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=
+
+babel-plugin-transform-async-to-generator@^6.22.0:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761"
+ integrity sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=
+ dependencies:
+ babel-helper-remap-async-to-generator "^6.24.1"
+ babel-plugin-syntax-async-functions "^6.8.0"
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-class-properties@6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz#6a79763ea61d33d36f37b611aa9def81a81b46ac"
+ integrity sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=
+ dependencies:
+ babel-helper-function-name "^6.24.1"
+ babel-plugin-syntax-class-properties "^6.8.0"
+ babel-runtime "^6.22.0"
+ babel-template "^6.24.1"
+
+babel-plugin-transform-es2015-arrow-functions@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221"
+ integrity sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-block-scoped-functions@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141"
+ integrity sha1-u8UbSflk1wy42OC5ToICRs46YUE=
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-block-scoping@^6.23.0:
+ version "6.26.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f"
+ integrity sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=
+ dependencies:
+ babel-runtime "^6.26.0"
+ babel-template "^6.26.0"
+ babel-traverse "^6.26.0"
+ babel-types "^6.26.0"
+ lodash "^4.17.4"
+
+babel-plugin-transform-es2015-classes@^6.23.0:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db"
+ integrity sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=
+ dependencies:
+ babel-helper-define-map "^6.24.1"
+ babel-helper-function-name "^6.24.1"
+ babel-helper-optimise-call-expression "^6.24.1"
+ babel-helper-replace-supers "^6.24.1"
+ babel-messages "^6.23.0"
+ babel-runtime "^6.22.0"
+ babel-template "^6.24.1"
+ babel-traverse "^6.24.1"
+ babel-types "^6.24.1"
+
+babel-plugin-transform-es2015-computed-properties@^6.22.0:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3"
+ integrity sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=
+ dependencies:
+ babel-runtime "^6.22.0"
+ babel-template "^6.24.1"
+
+babel-plugin-transform-es2015-destructuring@6.23.0, babel-plugin-transform-es2015-destructuring@^6.23.0:
+ version "6.23.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d"
+ integrity sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-duplicate-keys@^6.22.0:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e"
+ integrity sha1-c+s9MQypaePvnskcU3QabxV2Qj4=
+ dependencies:
+ babel-runtime "^6.22.0"
+ babel-types "^6.24.1"
+
+babel-plugin-transform-es2015-for-of@^6.23.0:
+ version "6.23.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691"
+ integrity sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-function-name@^6.22.0:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b"
+ integrity sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=
+ dependencies:
+ babel-helper-function-name "^6.24.1"
+ babel-runtime "^6.22.0"
+ babel-types "^6.24.1"
+
+babel-plugin-transform-es2015-literals@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e"
+ integrity sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154"
+ integrity sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=
+ dependencies:
+ babel-plugin-transform-es2015-modules-commonjs "^6.24.1"
+ babel-runtime "^6.22.0"
+ babel-template "^6.24.1"
+
+babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1:
+ version "6.26.2"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz#58a793863a9e7ca870bdc5a881117ffac27db6f3"
+ integrity sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==
+ dependencies:
+ babel-plugin-transform-strict-mode "^6.24.1"
+ babel-runtime "^6.26.0"
+ babel-template "^6.26.0"
+ babel-types "^6.26.0"
+
+babel-plugin-transform-es2015-modules-systemjs@^6.23.0:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23"
+ integrity sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=
+ dependencies:
+ babel-helper-hoist-variables "^6.24.1"
+ babel-runtime "^6.22.0"
+ babel-template "^6.24.1"
+
+babel-plugin-transform-es2015-modules-umd@^6.23.0:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468"
+ integrity sha1-rJl+YoXNGO1hdq22B9YCNErThGg=
+ dependencies:
+ babel-plugin-transform-es2015-modules-amd "^6.24.1"
+ babel-runtime "^6.22.0"
+ babel-template "^6.24.1"
+
+babel-plugin-transform-es2015-object-super@^6.22.0:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d"
+ integrity sha1-JM72muIcuDp/hgPa0CH1cusnj40=
+ dependencies:
+ babel-helper-replace-supers "^6.24.1"
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-parameters@^6.23.0:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b"
+ integrity sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=
+ dependencies:
+ babel-helper-call-delegate "^6.24.1"
+ babel-helper-get-function-arity "^6.24.1"
+ babel-runtime "^6.22.0"
+ babel-template "^6.24.1"
+ babel-traverse "^6.24.1"
+ babel-types "^6.24.1"
+
+babel-plugin-transform-es2015-shorthand-properties@^6.22.0:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0"
+ integrity sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=
+ dependencies:
+ babel-runtime "^6.22.0"
+ babel-types "^6.24.1"
+
+babel-plugin-transform-es2015-spread@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1"
+ integrity sha1-1taKmfia7cRTbIGlQujdnxdG+NE=
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-sticky-regex@^6.22.0:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc"
+ integrity sha1-AMHNsaynERLN8M9hJsLta0V8zbw=
+ dependencies:
+ babel-helper-regex "^6.24.1"
+ babel-runtime "^6.22.0"
+ babel-types "^6.24.1"
+
+babel-plugin-transform-es2015-template-literals@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d"
+ integrity sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-typeof-symbol@^6.23.0:
+ version "6.23.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372"
+ integrity sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-unicode-regex@^6.22.0:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9"
+ integrity sha1-04sS9C6nMj9yk4fxinxa4frrNek=
+ dependencies:
+ babel-helper-regex "^6.24.1"
+ babel-runtime "^6.22.0"
+ regexpu-core "^2.0.0"
+
+babel-plugin-transform-exponentiation-operator@^6.22.0:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e"
+ integrity sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=
+ dependencies:
+ babel-helper-builder-binary-assignment-operator-visitor "^6.24.1"
+ babel-plugin-syntax-exponentiation-operator "^6.8.0"
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-flow-strip-types@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz#84cb672935d43714fdc32bce84568d87441cf7cf"
+ integrity sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988=
+ dependencies:
+ babel-plugin-syntax-flow "^6.18.0"
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-object-rest-spread@6.26.0:
+ version "6.26.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06"
+ integrity sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=
+ dependencies:
+ babel-plugin-syntax-object-rest-spread "^6.8.0"
+ babel-runtime "^6.26.0"
+
+babel-plugin-transform-react-constant-elements@6.23.0:
+ version "6.23.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-constant-elements/-/babel-plugin-transform-react-constant-elements-6.23.0.tgz#2f119bf4d2cdd45eb9baaae574053c604f6147dd"
+ integrity sha1-LxGb9NLN1F65uqrldAU8YE9hR90=
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-react-display-name@^6.23.0:
+ version "6.25.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz#67e2bf1f1e9c93ab08db96792e05392bf2cc28d1"
+ integrity sha1-Z+K/Hx6ck6sI25Z5LgU5K/LMKNE=
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-react-jsx-self@6.22.0, babel-plugin-transform-react-jsx-self@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz#df6d80a9da2612a121e6ddd7558bcbecf06e636e"
+ integrity sha1-322AqdomEqEh5t3XVYvL7PBuY24=
+ dependencies:
+ babel-plugin-syntax-jsx "^6.8.0"
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-react-jsx-source@6.22.0, babel-plugin-transform-react-jsx-source@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz#66ac12153f5cd2d17b3c19268f4bf0197f44ecd6"
+ integrity sha1-ZqwSFT9c0tF7PBkmj0vwGX9E7NY=
+ dependencies:
+ babel-plugin-syntax-jsx "^6.8.0"
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-react-jsx@6.24.1, babel-plugin-transform-react-jsx@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz#840a028e7df460dfc3a2d29f0c0d91f6376e66a3"
+ integrity sha1-hAoCjn30YN/DotKfDA2R9jduZqM=
+ dependencies:
+ babel-helper-builder-react-jsx "^6.24.1"
+ babel-plugin-syntax-jsx "^6.8.0"
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-regenerator@6.26.0, babel-plugin-transform-regenerator@^6.22.0:
+ version "6.26.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f"
+ integrity sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=
+ dependencies:
+ regenerator-transform "^0.10.0"
+
+babel-plugin-transform-runtime@6.23.0:
+ version "6.23.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.23.0.tgz#88490d446502ea9b8e7efb0fe09ec4d99479b1ee"
+ integrity sha1-iEkNRGUC6puOfvsP4J7E2ZR5se4=
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-strict-mode@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758"
+ integrity sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=
+ dependencies:
+ babel-runtime "^6.22.0"
+ babel-types "^6.24.1"
+
+babel-preset-env@1.6.1:
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.6.1.tgz#a18b564cc9b9afdf4aae57ae3c1b0d99188e6f48"
+ integrity sha512-W6VIyA6Ch9ePMI7VptNn2wBM6dbG0eSz25HEiL40nQXCsXGTGZSTZu1Iap+cj3Q0S5a7T9+529l/5Bkvd+afNA==
+ dependencies:
+ babel-plugin-check-es2015-constants "^6.22.0"
+ babel-plugin-syntax-trailing-function-commas "^6.22.0"
+ babel-plugin-transform-async-to-generator "^6.22.0"
+ babel-plugin-transform-es2015-arrow-functions "^6.22.0"
+ babel-plugin-transform-es2015-block-scoped-functions "^6.22.0"
+ babel-plugin-transform-es2015-block-scoping "^6.23.0"
+ babel-plugin-transform-es2015-classes "^6.23.0"
+ babel-plugin-transform-es2015-computed-properties "^6.22.0"
+ babel-plugin-transform-es2015-destructuring "^6.23.0"
+ babel-plugin-transform-es2015-duplicate-keys "^6.22.0"
+ babel-plugin-transform-es2015-for-of "^6.23.0"
+ babel-plugin-transform-es2015-function-name "^6.22.0"
+ babel-plugin-transform-es2015-literals "^6.22.0"
+ babel-plugin-transform-es2015-modules-amd "^6.22.0"
+ babel-plugin-transform-es2015-modules-commonjs "^6.23.0"
+ babel-plugin-transform-es2015-modules-systemjs "^6.23.0"
+ babel-plugin-transform-es2015-modules-umd "^6.23.0"
+ babel-plugin-transform-es2015-object-super "^6.22.0"
+ babel-plugin-transform-es2015-parameters "^6.23.0"
+ babel-plugin-transform-es2015-shorthand-properties "^6.22.0"
+ babel-plugin-transform-es2015-spread "^6.22.0"
+ babel-plugin-transform-es2015-sticky-regex "^6.22.0"
+ babel-plugin-transform-es2015-template-literals "^6.22.0"
+ babel-plugin-transform-es2015-typeof-symbol "^6.23.0"
+ babel-plugin-transform-es2015-unicode-regex "^6.22.0"
+ babel-plugin-transform-exponentiation-operator "^6.22.0"
+ babel-plugin-transform-regenerator "^6.22.0"
+ browserslist "^2.1.2"
+ invariant "^2.2.2"
+ semver "^5.3.0"
+
+babel-preset-flow@^6.23.0:
+ version "6.23.0"
+ resolved "https://registry.yarnpkg.com/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz#e71218887085ae9a24b5be4169affb599816c49d"
+ integrity sha1-5xIYiHCFrpoktb5Baa/7WZgWxJ0=
+ dependencies:
+ babel-plugin-transform-flow-strip-types "^6.22.0"
+
+babel-preset-jest@^20.0.3:
+ version "20.0.3"
+ resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-20.0.3.tgz#cbacaadecb5d689ca1e1de1360ebfc66862c178a"
+ integrity sha1-y6yq3stdaJyh4d4TYOv8ZoYsF4o=
+ dependencies:
+ babel-plugin-jest-hoist "^20.0.3"
+
+babel-preset-react-app@^3.1.2:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-3.1.2.tgz#49ba3681b917c4e5c73a5249d3ef4c48fae064e2"
+ integrity sha512-/sh5Qd5T08PYa6t4kuCdKh9tXp6/m/Jwyx7PJTqugsYMfsDUJMlBXOs5EwFODHprzjWrmQ0SydnMZu9FY4MZYg==
+ dependencies:
+ babel-plugin-dynamic-import-node "1.1.0"
+ babel-plugin-syntax-dynamic-import "6.18.0"
+ babel-plugin-transform-class-properties "6.24.1"
+ babel-plugin-transform-es2015-destructuring "6.23.0"
+ babel-plugin-transform-object-rest-spread "6.26.0"
+ babel-plugin-transform-react-constant-elements "6.23.0"
+ babel-plugin-transform-react-jsx "6.24.1"
+ babel-plugin-transform-react-jsx-self "6.22.0"
+ babel-plugin-transform-react-jsx-source "6.22.0"
+ babel-plugin-transform-regenerator "6.26.0"
+ babel-plugin-transform-runtime "6.23.0"
+ babel-preset-env "1.6.1"
+ babel-preset-react "6.24.1"
+
+babel-preset-react@6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-preset-react/-/babel-preset-react-6.24.1.tgz#ba69dfaea45fc3ec639b6a4ecea6e17702c91380"
+ integrity sha1-umnfrqRfw+xjm2pOzqbhdwLJE4A=
+ dependencies:
+ babel-plugin-syntax-jsx "^6.3.13"
+ babel-plugin-transform-react-display-name "^6.23.0"
+ babel-plugin-transform-react-jsx "^6.24.1"
+ babel-plugin-transform-react-jsx-self "^6.22.0"
+ babel-plugin-transform-react-jsx-source "^6.22.0"
+ babel-preset-flow "^6.23.0"
+
+babel-register@^6.26.0:
+ version "6.26.0"
+ resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071"
+ integrity sha1-btAhFz4vy0htestFxgCahW9kcHE=
+ dependencies:
+ babel-core "^6.26.0"
+ babel-runtime "^6.26.0"
+ core-js "^2.5.0"
+ home-or-tmp "^2.0.0"
+ lodash "^4.17.4"
+ mkdirp "^0.5.1"
+ source-map-support "^0.4.15"
+
+babel-runtime@6.26.0, babel-runtime@6.x, babel-runtime@^6.11.6, babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.23.0, babel-runtime@^6.26.0:
+ version "6.26.0"
+ resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe"
+ integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4=
+ dependencies:
+ core-js "^2.4.0"
+ regenerator-runtime "^0.11.0"
+
+babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.26.0:
+ version "6.26.0"
+ resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02"
+ integrity sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=
+ dependencies:
+ babel-runtime "^6.26.0"
+ babel-traverse "^6.26.0"
+ babel-types "^6.26.0"
+ babylon "^6.18.0"
+ lodash "^4.17.4"
+
+babel-traverse@^6.18.0, babel-traverse@^6.23.1, babel-traverse@^6.24.1, babel-traverse@^6.26.0:
+ version "6.26.0"
+ resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee"
+ integrity sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=
+ dependencies:
+ babel-code-frame "^6.26.0"
+ babel-messages "^6.23.0"
+ babel-runtime "^6.26.0"
+ babel-types "^6.26.0"
+ babylon "^6.18.0"
+ debug "^2.6.8"
+ globals "^9.18.0"
+ invariant "^2.2.2"
+ lodash "^4.17.4"
+
+babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.23.0, babel-types@^6.24.1, babel-types@^6.26.0:
+ version "6.26.0"
+ resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497"
+ integrity sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=
+ dependencies:
+ babel-runtime "^6.26.0"
+ esutils "^2.0.2"
+ lodash "^4.17.4"
+ to-fast-properties "^1.0.3"
+
+babylon@^6.17.0, babylon@^6.18.0:
+ version "6.18.0"
+ resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3"
+ integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==
+
+balanced-match@^0.4.2:
+ version "0.4.2"
+ resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838"
+ integrity sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=
+
+balanced-match@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
+ integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
+
+base64-js@^1.0.2:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1"
+ integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==
+
+base@^0.11.1:
+ version "0.11.2"
+ resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
+ integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==
+ dependencies:
+ cache-base "^1.0.1"
+ class-utils "^0.3.5"
+ component-emitter "^1.2.1"
+ define-property "^1.0.0"
+ isobject "^3.0.1"
+ mixin-deep "^1.2.0"
+ pascalcase "^0.1.1"
+
+batch@0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16"
+ integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=
+
+bcrypt-pbkdf@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e"
+ integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=
+ dependencies:
+ tweetnacl "^0.14.3"
+
+big.js@^3.1.3:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e"
+ integrity sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==
+
+big.js@^5.2.2:
+ version "5.2.2"
+ resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328"
+ integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==
+
+bin-links@^1.1.2, bin-links@^1.1.8:
+ version "1.1.8"
+ resolved "https://registry.yarnpkg.com/bin-links/-/bin-links-1.1.8.tgz#bd39aadab5dc4bdac222a07df5baf1af745b2228"
+ integrity sha512-KgmVfx+QqggqP9dA3iIc5pA4T1qEEEL+hOhOhNPaUm77OTrJoOXE/C05SJLNJe6m/2wUK7F1tDSou7n5TfCDzQ==
+ dependencies:
+ bluebird "^3.5.3"
+ cmd-shim "^3.0.0"
+ gentle-fs "^2.3.0"
+ graceful-fs "^4.1.15"
+ npm-normalize-package-bin "^1.0.0"
+ write-file-atomic "^2.3.0"
+
+binary-extensions@^1.0.0:
+ version "1.13.1"
+ resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65"
+ integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==
+
+binary-extensions@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9"
+ integrity sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==
+
+bindings@^1.5.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df"
+ integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==
+ dependencies:
+ file-uri-to-path "1.0.0"
+
+bluebird@^3.4.7, bluebird@^3.5.1, bluebird@^3.5.3, bluebird@^3.5.5:
+ version "3.7.2"
+ resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
+ integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
+
+bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.4.0:
+ version "4.11.9"
+ resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828"
+ integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==
+
+bn.js@^5.1.1:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.2.tgz#c9686902d3c9a27729f43ab10f9d79c2004da7b0"
+ integrity sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA==
+
+body-parser@1.19.0:
+ version "1.19.0"
+ resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a"
+ integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==
+ dependencies:
+ bytes "3.1.0"
+ content-type "~1.0.4"
+ debug "2.6.9"
+ depd "~1.1.2"
+ http-errors "1.7.2"
+ iconv-lite "0.4.24"
+ on-finished "~2.3.0"
+ qs "6.7.0"
+ raw-body "2.4.0"
+ type-is "~1.6.17"
+
+bonjour@^3.5.0:
+ version "3.5.0"
+ resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5"
+ integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU=
+ dependencies:
+ array-flatten "^2.1.0"
+ deep-equal "^1.0.1"
+ dns-equal "^1.0.0"
+ dns-txt "^2.0.2"
+ multicast-dns "^6.0.1"
+ multicast-dns-service-types "^1.1.0"
+
+boolbase@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
+ integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24=
+
+boxen@^1.2.1:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b"
+ integrity sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==
+ dependencies:
+ ansi-align "^2.0.0"
+ camelcase "^4.0.0"
+ chalk "^2.0.1"
+ cli-boxes "^1.0.0"
+ string-width "^2.0.0"
+ term-size "^1.2.0"
+ widest-line "^2.0.0"
+
+brace-expansion@^1.0.0, brace-expansion@^1.1.7:
+ version "1.1.11"
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
+ integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
+ dependencies:
+ balanced-match "^1.0.0"
+ concat-map "0.0.1"
+
+braces@^1.8.2:
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7"
+ integrity sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=
+ dependencies:
+ expand-range "^1.8.1"
+ preserve "^0.2.0"
+ repeat-element "^1.1.2"
+
+braces@^2.3.1, braces@^2.3.2:
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729"
+ integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==
+ dependencies:
+ arr-flatten "^1.1.0"
+ array-unique "^0.3.2"
+ extend-shallow "^2.0.1"
+ fill-range "^4.0.0"
+ isobject "^3.0.1"
+ repeat-element "^1.1.2"
+ snapdragon "^0.8.1"
+ snapdragon-node "^2.0.1"
+ split-string "^3.0.2"
+ to-regex "^3.0.1"
+
+braces@~3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
+ integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
+ dependencies:
+ fill-range "^7.0.1"
+
+brorand@^1.0.1:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
+ integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=
+
+browser-resolve@^1.11.2:
+ version "1.11.3"
+ resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6"
+ integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==
+ dependencies:
+ resolve "1.1.7"
+
+browserify-aes@^1.0.0, browserify-aes@^1.0.4:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48"
+ integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==
+ dependencies:
+ buffer-xor "^1.0.3"
+ cipher-base "^1.0.0"
+ create-hash "^1.1.0"
+ evp_bytestokey "^1.0.3"
+ inherits "^2.0.1"
+ safe-buffer "^5.0.1"
+
+browserify-cipher@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0"
+ integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==
+ dependencies:
+ browserify-aes "^1.0.4"
+ browserify-des "^1.0.0"
+ evp_bytestokey "^1.0.0"
+
+browserify-des@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c"
+ integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==
+ dependencies:
+ cipher-base "^1.0.1"
+ des.js "^1.0.0"
+ inherits "^2.0.1"
+ safe-buffer "^5.1.2"
+
+browserify-rsa@^4.0.0, browserify-rsa@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524"
+ integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=
+ dependencies:
+ bn.js "^4.1.0"
+ randombytes "^2.0.1"
+
+browserify-sign@^4.0.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.0.tgz#545d0b1b07e6b2c99211082bf1b12cce7a0b0e11"
+ integrity sha512-hEZC1KEeYuoHRqhGhTy6gWrpJA3ZDjFWv0DE61643ZnOXAKJb3u7yWcrU0mMc9SwAqK1n7myPGndkp0dFG7NFA==
+ dependencies:
+ bn.js "^5.1.1"
+ browserify-rsa "^4.0.1"
+ create-hash "^1.2.0"
+ create-hmac "^1.1.7"
+ elliptic "^6.5.2"
+ inherits "^2.0.4"
+ parse-asn1 "^5.1.5"
+ readable-stream "^3.6.0"
+ safe-buffer "^5.2.0"
+
+browserify-zlib@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f"
+ integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==
+ dependencies:
+ pako "~1.0.5"
+
+browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6:
+ version "1.7.7"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9"
+ integrity sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=
+ dependencies:
+ caniuse-db "^1.0.30000639"
+ electron-to-chromium "^1.2.7"
+
+browserslist@^2.1.2, browserslist@^2.5.1:
+ version "2.11.3"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.11.3.tgz#fe36167aed1bbcde4827ebfe71347a2cc70b99b2"
+ integrity sha512-yWu5cXT7Av6mVwzWc8lMsJMHWn4xyjSuGYi4IozbVTLUOEYPSagUB8kiMDUHA1fS3zjr8nkxkn9jdvug4BBRmA==
+ dependencies:
+ caniuse-lite "^1.0.30000792"
+ electron-to-chromium "^1.3.30"
+
+bser@1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/bser/-/bser-1.0.2.tgz#381116970b2a6deea5646dd15dd7278444b56169"
+ integrity sha1-OBEWlwsqbe6lZG3RXdcnhES1YWk=
+ dependencies:
+ node-int64 "^0.4.0"
+
+bser@2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05"
+ integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==
+ dependencies:
+ node-int64 "^0.4.0"
+
+buffer-from@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
+ integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
+
+buffer-indexof@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c"
+ integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==
+
+buffer-xor@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
+ integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=
+
+buffer@^4.3.0:
+ version "4.9.2"
+ resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8"
+ integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==
+ dependencies:
+ base64-js "^1.0.2"
+ ieee754 "^1.1.4"
+ isarray "^1.0.0"
+
+buffer@^5.0.3:
+ version "5.6.0"
+ resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.6.0.tgz#a31749dc7d81d84db08abf937b6b8c4033f62786"
+ integrity sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==
+ dependencies:
+ base64-js "^1.0.2"
+ ieee754 "^1.1.4"
+
+builtin-modules@^1.0.0, builtin-modules@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
+ integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=
+
+builtin-status-codes@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
+ integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=
+
+builtins@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88"
+ integrity sha1-y5T662HIaWRR2zZTThQi+U8K7og=
+
+byline@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/byline/-/byline-5.0.0.tgz#741c5216468eadc457b03410118ad77de8c1ddb1"
+ integrity sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE=
+
+byte-size@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/byte-size/-/byte-size-5.0.1.tgz#4b651039a5ecd96767e71a3d7ed380e48bed4191"
+ integrity sha512-/XuKeqWocKsYa/cBY1YbSJSWWqTi4cFgr9S6OyM7PBaPbr9zvNGwWP33vt0uqGhwDdN+y3yhbXVILEUpnwEWGw==
+
+bytes@3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
+ integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=
+
+bytes@3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6"
+ integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==
+
+cacache@^12.0.0, cacache@^12.0.2, cacache@^12.0.3:
+ version "12.0.4"
+ resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c"
+ integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==
+ dependencies:
+ bluebird "^3.5.5"
+ chownr "^1.1.1"
+ figgy-pudding "^3.5.1"
+ glob "^7.1.4"
+ graceful-fs "^4.1.15"
+ infer-owner "^1.0.3"
+ lru-cache "^5.1.1"
+ mississippi "^3.0.0"
+ mkdirp "^0.5.1"
+ move-concurrently "^1.0.1"
+ promise-inflight "^1.0.1"
+ rimraf "^2.6.3"
+ ssri "^6.0.1"
+ unique-filename "^1.1.1"
+ y18n "^4.0.0"
+
+cache-base@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
+ integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==
+ dependencies:
+ collection-visit "^1.0.0"
+ component-emitter "^1.2.1"
+ get-value "^2.0.6"
+ has-value "^1.0.0"
+ isobject "^3.0.1"
+ set-value "^2.0.0"
+ to-object-path "^0.3.0"
+ union-value "^1.0.0"
+ unset-value "^1.0.0"
+
+call-limit@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/call-limit/-/call-limit-1.1.1.tgz#ef15f2670db3f1992557e2d965abc459e6e358d4"
+ integrity sha512-5twvci5b9eRBw2wCfPtN0GmlR2/gadZqyFpPhOK6CvMFoFgA+USnZ6Jpu1lhG9h85pQ3Ouil3PfXWRD4EUaRiQ==
+
+caller-path@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f"
+ integrity sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=
+ dependencies:
+ callsites "^0.2.0"
+
+callsites@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca"
+ integrity sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=
+
+callsites@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50"
+ integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=
+
+camel-case@3.0.x:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73"
+ integrity sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=
+ dependencies:
+ no-case "^2.2.0"
+ upper-case "^1.1.1"
+
+camelcase-keys@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7"
+ integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc=
+ dependencies:
+ camelcase "^2.0.0"
+ map-obj "^1.0.0"
+
+camelcase@^1.0.2:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39"
+ integrity sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=
+
+camelcase@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f"
+ integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=
+
+camelcase@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a"
+ integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo=
+
+camelcase@^4.0.0, camelcase@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd"
+ integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=
+
+camelcase@^5.0.0:
+ version "5.3.1"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
+ integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
+
+camelize@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.0.tgz#164a5483e630fa4321e5af07020e531831b2609b"
+ integrity sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs=
+
+can-use-dom@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/can-use-dom/-/can-use-dom-0.1.0.tgz#22cc4a34a0abc43950f42c6411024a3f6366b45a"
+ integrity sha1-IsxKNKCrxDlQ9CxkEQJKP2NmtFo=
+
+caniuse-api@^1.5.2:
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-1.6.1.tgz#b534e7c734c4f81ec5fbe8aca2ad24354b962c6c"
+ integrity sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=
+ dependencies:
+ browserslist "^1.3.6"
+ caniuse-db "^1.0.30000529"
+ lodash.memoize "^4.1.2"
+ lodash.uniq "^4.5.0"
+
+caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639:
+ version "1.0.30001109"
+ resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30001109.tgz#756c5d689ce550c891e1456cf4c6b8f7a253ec19"
+ integrity sha512-B/DC85f77h55PRO9YTSyzMOA24CSAwzgBNCJtrTdEtejW/HGAn6kWgzNHLpU3fZFWWOdQ6ABo0YzvZ3BXPtqLw==
+
+caniuse-lite@^1.0.30000748, caniuse-lite@^1.0.30000792:
+ version "1.0.30001109"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001109.tgz#a9f3f26a0c3753b063d7acbb48dfb9c0e46f2b19"
+ integrity sha512-4JIXRodHzdS3HdK8nSgIqXYLExOvG+D2/EenSvcub2Kp3QEADjo2v2oUn5g0n0D+UNwG9BtwKOyGcSq2qvQXvQ==
+
+capture-stack-trace@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz#a6c0bbe1f38f3aa0b92238ecb6ff42c344d4135d"
+ integrity sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==
+
+case-sensitive-paths-webpack-plugin@2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.1.1.tgz#3d29ced8c1f124bf6f53846fb3f5894731fdc909"
+ integrity sha1-PSnO2MHxJL9vU4Rvs/WJRzH9yQk=
+
+caseless@~0.12.0:
+ version "0.12.0"
+ resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
+ integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=
+
+center-align@^0.1.1:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad"
+ integrity sha1-qg0yYptu6XIgBBHL1EYckHvCt60=
+ dependencies:
+ align-text "^0.1.3"
+ lazy-cache "^1.0.3"
+
+chalk@1.1.3, chalk@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
+ integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=
+ dependencies:
+ ansi-styles "^2.2.1"
+ escape-string-regexp "^1.0.2"
+ has-ansi "^2.0.0"
+ strip-ansi "^3.0.0"
+ supports-color "^2.0.0"
+
+chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1:
+ version "2.4.2"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
+ integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
+ dependencies:
+ ansi-styles "^3.2.1"
+ escape-string-regexp "^1.0.5"
+ supports-color "^5.3.0"
+
+change-emitter@^0.1.2:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/change-emitter/-/change-emitter-0.1.6.tgz#e8b2fe3d7f1ab7d69a32199aff91ea6931409515"
+ integrity sha1-6LL+PX8at9aaMhma/5HqaTFAlRU=
+
+chardet@^0.4.0:
+ version "0.4.2"
+ resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2"
+ integrity sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=
+
+chokidar@^2.0.0, chokidar@^2.1.8:
+ version "2.1.8"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917"
+ integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==
+ dependencies:
+ anymatch "^2.0.0"
+ async-each "^1.0.1"
+ braces "^2.3.2"
+ glob-parent "^3.1.0"
+ inherits "^2.0.3"
+ is-binary-path "^1.0.0"
+ is-glob "^4.0.0"
+ normalize-path "^3.0.0"
+ path-is-absolute "^1.0.0"
+ readdirp "^2.2.1"
+ upath "^1.1.1"
+ optionalDependencies:
+ fsevents "^1.2.7"
+
+chokidar@^3.4.1:
+ version "3.4.1"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.1.tgz#e905bdecf10eaa0a0b1db0c664481cc4cbc22ba1"
+ integrity sha512-TQTJyr2stihpC4Sya9hs2Xh+O2wf+igjL36Y75xx2WdHuiICcn/XJza46Jwt0eT5hVpQOzo3FpY3cj3RVYLX0g==
+ dependencies:
+ anymatch "~3.1.1"
+ braces "~3.0.2"
+ glob-parent "~5.1.0"
+ is-binary-path "~2.1.0"
+ is-glob "~4.0.1"
+ normalize-path "~3.0.0"
+ readdirp "~3.4.0"
+ optionalDependencies:
+ fsevents "~2.1.2"
+
+chownr@^1.1.1, chownr@^1.1.2, chownr@^1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b"
+ integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==
+
+ci-info@^1.5.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497"
+ integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==
+
+ci-info@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46"
+ integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==
+
+cidr-regex@^2.0.10:
+ version "2.0.10"
+ resolved "https://registry.yarnpkg.com/cidr-regex/-/cidr-regex-2.0.10.tgz#af13878bd4ad704de77d6dc800799358b3afa70d"
+ integrity sha512-sB3ogMQXWvreNPbJUZMRApxuRYd+KoIo4RGQ81VatjmMW6WJPo+IJZ2846FGItr9VzKo5w7DXzijPLGtSd0N3Q==
+ dependencies:
+ ip-regex "^2.1.0"
+
+cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de"
+ integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==
+ dependencies:
+ inherits "^2.0.1"
+ safe-buffer "^5.0.1"
+
+circular-json@^0.3.1:
+ version "0.3.3"
+ resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66"
+ integrity sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==
+
+clap@^1.0.9:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/clap/-/clap-1.2.3.tgz#4f36745b32008492557f46412d66d50cb99bce51"
+ integrity sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==
+ dependencies:
+ chalk "^1.1.3"
+
+class-utils@^0.3.5:
+ version "0.3.6"
+ resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463"
+ integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==
+ dependencies:
+ arr-union "^3.1.0"
+ define-property "^0.2.5"
+ isobject "^3.0.0"
+ static-extend "^0.1.1"
+
+classnames@2.x, classnames@^2.2.0, classnames@^2.2.1, classnames@^2.2.3, classnames@^2.2.5, classnames@^2.2.6, classnames@~2.2.6:
+ version "2.2.6"
+ resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce"
+ integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==
+
+clean-css@4.2.x:
+ version "4.2.3"
+ resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78"
+ integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==
+ dependencies:
+ source-map "~0.6.0"
+
+cli-boxes@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143"
+ integrity sha1-T6kXw+WclKAEzWH47lCdplFocUM=
+
+cli-columns@^3.1.2:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/cli-columns/-/cli-columns-3.1.2.tgz#6732d972979efc2ae444a1f08e08fa139c96a18e"
+ integrity sha1-ZzLZcpee/CrkRKHwjgj6E5yWoY4=
+ dependencies:
+ string-width "^2.0.0"
+ strip-ansi "^3.0.1"
+
+cli-cursor@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5"
+ integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=
+ dependencies:
+ restore-cursor "^2.0.0"
+
+cli-table3@^0.5.0, cli-table3@^0.5.1:
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.5.1.tgz#0252372d94dfc40dbd8df06005f48f31f656f202"
+ integrity sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==
+ dependencies:
+ object-assign "^4.1.0"
+ string-width "^2.1.1"
+ optionalDependencies:
+ colors "^1.1.2"
+
+cli-width@^2.0.0:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48"
+ integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==
+
+cliui@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1"
+ integrity sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=
+ dependencies:
+ center-align "^0.1.1"
+ right-align "^0.1.1"
+ wordwrap "0.0.2"
+
+cliui@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d"
+ integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=
+ dependencies:
+ string-width "^1.0.1"
+ strip-ansi "^3.0.1"
+ wrap-ansi "^2.0.0"
+
+cliui@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5"
+ integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==
+ dependencies:
+ string-width "^3.1.0"
+ strip-ansi "^5.2.0"
+ wrap-ansi "^5.1.0"
+
+clone@^1.0.2:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
+ integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4=
+
+clone@^2.1.1:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f"
+ integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=
+
+cmd-shim@^3.0.0, cmd-shim@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-3.0.3.tgz#2c35238d3df37d98ecdd7d5f6b8dc6b21cadc7cb"
+ integrity sha512-DtGg+0xiFhQIntSBRzL2fRQBnmtAVwXIDo4Qq46HPpObYquxMaZS4sb82U9nH91qJrlosC1wa9gwr0QyL/HypA==
+ dependencies:
+ graceful-fs "^4.1.2"
+ mkdirp "~0.5.0"
+
+co@^4.6.0:
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
+ integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=
+
+coa@~1.0.1:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/coa/-/coa-1.0.4.tgz#a9ef153660d6a86a8bdec0289a5c684d217432fd"
+ integrity sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=
+ dependencies:
+ q "^1.1.2"
+
+code-point-at@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
+ integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=
+
+collection-visit@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0"
+ integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=
+ dependencies:
+ map-visit "^1.0.0"
+ object-visit "^1.0.0"
+
+color-convert@^1.3.0, color-convert@^1.9.0:
+ version "1.9.3"
+ resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
+ integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
+ dependencies:
+ color-name "1.1.3"
+
+color-name@1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
+ integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
+
+color-name@^1.0.0:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
+ integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
+
+color-string@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/color-string/-/color-string-0.3.0.tgz#27d46fb67025c5c2fa25993bfbf579e47841b991"
+ integrity sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=
+ dependencies:
+ color-name "^1.0.0"
+
+color@^0.11.0:
+ version "0.11.4"
+ resolved "https://registry.yarnpkg.com/color/-/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764"
+ integrity sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=
+ dependencies:
+ clone "^1.0.2"
+ color-convert "^1.3.0"
+ color-string "^0.3.0"
+
+colormin@^1.0.5:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/colormin/-/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133"
+ integrity sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=
+ dependencies:
+ color "^0.11.0"
+ css-color-names "0.0.4"
+ has "^1.0.1"
+
+colors@^1.1.2:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78"
+ integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==
+
+colors@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63"
+ integrity sha1-FopHAXVran9RoSzgyXv6KMCE7WM=
+
+columnify@~1.5.4:
+ version "1.5.4"
+ resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.5.4.tgz#4737ddf1c7b69a8a7c340570782e947eec8e78bb"
+ integrity sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs=
+ dependencies:
+ strip-ansi "^3.0.0"
+ wcwidth "^1.0.0"
+
+combined-stream@^1.0.6, combined-stream@~1.0.6:
+ version "1.0.8"
+ resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
+ integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
+ dependencies:
+ delayed-stream "~1.0.0"
+
+commander@2.17.x:
+ version "2.17.1"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf"
+ integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==
+
+commander@^2.11.0:
+ version "2.20.3"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
+ integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
+
+commander@~2.19.0:
+ version "2.19.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a"
+ integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==
+
+commondir@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
+ integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=
+
+component-classes@1.x, component-classes@^1.2.5, component-classes@^1.2.6:
+ version "1.2.6"
+ resolved "https://registry.yarnpkg.com/component-classes/-/component-classes-1.2.6.tgz#c642394c3618a4d8b0b8919efccbbd930e5cd691"
+ integrity sha1-xkI5TDYYpNiwuJGe/Mu9kw5c1pE=
+ dependencies:
+ component-indexof "0.0.3"
+
+component-emitter@^1.2.1:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0"
+ integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==
+
+component-indexof@0.0.3:
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/component-indexof/-/component-indexof-0.0.3.tgz#11d091312239eb8f32c8f25ae9cb002ffe8d3c24"
+ integrity sha1-EdCRMSI5648yyPJa6csAL/6NPCQ=
+
+compressible@~2.0.16:
+ version "2.0.18"
+ resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba"
+ integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==
+ dependencies:
+ mime-db ">= 1.43.0 < 2"
+
+compression@^1.5.2:
+ version "1.7.4"
+ resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f"
+ integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==
+ dependencies:
+ accepts "~1.3.5"
+ bytes "3.0.0"
+ compressible "~2.0.16"
+ debug "2.6.9"
+ on-headers "~1.0.2"
+ safe-buffer "5.1.2"
+ vary "~1.1.2"
+
+concat-map@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
+ integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
+
+concat-stream@^1.5.0, concat-stream@^1.6.0:
+ version "1.6.2"
+ resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
+ integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==
+ dependencies:
+ buffer-from "^1.0.0"
+ inherits "^2.0.3"
+ readable-stream "^2.2.2"
+ typedarray "^0.0.6"
+
+config-chain@^1.1.12:
+ version "1.1.12"
+ resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa"
+ integrity sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==
+ dependencies:
+ ini "^1.3.4"
+ proto-list "~1.2.1"
+
+configstore@^3.0.0:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.2.tgz#c6f25defaeef26df12dd33414b001fe81a543f8f"
+ integrity sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==
+ dependencies:
+ dot-prop "^4.1.0"
+ graceful-fs "^4.1.2"
+ make-dir "^1.0.0"
+ unique-string "^1.0.0"
+ write-file-atomic "^2.0.0"
+ xdg-basedir "^3.0.0"
+
+connect-history-api-fallback@^1.3.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc"
+ integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==
+
+console-browserify@^1.1.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336"
+ integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==
+
+console-control-strings@^1.0.0, console-control-strings@^1.1.0, console-control-strings@~1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
+ integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=
+
+constants-browserify@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
+ integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=
+
+contains-path@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a"
+ integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=
+
+content-disposition@0.5.3:
+ version "0.5.3"
+ resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd"
+ integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==
+ dependencies:
+ safe-buffer "5.1.2"
+
+content-type-parser@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/content-type-parser/-/content-type-parser-1.0.2.tgz#caabe80623e63638b2502fd4c7f12ff4ce2352e7"
+ integrity sha512-lM4l4CnMEwOLHAHr/P6MEZwZFPJFtAAKgL6pogbXmVZggIqXhdB6RbBtPOTsw2FcXwYhehRGERJmRrjOiIB8pQ==
+
+content-type@~1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
+ integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==
+
+convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.5.1:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442"
+ integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==
+ dependencies:
+ safe-buffer "~5.1.1"
+
+cookie-signature@1.0.6:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
+ integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw=
+
+cookie@0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba"
+ integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==
+
+cookie@^0.3.1:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb"
+ integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=
+
+copy-concurrently@^1.0.0:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0"
+ integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==
+ dependencies:
+ aproba "^1.1.1"
+ fs-write-stream-atomic "^1.0.8"
+ iferr "^0.1.5"
+ mkdirp "^0.5.1"
+ rimraf "^2.5.4"
+ run-queue "^1.0.0"
+
+copy-descriptor@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
+ integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=
+
+copy-to-clipboard@^3, copy-to-clipboard@^3.2.0:
+ version "3.3.1"
+ resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz#115aa1a9998ffab6196f93076ad6da3b913662ae"
+ integrity sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw==
+ dependencies:
+ toggle-selection "^1.0.6"
+
+core-js@^1.0.0:
+ version "1.2.7"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636"
+ integrity sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=
+
+core-js@^2.4.0, core-js@^2.5.0:
+ version "2.6.11"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c"
+ integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==
+
+core-util-is@1.0.2, core-util-is@~1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
+ integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
+
+cosmiconfig@^2.1.0, cosmiconfig@^2.1.1:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-2.2.2.tgz#6173cebd56fac042c1f4390edf7af6c07c7cb892"
+ integrity sha512-GiNXLwAFPYHy25XmTPpafYvn3CLAkJ8FLsscq78MQd1Kh0OU6Yzhn4eV2MVF4G9WEQZoWEGltatdR+ntGPMl5A==
+ dependencies:
+ is-directory "^0.3.1"
+ js-yaml "^3.4.3"
+ minimist "^1.2.0"
+ object-assign "^4.1.0"
+ os-homedir "^1.0.1"
+ parse-json "^2.2.0"
+ require-from-string "^1.1.0"
+
+create-ecdh@^4.0.0:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff"
+ integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==
+ dependencies:
+ bn.js "^4.1.0"
+ elliptic "^6.0.0"
+
+create-error-class@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6"
+ integrity sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=
+ dependencies:
+ capture-stack-trace "^1.0.0"
+
+create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196"
+ integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==
+ dependencies:
+ cipher-base "^1.0.1"
+ inherits "^2.0.1"
+ md5.js "^1.3.4"
+ ripemd160 "^2.0.1"
+ sha.js "^2.4.0"
+
+create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7:
+ version "1.1.7"
+ resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff"
+ integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==
+ dependencies:
+ cipher-base "^1.0.3"
+ create-hash "^1.1.0"
+ inherits "^2.0.1"
+ ripemd160 "^2.0.0"
+ safe-buffer "^5.0.1"
+ sha.js "^2.4.8"
+
+create-react-class@^15.5.3:
+ version "15.6.3"
+ resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.6.3.tgz#2d73237fb3f970ae6ebe011a9e66f46dbca80036"
+ integrity sha512-M+/3Q6E6DLO6Yx3OwrWjwHBnvfXXYA7W+dFjt/ZDBemHO1DDZhsalX/NUtnTYclN6GfnBDRh4qRHjcDHmlJBJg==
+ dependencies:
+ fbjs "^0.8.9"
+ loose-envify "^1.3.1"
+ object-assign "^4.1.1"
+
+create-react-context@^0.2.2:
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/create-react-context/-/create-react-context-0.2.3.tgz#9ec140a6914a22ef04b8b09b7771de89567cb6f3"
+ integrity sha512-CQBmD0+QGgTaxDL3OX1IDXYqjkp2It4RIbcb99jS6AEg27Ga+a9G3JtK6SIu0HBwPLZlmwt9F7UwWA4Bn92Rag==
+ dependencies:
+ fbjs "^0.8.0"
+ gud "^1.0.0"
+
+cross-spawn@5.1.0, cross-spawn@^5.0.1, cross-spawn@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449"
+ integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=
+ dependencies:
+ lru-cache "^4.0.1"
+ shebang-command "^1.2.0"
+ which "^1.2.9"
+
+crypto-browserify@^3.11.0:
+ version "3.12.0"
+ resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec"
+ integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==
+ dependencies:
+ browserify-cipher "^1.0.0"
+ browserify-sign "^4.0.0"
+ create-ecdh "^4.0.0"
+ create-hash "^1.1.0"
+ create-hmac "^1.1.0"
+ diffie-hellman "^5.0.0"
+ inherits "^2.0.1"
+ pbkdf2 "^3.0.3"
+ public-encrypt "^4.0.0"
+ randombytes "^2.0.0"
+ randomfill "^1.0.3"
+
+crypto-js@^3.1.9-1:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-3.3.0.tgz#846dd1cce2f68aacfa156c8578f926a609b7976b"
+ integrity sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q==
+
+crypto-random-string@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e"
+ integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=
+
+css-animation@1.x, css-animation@^1.3.2, css-animation@^1.5.0:
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/css-animation/-/css-animation-1.6.1.tgz#162064a3b0d51f958b7ff37b3d6d4de18e17039e"
+ integrity sha512-/48+/BaEaHRY6kNQ2OIPzKf9A6g8WjZYjhiNDNuIVbsm5tXCGIAsHDjB4Xu1C4vXJtUWZo26O68OQkDpNBaPog==
+ dependencies:
+ babel-runtime "6.x"
+ component-classes "^1.2.5"
+
+css-color-keywords@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05"
+ integrity sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU=
+
+css-color-names@0.0.4:
+ version "0.0.4"
+ resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0"
+ integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=
+
+css-loader@0.28.7:
+ version "0.28.7"
+ resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.28.7.tgz#5f2ee989dd32edd907717f953317656160999c1b"
+ integrity sha512-GxMpax8a/VgcfRrVy0gXD6yLd5ePYbXX/5zGgTVYp4wXtJklS8Z2VaUArJgc//f6/Dzil7BaJObdSv8eKKCPgg==
+ dependencies:
+ babel-code-frame "^6.11.0"
+ css-selector-tokenizer "^0.7.0"
+ cssnano ">=2.6.1 <4"
+ icss-utils "^2.1.0"
+ loader-utils "^1.0.2"
+ lodash.camelcase "^4.3.0"
+ object-assign "^4.0.1"
+ postcss "^5.0.6"
+ postcss-modules-extract-imports "^1.0.0"
+ postcss-modules-local-by-default "^1.0.1"
+ postcss-modules-scope "^1.0.0"
+ postcss-modules-values "^1.1.0"
+ postcss-value-parser "^3.3.0"
+ source-list-map "^2.0.0"
+
+css-select@^1.1.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858"
+ integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=
+ dependencies:
+ boolbase "~1.0.0"
+ css-what "2.1"
+ domutils "1.5.1"
+ nth-check "~1.0.1"
+
+css-selector-tokenizer@^0.7.0:
+ version "0.7.3"
+ resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz#735f26186e67c749aaf275783405cf0661fae8f1"
+ integrity sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg==
+ dependencies:
+ cssesc "^3.0.0"
+ fastparse "^1.1.2"
+
+css-to-react-native@^2.0.3:
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-2.3.2.tgz#e75e2f8f7aa385b4c3611c52b074b70a002f2e7d"
+ integrity sha512-VOFaeZA053BqvvvqIA8c9n0+9vFppVBAHCp6JgFTtTMU3Mzi+XnelJ9XC9ul3BqFzZyQ5N+H0SnwsWT2Ebchxw==
+ dependencies:
+ camelize "^1.0.0"
+ css-color-keywords "^1.0.0"
+ postcss-value-parser "^3.3.0"
+
+css-what@2.1:
+ version "2.1.3"
+ resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2"
+ integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==
+
+cssesc@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
+ integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
+
+"cssnano@>=2.6.1 <4":
+ version "3.10.0"
+ resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38"
+ integrity sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=
+ dependencies:
+ autoprefixer "^6.3.1"
+ decamelize "^1.1.2"
+ defined "^1.0.0"
+ has "^1.0.1"
+ object-assign "^4.0.1"
+ postcss "^5.0.14"
+ postcss-calc "^5.2.0"
+ postcss-colormin "^2.1.8"
+ postcss-convert-values "^2.3.4"
+ postcss-discard-comments "^2.0.4"
+ postcss-discard-duplicates "^2.0.1"
+ postcss-discard-empty "^2.0.1"
+ postcss-discard-overridden "^0.1.1"
+ postcss-discard-unused "^2.2.1"
+ postcss-filter-plugins "^2.0.0"
+ postcss-merge-idents "^2.1.5"
+ postcss-merge-longhand "^2.0.1"
+ postcss-merge-rules "^2.0.3"
+ postcss-minify-font-values "^1.0.2"
+ postcss-minify-gradients "^1.0.1"
+ postcss-minify-params "^1.0.4"
+ postcss-minify-selectors "^2.0.4"
+ postcss-normalize-charset "^1.1.0"
+ postcss-normalize-url "^3.0.7"
+ postcss-ordered-values "^2.1.0"
+ postcss-reduce-idents "^2.2.2"
+ postcss-reduce-initial "^1.0.0"
+ postcss-reduce-transforms "^1.0.3"
+ postcss-svgo "^2.1.1"
+ postcss-unique-selectors "^2.0.2"
+ postcss-value-parser "^3.2.3"
+ postcss-zindex "^2.0.1"
+
+csso@~2.3.1:
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/csso/-/csso-2.3.2.tgz#ddd52c587033f49e94b71fc55569f252e8ff5f85"
+ integrity sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=
+ dependencies:
+ clap "^1.0.9"
+ source-map "^0.5.3"
+
+cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0":
+ version "0.3.8"
+ resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a"
+ integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==
+
+"cssstyle@>= 0.2.37 < 0.3.0":
+ version "0.2.37"
+ resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-0.2.37.tgz#541097234cb2513c83ceed3acddc27ff27987d54"
+ integrity sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=
+ dependencies:
+ cssom "0.3.x"
+
+csstype@^2.2.0:
+ version "2.6.13"
+ resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.13.tgz#a6893015b90e84dd6e85d0e3b442a1e84f2dbe0f"
+ integrity sha512-ul26pfSQTZW8dcOnD2iiJssfXw0gdNVX9IJDH/X3K5DGPfj+fUYe3kB+swUY6BF3oZDxaID3AJt+9/ojSAE05A==
+
+currently-unhandled@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea"
+ integrity sha1-mI3zP+qxke95mmE2nddsF635V+o=
+ dependencies:
+ array-find-index "^1.0.1"
+
+cyclist@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9"
+ integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=
+
+d@1, d@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a"
+ integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==
+ dependencies:
+ es5-ext "^0.10.50"
+ type "^1.0.1"
+
+damerau-levenshtein@^1.0.0:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz#143c1641cb3d85c60c32329e26899adea8701791"
+ integrity sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug==
+
+dashdash@^1.12.0:
+ version "1.14.1"
+ resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
+ integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=
+ dependencies:
+ assert-plus "^1.0.0"
+
+debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.6, debug@^2.6.8, debug@^2.6.9:
+ version "2.6.9"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
+ integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
+ dependencies:
+ ms "2.0.0"
+
+debug@3.1.0, debug@=3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
+ integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==
+ dependencies:
+ ms "2.0.0"
+
+debug@^3.0.1, debug@^3.1.0, debug@^3.1.1:
+ version "3.2.6"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
+ integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==
+ dependencies:
+ ms "^2.1.1"
+
+debuglog@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492"
+ integrity sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=
+
+decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2, decamelize@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
+ integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
+
+decode-uri-component@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
+ integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
+
+deep-diff@^0.3.5:
+ version "0.3.8"
+ resolved "https://registry.yarnpkg.com/deep-diff/-/deep-diff-0.3.8.tgz#c01de63efb0eec9798801d40c7e0dae25b582c84"
+ integrity sha1-wB3mPvsO7JeYgB1Ax+Da4ltYLIQ=
+
+deep-equal@^1.0.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a"
+ integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==
+ dependencies:
+ is-arguments "^1.0.4"
+ is-date-object "^1.0.1"
+ is-regex "^1.0.4"
+ object-is "^1.0.1"
+ object-keys "^1.1.1"
+ regexp.prototype.flags "^1.2.0"
+
+deep-extend@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
+ integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==
+
+deep-is@~0.1.3:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
+ integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=
+
+deepmerge@^2.1.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-2.2.1.tgz#5d3ff22a01c00f645405a2fbc17d0778a1801170"
+ integrity sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==
+
+default-require-extensions@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8"
+ integrity sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=
+ dependencies:
+ strip-bom "^2.0.0"
+
+defaults@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d"
+ integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=
+ dependencies:
+ clone "^1.0.2"
+
+define-properties@^1.1.2, define-properties@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
+ integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
+ dependencies:
+ object-keys "^1.0.12"
+
+define-property@^0.2.5:
+ version "0.2.5"
+ resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116"
+ integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=
+ dependencies:
+ is-descriptor "^0.1.0"
+
+define-property@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6"
+ integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY=
+ dependencies:
+ is-descriptor "^1.0.0"
+
+define-property@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d"
+ integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==
+ dependencies:
+ is-descriptor "^1.0.2"
+ isobject "^3.0.1"
+
+defined@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693"
+ integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=
+
+del@^2.2.2:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8"
+ integrity sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=
+ dependencies:
+ globby "^5.0.0"
+ is-path-cwd "^1.0.0"
+ is-path-in-cwd "^1.0.0"
+ object-assign "^4.0.1"
+ pify "^2.0.0"
+ pinkie-promise "^2.0.0"
+ rimraf "^2.2.8"
+
+del@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5"
+ integrity sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=
+ dependencies:
+ globby "^6.1.0"
+ is-path-cwd "^1.0.0"
+ is-path-in-cwd "^1.0.0"
+ p-map "^1.1.1"
+ pify "^3.0.0"
+ rimraf "^2.2.8"
+
+delayed-stream@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
+ integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
+
+delegates@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
+ integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=
+
+depd@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
+ integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=
+
+des.js@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843"
+ integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==
+ dependencies:
+ inherits "^2.0.1"
+ minimalistic-assert "^1.0.0"
+
+destroy@~1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
+ integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=
+
+detect-indent@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208"
+ integrity sha1-920GQ1LN9Docts5hnE7jqUdd4gg=
+ dependencies:
+ repeating "^2.0.0"
+
+detect-indent@~5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d"
+ integrity sha1-OHHMCmoALow+Wzz38zYmRnXwa50=
+
+detect-newline@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2"
+ integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=
+
+detect-node@^2.0.3:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c"
+ integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==
+
+detect-port-alt@1.1.6:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.6.tgz#24707deabe932d4a3cf621302027c2b266568275"
+ integrity sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==
+ dependencies:
+ address "^1.0.1"
+ debug "^2.6.0"
+
+dezalgo@^1.0.0, dezalgo@~1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.3.tgz#7f742de066fc748bc8db820569dddce49bf0d456"
+ integrity sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY=
+ dependencies:
+ asap "^2.0.0"
+ wrappy "1"
+
+diff@^3.2.0:
+ version "3.5.0"
+ resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12"
+ integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==
+
+diffie-hellman@^5.0.0:
+ version "5.0.3"
+ resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875"
+ integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==
+ dependencies:
+ bn.js "^4.1.0"
+ miller-rabin "^4.0.0"
+ randombytes "^2.0.0"
+
+dns-equal@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d"
+ integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0=
+
+dns-packet@^1.3.1:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a"
+ integrity sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==
+ dependencies:
+ ip "^1.1.0"
+ safe-buffer "^5.0.1"
+
+dns-txt@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6"
+ integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=
+ dependencies:
+ buffer-indexof "^1.0.0"
+
+doctrine@1.5.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa"
+ integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=
+ dependencies:
+ esutils "^2.0.2"
+ isarray "^1.0.0"
+
+doctrine@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d"
+ integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==
+ dependencies:
+ esutils "^2.0.2"
+
+dom-align@^1.7.0:
+ version "1.12.0"
+ resolved "https://registry.yarnpkg.com/dom-align/-/dom-align-1.12.0.tgz#56fb7156df0b91099830364d2d48f88963f5a29c"
+ integrity sha512-YkoezQuhp3SLFGdOlr5xkqZ640iXrnHAwVYcDg8ZKRUtO7mSzSC2BA5V0VuyAwPSJA4CLIc6EDDJh4bEsD2+zA==
+
+dom-closest@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/dom-closest/-/dom-closest-0.2.0.tgz#ebd9f91d1bf22e8d6f477876bbcd3ec90216c0cf"
+ integrity sha1-69n5HRvyLo1vR3h2u80+yQIWwM8=
+ dependencies:
+ dom-matches ">=1.0.1"
+
+dom-converter@^0.2:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768"
+ integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==
+ dependencies:
+ utila "~0.4"
+
+dom-matches@>=1.0.1:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/dom-matches/-/dom-matches-2.0.0.tgz#d2728b416a87533980eb089b848d253cf23a758c"
+ integrity sha1-0nKLQWqHUzmA6wibhI0lPPI6dYw=
+
+dom-scroll-into-view@1.x, dom-scroll-into-view@^1.2.0, dom-scroll-into-view@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/dom-scroll-into-view/-/dom-scroll-into-view-1.2.1.tgz#e8f36732dd089b0201a88d7815dc3f88e6d66c7e"
+ integrity sha1-6PNnMt0ImwIBqI14Fdw/iObWbH4=
+
+dom-serializer@0:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51"
+ integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==
+ dependencies:
+ domelementtype "^2.0.1"
+ entities "^2.0.0"
+
+dom-urls@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/dom-urls/-/dom-urls-1.1.0.tgz#001ddf81628cd1e706125c7176f53ccec55d918e"
+ integrity sha1-AB3fgWKM0ecGElxxdvU8zsVdkY4=
+ dependencies:
+ urijs "^1.16.1"
+
+domain-browser@^1.1.1:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda"
+ integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==
+
+domelementtype@1, domelementtype@^1.3.1:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f"
+ integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==
+
+domelementtype@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d"
+ integrity sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==
+
+domhandler@^2.3.0:
+ version "2.4.2"
+ resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803"
+ integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==
+ dependencies:
+ domelementtype "1"
+
+domutils@1.5.1:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf"
+ integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=
+ dependencies:
+ dom-serializer "0"
+ domelementtype "1"
+
+domutils@^1.5.1:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a"
+ integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==
+ dependencies:
+ dom-serializer "0"
+ domelementtype "1"
+
+dot-prop@^4.1.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57"
+ integrity sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==
+ dependencies:
+ is-obj "^1.0.0"
+
+dotenv-expand@4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-4.2.0.tgz#def1f1ca5d6059d24a766e587942c21106ce1275"
+ integrity sha1-3vHxyl1gWdJKdm5YeULCEQbOEnU=
+
+dotenv@4.0.0, dotenv@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-4.0.0.tgz#864ef1379aced55ce6f95debecdce179f7a0cd1d"
+ integrity sha1-hk7xN5rO1Vzm+V3r7NzhefegzR0=
+
+dotenv@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-5.0.1.tgz#a5317459bd3d79ab88cff6e44057a6a3fbb1fcef"
+ integrity sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow==
+
+draft-js@^0.10.0, draft-js@~0.10.0:
+ version "0.10.5"
+ resolved "https://registry.yarnpkg.com/draft-js/-/draft-js-0.10.5.tgz#bfa9beb018fe0533dbb08d6675c371a6b08fa742"
+ integrity sha512-LE6jSCV9nkPhfVX2ggcRLA4FKs6zWq9ceuO/88BpXdNCS7mjRTgs0NsV6piUCJX9YxMsB9An33wnkMmU2sD2Zg==
+ dependencies:
+ fbjs "^0.8.15"
+ immutable "~3.7.4"
+ object-assign "^4.1.0"
+
+dsbridge@^3.1.3:
+ version "3.1.4"
+ resolved "https://registry.yarnpkg.com/dsbridge/-/dsbridge-3.1.4.tgz#2cd598def017df8f729b40d33bc9c72934d44e19"
+ integrity sha512-0PczJDk+SRiJjyfTRIVvAsdmC4CbSb4nbfa/ajr3ZbluCpkIiiftDLBITygj0KIKvNvXHqMdXbBQGn99rWKT9A==
+
+duplexer3@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2"
+ integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=
+
+duplexer@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1"
+ integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=
+
+duplexify@^3.4.2, duplexify@^3.6.0:
+ version "3.7.1"
+ resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309"
+ integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==
+ dependencies:
+ end-of-stream "^1.0.0"
+ inherits "^2.0.1"
+ readable-stream "^2.0.0"
+ stream-shift "^1.0.0"
+
+ecc-jsbn@~0.1.1:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9"
+ integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=
+ dependencies:
+ jsbn "~0.1.0"
+ safer-buffer "^2.1.0"
+
+editor@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/editor/-/editor-1.0.0.tgz#60c7f87bd62bcc6a894fa8ccd6afb7823a24f742"
+ integrity sha1-YMf4e9YrzGqJT6jM1q+3gjok90I=
+
+ee-first@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
+ integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
+
+electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.30:
+ version "1.3.515"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.515.tgz#96683d2c2be9bf83f6cca75d504a7b443d763c08"
+ integrity sha512-C9h2yLQwNSK/GTtWQsA9O6mLKv0ubmiAQgmz1HvHnAIH8g5Sje1shWxcooumbGiwgqvZ9yrTYULe4seMTgMYqQ==
+
+elliptic@^6.0.0, elliptic@^6.5.2:
+ version "6.5.3"
+ resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.3.tgz#cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6"
+ integrity sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==
+ dependencies:
+ bn.js "^4.4.0"
+ brorand "^1.0.1"
+ hash.js "^1.0.0"
+ hmac-drbg "^1.0.0"
+ inherits "^2.0.1"
+ minimalistic-assert "^1.0.0"
+ minimalistic-crypto-utils "^1.0.0"
+
+emoji-regex@^6.1.0:
+ version "6.5.1"
+ resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-6.5.1.tgz#9baea929b155565c11ea41c6626eaa65cef992c2"
+ integrity sha512-PAHp6TxrCy7MGMFidro8uikr+zlJJKJ/Q6mm2ExZ7HwkyR9lSVFfE3kt36qcwa24BQL7y0G9axycGjK1A/0uNQ==
+
+emoji-regex@^7.0.1:
+ version "7.0.3"
+ resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156"
+ integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==
+
+emojis-list@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389"
+ integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k=
+
+emojis-list@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78"
+ integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==
+
+encodeurl@~1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
+ integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
+
+encoding@^0.1.11:
+ version "0.1.13"
+ resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9"
+ integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==
+ dependencies:
+ iconv-lite "^0.6.2"
+
+end-of-stream@^1.0.0, end-of-stream@^1.1.0:
+ version "1.4.4"
+ resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
+ integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
+ dependencies:
+ once "^1.4.0"
+
+enhanced-resolve@^3.4.0:
+ version "3.4.1"
+ resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz#0421e339fd71419b3da13d129b3979040230476e"
+ integrity sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24=
+ dependencies:
+ graceful-fs "^4.1.2"
+ memory-fs "^0.4.0"
+ object-assign "^4.0.1"
+ tapable "^0.2.7"
+
+enquire.js@^2.1.6:
+ version "2.1.6"
+ resolved "https://registry.yarnpkg.com/enquire.js/-/enquire.js-2.1.6.tgz#3e8780c9b8b835084c3f60e166dbc3c2a3c89814"
+ integrity sha1-PoeAybi4NQhMP2DhZtvDwqPImBQ=
+
+entities@^1.1.1:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56"
+ integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==
+
+entities@^2.0.0:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.3.tgz#5c487e5742ab93c15abb5da22759b8590ec03b7f"
+ integrity sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==
+
+env-paths@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.0.tgz#cdca557dc009152917d6166e2febe1f039685e43"
+ integrity sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA==
+
+err-code@^1.0.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/err-code/-/err-code-1.1.2.tgz#06e0116d3028f6aef4806849eb0ea6a748ae6960"
+ integrity sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=
+
+errno@^0.1.1, errno@^0.1.3, errno@~0.1.7:
+ version "0.1.7"
+ resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618"
+ integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==
+ dependencies:
+ prr "~1.0.1"
+
+error-ex@^1.2.0:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
+ integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
+ dependencies:
+ is-arrayish "^0.2.1"
+
+es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.5:
+ version "1.17.6"
+ resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.6.tgz#9142071707857b2cacc7b89ecb670316c3e2d52a"
+ integrity sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==
+ dependencies:
+ es-to-primitive "^1.2.1"
+ function-bind "^1.1.1"
+ has "^1.0.3"
+ has-symbols "^1.0.1"
+ is-callable "^1.2.0"
+ is-regex "^1.1.0"
+ object-inspect "^1.7.0"
+ object-keys "^1.1.1"
+ object.assign "^4.1.0"
+ string.prototype.trimend "^1.0.1"
+ string.prototype.trimstart "^1.0.1"
+
+es-to-primitive@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"
+ integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==
+ dependencies:
+ is-callable "^1.1.4"
+ is-date-object "^1.0.1"
+ is-symbol "^1.0.2"
+
+es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@~0.10.14:
+ version "0.10.53"
+ resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1"
+ integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==
+ dependencies:
+ es6-iterator "~2.0.3"
+ es6-symbol "~3.1.3"
+ next-tick "~1.0.0"
+
+es6-iterator@^2.0.3, es6-iterator@~2.0.1, es6-iterator@~2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7"
+ integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c=
+ dependencies:
+ d "1"
+ es5-ext "^0.10.35"
+ es6-symbol "^3.1.1"
+
+es6-map@^0.1.3:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0"
+ integrity sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=
+ dependencies:
+ d "1"
+ es5-ext "~0.10.14"
+ es6-iterator "~2.0.1"
+ es6-set "~0.1.5"
+ es6-symbol "~3.1.1"
+ event-emitter "~0.3.5"
+
+es6-promise@^4.0.3, es6-promise@^4.0.5:
+ version "4.2.8"
+ resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a"
+ integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==
+
+es6-promisify@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203"
+ integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=
+ dependencies:
+ es6-promise "^4.0.3"
+
+es6-set@~0.1.5:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1"
+ integrity sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=
+ dependencies:
+ d "1"
+ es5-ext "~0.10.14"
+ es6-iterator "~2.0.1"
+ es6-symbol "3.1.1"
+ event-emitter "~0.3.5"
+
+es6-symbol@3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77"
+ integrity sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=
+ dependencies:
+ d "1"
+ es5-ext "~0.10.14"
+
+es6-symbol@^3.1.1, es6-symbol@~3.1.1, es6-symbol@~3.1.3:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18"
+ integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==
+ dependencies:
+ d "^1.0.1"
+ ext "^1.1.2"
+
+es6-weak-map@^2.0.1:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53"
+ integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==
+ dependencies:
+ d "1"
+ es5-ext "^0.10.46"
+ es6-iterator "^2.0.3"
+ es6-symbol "^3.1.1"
+
+escape-html@~1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
+ integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=
+
+escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
+ integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
+
+escodegen@^1.6.1:
+ version "1.14.3"
+ resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503"
+ integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==
+ dependencies:
+ esprima "^4.0.1"
+ estraverse "^4.2.0"
+ esutils "^2.0.2"
+ optionator "^0.8.1"
+ optionalDependencies:
+ source-map "~0.6.1"
+
+escope@^3.6.0:
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3"
+ integrity sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=
+ dependencies:
+ es6-map "^0.1.3"
+ es6-weak-map "^2.0.1"
+ esrecurse "^4.1.0"
+ estraverse "^4.1.1"
+
+eslint-config-react-app@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-2.1.0.tgz#23c909f71cbaff76b945b831d2d814b8bde169eb"
+ integrity sha512-8QZrKWuHVC57Fmu+SsKAVxnI9LycZl7NFQ4H9L+oeISuCXhYdXqsOOIVSjQFW6JF5MXZLFE+21Syhd7mF1IRZQ==
+
+eslint-import-resolver-node@^0.3.1:
+ version "0.3.4"
+ resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717"
+ integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==
+ dependencies:
+ debug "^2.6.9"
+ resolve "^1.13.1"
+
+eslint-loader@1.9.0:
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-1.9.0.tgz#7e1be9feddca328d3dcfaef1ad49d5beffe83a13"
+ integrity sha512-40aN976qSNPyb9ejTqjEthZITpls1SVKtwguahmH1dzGCwQU/vySE+xX33VZmD8csU0ahVNCtFlsPgKqRBiqgg==
+ dependencies:
+ loader-fs-cache "^1.0.0"
+ loader-utils "^1.0.2"
+ object-assign "^4.0.1"
+ object-hash "^1.1.4"
+ rimraf "^2.6.1"
+
+eslint-module-utils@^2.1.1:
+ version "2.6.0"
+ resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6"
+ integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==
+ dependencies:
+ debug "^2.6.9"
+ pkg-dir "^2.0.0"
+
+eslint-plugin-flowtype@2.39.1:
+ version "2.39.1"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.39.1.tgz#b5624622a0388bcd969f4351131232dcb9649cd5"
+ integrity sha512-RiQv+7Z9QDJuzt+NO8sYgkLGT+h+WeCrxP7y8lI7wpU41x3x/2o3PGtHk9ck8QnA9/mlbNcy/hG0eKvmd7npaA==
+ dependencies:
+ lodash "^4.15.0"
+
+eslint-plugin-import@2.8.0:
+ version "2.8.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.8.0.tgz#fa1b6ef31fcb3c501c09859c1b86f1fc5b986894"
+ integrity sha512-Rf7dfKJxZ16QuTgVv1OYNxkZcsu/hULFnC+e+w0Gzi6jMC3guQoWQgxYxc54IDRinlb6/0v5z/PxxIKmVctN+g==
+ dependencies:
+ builtin-modules "^1.1.1"
+ contains-path "^0.1.0"
+ debug "^2.6.8"
+ doctrine "1.5.0"
+ eslint-import-resolver-node "^0.3.1"
+ eslint-module-utils "^2.1.1"
+ has "^1.0.1"
+ lodash.cond "^4.3.0"
+ minimatch "^3.0.3"
+ read-pkg-up "^2.0.0"
+
+eslint-plugin-jsx-a11y@5.1.1:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-5.1.1.tgz#5c96bb5186ca14e94db1095ff59b3e2bd94069b1"
+ integrity sha512-5I9SpoP7gT4wBFOtXT8/tXNPYohHBVfyVfO17vkbC7r9kEIxYJF12D3pKqhk8+xnk12rfxKClS3WCFpVckFTPQ==
+ dependencies:
+ aria-query "^0.7.0"
+ array-includes "^3.0.3"
+ ast-types-flow "0.0.7"
+ axobject-query "^0.1.0"
+ damerau-levenshtein "^1.0.0"
+ emoji-regex "^6.1.0"
+ jsx-ast-utils "^1.4.0"
+
+eslint-plugin-react@7.4.0:
+ version "7.4.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.4.0.tgz#300a95861b9729c087d362dd64abcc351a74364a"
+ integrity sha512-tvjU9u3VqmW2vVuYnE8Qptq+6ji4JltjOjJ9u7VAOxVYkUkyBZWRvNYKbDv5fN+L6wiA+4we9+qQahZ0m63XEA==
+ dependencies:
+ doctrine "^2.0.0"
+ has "^1.0.1"
+ jsx-ast-utils "^2.0.0"
+ prop-types "^15.5.10"
+
+eslint-scope@^3.7.1:
+ version "3.7.3"
+ resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.3.tgz#bb507200d3d17f60247636160b4826284b108535"
+ integrity sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA==
+ dependencies:
+ esrecurse "^4.1.0"
+ estraverse "^4.1.1"
+
+eslint@4.10.0:
+ version "4.10.0"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.10.0.tgz#f25d0d7955c81968c2309aa5c9a229e045176bb7"
+ integrity sha512-MMVl8P/dYUFZEvolL8PYt7qc5LNdS2lwheq9BYa5Y07FblhcZqFyaUqlS8TW5QITGex21tV4Lk0a3fK8lsJIkA==
+ dependencies:
+ ajv "^5.2.0"
+ babel-code-frame "^6.22.0"
+ chalk "^2.1.0"
+ concat-stream "^1.6.0"
+ cross-spawn "^5.1.0"
+ debug "^3.0.1"
+ doctrine "^2.0.0"
+ eslint-scope "^3.7.1"
+ espree "^3.5.1"
+ esquery "^1.0.0"
+ estraverse "^4.2.0"
+ esutils "^2.0.2"
+ file-entry-cache "^2.0.0"
+ functional-red-black-tree "^1.0.1"
+ glob "^7.1.2"
+ globals "^9.17.0"
+ ignore "^3.3.3"
+ imurmurhash "^0.1.4"
+ inquirer "^3.0.6"
+ is-resolvable "^1.0.0"
+ js-yaml "^3.9.1"
+ json-stable-stringify "^1.0.1"
+ levn "^0.3.0"
+ lodash "^4.17.4"
+ minimatch "^3.0.2"
+ mkdirp "^0.5.1"
+ natural-compare "^1.4.0"
+ optionator "^0.8.2"
+ path-is-inside "^1.0.2"
+ pluralize "^7.0.0"
+ progress "^2.0.0"
+ require-uncached "^1.0.3"
+ semver "^5.3.0"
+ strip-ansi "^4.0.0"
+ strip-json-comments "~2.0.1"
+ table "^4.0.1"
+ text-table "~0.2.0"
+
+espree@^3.5.1:
+ version "3.5.4"
+ resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.4.tgz#b0f447187c8a8bed944b815a660bddf5deb5d1a7"
+ integrity sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==
+ dependencies:
+ acorn "^5.5.0"
+ acorn-jsx "^3.0.0"
+
+esprima@^2.6.0:
+ version "2.7.3"
+ resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581"
+ integrity sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=
+
+esprima@^4.0.0, esprima@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
+ integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
+
+esquery@^1.0.0:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57"
+ integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==
+ dependencies:
+ estraverse "^5.1.0"
+
+esrecurse@^4.1.0:
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf"
+ integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==
+ dependencies:
+ estraverse "^4.1.0"
+
+estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
+ integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
+
+estraverse@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.1.0.tgz#374309d39fd935ae500e7b92e8a6b4c720e59642"
+ integrity sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw==
+
+esutils@^2.0.2:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
+ integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
+
+etag@~1.8.1:
+ version "1.8.1"
+ resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
+ integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=
+
+event-emitter@~0.3.5:
+ version "0.3.5"
+ resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39"
+ integrity sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=
+ dependencies:
+ d "1"
+ es5-ext "~0.10.14"
+
+eventemitter3@^4.0.0:
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384"
+ integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==
+
+eventlistener@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/eventlistener/-/eventlistener-0.0.1.tgz#ed2baabb852227af2bcf889152c72c63ca532eb8"
+ integrity sha1-7Suqu4UiJ68rz4iRUscsY8pTLrg=
+
+events@^3.0.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/events/-/events-3.2.0.tgz#93b87c18f8efcd4202a461aec4dfc0556b639379"
+ integrity sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==
+
+eventsource@0.1.6:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232"
+ integrity sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=
+ dependencies:
+ original ">=0.0.5"
+
+evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02"
+ integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==
+ dependencies:
+ md5.js "^1.3.4"
+ safe-buffer "^5.1.1"
+
+exec-sh@^0.2.0:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.2.tgz#2a5e7ffcbd7d0ba2755bdecb16e5a427dfbdec36"
+ integrity sha512-FIUCJz1RbuS0FKTdaAafAByGS0CPvU3R0MeHxgtl+djzCc//F8HakL8GzmVNZanasTbTAY/3DRFA0KpVqj/eAw==
+ dependencies:
+ merge "^1.2.0"
+
+execa@^0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777"
+ integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=
+ dependencies:
+ cross-spawn "^5.0.1"
+ get-stream "^3.0.0"
+ is-stream "^1.1.0"
+ npm-run-path "^2.0.0"
+ p-finally "^1.0.0"
+ signal-exit "^3.0.0"
+ strip-eof "^1.0.0"
+
+expand-brackets@^0.1.4:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b"
+ integrity sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=
+ dependencies:
+ is-posix-bracket "^0.1.0"
+
+expand-brackets@^2.1.4:
+ version "2.1.4"
+ resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622"
+ integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI=
+ dependencies:
+ debug "^2.3.3"
+ define-property "^0.2.5"
+ extend-shallow "^2.0.1"
+ posix-character-classes "^0.1.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
+
+expand-range@^1.8.1:
+ version "1.8.2"
+ resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337"
+ integrity sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=
+ dependencies:
+ fill-range "^2.1.0"
+
+expand-tilde@^2.0.0, expand-tilde@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502"
+ integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=
+ dependencies:
+ homedir-polyfill "^1.0.1"
+
+express@^4.16.2:
+ version "4.17.1"
+ resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134"
+ integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==
+ dependencies:
+ accepts "~1.3.7"
+ array-flatten "1.1.1"
+ body-parser "1.19.0"
+ content-disposition "0.5.3"
+ content-type "~1.0.4"
+ cookie "0.4.0"
+ cookie-signature "1.0.6"
+ debug "2.6.9"
+ depd "~1.1.2"
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ etag "~1.8.1"
+ finalhandler "~1.1.2"
+ fresh "0.5.2"
+ merge-descriptors "1.0.1"
+ methods "~1.1.2"
+ on-finished "~2.3.0"
+ parseurl "~1.3.3"
+ path-to-regexp "0.1.7"
+ proxy-addr "~2.0.5"
+ qs "6.7.0"
+ range-parser "~1.2.1"
+ safe-buffer "5.1.2"
+ send "0.17.1"
+ serve-static "1.14.1"
+ setprototypeof "1.1.1"
+ statuses "~1.5.0"
+ type-is "~1.6.18"
+ utils-merge "1.0.1"
+ vary "~1.1.2"
+
+ext@^1.1.2:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244"
+ integrity sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==
+ dependencies:
+ type "^2.0.0"
+
+extend-shallow@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
+ integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=
+ dependencies:
+ is-extendable "^0.1.0"
+
+extend-shallow@^3.0.0, extend-shallow@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
+ integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=
+ dependencies:
+ assign-symbols "^1.0.0"
+ is-extendable "^1.0.1"
+
+extend@~3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
+ integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
+
+external-editor@^2.0.4:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5"
+ integrity sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==
+ dependencies:
+ chardet "^0.4.0"
+ iconv-lite "^0.4.17"
+ tmp "^0.0.33"
+
+extglob@^0.3.1:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1"
+ integrity sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=
+ dependencies:
+ is-extglob "^1.0.0"
+
+extglob@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543"
+ integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==
+ dependencies:
+ array-unique "^0.3.2"
+ define-property "^1.0.0"
+ expand-brackets "^2.1.4"
+ extend-shallow "^2.0.1"
+ fragment-cache "^0.2.1"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
+
+extract-text-webpack-plugin@3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.2.tgz#5f043eaa02f9750a9258b78c0a6e0dc1408fb2f7"
+ integrity sha512-bt/LZ4m5Rqt/Crl2HiKuAl/oqg0psx1tsTLkvWbJen1CtD+fftkZhMaQ9HOtY2gWsl2Wq+sABmMVi9z3DhKWQQ==
+ dependencies:
+ async "^2.4.1"
+ loader-utils "^1.1.0"
+ schema-utils "^0.3.0"
+ webpack-sources "^1.0.1"
+
+extsprintf@1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
+ integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=
+
+extsprintf@^1.2.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f"
+ integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=
+
+fast-deep-equal@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614"
+ integrity sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=
+
+fast-deep-equal@^3.1.1:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
+ integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
+
+fast-json-stable-stringify@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
+ integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
+
+fast-levenshtein@~2.0.6:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
+ integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
+
+fastparse@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9"
+ integrity sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==
+
+faye-websocket@^0.10.0:
+ version "0.10.0"
+ resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4"
+ integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=
+ dependencies:
+ websocket-driver ">=0.5.1"
+
+faye-websocket@~0.11.0:
+ version "0.11.3"
+ resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e"
+ integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==
+ dependencies:
+ websocket-driver ">=0.5.1"
+
+fb-watchman@^1.8.0:
+ version "1.9.2"
+ resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-1.9.2.tgz#a24cf47827f82d38fb59a69ad70b76e3b6ae7383"
+ integrity sha1-okz0eCf4LTj7Waaa1wt247auc4M=
+ dependencies:
+ bser "1.0.2"
+
+fb-watchman@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85"
+ integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==
+ dependencies:
+ bser "2.1.1"
+
+fbjs@^0.8.0, fbjs@^0.8.1, fbjs@^0.8.15, fbjs@^0.8.16, fbjs@^0.8.9:
+ version "0.8.17"
+ resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz#c4d598ead6949112653d6588b01a5cdcd9f90fdd"
+ integrity sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=
+ dependencies:
+ core-js "^1.0.0"
+ isomorphic-fetch "^2.1.1"
+ loose-envify "^1.0.0"
+ object-assign "^4.1.0"
+ promise "^7.1.1"
+ setimmediate "^1.0.5"
+ ua-parser-js "^0.7.18"
+
+figgy-pudding@^3.4.1, figgy-pudding@^3.5.1:
+ version "3.5.2"
+ resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e"
+ integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==
+
+figures@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962"
+ integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=
+ dependencies:
+ escape-string-regexp "^1.0.5"
+
+file-entry-cache@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361"
+ integrity sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=
+ dependencies:
+ flat-cache "^1.2.1"
+ object-assign "^4.0.1"
+
+file-loader@1.1.5:
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-1.1.5.tgz#91c25b6b6fbe56dae99f10a425fd64933b5c9daa"
+ integrity sha512-RzGHDatcVNpGISTvCpfUfOGpYuSR7HSsSg87ki+wF6rw1Hm0RALPTiAdsxAq1UwLf0RRhbe22/eHK6nhXspiOQ==
+ dependencies:
+ loader-utils "^1.0.2"
+ schema-utils "^0.3.0"
+
+file-uri-to-path@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd"
+ integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==
+
+filename-regex@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26"
+ integrity sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=
+
+fileset@^2.0.2:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/fileset/-/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0"
+ integrity sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=
+ dependencies:
+ glob "^7.0.3"
+ minimatch "^3.0.3"
+
+filesize@3.5.11:
+ version "3.5.11"
+ resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.5.11.tgz#1919326749433bb3cf77368bd158caabcc19e9ee"
+ integrity sha512-ZH7loueKBoDb7yG9esn1U+fgq7BzlzW6NRi5/rMdxIZ05dj7GFD/Xc5rq2CDt5Yq86CyfSYVyx4242QQNZbx1g==
+
+filesize@^3.6.1:
+ version "3.6.1"
+ resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317"
+ integrity sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==
+
+fill-range@^2.1.0:
+ version "2.2.4"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565"
+ integrity sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==
+ dependencies:
+ is-number "^2.1.0"
+ isobject "^2.0.0"
+ randomatic "^3.0.0"
+ repeat-element "^1.1.2"
+ repeat-string "^1.5.2"
+
+fill-range@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
+ integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=
+ dependencies:
+ extend-shallow "^2.0.1"
+ is-number "^3.0.0"
+ repeat-string "^1.6.1"
+ to-regex-range "^2.1.0"
+
+fill-range@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
+ integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
+ dependencies:
+ to-regex-range "^5.0.1"
+
+finalhandler@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d"
+ integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==
+ dependencies:
+ debug "2.6.9"
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ on-finished "~2.3.0"
+ parseurl "~1.3.3"
+ statuses "~1.5.0"
+ unpipe "~1.0.0"
+
+find-cache-dir@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9"
+ integrity sha1-yN765XyKUqinhPnjHFfHQumToLk=
+ dependencies:
+ commondir "^1.0.1"
+ mkdirp "^0.5.1"
+ pkg-dir "^1.0.0"
+
+find-cache-dir@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f"
+ integrity sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=
+ dependencies:
+ commondir "^1.0.1"
+ make-dir "^1.0.0"
+ pkg-dir "^2.0.0"
+
+find-npm-prefix@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/find-npm-prefix/-/find-npm-prefix-1.0.2.tgz#8d8ce2c78b3b4b9e66c8acc6a37c231eb841cfdf"
+ integrity sha512-KEftzJ+H90x6pcKtdXZEPsQse8/y/UnvzRKrOSQFprnrGaFuJ62fVkP34Iu2IYuMvyauCyoLTNkJZgrrGA2wkA==
+
+find-up@^1.0.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f"
+ integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=
+ dependencies:
+ path-exists "^2.0.0"
+ pinkie-promise "^2.0.0"
+
+find-up@^2.0.0, find-up@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7"
+ integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c=
+ dependencies:
+ locate-path "^2.0.0"
+
+find-up@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73"
+ integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==
+ dependencies:
+ locate-path "^3.0.0"
+
+flat-cache@^1.2.1:
+ version "1.3.4"
+ resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.4.tgz#2c2ef77525cc2929007dfffa1dd314aa9c9dee6f"
+ integrity sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==
+ dependencies:
+ circular-json "^0.3.1"
+ graceful-fs "^4.1.2"
+ rimraf "~2.6.2"
+ write "^0.2.1"
+
+flatten@^1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b"
+ integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==
+
+flow-bin@0.80.0:
+ version "0.80.0"
+ resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.80.0.tgz#04cc1ee626a6f50786f78170c92ebe1745235403"
+ integrity sha512-0wRnqvXErQRPrx6GBLB5swgndfWkotd9MgfePgT7Z+VsE046c8Apzl7KKTCypB/pzn0pZF2g5Jurxxb2umET8g==
+
+flush-write-stream@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8"
+ integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==
+ dependencies:
+ inherits "^2.0.3"
+ readable-stream "^2.3.6"
+
+fn-name@~2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/fn-name/-/fn-name-2.0.1.tgz#5214d7537a4d06a4a301c0cc262feb84188002e7"
+ integrity sha1-UhTXU3pNBqSjAcDMJi/rhBiAAuc=
+
+follow-redirects@1.5.10:
+ version "1.5.10"
+ resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a"
+ integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==
+ dependencies:
+ debug "=3.1.0"
+
+follow-redirects@^1.0.0:
+ version "1.12.1"
+ resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.12.1.tgz#de54a6205311b93d60398ebc01cf7015682312b6"
+ integrity sha512-tmRv0AVuR7ZyouUHLeNSiO6pqulF7dYa3s19c6t+wz9LD69/uSzdMxJ2S91nTI9U3rt/IldxpzMOFejp6f0hjg==
+
+for-in@^1.0.1, for-in@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
+ integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=
+
+for-own@^0.1.4:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce"
+ integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=
+ dependencies:
+ for-in "^1.0.1"
+
+forever-agent@~0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
+ integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=
+
+form-data@~2.3.2:
+ version "2.3.3"
+ resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6"
+ integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==
+ dependencies:
+ asynckit "^0.4.0"
+ combined-stream "^1.0.6"
+ mime-types "^2.1.12"
+
+formik@^1.2.0:
+ version "1.5.8"
+ resolved "https://registry.yarnpkg.com/formik/-/formik-1.5.8.tgz#eee8cd345effe46839bc748c7f920486f12f14b0"
+ integrity sha512-fNvPe+ddbh+7xiByT25vuso2p2hseG/Yvuj211fV1DbCjljUEG9OpgRpcb7g7O3kxHX/q31cbZDzMxJXPWSNwA==
+ dependencies:
+ create-react-context "^0.2.2"
+ deepmerge "^2.1.1"
+ hoist-non-react-statics "^3.3.0"
+ lodash "^4.17.14"
+ lodash-es "^4.17.14"
+ prop-types "^15.6.1"
+ react-fast-compare "^2.0.1"
+ tiny-warning "^1.0.2"
+ tslib "^1.9.3"
+
+forwarded@~0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84"
+ integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=
+
+fragment-cache@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19"
+ integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=
+ dependencies:
+ map-cache "^0.2.2"
+
+fresh@0.5.2:
+ version "0.5.2"
+ resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
+ integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=
+
+from2@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/from2/-/from2-1.3.0.tgz#88413baaa5f9a597cfde9221d86986cd3c061dfd"
+ integrity sha1-iEE7qqX5pZfP3pIh2GmGzTwGHf0=
+ dependencies:
+ inherits "~2.0.1"
+ readable-stream "~1.1.10"
+
+from2@^2.1.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af"
+ integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=
+ dependencies:
+ inherits "^2.0.1"
+ readable-stream "^2.0.0"
+
+fs-extra@3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-3.0.1.tgz#3794f378c58b342ea7dbbb23095109c4b3b62291"
+ integrity sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=
+ dependencies:
+ graceful-fs "^4.1.2"
+ jsonfile "^3.0.0"
+ universalify "^0.1.0"
+
+fs-extra@^0.30.0:
+ version "0.30.0"
+ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0"
+ integrity sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=
+ dependencies:
+ graceful-fs "^4.1.2"
+ jsonfile "^2.1.0"
+ klaw "^1.0.0"
+ path-is-absolute "^1.0.0"
+ rimraf "^2.2.8"
+
+fs-minipass@^1.2.5:
+ version "1.2.7"
+ resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7"
+ integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==
+ dependencies:
+ minipass "^2.6.0"
+
+fs-vacuum@^1.2.10, fs-vacuum@~1.2.10:
+ version "1.2.10"
+ resolved "https://registry.yarnpkg.com/fs-vacuum/-/fs-vacuum-1.2.10.tgz#b7629bec07a4031a2548fdf99f5ecf1cc8b31e36"
+ integrity sha1-t2Kb7AekAxolSP35n17PHMizHjY=
+ dependencies:
+ graceful-fs "^4.1.2"
+ path-is-inside "^1.0.1"
+ rimraf "^2.5.2"
+
+fs-write-stream-atomic@^1.0.8, fs-write-stream-atomic@~1.0.10:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9"
+ integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=
+ dependencies:
+ graceful-fs "^4.1.2"
+ iferr "^0.1.5"
+ imurmurhash "^0.1.4"
+ readable-stream "1 || 2"
+
+fs.realpath@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
+ integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
+
+fsevents@^1.1.3, fsevents@^1.2.7:
+ version "1.2.13"
+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38"
+ integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==
+ dependencies:
+ bindings "^1.5.0"
+ nan "^2.12.1"
+
+fsevents@~2.1.2:
+ version "2.1.3"
+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e"
+ integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==
+
+function-bind@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
+ integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
+
+functional-red-black-tree@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
+ integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=
+
+gauge@~2.7.3:
+ version "2.7.4"
+ resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7"
+ integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=
+ dependencies:
+ aproba "^1.0.3"
+ console-control-strings "^1.0.0"
+ has-unicode "^2.0.0"
+ object-assign "^4.1.0"
+ signal-exit "^3.0.0"
+ string-width "^1.0.1"
+ strip-ansi "^3.0.1"
+ wide-align "^1.1.0"
+
+genfun@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/genfun/-/genfun-5.0.0.tgz#9dd9710a06900a5c4a5bf57aca5da4e52fe76537"
+ integrity sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA==
+
+gentle-fs@^2.3.0, gentle-fs@^2.3.1:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/gentle-fs/-/gentle-fs-2.3.1.tgz#11201bf66c18f930ddca72cf69460bdfa05727b1"
+ integrity sha512-OlwBBwqCFPcjm33rF2BjW+Pr6/ll2741l+xooiwTCeaX2CA1ZuclavyMBe0/KlR21/XGsgY6hzEQZ15BdNa13Q==
+ dependencies:
+ aproba "^1.1.2"
+ chownr "^1.1.2"
+ cmd-shim "^3.0.3"
+ fs-vacuum "^1.2.10"
+ graceful-fs "^4.1.11"
+ iferr "^0.1.5"
+ infer-owner "^1.0.4"
+ mkdirp "^0.5.1"
+ path-is-inside "^1.0.2"
+ read-cmd-shim "^1.0.1"
+ slide "^1.1.6"
+
+get-caller-file@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a"
+ integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==
+
+get-caller-file@^2.0.1:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
+ integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
+
+get-stdin@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe"
+ integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=
+
+get-stream@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
+ integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=
+
+get-stream@^4.0.0, get-stream@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
+ integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==
+ dependencies:
+ pump "^3.0.0"
+
+get-value@^2.0.3, get-value@^2.0.6:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
+ integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=
+
+getpass@^0.1.1:
+ version "0.1.7"
+ resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
+ integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=
+ dependencies:
+ assert-plus "^1.0.0"
+
+glob-base@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4"
+ integrity sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=
+ dependencies:
+ glob-parent "^2.0.0"
+ is-glob "^2.0.0"
+
+glob-parent@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28"
+ integrity sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=
+ dependencies:
+ is-glob "^2.0.0"
+
+glob-parent@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae"
+ integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=
+ dependencies:
+ is-glob "^3.1.0"
+ path-dirname "^1.0.0"
+
+glob-parent@~5.1.0:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229"
+ integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==
+ dependencies:
+ is-glob "^4.0.1"
+
+glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6:
+ version "7.1.6"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
+ integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.0.4"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+global-dirs@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445"
+ integrity sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=
+ dependencies:
+ ini "^1.3.4"
+
+global-modules@1.0.0, global-modules@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea"
+ integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==
+ dependencies:
+ global-prefix "^1.0.1"
+ is-windows "^1.0.1"
+ resolve-dir "^1.0.0"
+
+global-prefix@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe"
+ integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=
+ dependencies:
+ expand-tilde "^2.0.2"
+ homedir-polyfill "^1.0.1"
+ ini "^1.3.4"
+ is-windows "^1.0.1"
+ which "^1.2.14"
+
+globals@^9.17.0, globals@^9.18.0:
+ version "9.18.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a"
+ integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==
+
+globby@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d"
+ integrity sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=
+ dependencies:
+ array-union "^1.0.1"
+ arrify "^1.0.0"
+ glob "^7.0.3"
+ object-assign "^4.0.1"
+ pify "^2.0.0"
+ pinkie-promise "^2.0.0"
+
+globby@^6.1.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c"
+ integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=
+ dependencies:
+ array-union "^1.0.1"
+ glob "^7.0.3"
+ object-assign "^4.0.1"
+ pify "^2.0.0"
+ pinkie-promise "^2.0.0"
+
+google-maps-infobox@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/google-maps-infobox/-/google-maps-infobox-2.0.0.tgz#1ea6de93c0cdf4138c2d586331835c83dcc59dc2"
+ integrity sha512-hTuWmWZZSOxf5D/z7l3/hTF1grgRvLG53BEKMdjiKOG+FcK/kH7vqseUeyIU9Zj2ZIqKTOaro0nknxpAuRq4Vw==
+
+got@^6.7.1:
+ version "6.7.1"
+ resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0"
+ integrity sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=
+ dependencies:
+ create-error-class "^3.0.0"
+ duplexer3 "^0.1.4"
+ get-stream "^3.0.0"
+ is-redirect "^1.0.0"
+ is-retry-allowed "^1.0.0"
+ is-stream "^1.0.0"
+ lowercase-keys "^1.0.0"
+ safe-buffer "^5.0.1"
+ timed-out "^4.0.0"
+ unzip-response "^2.0.1"
+ url-parse-lax "^1.0.0"
+
+graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.2, graceful-fs@^4.2.4:
+ version "4.2.4"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb"
+ integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==
+
+growly@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081"
+ integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=
+
+gud@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/gud/-/gud-1.0.0.tgz#a489581b17e6a70beca9abe3ae57de7a499852c0"
+ integrity sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw==
+
+gzip-size@3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-3.0.0.tgz#546188e9bdc337f673772f81660464b389dce520"
+ integrity sha1-VGGI6b3DN/Zzdy+BZgRks4nc5SA=
+ dependencies:
+ duplexer "^0.1.1"
+
+hammerjs@^2.0.8:
+ version "2.0.8"
+ resolved "https://registry.yarnpkg.com/hammerjs/-/hammerjs-2.0.8.tgz#04ef77862cff2bb79d30f7692095930222bf60f1"
+ integrity sha1-BO93hiz/K7edMPdpIJWTAiK/YPE=
+
+handle-thing@^1.2.5:
+ version "1.2.5"
+ resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4"
+ integrity sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ=
+
+handlebars@^4.0.3:
+ version "4.7.6"
+ resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.6.tgz#d4c05c1baf90e9945f77aa68a7a219aa4a7df74e"
+ integrity sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA==
+ dependencies:
+ minimist "^1.2.5"
+ neo-async "^2.6.0"
+ source-map "^0.6.1"
+ wordwrap "^1.0.0"
+ optionalDependencies:
+ uglify-js "^3.1.4"
+
+har-schema@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
+ integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=
+
+har-validator@~5.1.3:
+ version "5.1.5"
+ resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd"
+ integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==
+ dependencies:
+ ajv "^6.12.3"
+ har-schema "^2.0.0"
+
+has-ansi@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
+ integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=
+ dependencies:
+ ansi-regex "^2.0.0"
+
+has-flag@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa"
+ integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=
+
+has-flag@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51"
+ integrity sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=
+
+has-flag@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
+ integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
+
+has-symbols@^1.0.0, has-symbols@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8"
+ integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==
+
+has-unicode@^2.0.0, has-unicode@~2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
+ integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=
+
+has-value@^0.3.1:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f"
+ integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=
+ dependencies:
+ get-value "^2.0.3"
+ has-values "^0.1.4"
+ isobject "^2.0.0"
+
+has-value@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177"
+ integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=
+ dependencies:
+ get-value "^2.0.6"
+ has-values "^1.0.0"
+ isobject "^3.0.0"
+
+has-values@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771"
+ integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E=
+
+has-values@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f"
+ integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=
+ dependencies:
+ is-number "^3.0.0"
+ kind-of "^4.0.0"
+
+has@^1.0.1, has@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
+ integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
+ dependencies:
+ function-bind "^1.1.1"
+
+hash-base@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33"
+ integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==
+ dependencies:
+ inherits "^2.0.4"
+ readable-stream "^3.6.0"
+ safe-buffer "^5.2.0"
+
+hash.js@^1.0.0, hash.js@^1.0.3:
+ version "1.1.7"
+ resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42"
+ integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==
+ dependencies:
+ inherits "^2.0.3"
+ minimalistic-assert "^1.0.1"
+
+he@1.2.x:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
+ integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
+
+history@^4.7.2:
+ version "4.10.1"
+ resolved "https://registry.yarnpkg.com/history/-/history-4.10.1.tgz#33371a65e3a83b267434e2b3f3b1b4c58aad4cf3"
+ integrity sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==
+ dependencies:
+ "@babel/runtime" "^7.1.2"
+ loose-envify "^1.2.0"
+ resolve-pathname "^3.0.0"
+ tiny-invariant "^1.0.2"
+ tiny-warning "^1.0.0"
+ value-equal "^1.0.1"
+
+hmac-drbg@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
+ integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=
+ dependencies:
+ hash.js "^1.0.3"
+ minimalistic-assert "^1.0.0"
+ minimalistic-crypto-utils "^1.0.1"
+
+hoist-non-react-statics@^2.3.1, hoist-non-react-statics@^2.5.0:
+ version "2.5.5"
+ resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz#c5903cf409c0dfd908f388e619d86b9c1174cb47"
+ integrity sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==
+
+hoist-non-react-statics@^3.3.0:
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45"
+ integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==
+ dependencies:
+ react-is "^16.7.0"
+
+home-or-tmp@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8"
+ integrity sha1-42w/LSyufXRqhX440Y1fMqeILbg=
+ dependencies:
+ os-homedir "^1.0.0"
+ os-tmpdir "^1.0.1"
+
+homedir-polyfill@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8"
+ integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==
+ dependencies:
+ parse-passwd "^1.0.0"
+
+hosted-git-info@^2.1.4, hosted-git-info@^2.7.1, hosted-git-info@^2.8.8:
+ version "2.8.8"
+ resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488"
+ integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==
+
+hpack.js@^2.1.6:
+ version "2.1.6"
+ resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2"
+ integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=
+ dependencies:
+ inherits "^2.0.1"
+ obuf "^1.0.0"
+ readable-stream "^2.0.1"
+ wbuf "^1.1.0"
+
+html-comment-regex@^1.1.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7"
+ integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==
+
+html-encoding-sniffer@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8"
+ integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==
+ dependencies:
+ whatwg-encoding "^1.0.1"
+
+html-entities@^1.2.0:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.3.1.tgz#fb9a1a4b5b14c5daba82d3e34c6ae4fe701a0e44"
+ integrity sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA==
+
+html-minifier@^3.2.3:
+ version "3.5.21"
+ resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.21.tgz#d0040e054730e354db008463593194015212d20c"
+ integrity sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==
+ dependencies:
+ camel-case "3.0.x"
+ clean-css "4.2.x"
+ commander "2.17.x"
+ he "1.2.x"
+ param-case "2.1.x"
+ relateurl "0.2.x"
+ uglify-js "3.4.x"
+
+html-webpack-plugin@2.29.0:
+ version "2.29.0"
+ resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-2.29.0.tgz#e987f421853d3b6938c8c4c8171842e5fd17af23"
+ integrity sha1-6Yf0IYU9O2k4yMTIFxhC5f0XryM=
+ dependencies:
+ bluebird "^3.4.7"
+ html-minifier "^3.2.3"
+ loader-utils "^0.2.16"
+ lodash "^4.17.3"
+ pretty-error "^2.0.2"
+ toposort "^1.0.0"
+
+htmlparser2@^3.3.0:
+ version "3.10.1"
+ resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f"
+ integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==
+ dependencies:
+ domelementtype "^1.3.1"
+ domhandler "^2.3.0"
+ domutils "^1.5.1"
+ entities "^1.1.1"
+ inherits "^2.0.1"
+ readable-stream "^3.1.1"
+
+http-cache-semantics@^3.8.1:
+ version "3.8.1"
+ resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2"
+ integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==
+
+http-deceiver@^1.2.7:
+ version "1.2.7"
+ resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87"
+ integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=
+
+http-errors@1.7.2:
+ version "1.7.2"
+ resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f"
+ integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==
+ dependencies:
+ depd "~1.1.2"
+ inherits "2.0.3"
+ setprototypeof "1.1.1"
+ statuses ">= 1.5.0 < 2"
+ toidentifier "1.0.0"
+
+http-errors@~1.6.2:
+ version "1.6.3"
+ resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d"
+ integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=
+ dependencies:
+ depd "~1.1.2"
+ inherits "2.0.3"
+ setprototypeof "1.1.0"
+ statuses ">= 1.4.0 < 2"
+
+http-errors@~1.7.2:
+ version "1.7.3"
+ resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06"
+ integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==
+ dependencies:
+ depd "~1.1.2"
+ inherits "2.0.4"
+ setprototypeof "1.1.1"
+ statuses ">= 1.5.0 < 2"
+ toidentifier "1.0.0"
+
+http-parser-js@>=0.5.1:
+ version "0.5.2"
+ resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.2.tgz#da2e31d237b393aae72ace43882dd7e270a8ff77"
+ integrity sha512-opCO9ASqg5Wy2FNo7A0sxy71yGbbkJJXLdgMK04Tcypw9jr2MgWbyubb0+WdmDmGnFflO7fRbqbaihh/ENDlRQ==
+
+http-proxy-agent@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz#e4821beef5b2142a2026bd73926fe537631c5405"
+ integrity sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==
+ dependencies:
+ agent-base "4"
+ debug "3.1.0"
+
+http-proxy-middleware@~0.17.4:
+ version "0.17.4"
+ resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz#642e8848851d66f09d4f124912846dbaeb41b833"
+ integrity sha1-ZC6ISIUdZvCdTxJJEoRtuutBuDM=
+ dependencies:
+ http-proxy "^1.16.2"
+ is-glob "^3.1.0"
+ lodash "^4.17.2"
+ micromatch "^2.3.11"
+
+http-proxy@^1.16.2:
+ version "1.18.1"
+ resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549"
+ integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==
+ dependencies:
+ eventemitter3 "^4.0.0"
+ follow-redirects "^1.0.0"
+ requires-port "^1.0.0"
+
+http-signature@~1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1"
+ integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=
+ dependencies:
+ assert-plus "^1.0.0"
+ jsprim "^1.2.2"
+ sshpk "^1.7.0"
+
+https-browserify@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73"
+ integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=
+
+https-proxy-agent@^2.2.3:
+ version "2.2.4"
+ resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b"
+ integrity sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==
+ dependencies:
+ agent-base "^4.3.0"
+ debug "^3.1.0"
+
+humanize-ms@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed"
+ integrity sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=
+ dependencies:
+ ms "^2.0.0"
+
+iconv-lite@0.4.24, iconv-lite@^0.4.17:
+ version "0.4.24"
+ resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
+ integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
+ dependencies:
+ safer-buffer ">= 2.1.2 < 3"
+
+iconv-lite@^0.6.2:
+ version "0.6.2"
+ resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.2.tgz#ce13d1875b0c3a674bd6a04b7f76b01b1b6ded01"
+ integrity sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==
+ dependencies:
+ safer-buffer ">= 2.1.2 < 3.0.0"
+
+icss-replace-symbols@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded"
+ integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=
+
+icss-utils@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-2.1.0.tgz#83f0a0ec378bf3246178b6c2ad9136f135b1c962"
+ integrity sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=
+ dependencies:
+ postcss "^6.0.1"
+
+ieee754@^1.1.4:
+ version "1.1.13"
+ resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84"
+ integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==
+
+iferr@^0.1.5:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501"
+ integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE=
+
+iferr@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/iferr/-/iferr-1.0.2.tgz#e9fde49a9da06dc4a4194c6c9ed6d08305037a6d"
+ integrity sha512-9AfeLfji44r5TKInjhz3W9DyZI1zR1JAf2hVBMGhddAKPqBsupb89jGfbCTHIGZd6fGZl9WlHdn4AObygyMKwg==
+
+ignore-walk@^3.0.1:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37"
+ integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==
+ dependencies:
+ minimatch "^3.0.4"
+
+ignore@^3.3.3:
+ version "3.3.10"
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043"
+ integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==
+
+image-size@~0.5.0:
+ version "0.5.5"
+ resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c"
+ integrity sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=
+
+immutable@^3.7.4:
+ version "3.8.2"
+ resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3"
+ integrity sha1-wkOZUUVbs5kT2vKBN28VMOEErfM=
+
+immutable@~3.7.4:
+ version "3.7.6"
+ resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.7.6.tgz#13b4d3cb12befa15482a26fe1b2ebae640071e4b"
+ integrity sha1-E7TTyxK++hVIKib+Gy665kAHHks=
+
+import-lazy@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43"
+ integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=
+
+import-local@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/import-local/-/import-local-1.0.0.tgz#5e4ffdc03f4fe6c009c6729beb29631c2f8227bc"
+ integrity sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ==
+ dependencies:
+ pkg-dir "^2.0.0"
+ resolve-cwd "^2.0.0"
+
+imurmurhash@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
+ integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
+
+indent-string@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80"
+ integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=
+ dependencies:
+ repeating "^2.0.0"
+
+indexes-of@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607"
+ integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc=
+
+infer-owner@^1.0.3, infer-owner@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467"
+ integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==
+
+inflight@^1.0.4, inflight@~1.0.6:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
+ integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
+ dependencies:
+ once "^1.3.0"
+ wrappy "1"
+
+inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
+ integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
+
+inherits@2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1"
+ integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=
+
+inherits@2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
+ integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
+
+ini@^1.3.4, ini@^1.3.5, ini@~1.3.0:
+ version "1.3.5"
+ resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
+ integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==
+
+init-package-json@^1.10.3:
+ version "1.10.3"
+ resolved "https://registry.yarnpkg.com/init-package-json/-/init-package-json-1.10.3.tgz#45ffe2f610a8ca134f2bd1db5637b235070f6cbe"
+ integrity sha512-zKSiXKhQveNteyhcj1CoOP8tqp1QuxPIPBl8Bid99DGLFqA1p87M6lNgfjJHSBoWJJlidGOv5rWjyYKEB3g2Jw==
+ dependencies:
+ glob "^7.1.1"
+ npm-package-arg "^4.0.0 || ^5.0.0 || ^6.0.0"
+ promzard "^0.3.0"
+ read "~1.0.1"
+ read-package-json "1 || 2"
+ semver "2.x || 3.x || 4 || 5"
+ validate-npm-package-license "^3.0.1"
+ validate-npm-package-name "^3.0.0"
+
+inquirer@3.3.0, inquirer@^3.0.6:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9"
+ integrity sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==
+ dependencies:
+ ansi-escapes "^3.0.0"
+ chalk "^2.0.0"
+ cli-cursor "^2.1.0"
+ cli-width "^2.0.0"
+ external-editor "^2.0.4"
+ figures "^2.0.0"
+ lodash "^4.3.0"
+ mute-stream "0.0.7"
+ run-async "^2.2.0"
+ rx-lite "^4.0.8"
+ rx-lite-aggregates "^4.0.8"
+ string-width "^2.1.0"
+ strip-ansi "^4.0.0"
+ through "^2.3.6"
+
+insert-css@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/insert-css/-/insert-css-2.0.0.tgz#eb5d1097b7542f4c79ea3060d3aee07d053880f4"
+ integrity sha1-610Ql7dUL0x56jBg067gfQU4gPQ=
+
+internal-ip@1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-1.2.0.tgz#ae9fbf93b984878785d50a8de1b356956058cf5c"
+ integrity sha1-rp+/k7mEh4eF1QqN4bNWlWBYz1w=
+ dependencies:
+ meow "^3.3.0"
+
+interpret@^1.0.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e"
+ integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==
+
+invariant@2.2.4, invariant@^2.2.1, invariant@^2.2.2, invariant@^2.2.4:
+ version "2.2.4"
+ resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6"
+ integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==
+ dependencies:
+ loose-envify "^1.0.0"
+
+invert-kv@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6"
+ integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY=
+
+ip-regex@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9"
+ integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=
+
+ip@1.1.5, ip@^1.1.0, ip@^1.1.5:
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a"
+ integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=
+
+ipaddr.js@1.9.1:
+ version "1.9.1"
+ resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3"
+ integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
+
+is-absolute-url@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6"
+ integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=
+
+is-accessor-descriptor@^0.1.6:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6"
+ integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=
+ dependencies:
+ kind-of "^3.0.2"
+
+is-accessor-descriptor@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656"
+ integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==
+ dependencies:
+ kind-of "^6.0.0"
+
+is-arguments@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3"
+ integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==
+
+is-arrayish@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
+ integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
+
+is-binary-path@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
+ integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=
+ dependencies:
+ binary-extensions "^1.0.0"
+
+is-binary-path@~2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
+ integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
+ dependencies:
+ binary-extensions "^2.0.0"
+
+is-buffer@^1.1.5:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
+ integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
+
+is-buffer@^2.0.2:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623"
+ integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==
+
+is-builtin-module@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe"
+ integrity sha1-VAVy0096wxGfj3bDDLwbHgN6/74=
+ dependencies:
+ builtin-modules "^1.0.0"
+
+is-callable@^1.1.4, is-callable@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.0.tgz#83336560b54a38e35e3a2df7afd0454d691468bb"
+ integrity sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==
+
+is-ci@^1.0.10:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c"
+ integrity sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==
+ dependencies:
+ ci-info "^1.5.0"
+
+is-cidr@^3.0.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/is-cidr/-/is-cidr-3.1.1.tgz#e92ef121bdec2782271a77ce487a8b8df3718ab7"
+ integrity sha512-Gx+oErgq1j2jAKCR2Kbq0b3wbH0vQKqZ0wOlHxm0o56nq51Cs/DZA8oz9dMDhbHyHEGgJ86eTeVudtgMMOx3Mw==
+ dependencies:
+ cidr-regex "^2.0.10"
+
+is-data-descriptor@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
+ integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=
+ dependencies:
+ kind-of "^3.0.2"
+
+is-data-descriptor@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7"
+ integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==
+ dependencies:
+ kind-of "^6.0.0"
+
+is-date-object@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e"
+ integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==
+
+is-descriptor@^0.1.0:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca"
+ integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==
+ dependencies:
+ is-accessor-descriptor "^0.1.6"
+ is-data-descriptor "^0.1.4"
+ kind-of "^5.0.0"
+
+is-descriptor@^1.0.0, is-descriptor@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec"
+ integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==
+ dependencies:
+ is-accessor-descriptor "^1.0.0"
+ is-data-descriptor "^1.0.0"
+ kind-of "^6.0.2"
+
+is-directory@^0.3.1:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1"
+ integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=
+
+is-dotfile@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1"
+ integrity sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=
+
+is-equal-shallow@^0.1.3:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534"
+ integrity sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=
+ dependencies:
+ is-primitive "^2.0.0"
+
+is-extendable@^0.1.0, is-extendable@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
+ integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=
+
+is-extendable@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
+ integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==
+ dependencies:
+ is-plain-object "^2.0.4"
+
+is-extglob@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0"
+ integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=
+
+is-extglob@^2.1.0, is-extglob@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
+ integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
+
+is-finite@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3"
+ integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==
+
+is-fullwidth-code-point@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
+ integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs=
+ dependencies:
+ number-is-nan "^1.0.0"
+
+is-fullwidth-code-point@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
+ integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
+
+is-glob@^2.0.0, is-glob@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863"
+ integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=
+ dependencies:
+ is-extglob "^1.0.0"
+
+is-glob@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a"
+ integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=
+ dependencies:
+ is-extglob "^2.1.0"
+
+is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
+ integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
+ dependencies:
+ is-extglob "^2.1.1"
+
+is-installed-globally@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80"
+ integrity sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=
+ dependencies:
+ global-dirs "^0.1.0"
+ is-path-inside "^1.0.0"
+
+is-mobile@^2.1.0:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/is-mobile/-/is-mobile-2.2.2.tgz#f6c9c5d50ee01254ce05e739bdd835f1ed4e9954"
+ integrity sha512-wW/SXnYJkTjs++tVK5b6kVITZpAZPtUrt9SF80vvxGiF/Oywal+COk1jlRkiVq15RFNEQKQY31TkV24/1T5cVg==
+
+is-npm@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4"
+ integrity sha1-8vtjpl5JBbQGyGBydloaTceTufQ=
+
+is-number@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f"
+ integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=
+ dependencies:
+ kind-of "^3.0.2"
+
+is-number@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
+ integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=
+ dependencies:
+ kind-of "^3.0.2"
+
+is-number@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff"
+ integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==
+
+is-number@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
+ integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
+
+is-obj@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
+ integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8=
+
+is-path-cwd@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d"
+ integrity sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=
+
+is-path-in-cwd@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52"
+ integrity sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==
+ dependencies:
+ is-path-inside "^1.0.0"
+
+is-path-inside@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036"
+ integrity sha1-jvW33lBDej/cprToZe96pVy0gDY=
+ dependencies:
+ path-is-inside "^1.0.1"
+
+is-plain-obj@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
+ integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4=
+
+is-plain-object@^2.0.3, is-plain-object@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
+ integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==
+ dependencies:
+ isobject "^3.0.1"
+
+is-posix-bracket@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4"
+ integrity sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=
+
+is-primitive@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575"
+ integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU=
+
+is-redirect@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24"
+ integrity sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=
+
+is-regex@^1.0.4, is-regex@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.0.tgz#ece38e389e490df0dc21caea2bd596f987f767ff"
+ integrity sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==
+ dependencies:
+ has-symbols "^1.0.1"
+
+is-resolvable@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88"
+ integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==
+
+is-retry-allowed@^1.0.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4"
+ integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==
+
+is-root@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-root/-/is-root-1.0.0.tgz#07b6c233bc394cd9d02ba15c966bd6660d6342d5"
+ integrity sha1-B7bCM7w5TNnQK6FclmvWZg1jQtU=
+
+is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
+ integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=
+
+is-string@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6"
+ integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==
+
+is-svg@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-2.1.0.tgz#cf61090da0d9efbcab8722deba6f032208dbb0e9"
+ integrity sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=
+ dependencies:
+ html-comment-regex "^1.1.0"
+
+is-symbol@^1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937"
+ integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==
+ dependencies:
+ has-symbols "^1.0.1"
+
+is-typedarray@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
+ integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
+
+is-utf8@^0.2.0:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
+ integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=
+
+is-windows@^1.0.1, is-windows@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
+ integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
+
+is-wsl@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d"
+ integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=
+
+isarray@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
+ integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=
+
+isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
+ integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
+
+isexe@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
+ integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
+
+isobject@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
+ integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=
+ dependencies:
+ isarray "1.0.0"
+
+isobject@^3.0.0, isobject@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
+ integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
+
+isomorphic-fetch@^2.1.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9"
+ integrity sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=
+ dependencies:
+ node-fetch "^1.0.1"
+ whatwg-fetch ">=0.10.0"
+
+isstream@~0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
+ integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
+
+istanbul-api@^1.1.1:
+ version "1.3.7"
+ resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.3.7.tgz#a86c770d2b03e11e3f778cd7aedd82d2722092aa"
+ integrity sha512-4/ApBnMVeEPG3EkSzcw25wDe4N66wxwn+KKn6b47vyek8Xb3NBAcg4xfuQbS7BqcZuTX4wxfD5lVagdggR3gyA==
+ dependencies:
+ async "^2.1.4"
+ fileset "^2.0.2"
+ istanbul-lib-coverage "^1.2.1"
+ istanbul-lib-hook "^1.2.2"
+ istanbul-lib-instrument "^1.10.2"
+ istanbul-lib-report "^1.1.5"
+ istanbul-lib-source-maps "^1.2.6"
+ istanbul-reports "^1.5.1"
+ js-yaml "^3.7.0"
+ mkdirp "^0.5.1"
+ once "^1.4.0"
+
+istanbul-lib-coverage@^1.0.1, istanbul-lib-coverage@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz#ccf7edcd0a0bb9b8f729feeb0930470f9af664f0"
+ integrity sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ==
+
+istanbul-lib-hook@^1.2.2:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.2.2.tgz#bc6bf07f12a641fbf1c85391d0daa8f0aea6bf86"
+ integrity sha512-/Jmq7Y1VeHnZEQ3TL10VHyb564mn6VrQXHchON9Jf/AEcmQ3ZIiyD1BVzNOKTZf/G3gE+kiGK6SmpF9y3qGPLw==
+ dependencies:
+ append-transform "^0.4.0"
+
+istanbul-lib-instrument@^1.10.1, istanbul-lib-instrument@^1.10.2, istanbul-lib-instrument@^1.4.2:
+ version "1.10.2"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.2.tgz#1f55ed10ac3c47f2bdddd5307935126754d0a9ca"
+ integrity sha512-aWHxfxDqvh/ZlxR8BBaEPVSWDPUkGD63VjGQn3jcw8jCp7sHEMKcrj4xfJn/ABzdMEHiQNyvDQhqm5o8+SQg7A==
+ dependencies:
+ babel-generator "^6.18.0"
+ babel-template "^6.16.0"
+ babel-traverse "^6.18.0"
+ babel-types "^6.18.0"
+ babylon "^6.18.0"
+ istanbul-lib-coverage "^1.2.1"
+ semver "^5.3.0"
+
+istanbul-lib-report@^1.1.5:
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.5.tgz#f2a657fc6282f96170aaf281eb30a458f7f4170c"
+ integrity sha512-UsYfRMoi6QO/doUshYNqcKJqVmFe9w51GZz8BS3WB0lYxAllQYklka2wP9+dGZeHYaWIdcXUx8JGdbqaoXRXzw==
+ dependencies:
+ istanbul-lib-coverage "^1.2.1"
+ mkdirp "^0.5.1"
+ path-parse "^1.0.5"
+ supports-color "^3.1.2"
+
+istanbul-lib-source-maps@^1.1.0, istanbul-lib-source-maps@^1.2.6:
+ version "1.2.6"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.6.tgz#37b9ff661580f8fca11232752ee42e08c6675d8f"
+ integrity sha512-TtbsY5GIHgbMsMiRw35YBHGpZ1DVFEO19vxxeiDMYaeOFOCzfnYVxvl6pOUIZR4dtPhAGpSMup8OyF8ubsaqEg==
+ dependencies:
+ debug "^3.1.0"
+ istanbul-lib-coverage "^1.2.1"
+ mkdirp "^0.5.1"
+ rimraf "^2.6.1"
+ source-map "^0.5.3"
+
+istanbul-reports@^1.5.1:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.5.1.tgz#97e4dbf3b515e8c484caea15d6524eebd3ff4e1a"
+ integrity sha512-+cfoZ0UXzWjhAdzosCPP3AN8vvef8XDkWtTfgaN+7L3YTpNYITnCaEkceo5SEYy644VkHka/P1FvkWvrG/rrJw==
+ dependencies:
+ handlebars "^4.0.3"
+
+jest-changed-files@^20.0.3:
+ version "20.0.3"
+ resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-20.0.3.tgz#9394d5cc65c438406149bef1bf4d52b68e03e3f8"
+ integrity sha1-k5TVzGXEOEBhSb7xv01Sto4D4/g=
+
+jest-cli@^20.0.4:
+ version "20.0.4"
+ resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-20.0.4.tgz#e532b19d88ae5bc6c417e8b0593a6fe954b1dc93"
+ integrity sha1-5TKxnYiuW8bEF+iwWTpv6VSx3JM=
+ dependencies:
+ ansi-escapes "^1.4.0"
+ callsites "^2.0.0"
+ chalk "^1.1.3"
+ graceful-fs "^4.1.11"
+ is-ci "^1.0.10"
+ istanbul-api "^1.1.1"
+ istanbul-lib-coverage "^1.0.1"
+ istanbul-lib-instrument "^1.4.2"
+ istanbul-lib-source-maps "^1.1.0"
+ jest-changed-files "^20.0.3"
+ jest-config "^20.0.4"
+ jest-docblock "^20.0.3"
+ jest-environment-jsdom "^20.0.3"
+ jest-haste-map "^20.0.4"
+ jest-jasmine2 "^20.0.4"
+ jest-message-util "^20.0.3"
+ jest-regex-util "^20.0.3"
+ jest-resolve-dependencies "^20.0.3"
+ jest-runtime "^20.0.4"
+ jest-snapshot "^20.0.3"
+ jest-util "^20.0.3"
+ micromatch "^2.3.11"
+ node-notifier "^5.0.2"
+ pify "^2.3.0"
+ slash "^1.0.0"
+ string-length "^1.0.1"
+ throat "^3.0.0"
+ which "^1.2.12"
+ worker-farm "^1.3.1"
+ yargs "^7.0.2"
+
+jest-config@^20.0.4:
+ version "20.0.4"
+ resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-20.0.4.tgz#e37930ab2217c913605eff13e7bd763ec48faeea"
+ integrity sha1-43kwqyIXyRNgXv8T5712PsSPruo=
+ dependencies:
+ chalk "^1.1.3"
+ glob "^7.1.1"
+ jest-environment-jsdom "^20.0.3"
+ jest-environment-node "^20.0.3"
+ jest-jasmine2 "^20.0.4"
+ jest-matcher-utils "^20.0.3"
+ jest-regex-util "^20.0.3"
+ jest-resolve "^20.0.4"
+ jest-validate "^20.0.3"
+ pretty-format "^20.0.3"
+
+jest-diff@^20.0.3:
+ version "20.0.3"
+ resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-20.0.3.tgz#81f288fd9e675f0fb23c75f1c2b19445fe586617"
+ integrity sha1-gfKI/Z5nXw+yPHXxwrGURf5YZhc=
+ dependencies:
+ chalk "^1.1.3"
+ diff "^3.2.0"
+ jest-matcher-utils "^20.0.3"
+ pretty-format "^20.0.3"
+
+jest-docblock@^20.0.3:
+ version "20.0.3"
+ resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-20.0.3.tgz#17bea984342cc33d83c50fbe1545ea0efaa44712"
+ integrity sha1-F76phDQswz2DxQ++FUXqDvqkRxI=
+
+jest-environment-jsdom@^20.0.3:
+ version "20.0.3"
+ resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-20.0.3.tgz#048a8ac12ee225f7190417713834bb999787de99"
+ integrity sha1-BIqKwS7iJfcZBBdxODS7mZeH3pk=
+ dependencies:
+ jest-mock "^20.0.3"
+ jest-util "^20.0.3"
+ jsdom "^9.12.0"
+
+jest-environment-node@^20.0.3:
+ version "20.0.3"
+ resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-20.0.3.tgz#d488bc4612af2c246e986e8ae7671a099163d403"
+ integrity sha1-1Ii8RhKvLCRumG6K52caCZFj1AM=
+ dependencies:
+ jest-mock "^20.0.3"
+ jest-util "^20.0.3"
+
+jest-haste-map@^20.0.4:
+ version "20.0.5"
+ resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-20.0.5.tgz#abad74efb1a005974a7b6517e11010709cab9112"
+ integrity sha512-0IKAQjUvuZjMCNi/0VNQQF74/H9KB67hsHJqGiwTWQC6XO5Azs7kLWm+6Q/dwuhvDUvABDOBMFK2/FwZ3sZ07Q==
+ dependencies:
+ fb-watchman "^2.0.0"
+ graceful-fs "^4.1.11"
+ jest-docblock "^20.0.3"
+ micromatch "^2.3.11"
+ sane "~1.6.0"
+ worker-farm "^1.3.1"
+
+jest-jasmine2@^20.0.4:
+ version "20.0.4"
+ resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-20.0.4.tgz#fcc5b1411780d911d042902ef1859e852e60d5e1"
+ integrity sha1-/MWxQReA2RHQQpAu8YWehS5g1eE=
+ dependencies:
+ chalk "^1.1.3"
+ graceful-fs "^4.1.11"
+ jest-diff "^20.0.3"
+ jest-matcher-utils "^20.0.3"
+ jest-matchers "^20.0.3"
+ jest-message-util "^20.0.3"
+ jest-snapshot "^20.0.3"
+ once "^1.4.0"
+ p-map "^1.1.1"
+
+jest-matcher-utils@^20.0.3:
+ version "20.0.3"
+ resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-20.0.3.tgz#b3a6b8e37ca577803b0832a98b164f44b7815612"
+ integrity sha1-s6a443yld4A7CDKpixZPRLeBVhI=
+ dependencies:
+ chalk "^1.1.3"
+ pretty-format "^20.0.3"
+
+jest-matchers@^20.0.3:
+ version "20.0.3"
+ resolved "https://registry.yarnpkg.com/jest-matchers/-/jest-matchers-20.0.3.tgz#ca69db1c32db5a6f707fa5e0401abb55700dfd60"
+ integrity sha1-ymnbHDLbWm9wf6XgQBq7VXAN/WA=
+ dependencies:
+ jest-diff "^20.0.3"
+ jest-matcher-utils "^20.0.3"
+ jest-message-util "^20.0.3"
+ jest-regex-util "^20.0.3"
+
+jest-message-util@^20.0.3:
+ version "20.0.3"
+ resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-20.0.3.tgz#6aec2844306fcb0e6e74d5796c1006d96fdd831c"
+ integrity sha1-auwoRDBvyw5udNV5bBAG2W/dgxw=
+ dependencies:
+ chalk "^1.1.3"
+ micromatch "^2.3.11"
+ slash "^1.0.0"
+
+jest-mock@^20.0.3:
+ version "20.0.3"
+ resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-20.0.3.tgz#8bc070e90414aa155c11a8d64c869a0d5c71da59"
+ integrity sha1-i8Bw6QQUqhVcEajWTIaaDVxx2lk=
+
+jest-regex-util@^20.0.3:
+ version "20.0.3"
+ resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-20.0.3.tgz#85bbab5d133e44625b19faf8c6aa5122d085d762"
+ integrity sha1-hburXRM+RGJbGfr4xqpRItCF12I=
+
+jest-resolve-dependencies@^20.0.3:
+ version "20.0.3"
+ resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-20.0.3.tgz#6e14a7b717af0f2cb3667c549de40af017b1723a"
+ integrity sha1-bhSntxevDyyzZnxUneQK8Bexcjo=
+ dependencies:
+ jest-regex-util "^20.0.3"
+
+jest-resolve@^20.0.4:
+ version "20.0.4"
+ resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-20.0.4.tgz#9448b3e8b6bafc15479444c6499045b7ffe597a5"
+ integrity sha1-lEiz6La6/BVHlETGSZBFt//ll6U=
+ dependencies:
+ browser-resolve "^1.11.2"
+ is-builtin-module "^1.0.0"
+ resolve "^1.3.2"
+
+jest-runtime@^20.0.4:
+ version "20.0.4"
+ resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-20.0.4.tgz#a2c802219c4203f754df1404e490186169d124d8"
+ integrity sha1-osgCIZxCA/dU3xQE5JAYYWnRJNg=
+ dependencies:
+ babel-core "^6.0.0"
+ babel-jest "^20.0.3"
+ babel-plugin-istanbul "^4.0.0"
+ chalk "^1.1.3"
+ convert-source-map "^1.4.0"
+ graceful-fs "^4.1.11"
+ jest-config "^20.0.4"
+ jest-haste-map "^20.0.4"
+ jest-regex-util "^20.0.3"
+ jest-resolve "^20.0.4"
+ jest-util "^20.0.3"
+ json-stable-stringify "^1.0.1"
+ micromatch "^2.3.11"
+ strip-bom "3.0.0"
+ yargs "^7.0.2"
+
+jest-snapshot@^20.0.3:
+ version "20.0.3"
+ resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-20.0.3.tgz#5b847e1adb1a4d90852a7f9f125086e187c76566"
+ integrity sha1-W4R+GtsaTZCFKn+fElCG4YfHZWY=
+ dependencies:
+ chalk "^1.1.3"
+ jest-diff "^20.0.3"
+ jest-matcher-utils "^20.0.3"
+ jest-util "^20.0.3"
+ natural-compare "^1.4.0"
+ pretty-format "^20.0.3"
+
+jest-util@^20.0.3:
+ version "20.0.3"
+ resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-20.0.3.tgz#0c07f7d80d82f4e5a67c6f8b9c3fe7f65cfd32ad"
+ integrity sha1-DAf32A2C9OWmfG+LnD/n9lz9Mq0=
+ dependencies:
+ chalk "^1.1.3"
+ graceful-fs "^4.1.11"
+ jest-message-util "^20.0.3"
+ jest-mock "^20.0.3"
+ jest-validate "^20.0.3"
+ leven "^2.1.0"
+ mkdirp "^0.5.1"
+
+jest-validate@^20.0.3:
+ version "20.0.3"
+ resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-20.0.3.tgz#d0cfd1de4f579f298484925c280f8f1d94ec3cab"
+ integrity sha1-0M/R3k9XnymEhJJcKA+PHZTsPKs=
+ dependencies:
+ chalk "^1.1.3"
+ jest-matcher-utils "^20.0.3"
+ leven "^2.1.0"
+ pretty-format "^20.0.3"
+
+jest@20.0.4:
+ version "20.0.4"
+ resolved "https://registry.yarnpkg.com/jest/-/jest-20.0.4.tgz#3dd260c2989d6dad678b1e9cc4d91944f6d602ac"
+ integrity sha1-PdJgwpidba1nix6cxNkZRPbWAqw=
+ dependencies:
+ jest-cli "^20.0.4"
+
+js-base64@^2.1.9:
+ version "2.6.3"
+ resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.6.3.tgz#7afdb9b57aa7717e15d370b66e8f36a9cb835dc3"
+ integrity sha512-fiUvdfCaAXoQTHdKMgTvg6IkecXDcVz6V5rlftUTclF9IKBjMizvSdQaCl/z/6TApDeby5NL+axYou3i0mu1Pg==
+
+js-file-download@^0.4.4:
+ version "0.4.12"
+ resolved "https://registry.yarnpkg.com/js-file-download/-/js-file-download-0.4.12.tgz#10c70ef362559a5b23cdbdc3bd6f399c3d91d821"
+ integrity sha512-rML+NkoD08p5Dllpjo0ffy4jRHeY6Zsapvr/W86N7E0yuzAO6qa5X9+xog6zQNlH102J7IXljNY2FtS6Lj3ucg==
+
+"js-tokens@^3.0.0 || ^4.0.0":
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
+ integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
+
+js-tokens@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
+ integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls=
+
+js-yaml@^3.4.3, js-yaml@^3.7.0, js-yaml@^3.9.1:
+ version "3.14.0"
+ resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482"
+ integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==
+ dependencies:
+ argparse "^1.0.7"
+ esprima "^4.0.0"
+
+js-yaml@~3.7.0:
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80"
+ integrity sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=
+ dependencies:
+ argparse "^1.0.7"
+ esprima "^2.6.0"
+
+jsbn@~0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
+ integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM=
+
+jsdom@^9.12.0:
+ version "9.12.0"
+ resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-9.12.0.tgz#e8c546fffcb06c00d4833ca84410fed7f8a097d4"
+ integrity sha1-6MVG//ywbADUgzyoRBD+1/igl9Q=
+ dependencies:
+ abab "^1.0.3"
+ acorn "^4.0.4"
+ acorn-globals "^3.1.0"
+ array-equal "^1.0.0"
+ content-type-parser "^1.0.1"
+ cssom ">= 0.3.2 < 0.4.0"
+ cssstyle ">= 0.2.37 < 0.3.0"
+ escodegen "^1.6.1"
+ html-encoding-sniffer "^1.0.1"
+ nwmatcher ">= 1.3.9 < 2.0.0"
+ parse5 "^1.5.1"
+ request "^2.79.0"
+ sax "^1.2.1"
+ symbol-tree "^3.2.1"
+ tough-cookie "^2.3.2"
+ webidl-conversions "^4.0.0"
+ whatwg-encoding "^1.0.1"
+ whatwg-url "^4.3.0"
+ xml-name-validator "^2.0.1"
+
+jsesc@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b"
+ integrity sha1-RsP+yMGJKxKwgz25vHYiF226s0s=
+
+jsesc@~0.5.0:
+ version "0.5.0"
+ resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
+ integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=
+
+json-loader@^0.5.4:
+ version "0.5.7"
+ resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.7.tgz#dca14a70235ff82f0ac9a3abeb60d337a365185d"
+ integrity sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==
+
+json-parse-better-errors@^1.0.0, json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
+ integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
+
+json-schema-traverse@^0.3.0:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340"
+ integrity sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=
+
+json-schema-traverse@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
+ integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
+
+json-schema@0.2.3:
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
+ integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=
+
+json-stable-stringify@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af"
+ integrity sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=
+ dependencies:
+ jsonify "~0.0.0"
+
+json-stringify-safe@~5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
+ integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
+
+json2mq@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/json2mq/-/json2mq-0.2.0.tgz#b637bd3ba9eabe122c83e9720483aeb10d2c904a"
+ integrity sha1-tje9O6nqvhIsg+lyBIOusQ0skEo=
+ dependencies:
+ string-convert "^0.2.0"
+
+json3@^3.3.2:
+ version "3.3.3"
+ resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81"
+ integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==
+
+json5@^0.5.0, json5@^0.5.1:
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
+ integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=
+
+json5@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe"
+ integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==
+ dependencies:
+ minimist "^1.2.0"
+
+jsonfile@^2.1.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8"
+ integrity sha1-NzaitCi4e72gzIO1P6PWM6NcKug=
+ optionalDependencies:
+ graceful-fs "^4.1.6"
+
+jsonfile@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-3.0.1.tgz#a5ecc6f65f53f662c4415c7675a0331d0992ec66"
+ integrity sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=
+ optionalDependencies:
+ graceful-fs "^4.1.6"
+
+jsonify@~0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"
+ integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=
+
+jsonparse@^1.2.0:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280"
+ integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=
+
+jsprim@^1.2.2:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
+ integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=
+ dependencies:
+ assert-plus "1.0.0"
+ extsprintf "1.3.0"
+ json-schema "0.2.3"
+ verror "1.10.0"
+
+jsx-ast-utils@^1.4.0:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz#3867213e8dd79bf1e8f2300c0cfc1efb182c0df1"
+ integrity sha1-OGchPo3Xm/Ho8jAMDPwe+xgsDfE=
+
+jsx-ast-utils@^2.0.0:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.4.1.tgz#1114a4c1209481db06c690c2b4f488cc665f657e"
+ integrity sha512-z1xSldJ6imESSzOjd3NNkieVJKRlKYSOtMG8SFyCj2FIrvSaSuli/WjpBkEzCBoR9bYYYFgqJw61Xhu7Lcgk+w==
+ dependencies:
+ array-includes "^3.1.1"
+ object.assign "^4.1.0"
+
+killable@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892"
+ integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==
+
+kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
+ version "3.2.2"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
+ integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=
+ dependencies:
+ is-buffer "^1.1.5"
+
+kind-of@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57"
+ integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc=
+ dependencies:
+ is-buffer "^1.1.5"
+
+kind-of@^5.0.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d"
+ integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==
+
+kind-of@^6.0.0, kind-of@^6.0.2:
+ version "6.0.3"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
+ integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
+
+klaw@^1.0.0:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439"
+ integrity sha1-QIhDO0azsbolnXh4XY6W9zugJDk=
+ optionalDependencies:
+ graceful-fs "^4.1.9"
+
+latest-version@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15"
+ integrity sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=
+ dependencies:
+ package-json "^4.0.0"
+
+lazy-cache@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e"
+ integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4=
+
+lazy-property@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/lazy-property/-/lazy-property-1.0.0.tgz#84ddc4b370679ba8bd4cdcfa4c06b43d57111147"
+ integrity sha1-hN3Es3Bnm6i9TNz6TAa0PVcREUc=
+
+lcid@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835"
+ integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=
+ dependencies:
+ invert-kv "^1.0.0"
+
+less-loader@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-4.1.0.tgz#2c1352c5b09a4f84101490274fd51674de41363e"
+ integrity sha512-KNTsgCE9tMOM70+ddxp9yyt9iHqgmSs0yTZc5XH5Wo+g80RWRIYNqE58QJKm/yMud5wZEvz50ugRDuzVIkyahg==
+ dependencies:
+ clone "^2.1.1"
+ loader-utils "^1.1.0"
+ pify "^3.0.0"
+
+less-plugin-variables-output@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/less-plugin-variables-output/-/less-plugin-variables-output-1.2.0.tgz#dbadf71b30ac87c4ce210508d9576513e19628ce"
+ integrity sha1-2633GzCsh8TOIQUI2VdlE+GWKM4=
+
+less@^3.0.2:
+ version "3.12.2"
+ resolved "https://registry.yarnpkg.com/less/-/less-3.12.2.tgz#157e6dd32a68869df8859314ad38e70211af3ab4"
+ integrity sha512-+1V2PCMFkL+OIj2/HrtrvZw0BC0sYLMICJfbQjuj/K8CEnlrFX6R5cKKgzzttsZDHyxQNL1jqMREjKN3ja/E3Q==
+ dependencies:
+ tslib "^1.10.0"
+ optionalDependencies:
+ errno "^0.1.1"
+ graceful-fs "^4.1.2"
+ image-size "~0.5.0"
+ make-dir "^2.1.0"
+ mime "^1.4.1"
+ native-request "^1.0.5"
+ source-map "~0.6.0"
+
+leven@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580"
+ integrity sha1-wuep93IJTe6dNCAq6KzORoeHVYA=
+
+levn@^0.3.0, levn@~0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
+ integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=
+ dependencies:
+ prelude-ls "~1.1.2"
+ type-check "~0.3.2"
+
+libcipm@^4.0.8:
+ version "4.0.8"
+ resolved "https://registry.yarnpkg.com/libcipm/-/libcipm-4.0.8.tgz#dcea4919e10dfbce420327e63901613b9141bc89"
+ integrity sha512-IN3hh2yDJQtZZ5paSV4fbvJg4aHxCCg5tcZID/dSVlTuUiWktsgaldVljJv6Z5OUlYspx6xQkbR0efNodnIrOA==
+ dependencies:
+ bin-links "^1.1.2"
+ bluebird "^3.5.1"
+ figgy-pudding "^3.5.1"
+ find-npm-prefix "^1.0.2"
+ graceful-fs "^4.1.11"
+ ini "^1.3.5"
+ lock-verify "^2.1.0"
+ mkdirp "^0.5.1"
+ npm-lifecycle "^3.0.0"
+ npm-logical-tree "^1.2.1"
+ npm-package-arg "^6.1.0"
+ pacote "^9.1.0"
+ read-package-json "^2.0.13"
+ rimraf "^2.6.2"
+ worker-farm "^1.6.0"
+
+libnpm@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/libnpm/-/libnpm-3.0.1.tgz#0be11b4c9dd4d1ffd7d95c786e92e55d65be77a2"
+ integrity sha512-d7jU5ZcMiTfBqTUJVZ3xid44fE5ERBm9vBnmhp2ECD2Ls+FNXWxHSkO7gtvrnbLO78gwPdNPz1HpsF3W4rjkBQ==
+ dependencies:
+ bin-links "^1.1.2"
+ bluebird "^3.5.3"
+ find-npm-prefix "^1.0.2"
+ libnpmaccess "^3.0.2"
+ libnpmconfig "^1.2.1"
+ libnpmhook "^5.0.3"
+ libnpmorg "^1.0.1"
+ libnpmpublish "^1.1.2"
+ libnpmsearch "^2.0.2"
+ libnpmteam "^1.0.2"
+ lock-verify "^2.0.2"
+ npm-lifecycle "^3.0.0"
+ npm-logical-tree "^1.2.1"
+ npm-package-arg "^6.1.0"
+ npm-profile "^4.0.2"
+ npm-registry-fetch "^4.0.0"
+ npmlog "^4.1.2"
+ pacote "^9.5.3"
+ read-package-json "^2.0.13"
+ stringify-package "^1.0.0"
+
+libnpmaccess@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/libnpmaccess/-/libnpmaccess-3.0.2.tgz#8b2d72345ba3bef90d3b4f694edd5c0417f58923"
+ integrity sha512-01512AK7MqByrI2mfC7h5j8N9V4I7MHJuk9buo8Gv+5QgThpOgpjB7sQBDDkeZqRteFb1QM/6YNdHfG7cDvfAQ==
+ dependencies:
+ aproba "^2.0.0"
+ get-stream "^4.0.0"
+ npm-package-arg "^6.1.0"
+ npm-registry-fetch "^4.0.0"
+
+libnpmconfig@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/libnpmconfig/-/libnpmconfig-1.2.1.tgz#c0c2f793a74e67d4825e5039e7a02a0044dfcbc0"
+ integrity sha512-9esX8rTQAHqarx6qeZqmGQKBNZR5OIbl/Ayr0qQDy3oXja2iFVQQI81R6GZ2a02bSNZ9p3YOGX1O6HHCb1X7kA==
+ dependencies:
+ figgy-pudding "^3.5.1"
+ find-up "^3.0.0"
+ ini "^1.3.5"
+
+libnpmhook@^5.0.3:
+ version "5.0.3"
+ resolved "https://registry.yarnpkg.com/libnpmhook/-/libnpmhook-5.0.3.tgz#4020c0f5edbf08ebe395325caa5ea01885b928f7"
+ integrity sha512-UdNLMuefVZra/wbnBXECZPefHMGsVDTq5zaM/LgKNE9Keyl5YXQTnGAzEo+nFOpdRqTWI9LYi4ApqF9uVCCtuA==
+ dependencies:
+ aproba "^2.0.0"
+ figgy-pudding "^3.4.1"
+ get-stream "^4.0.0"
+ npm-registry-fetch "^4.0.0"
+
+libnpmorg@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/libnpmorg/-/libnpmorg-1.0.1.tgz#5d2503f6ceb57f33dbdcc718e6698fea6d5ad087"
+ integrity sha512-0sRUXLh+PLBgZmARvthhYXQAWn0fOsa6T5l3JSe2n9vKG/lCVK4nuG7pDsa7uMq+uTt2epdPK+a2g6btcY11Ww==
+ dependencies:
+ aproba "^2.0.0"
+ figgy-pudding "^3.4.1"
+ get-stream "^4.0.0"
+ npm-registry-fetch "^4.0.0"
+
+libnpmpublish@^1.1.2:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/libnpmpublish/-/libnpmpublish-1.1.3.tgz#e3782796722d79eef1a0a22944c117e0c4ca4280"
+ integrity sha512-/3LsYqVc52cHXBmu26+J8Ed7sLs/hgGVFMH1mwYpL7Qaynb9RenpKqIKu0sJ130FB9PMkpMlWjlbtU8A4m7CQw==
+ dependencies:
+ aproba "^2.0.0"
+ figgy-pudding "^3.5.1"
+ get-stream "^4.0.0"
+ lodash.clonedeep "^4.5.0"
+ normalize-package-data "^2.4.0"
+ npm-package-arg "^6.1.0"
+ npm-registry-fetch "^4.0.0"
+ semver "^5.5.1"
+ ssri "^6.0.1"
+
+libnpmsearch@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/libnpmsearch/-/libnpmsearch-2.0.2.tgz#9a4f059102d38e3dd44085bdbfe5095f2a5044cf"
+ integrity sha512-VTBbV55Q6fRzTdzziYCr64+f8AopQ1YZ+BdPOv16UegIEaE8C0Kch01wo4s3kRTFV64P121WZJwgmBwrq68zYg==
+ dependencies:
+ figgy-pudding "^3.5.1"
+ get-stream "^4.0.0"
+ npm-registry-fetch "^4.0.0"
+
+libnpmteam@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/libnpmteam/-/libnpmteam-1.0.2.tgz#8b48bcbb6ce70dd8150c950fcbdbf3feb6eec820"
+ integrity sha512-p420vM28Us04NAcg1rzgGW63LMM6rwe+6rtZpfDxCcXxM0zUTLl7nPFEnRF3JfFBF5skF/yuZDUthTsHgde8QA==
+ dependencies:
+ aproba "^2.0.0"
+ figgy-pudding "^3.4.1"
+ get-stream "^4.0.0"
+ npm-registry-fetch "^4.0.0"
+
+libnpx@^10.2.4:
+ version "10.2.4"
+ resolved "https://registry.yarnpkg.com/libnpx/-/libnpx-10.2.4.tgz#ef0e3258e29aef2ec7ee3276115e20e67f67d4ee"
+ integrity sha512-BPc0D1cOjBeS8VIBKUu5F80s6njm0wbVt7CsGMrIcJ+SI7pi7V0uVPGpEMH9H5L8csOcclTxAXFE2VAsJXUhfA==
+ dependencies:
+ dotenv "^5.0.1"
+ npm-package-arg "^6.0.0"
+ rimraf "^2.6.2"
+ safe-buffer "^5.1.0"
+ update-notifier "^2.3.0"
+ which "^1.3.0"
+ y18n "^4.0.0"
+ yargs "^14.2.3"
+
+libsodium-wrappers@^0.7.3:
+ version "0.7.6"
+ resolved "https://registry.yarnpkg.com/libsodium-wrappers/-/libsodium-wrappers-0.7.6.tgz#baed4c16d4bf9610104875ad8a8e164d259d48fb"
+ integrity sha512-OUO2CWW5bHdLr6hkKLHIKI4raEkZrf3QHkhXsJ1yCh6MZ3JDA7jFD3kCATNquuGSG6MjjPHQIQms0y0gBDzjQg==
+ dependencies:
+ libsodium "0.7.6"
+
+libsodium@0.7.6:
+ version "0.7.6"
+ resolved "https://registry.yarnpkg.com/libsodium/-/libsodium-0.7.6.tgz#018b80c5728054817845fbffa554274441bda277"
+ integrity sha512-hPb/04sEuLcTRdWDtd+xH3RXBihpmbPCsKW/Jtf4PsvdyKh+D6z2D2gvp/5BfoxseP+0FCOg66kE+0oGUE/loQ==
+
+load-json-file@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
+ integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=
+ dependencies:
+ graceful-fs "^4.1.2"
+ parse-json "^2.2.0"
+ pify "^2.0.0"
+ pinkie-promise "^2.0.0"
+ strip-bom "^2.0.0"
+
+load-json-file@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8"
+ integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=
+ dependencies:
+ graceful-fs "^4.1.2"
+ parse-json "^2.2.0"
+ pify "^2.0.0"
+ strip-bom "^3.0.0"
+
+loader-fs-cache@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/loader-fs-cache/-/loader-fs-cache-1.0.3.tgz#f08657646d607078be2f0a032f8bd69dd6f277d9"
+ integrity sha512-ldcgZpjNJj71n+2Mf6yetz+c9bM4xpKtNds4LbqXzU/PTdeAX0g3ytnU1AJMEcTk2Lex4Smpe3Q/eCTsvUBxbA==
+ dependencies:
+ find-cache-dir "^0.1.1"
+ mkdirp "^0.5.1"
+
+loader-runner@^2.3.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357"
+ integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==
+
+loader-utils@^0.2.16:
+ version "0.2.17"
+ resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348"
+ integrity sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=
+ dependencies:
+ big.js "^3.1.3"
+ emojis-list "^2.0.0"
+ json5 "^0.5.0"
+ object-assign "^4.0.1"
+
+loader-utils@^1.0.2, loader-utils@^1.1.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613"
+ integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==
+ dependencies:
+ big.js "^5.2.2"
+ emojis-list "^3.0.0"
+ json5 "^1.0.1"
+
+locate-path@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e"
+ integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=
+ dependencies:
+ p-locate "^2.0.0"
+ path-exists "^3.0.0"
+
+locate-path@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e"
+ integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==
+ dependencies:
+ p-locate "^3.0.0"
+ path-exists "^3.0.0"
+
+lock-verify@^2.0.2, lock-verify@^2.1.0:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/lock-verify/-/lock-verify-2.2.1.tgz#81107948c51ed16f97b96ff8b60675affb243fc1"
+ integrity sha512-n0Zw2DVupKfZMazy/HIFVNohJ1z8fIoZ77WBnyyBGG6ixw83uJNyrbiJvvHWe1QKkGiBCjj8RCPlymltliqEww==
+ dependencies:
+ "@iarna/cli" "^1.2.0"
+ npm-package-arg "^6.1.0"
+ semver "^5.4.1"
+
+lockfile@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/lockfile/-/lockfile-1.0.4.tgz#07f819d25ae48f87e538e6578b6964a4981a5609"
+ integrity sha512-cvbTwETRfsFh4nHsL1eGWapU1XFi5Ot9E85sWAwia7Y7EgB7vfqcZhTKZ+l7hCGxSPoushMv5GKhT5PdLv03WA==
+ dependencies:
+ signal-exit "^3.0.2"
+
+lodash-es@^4.17.14:
+ version "4.17.15"
+ resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.15.tgz#21bd96839354412f23d7a10340e5eac6ee455d78"
+ integrity sha512-rlrc3yU3+JNOpZ9zj5pQtxnx2THmvRykwL4Xlxoa8I9lHBlVbbyPhgyPMioxVZ4NqyxaVVtaJnzsyOidQIhyyQ==
+
+lodash._baseuniq@~4.6.0:
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/lodash._baseuniq/-/lodash._baseuniq-4.6.0.tgz#0ebb44e456814af7905c6212fa2c9b2d51b841e8"
+ integrity sha1-DrtE5FaBSveQXGIS+iybLVG4Qeg=
+ dependencies:
+ lodash._createset "~4.0.0"
+ lodash._root "~3.0.0"
+
+lodash._createset@~4.0.0:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/lodash._createset/-/lodash._createset-4.0.3.tgz#0f4659fbb09d75194fa9e2b88a6644d363c9fe26"
+ integrity sha1-D0ZZ+7CddRlPqeK4imZE02PJ/iY=
+
+lodash._reinterpolate@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d"
+ integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=
+
+lodash._root@~3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692"
+ integrity sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=
+
+lodash.camelcase@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6"
+ integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY=
+
+lodash.clonedeep@^4.5.0, lodash.clonedeep@~4.5.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef"
+ integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=
+
+lodash.cond@^4.3.0:
+ version "4.5.2"
+ resolved "https://registry.yarnpkg.com/lodash.cond/-/lodash.cond-4.5.2.tgz#f471a1da486be60f6ab955d17115523dd1d255d5"
+ integrity sha1-9HGh2khr5g9quVXRcRVSPdHSVdU=
+
+lodash.debounce@^4.0.0, lodash.debounce@^4.0.8:
+ version "4.0.8"
+ resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
+ integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168=
+
+lodash.defaults@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c"
+ integrity sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=
+
+lodash.memoize@^4.1.2:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
+ integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=
+
+lodash.template@^4.4.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab"
+ integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==
+ dependencies:
+ lodash._reinterpolate "^3.0.0"
+ lodash.templatesettings "^4.0.0"
+
+lodash.templatesettings@^4.0.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33"
+ integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==
+ dependencies:
+ lodash._reinterpolate "^3.0.0"
+
+lodash.throttle@^4.0.0:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4"
+ integrity sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ=
+
+lodash.union@~4.6.0:
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88"
+ integrity sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=
+
+lodash.uniq@^4.5.0, lodash.uniq@~4.5.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
+ integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=
+
+lodash.without@~4.4.0:
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/lodash.without/-/lodash.without-4.4.0.tgz#3cd4574a00b67bae373a94b748772640507b7aac"
+ integrity sha1-PNRXSgC2e643OpS3SHcmQFB7eqw=
+
+"lodash@>=3.5 <5", lodash@^4.15.0, lodash@^4.16.2, lodash@^4.16.5, lodash@^4.17.10, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.19, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0:
+ version "4.17.19"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b"
+ integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==
+
+loglevel@^1.4.1:
+ version "1.6.8"
+ resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.8.tgz#8a25fb75d092230ecd4457270d80b54e28011171"
+ integrity sha512-bsU7+gc9AJ2SqpzxwU3+1fedl8zAntbtC5XYlt3s2j1hJcn2PsXSmgN8TaLG/J1/2mod4+cE/3vNL70/c1RNCA==
+
+longest@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097"
+ integrity sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=
+
+loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
+ integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
+ dependencies:
+ js-tokens "^3.0.0 || ^4.0.0"
+
+loud-rejection@^1.0.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f"
+ integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=
+ dependencies:
+ currently-unhandled "^0.4.1"
+ signal-exit "^3.0.0"
+
+lower-case@^1.1.1:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac"
+ integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw=
+
+lowercase-keys@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f"
+ integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==
+
+lru-cache@^4.0.1:
+ version "4.1.5"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd"
+ integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==
+ dependencies:
+ pseudomap "^1.0.2"
+ yallist "^2.1.2"
+
+lru-cache@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
+ integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==
+ dependencies:
+ yallist "^3.0.2"
+
+make-dir@^1.0.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c"
+ integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==
+ dependencies:
+ pify "^3.0.0"
+
+make-dir@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
+ integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==
+ dependencies:
+ pify "^4.0.1"
+ semver "^5.6.0"
+
+make-fetch-happen@^5.0.0:
+ version "5.0.2"
+ resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-5.0.2.tgz#aa8387104f2687edca01c8687ee45013d02d19bd"
+ integrity sha512-07JHC0r1ykIoruKO8ifMXu+xEU8qOXDFETylktdug6vJDACnP+HKevOu3PXyNPzFyTSlz8vrBYlBO1JZRe8Cag==
+ dependencies:
+ agentkeepalive "^3.4.1"
+ cacache "^12.0.0"
+ http-cache-semantics "^3.8.1"
+ http-proxy-agent "^2.1.0"
+ https-proxy-agent "^2.2.3"
+ lru-cache "^5.1.1"
+ mississippi "^3.0.0"
+ node-fetch-npm "^2.0.2"
+ promise-retry "^1.1.1"
+ socks-proxy-agent "^4.0.0"
+ ssri "^6.0.0"
+
+makeerror@1.0.x:
+ version "1.0.11"
+ resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c"
+ integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=
+ dependencies:
+ tmpl "1.0.x"
+
+map-cache@^0.2.2:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
+ integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=
+
+map-obj@^1.0.0, map-obj@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d"
+ integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=
+
+map-visit@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"
+ integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=
+ dependencies:
+ object-visit "^1.0.0"
+
+marker-clusterer-plus@^2.1.4:
+ version "2.1.4"
+ resolved "https://registry.yarnpkg.com/marker-clusterer-plus/-/marker-clusterer-plus-2.1.4.tgz#f8eff74d599dab3b7d0e3fed5264ea0e704f5d67"
+ integrity sha1-+O/3TVmdqzt9Dj/tUmTqDnBPXWc=
+
+markerwithlabel@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/markerwithlabel/-/markerwithlabel-2.0.2.tgz#fa6aee4abb0ee553e24e2b708226858f58b8729e"
+ integrity sha512-C/cbm1A0h/u54gwHk5ZJNdUU3V3+1BbCpRPMsMyFA7vF4yL+aB4rWpxACz29TpQ+cTg6/iQroExh0PMSRGtQFg==
+
+math-expression-evaluator@^1.2.14:
+ version "1.2.22"
+ resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.22.tgz#c14dcb3d8b4d150e5dcea9c68c8dad80309b0d5e"
+ integrity sha512-L0j0tFVZBQQLeEjmWOvDLoRciIY8gQGWahvkztXUal8jH8R5Rlqo9GCvgqvXcy9LQhEWdQCVvzqAbxgYNt4blQ==
+
+math-random@^1.0.1:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.4.tgz#5dd6943c938548267016d4e34f057583080c514c"
+ integrity sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==
+
+md5.js@^1.3.4:
+ version "1.3.5"
+ resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f"
+ integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==
+ dependencies:
+ hash-base "^3.0.0"
+ inherits "^2.0.1"
+ safe-buffer "^5.1.2"
+
+meant@~1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/meant/-/meant-1.0.2.tgz#5d0c78310a3d8ae1408a16be0fe0bd42a969f560"
+ integrity sha512-KN+1uowN/NK+sT/Lzx7WSGIj2u+3xe5n2LbwObfjOhPZiA+cCfCm6idVl0RkEfjThkw5XJ96CyRcanq6GmKtUg==
+
+media-typer@0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
+ integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=
+
+mem@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76"
+ integrity sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=
+ dependencies:
+ mimic-fn "^1.0.0"
+
+memory-fs@^0.4.0, memory-fs@~0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552"
+ integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=
+ dependencies:
+ errno "^0.1.3"
+ readable-stream "^2.0.1"
+
+meow@^3.3.0, meow@^3.7.0:
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb"
+ integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=
+ dependencies:
+ camelcase-keys "^2.0.0"
+ decamelize "^1.1.2"
+ loud-rejection "^1.0.0"
+ map-obj "^1.0.1"
+ minimist "^1.1.3"
+ normalize-package-data "^2.3.4"
+ object-assign "^4.0.1"
+ read-pkg-up "^1.0.1"
+ redent "^1.0.0"
+ trim-newlines "^1.0.0"
+
+merge-descriptors@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
+ integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=
+
+merge@^1.2.0:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.1.tgz#38bebf80c3220a8a487b6fcfb3941bb11720c145"
+ integrity sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ==
+
+methods@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
+ integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=
+
+micromatch@^2.1.5, micromatch@^2.3.11:
+ version "2.3.11"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565"
+ integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=
+ dependencies:
+ arr-diff "^2.0.0"
+ array-unique "^0.2.1"
+ braces "^1.8.2"
+ expand-brackets "^0.1.4"
+ extglob "^0.3.1"
+ filename-regex "^2.0.0"
+ is-extglob "^1.0.0"
+ is-glob "^2.0.1"
+ kind-of "^3.0.2"
+ normalize-path "^2.0.1"
+ object.omit "^2.0.0"
+ parse-glob "^3.0.4"
+ regex-cache "^0.4.2"
+
+micromatch@^3.1.10, micromatch@^3.1.4:
+ version "3.1.10"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
+ integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==
+ dependencies:
+ arr-diff "^4.0.0"
+ array-unique "^0.3.2"
+ braces "^2.3.1"
+ define-property "^2.0.2"
+ extend-shallow "^3.0.2"
+ extglob "^2.0.4"
+ fragment-cache "^0.2.1"
+ kind-of "^6.0.2"
+ nanomatch "^1.2.9"
+ object.pick "^1.3.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.2"
+
+miller-rabin@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d"
+ integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==
+ dependencies:
+ bn.js "^4.0.0"
+ brorand "^1.0.1"
+
+mime-db@1.44.0, "mime-db@>= 1.43.0 < 2":
+ version "1.44.0"
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92"
+ integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==
+
+mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24:
+ version "2.1.27"
+ resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f"
+ integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==
+ dependencies:
+ mime-db "1.44.0"
+
+mime@1.6.0, mime@^1.4.1, mime@^1.5.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
+ integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
+
+mimic-fn@^1.0.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022"
+ integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==
+
+mini-store@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/mini-store/-/mini-store-2.0.0.tgz#0843c048d6942ce55e3e78b1b67fc063022b5488"
+ integrity sha512-EG0CuwpQmX+XL4QVS0kxNwHW5ftSbhygu1qxQH0pipugjnPkbvkalCdQbEihMwtQY6d3MTN+MS0q+aurs+RfLQ==
+ dependencies:
+ hoist-non-react-statics "^2.3.1"
+ prop-types "^15.6.0"
+ react-lifecycles-compat "^3.0.4"
+ shallowequal "^1.0.2"
+
+minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
+ integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==
+
+minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
+ integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=
+
+minimatch@3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774"
+ integrity sha1-Kk5AkLlrLbBqnX3wEFWmKnfJt3Q=
+ dependencies:
+ brace-expansion "^1.0.0"
+
+minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
+ integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
+ dependencies:
+ brace-expansion "^1.1.7"
+
+minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5:
+ version "1.2.5"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
+ integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
+
+minipass@^2.3.5, minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0:
+ version "2.9.0"
+ resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6"
+ integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==
+ dependencies:
+ safe-buffer "^5.1.2"
+ yallist "^3.0.0"
+
+minizlib@^1.2.1:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d"
+ integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==
+ dependencies:
+ minipass "^2.9.0"
+
+mississippi@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022"
+ integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==
+ dependencies:
+ concat-stream "^1.5.0"
+ duplexify "^3.4.2"
+ end-of-stream "^1.1.0"
+ flush-write-stream "^1.0.0"
+ from2 "^2.1.0"
+ parallel-transform "^1.1.0"
+ pump "^3.0.0"
+ pumpify "^1.3.3"
+ stream-each "^1.1.0"
+ through2 "^2.0.0"
+
+mixin-deep@^1.2.0:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566"
+ integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==
+ dependencies:
+ for-in "^1.0.2"
+ is-extendable "^1.0.1"
+
+mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.5, mkdirp@~0.5.0, mkdirp@~0.5.1:
+ version "0.5.5"
+ resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
+ integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==
+ dependencies:
+ minimist "^1.2.5"
+
+moment@2.x, moment@^2.24.0, moment@^2.27.0:
+ version "2.27.0"
+ resolved "https://registry.yarnpkg.com/moment/-/moment-2.27.0.tgz#8bff4e3e26a236220dfe3e36de756b6ebaa0105d"
+ integrity sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ==
+
+move-concurrently@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92"
+ integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=
+ dependencies:
+ aproba "^1.1.1"
+ copy-concurrently "^1.0.0"
+ fs-write-stream-atomic "^1.0.8"
+ mkdirp "^0.5.1"
+ rimraf "^2.5.4"
+ run-queue "^1.0.3"
+
+ms@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
+ integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
+
+ms@2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
+ integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==
+
+ms@^2.0.0, ms@^2.1.1:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
+ integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
+
+multicast-dns-service-types@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901"
+ integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=
+
+multicast-dns@^6.0.1:
+ version "6.2.3"
+ resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229"
+ integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==
+ dependencies:
+ dns-packet "^1.3.1"
+ thunky "^1.0.2"
+
+mutationobserver-shim@^0.3.2:
+ version "0.3.7"
+ resolved "https://registry.yarnpkg.com/mutationobserver-shim/-/mutationobserver-shim-0.3.7.tgz#8bf633b0c0b0291a1107255ed32c13088a8c5bf3"
+ integrity sha512-oRIDTyZQU96nAiz2AQyngwx1e89iApl2hN5AOYwyxLUB47UYsU3Wv9lJWqH5y/QdiYkc5HQLi23ZNB3fELdHcQ==
+
+mute-stream@0.0.7:
+ version "0.0.7"
+ resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab"
+ integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=
+
+mute-stream@~0.0.4:
+ version "0.0.8"
+ resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d"
+ integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==
+
+nan@^2.12.1:
+ version "2.14.1"
+ resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01"
+ integrity sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==
+
+nanomatch@^1.2.9:
+ version "1.2.13"
+ resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119"
+ integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==
+ dependencies:
+ arr-diff "^4.0.0"
+ array-unique "^0.3.2"
+ define-property "^2.0.2"
+ extend-shallow "^3.0.2"
+ fragment-cache "^0.2.1"
+ is-windows "^1.0.2"
+ kind-of "^6.0.2"
+ object.pick "^1.3.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
+
+native-request@^1.0.5:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/native-request/-/native-request-1.0.7.tgz#ff742dc555b4c8f2f1c14b548639ba174e573856"
+ integrity sha512-9nRjinI9bmz+S7dgNtf4A70+/vPhnd+2krGpy4SUlADuOuSa24IDkNaZ+R/QT1wQ6S8jBdi6wE7fLekFZNfUpQ==
+
+natural-compare@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
+ integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
+
+negotiator@0.6.2:
+ version "0.6.2"
+ resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
+ integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==
+
+neo-async@^2.5.0, neo-async@^2.6.0:
+ version "2.6.2"
+ resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
+ integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
+
+next-tick@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c"
+ integrity sha1-yobR/ogoFpsBICCOPchCS524NCw=
+
+no-case@^2.2.0:
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac"
+ integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==
+ dependencies:
+ lower-case "^1.1.1"
+
+node-fetch-npm@^2.0.2:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/node-fetch-npm/-/node-fetch-npm-2.0.4.tgz#6507d0e17a9ec0be3bec516958a497cec54bf5a4"
+ integrity sha512-iOuIQDWDyjhv9qSDrj9aq/klt6F9z1p2otB3AV7v3zBDcL/x+OfGsvGQZZCcMZbUf4Ujw1xGNQkjvGnVT22cKg==
+ dependencies:
+ encoding "^0.1.11"
+ json-parse-better-errors "^1.0.0"
+ safe-buffer "^5.1.1"
+
+node-fetch@^1.0.1:
+ version "1.7.3"
+ resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef"
+ integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==
+ dependencies:
+ encoding "^0.1.11"
+ is-stream "^1.0.1"
+
+node-forge@0.9.0:
+ version "0.9.0"
+ resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.9.0.tgz#d624050edbb44874adca12bb9a52ec63cb782579"
+ integrity sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ==
+
+node-gyp@^5.0.2, node-gyp@^5.1.0:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-5.1.1.tgz#eb915f7b631c937d282e33aed44cb7a025f62a3e"
+ integrity sha512-WH0WKGi+a4i4DUt2mHnvocex/xPLp9pYt5R6M2JdFB7pJ7Z34hveZ4nDTGTiLXCkitA9T8HFZjhinBCiVHYcWw==
+ dependencies:
+ env-paths "^2.2.0"
+ glob "^7.1.4"
+ graceful-fs "^4.2.2"
+ mkdirp "^0.5.1"
+ nopt "^4.0.1"
+ npmlog "^4.1.2"
+ request "^2.88.0"
+ rimraf "^2.6.3"
+ semver "^5.7.1"
+ tar "^4.4.12"
+ which "^1.3.1"
+
+node-int64@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b"
+ integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=
+
+node-libs-browser@^2.0.0:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425"
+ integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==
+ dependencies:
+ assert "^1.1.1"
+ browserify-zlib "^0.2.0"
+ buffer "^4.3.0"
+ console-browserify "^1.1.0"
+ constants-browserify "^1.0.0"
+ crypto-browserify "^3.11.0"
+ domain-browser "^1.1.1"
+ events "^3.0.0"
+ https-browserify "^1.0.0"
+ os-browserify "^0.3.0"
+ path-browserify "0.0.1"
+ process "^0.11.10"
+ punycode "^1.2.4"
+ querystring-es3 "^0.2.0"
+ readable-stream "^2.3.3"
+ stream-browserify "^2.0.1"
+ stream-http "^2.7.2"
+ string_decoder "^1.0.0"
+ timers-browserify "^2.0.4"
+ tty-browserify "0.0.0"
+ url "^0.11.0"
+ util "^0.11.0"
+ vm-browserify "^1.0.1"
+
+node-notifier@^5.0.2:
+ version "5.4.3"
+ resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.4.3.tgz#cb72daf94c93904098e28b9c590fd866e464bd50"
+ integrity sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q==
+ dependencies:
+ growly "^1.3.0"
+ is-wsl "^1.1.0"
+ semver "^5.5.0"
+ shellwords "^0.1.1"
+ which "^1.3.0"
+
+nopt@^4.0.1, nopt@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48"
+ integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==
+ dependencies:
+ abbrev "1"
+ osenv "^0.1.4"
+
+normalize-package-data@^2.0.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.4.0, normalize-package-data@^2.5.0:
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
+ integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==
+ dependencies:
+ hosted-git-info "^2.1.4"
+ resolve "^1.10.0"
+ semver "2 || 3 || 4 || 5"
+ validate-npm-package-license "^3.0.1"
+
+normalize-path@^2.0.0, normalize-path@^2.0.1, normalize-path@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
+ integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=
+ dependencies:
+ remove-trailing-separator "^1.0.1"
+
+normalize-path@^3.0.0, normalize-path@~3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
+ integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
+
+normalize-range@^0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942"
+ integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=
+
+normalize-url@^1.4.0:
+ version "1.9.1"
+ resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c"
+ integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=
+ dependencies:
+ object-assign "^4.0.1"
+ prepend-http "^1.0.0"
+ query-string "^4.1.0"
+ sort-keys "^1.0.0"
+
+npm-audit-report@^1.3.3:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/npm-audit-report/-/npm-audit-report-1.3.3.tgz#8226deeb253b55176ed147592a3995442f2179ed"
+ integrity sha512-8nH/JjsFfAWMvn474HB9mpmMjrnKb1Hx/oTAdjv4PT9iZBvBxiZ+wtDUapHCJwLqYGQVPaAfs+vL5+5k9QndXw==
+ dependencies:
+ cli-table3 "^0.5.0"
+ console-control-strings "^1.1.0"
+
+npm-bundled@^1.0.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b"
+ integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==
+ dependencies:
+ npm-normalize-package-bin "^1.0.1"
+
+npm-cache-filename@~1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/npm-cache-filename/-/npm-cache-filename-1.0.2.tgz#ded306c5b0bfc870a9e9faf823bc5f283e05ae11"
+ integrity sha1-3tMGxbC/yHCp6fr4I7xfKD4FrhE=
+
+npm-install-checks@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-3.0.2.tgz#ab2e32ad27baa46720706908e5b14c1852de44d9"
+ integrity sha512-E4kzkyZDIWoin6uT5howP8VDvkM+E8IQDcHAycaAxMbwkqhIg5eEYALnXOl3Hq9MrkdQB/2/g1xwBINXdKSRkg==
+ dependencies:
+ semver "^2.3.0 || 3.x || 4 || 5"
+
+npm-lifecycle@^3.0.0, npm-lifecycle@^3.1.5:
+ version "3.1.5"
+ resolved "https://registry.yarnpkg.com/npm-lifecycle/-/npm-lifecycle-3.1.5.tgz#9882d3642b8c82c815782a12e6a1bfeed0026309"
+ integrity sha512-lDLVkjfZmvmfvpvBzA4vzee9cn+Me4orq0QF8glbswJVEbIcSNWib7qGOffolysc3teCqbbPZZkzbr3GQZTL1g==
+ dependencies:
+ byline "^5.0.0"
+ graceful-fs "^4.1.15"
+ node-gyp "^5.0.2"
+ resolve-from "^4.0.0"
+ slide "^1.1.6"
+ uid-number "0.0.6"
+ umask "^1.1.0"
+ which "^1.3.1"
+
+npm-logical-tree@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/npm-logical-tree/-/npm-logical-tree-1.2.1.tgz#44610141ca24664cad35d1e607176193fd8f5b88"
+ integrity sha512-AJI/qxDB2PWI4LG1CYN579AY1vCiNyWfkiquCsJWqntRu/WwimVrC8yXeILBFHDwxfOejxewlmnvW9XXjMlYIg==
+
+npm-normalize-package-bin@^1.0.0, npm-normalize-package-bin@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2"
+ integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==
+
+"npm-package-arg@^4.0.0 || ^5.0.0 || ^6.0.0", npm-package-arg@^6.0.0, npm-package-arg@^6.1.0, npm-package-arg@^6.1.1:
+ version "6.1.1"
+ resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-6.1.1.tgz#02168cb0a49a2b75bf988a28698de7b529df5cb7"
+ integrity sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==
+ dependencies:
+ hosted-git-info "^2.7.1"
+ osenv "^0.1.5"
+ semver "^5.6.0"
+ validate-npm-package-name "^3.0.0"
+
+npm-packlist@^1.1.12, npm-packlist@^1.4.8:
+ version "1.4.8"
+ resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e"
+ integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==
+ dependencies:
+ ignore-walk "^3.0.1"
+ npm-bundled "^1.0.1"
+ npm-normalize-package-bin "^1.0.1"
+
+npm-pick-manifest@^3.0.0, npm-pick-manifest@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz#f4d9e5fd4be2153e5f4e5f9b7be8dc419a99abb7"
+ integrity sha512-wNprTNg+X5nf+tDi+hbjdHhM4bX+mKqv6XmPh7B5eG+QY9VARfQPfCEH013H5GqfNj6ee8Ij2fg8yk0mzps1Vw==
+ dependencies:
+ figgy-pudding "^3.5.1"
+ npm-package-arg "^6.0.0"
+ semver "^5.4.1"
+
+npm-profile@^4.0.2, npm-profile@^4.0.4:
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/npm-profile/-/npm-profile-4.0.4.tgz#28ee94390e936df6d084263ee2061336a6a1581b"
+ integrity sha512-Ta8xq8TLMpqssF0H60BXS1A90iMoM6GeKwsmravJ6wYjWwSzcYBTdyWa3DZCYqPutacBMEm7cxiOkiIeCUAHDQ==
+ dependencies:
+ aproba "^1.1.2 || 2"
+ figgy-pudding "^3.4.1"
+ npm-registry-fetch "^4.0.0"
+
+npm-registry-fetch@^4.0.0, npm-registry-fetch@^4.0.5:
+ version "4.0.5"
+ resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-4.0.5.tgz#cb87cf7f25bfb048d6c3ee19d115bebf93ea5bfa"
+ integrity sha512-yQ0/U4fYpCCqmueB2g8sc+89ckQ3eXpmU4+Yi2j5o/r0WkKvE2+Y0tK3DEILAtn2UaQTkjTHxIXe2/CSdit+/Q==
+ dependencies:
+ JSONStream "^1.3.4"
+ bluebird "^3.5.1"
+ figgy-pudding "^3.4.1"
+ lru-cache "^5.1.1"
+ make-fetch-happen "^5.0.0"
+ npm-package-arg "^6.1.0"
+ safe-buffer "^5.2.0"
+
+npm-run-path@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
+ integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=
+ dependencies:
+ path-key "^2.0.0"
+
+npm-user-validate@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/npm-user-validate/-/npm-user-validate-1.0.0.tgz#8ceca0f5cea04d4e93519ef72d0557a75122e951"
+ integrity sha1-jOyg9c6gTU6TUZ73LQVXp1Ei6VE=
+
+npm@^6.4.1:
+ version "6.14.7"
+ resolved "https://registry.yarnpkg.com/npm/-/npm-6.14.7.tgz#011584b469467e5bc5acd5a0dbe58a3d46869582"
+ integrity sha512-swhsdpNpyXg4GbM6LpOQ6qaloQuIKizZ+Zh6JPXJQc59ka49100Js0WvZx594iaKSoFgkFq2s8uXFHS3/Xy2WQ==
+ dependencies:
+ JSONStream "^1.3.5"
+ abbrev "~1.1.1"
+ ansicolors "~0.3.2"
+ ansistyles "~0.1.3"
+ aproba "^2.0.0"
+ archy "~1.0.0"
+ bin-links "^1.1.8"
+ bluebird "^3.5.5"
+ byte-size "^5.0.1"
+ cacache "^12.0.3"
+ call-limit "^1.1.1"
+ chownr "^1.1.4"
+ ci-info "^2.0.0"
+ cli-columns "^3.1.2"
+ cli-table3 "^0.5.1"
+ cmd-shim "^3.0.3"
+ columnify "~1.5.4"
+ config-chain "^1.1.12"
+ detect-indent "~5.0.0"
+ detect-newline "^2.1.0"
+ dezalgo "~1.0.3"
+ editor "~1.0.0"
+ figgy-pudding "^3.5.1"
+ find-npm-prefix "^1.0.2"
+ fs-vacuum "~1.2.10"
+ fs-write-stream-atomic "~1.0.10"
+ gentle-fs "^2.3.1"
+ glob "^7.1.6"
+ graceful-fs "^4.2.4"
+ has-unicode "~2.0.1"
+ hosted-git-info "^2.8.8"
+ iferr "^1.0.2"
+ infer-owner "^1.0.4"
+ inflight "~1.0.6"
+ inherits "^2.0.4"
+ ini "^1.3.5"
+ init-package-json "^1.10.3"
+ is-cidr "^3.0.0"
+ json-parse-better-errors "^1.0.2"
+ lazy-property "~1.0.0"
+ libcipm "^4.0.8"
+ libnpm "^3.0.1"
+ libnpmaccess "^3.0.2"
+ libnpmhook "^5.0.3"
+ libnpmorg "^1.0.1"
+ libnpmsearch "^2.0.2"
+ libnpmteam "^1.0.2"
+ libnpx "^10.2.4"
+ lock-verify "^2.1.0"
+ lockfile "^1.0.4"
+ lodash._baseuniq "~4.6.0"
+ lodash.clonedeep "~4.5.0"
+ lodash.union "~4.6.0"
+ lodash.uniq "~4.5.0"
+ lodash.without "~4.4.0"
+ lru-cache "^5.1.1"
+ meant "~1.0.1"
+ mississippi "^3.0.0"
+ mkdirp "^0.5.5"
+ move-concurrently "^1.0.1"
+ node-gyp "^5.1.0"
+ nopt "^4.0.3"
+ normalize-package-data "^2.5.0"
+ npm-audit-report "^1.3.3"
+ npm-cache-filename "~1.0.2"
+ npm-install-checks "^3.0.2"
+ npm-lifecycle "^3.1.5"
+ npm-package-arg "^6.1.1"
+ npm-packlist "^1.4.8"
+ npm-pick-manifest "^3.0.2"
+ npm-profile "^4.0.4"
+ npm-registry-fetch "^4.0.5"
+ npm-user-validate "~1.0.0"
+ npmlog "~4.1.2"
+ once "~1.4.0"
+ opener "^1.5.1"
+ osenv "^0.1.5"
+ pacote "^9.5.12"
+ path-is-inside "~1.0.2"
+ promise-inflight "~1.0.1"
+ qrcode-terminal "^0.12.0"
+ query-string "^6.8.2"
+ qw "~1.0.1"
+ read "~1.0.7"
+ read-cmd-shim "^1.0.5"
+ read-installed "~4.0.3"
+ read-package-json "^2.1.1"
+ read-package-tree "^5.3.1"
+ readable-stream "^3.6.0"
+ readdir-scoped-modules "^1.1.0"
+ request "^2.88.0"
+ retry "^0.12.0"
+ rimraf "^2.7.1"
+ safe-buffer "^5.1.2"
+ semver "^5.7.1"
+ sha "^3.0.0"
+ slide "~1.1.6"
+ sorted-object "~2.0.1"
+ sorted-union-stream "~2.1.3"
+ ssri "^6.0.1"
+ stringify-package "^1.0.1"
+ tar "^4.4.13"
+ text-table "~0.2.0"
+ tiny-relative-date "^1.3.0"
+ uid-number "0.0.6"
+ umask "~1.1.0"
+ unique-filename "^1.1.1"
+ unpipe "~1.0.0"
+ update-notifier "^2.5.0"
+ uuid "^3.3.3"
+ validate-npm-package-license "^3.0.4"
+ validate-npm-package-name "~3.0.0"
+ which "^1.3.1"
+ worker-farm "^1.7.0"
+ write-file-atomic "^2.4.3"
+
+npmlog@^4.1.2, npmlog@~4.1.2:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
+ integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==
+ dependencies:
+ are-we-there-yet "~1.1.2"
+ console-control-strings "~1.1.0"
+ gauge "~2.7.3"
+ set-blocking "~2.0.0"
+
+nth-check@~1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c"
+ integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==
+ dependencies:
+ boolbase "~1.0.0"
+
+num2fraction@^1.2.2:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede"
+ integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=
+
+number-is-nan@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
+ integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
+
+"nwmatcher@>= 1.3.9 < 2.0.0":
+ version "1.4.4"
+ resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.4.4.tgz#2285631f34a95f0d0395cd900c96ed39b58f346e"
+ integrity sha512-3iuY4N5dhgMpCUrOVnuAdGrgxVqV2cJpM+XNccjR2DKOB1RUP0aA+wGXEiNziG/UKboFyGBIoKOaNlJxx8bciQ==
+
+oauth-sign@~0.9.0:
+ version "0.9.0"
+ resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
+ integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==
+
+object-assign@4.1.1, object-assign@4.x, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
+ integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
+
+object-copy@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c"
+ integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw=
+ dependencies:
+ copy-descriptor "^0.1.0"
+ define-property "^0.2.5"
+ kind-of "^3.0.3"
+
+object-hash@^1.1.4:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-1.3.1.tgz#fde452098a951cb145f039bb7d455449ddc126df"
+ integrity sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==
+
+object-inspect@^1.7.0:
+ version "1.8.0"
+ resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0"
+ integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==
+
+object-is@^1.0.1:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.2.tgz#c5d2e87ff9e119f78b7a088441519e2eec1573b6"
+ integrity sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ==
+ dependencies:
+ define-properties "^1.1.3"
+ es-abstract "^1.17.5"
+
+object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
+ integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
+
+object-visit@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb"
+ integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=
+ dependencies:
+ isobject "^3.0.0"
+
+object.assign@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da"
+ integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==
+ dependencies:
+ define-properties "^1.1.2"
+ function-bind "^1.1.1"
+ has-symbols "^1.0.0"
+ object-keys "^1.0.11"
+
+object.getownpropertydescriptors@^2.0.3:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649"
+ integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==
+ dependencies:
+ define-properties "^1.1.3"
+ es-abstract "^1.17.0-next.1"
+
+object.omit@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa"
+ integrity sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=
+ dependencies:
+ for-own "^0.1.4"
+ is-extendable "^0.1.1"
+
+object.pick@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747"
+ integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=
+ dependencies:
+ isobject "^3.0.1"
+
+obuf@^1.0.0, obuf@^1.1.1:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e"
+ integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==
+
+omit.js@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/omit.js/-/omit.js-1.0.2.tgz#91a14f0eba84066dfa015bf30e474c47f30bc858"
+ integrity sha512-/QPc6G2NS+8d4L/cQhbk6Yit1WTB6Us2g84A7A/1+w9d/eRGHyEqC5kkQtHVoHZ5NFWGG7tUGgrhVZwgZanKrQ==
+ dependencies:
+ babel-runtime "^6.23.0"
+
+on-finished@~2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
+ integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=
+ dependencies:
+ ee-first "1.1.1"
+
+on-headers@~1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f"
+ integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==
+
+once@^1.3.0, once@^1.3.1, once@^1.4.0, once@~1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
+ integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
+ dependencies:
+ wrappy "1"
+
+onetime@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4"
+ integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=
+ dependencies:
+ mimic-fn "^1.0.0"
+
+opener@^1.5.1:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.1.tgz#6d2f0e77f1a0af0032aca716c2c1fbb8e7e8abed"
+ integrity sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA==
+
+opn@5.2.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/opn/-/opn-5.2.0.tgz#71fdf934d6827d676cecbea1531f95d354641225"
+ integrity sha512-Jd/GpzPyHF4P2/aNOVmS3lfMSWV9J7cOhCG1s08XCEAsPkB7lp6ddiU0J7XzyQRDUh8BqJ7PchfINjR8jyofRQ==
+ dependencies:
+ is-wsl "^1.1.0"
+
+opn@^5.1.0:
+ version "5.5.0"
+ resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc"
+ integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==
+ dependencies:
+ is-wsl "^1.1.0"
+
+optionator@^0.8.1, optionator@^0.8.2:
+ version "0.8.3"
+ resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495"
+ integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==
+ dependencies:
+ deep-is "~0.1.3"
+ fast-levenshtein "~2.0.6"
+ levn "~0.3.0"
+ prelude-ls "~1.1.2"
+ type-check "~0.3.2"
+ word-wrap "~1.2.3"
+
+original@>=0.0.5:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f"
+ integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==
+ dependencies:
+ url-parse "^1.4.3"
+
+os-browserify@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27"
+ integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=
+
+os-homedir@^1.0.0, os-homedir@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
+ integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M=
+
+os-locale@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9"
+ integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=
+ dependencies:
+ lcid "^1.0.0"
+
+os-locale@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2"
+ integrity sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==
+ dependencies:
+ execa "^0.7.0"
+ lcid "^1.0.0"
+ mem "^1.1.0"
+
+os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
+ integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
+
+osenv@^0.1.4, osenv@^0.1.5:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410"
+ integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==
+ dependencies:
+ os-homedir "^1.0.0"
+ os-tmpdir "^1.0.0"
+
+p-finally@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
+ integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=
+
+p-limit@^1.1.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8"
+ integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==
+ dependencies:
+ p-try "^1.0.0"
+
+p-limit@^2.0.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
+ integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
+ dependencies:
+ p-try "^2.0.0"
+
+p-locate@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43"
+ integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=
+ dependencies:
+ p-limit "^1.1.0"
+
+p-locate@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4"
+ integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==
+ dependencies:
+ p-limit "^2.0.0"
+
+p-map@^1.1.1:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b"
+ integrity sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==
+
+p-try@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3"
+ integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=
+
+p-try@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
+ integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
+
+package-json@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed"
+ integrity sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=
+ dependencies:
+ got "^6.7.1"
+ registry-auth-token "^3.0.1"
+ registry-url "^3.0.3"
+ semver "^5.1.0"
+
+pacote@^9.1.0, pacote@^9.5.12, pacote@^9.5.3:
+ version "9.5.12"
+ resolved "https://registry.yarnpkg.com/pacote/-/pacote-9.5.12.tgz#1e11dd7a8d736bcc36b375a9804d41bb0377bf66"
+ integrity sha512-BUIj/4kKbwWg4RtnBncXPJd15piFSVNpTzY0rysSr3VnMowTYgkGKcaHrbReepAkjTr8lH2CVWRi58Spg2CicQ==
+ dependencies:
+ bluebird "^3.5.3"
+ cacache "^12.0.2"
+ chownr "^1.1.2"
+ figgy-pudding "^3.5.1"
+ get-stream "^4.1.0"
+ glob "^7.1.3"
+ infer-owner "^1.0.4"
+ lru-cache "^5.1.1"
+ make-fetch-happen "^5.0.0"
+ minimatch "^3.0.4"
+ minipass "^2.3.5"
+ mississippi "^3.0.0"
+ mkdirp "^0.5.1"
+ normalize-package-data "^2.4.0"
+ npm-normalize-package-bin "^1.0.0"
+ npm-package-arg "^6.1.0"
+ npm-packlist "^1.1.12"
+ npm-pick-manifest "^3.0.0"
+ npm-registry-fetch "^4.0.0"
+ osenv "^0.1.5"
+ promise-inflight "^1.0.1"
+ promise-retry "^1.1.1"
+ protoduck "^5.0.1"
+ rimraf "^2.6.2"
+ safe-buffer "^5.1.2"
+ semver "^5.6.0"
+ ssri "^6.0.1"
+ tar "^4.4.10"
+ unique-filename "^1.1.1"
+ which "^1.3.1"
+
+pako@~1.0.5:
+ version "1.0.11"
+ resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf"
+ integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==
+
+papaparse@^5.1.1, papaparse@^5.2.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/papaparse/-/papaparse-5.2.0.tgz#97976a1b135c46612773029153dc64995caa3b7b"
+ integrity sha512-ylq1wgUSnagU+MKQtNeVqrPhZuMYBvOSL00DHycFTCxownF95gpLAk1HiHdUW77N8yxRq1qHXLdlIPyBSG9NSA==
+
+parallel-transform@^1.1.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc"
+ integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==
+ dependencies:
+ cyclist "^1.0.1"
+ inherits "^2.0.3"
+ readable-stream "^2.1.5"
+
+param-case@2.1.x:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247"
+ integrity sha1-35T9jPZTHs915r75oIWPvHK+Ikc=
+ dependencies:
+ no-case "^2.2.0"
+
+parse-asn1@^5.0.0, parse-asn1@^5.1.5:
+ version "5.1.5"
+ resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.5.tgz#003271343da58dc94cace494faef3d2147ecea0e"
+ integrity sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==
+ dependencies:
+ asn1.js "^4.0.0"
+ browserify-aes "^1.0.0"
+ create-hash "^1.1.0"
+ evp_bytestokey "^1.0.0"
+ pbkdf2 "^3.0.3"
+ safe-buffer "^5.1.1"
+
+parse-glob@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c"
+ integrity sha1-ssN2z7EfNVE7rdFz7wu246OIORw=
+ dependencies:
+ glob-base "^0.3.0"
+ is-dotfile "^1.0.0"
+ is-extglob "^1.0.0"
+ is-glob "^2.0.0"
+
+parse-json@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
+ integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=
+ dependencies:
+ error-ex "^1.2.0"
+
+parse-passwd@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6"
+ integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=
+
+parse5@^1.5.1:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/parse5/-/parse5-1.5.1.tgz#9b7f3b0de32be78dc2401b17573ccaf0f6f59d94"
+ integrity sha1-m387DeMr543CQBsXVzzK8Pb1nZQ=
+
+parseurl@~1.3.2, parseurl@~1.3.3:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
+ integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
+
+pascalcase@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
+ integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=
+
+path-browserify@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a"
+ integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==
+
+path-dirname@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0"
+ integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=
+
+path-exists@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b"
+ integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=
+ dependencies:
+ pinkie-promise "^2.0.0"
+
+path-exists@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
+ integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=
+
+path-is-absolute@^1.0.0, path-is-absolute@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
+ integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
+
+path-is-inside@^1.0.1, path-is-inside@^1.0.2, path-is-inside@~1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
+ integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=
+
+path-key@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
+ integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
+
+path-parse@^1.0.5, path-parse@^1.0.6:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
+ integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
+
+path-to-regexp@0.1.7:
+ version "0.1.7"
+ resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
+ integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=
+
+path-to-regexp@^1.0.1, path-to-regexp@^1.7.0:
+ version "1.8.0"
+ resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a"
+ integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==
+ dependencies:
+ isarray "0.0.1"
+
+path-type@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441"
+ integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=
+ dependencies:
+ graceful-fs "^4.1.2"
+ pify "^2.0.0"
+ pinkie-promise "^2.0.0"
+
+path-type@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73"
+ integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=
+ dependencies:
+ pify "^2.0.0"
+
+pbkdf2@^3.0.3:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.1.tgz#cb8724b0fada984596856d1a6ebafd3584654b94"
+ integrity sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==
+ dependencies:
+ create-hash "^1.1.2"
+ create-hmac "^1.1.4"
+ ripemd160 "^2.0.1"
+ safe-buffer "^5.0.1"
+ sha.js "^2.4.8"
+
+performance-now@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
+ integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=
+
+picomatch@^2.0.4, picomatch@^2.2.1:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad"
+ integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==
+
+pify@^2.0.0, pify@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
+ integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
+
+pify@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
+ integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=
+
+pify@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
+ integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
+
+pinkie-promise@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
+ integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o=
+ dependencies:
+ pinkie "^2.0.0"
+
+pinkie@^2.0.0:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
+ integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA=
+
+pkg-dir@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4"
+ integrity sha1-ektQio1bstYp1EcFb/TpyTFM89Q=
+ dependencies:
+ find-up "^1.0.0"
+
+pkg-dir@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b"
+ integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=
+ dependencies:
+ find-up "^2.1.0"
+
+pluralize@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777"
+ integrity sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==
+
+portfinder@^1.0.9:
+ version "1.0.28"
+ resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778"
+ integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==
+ dependencies:
+ async "^2.6.2"
+ debug "^3.1.1"
+ mkdirp "^0.5.5"
+
+posix-character-classes@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
+ integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=
+
+postcss-calc@^5.2.0:
+ version "5.3.1"
+ resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e"
+ integrity sha1-d7rnypKK2FcW4v2kLyYb98HWW14=
+ dependencies:
+ postcss "^5.0.2"
+ postcss-message-helpers "^2.0.0"
+ reduce-css-calc "^1.2.6"
+
+postcss-colormin@^2.1.8:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-2.2.2.tgz#6631417d5f0e909a3d7ec26b24c8a8d1e4f96e4b"
+ integrity sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=
+ dependencies:
+ colormin "^1.0.5"
+ postcss "^5.0.13"
+ postcss-value-parser "^3.2.3"
+
+postcss-convert-values@^2.3.4:
+ version "2.6.1"
+ resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz#bbd8593c5c1fd2e3d1c322bb925dcae8dae4d62d"
+ integrity sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=
+ dependencies:
+ postcss "^5.0.11"
+ postcss-value-parser "^3.1.2"
+
+postcss-discard-comments@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz#befe89fafd5b3dace5ccce51b76b81514be00e3d"
+ integrity sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=
+ dependencies:
+ postcss "^5.0.14"
+
+postcss-discard-duplicates@^2.0.1:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz#b9abf27b88ac188158a5eb12abcae20263b91932"
+ integrity sha1-uavye4isGIFYpesSq8riAmO5GTI=
+ dependencies:
+ postcss "^5.0.4"
+
+postcss-discard-empty@^2.0.1:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz#d2b4bd9d5ced5ebd8dcade7640c7d7cd7f4f92b5"
+ integrity sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=
+ dependencies:
+ postcss "^5.0.14"
+
+postcss-discard-overridden@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz#8b1eaf554f686fb288cd874c55667b0aa3668d58"
+ integrity sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=
+ dependencies:
+ postcss "^5.0.16"
+
+postcss-discard-unused@^2.2.1:
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz#bce30b2cc591ffc634322b5fb3464b6d934f4433"
+ integrity sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=
+ dependencies:
+ postcss "^5.0.14"
+ uniqs "^2.0.0"
+
+postcss-filter-plugins@^2.0.0:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/postcss-filter-plugins/-/postcss-filter-plugins-2.0.3.tgz#82245fdf82337041645e477114d8e593aa18b8ec"
+ integrity sha512-T53GVFsdinJhgwm7rg1BzbeBRomOg9y5MBVhGcsV0CxurUdVj1UlPdKtn7aqYA/c/QVkzKMjq2bSV5dKG5+AwQ==
+ dependencies:
+ postcss "^5.0.4"
+
+postcss-flexbugs-fixes@3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-3.2.0.tgz#9b8b932c53f9cf13ba0f61875303e447c33dcc51"
+ integrity sha512-0AuD9HG1Ey3/3nqPWu9yqf7rL0KCPu5VgjDsjf5mzEcuo9H/z8nco/fljKgjsOUrZypa95MI0kS4xBZeBzz2lw==
+ dependencies:
+ postcss "^6.0.1"
+
+postcss-load-config@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-1.2.0.tgz#539e9afc9ddc8620121ebf9d8c3673e0ce50d28a"
+ integrity sha1-U56a/J3chiASHr+djDZz4M5Q0oo=
+ dependencies:
+ cosmiconfig "^2.1.0"
+ object-assign "^4.1.0"
+ postcss-load-options "^1.2.0"
+ postcss-load-plugins "^2.3.0"
+
+postcss-load-options@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/postcss-load-options/-/postcss-load-options-1.2.0.tgz#b098b1559ddac2df04bc0bb375f99a5cfe2b6d8c"
+ integrity sha1-sJixVZ3awt8EvAuzdfmaXP4rbYw=
+ dependencies:
+ cosmiconfig "^2.1.0"
+ object-assign "^4.1.0"
+
+postcss-load-plugins@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/postcss-load-plugins/-/postcss-load-plugins-2.3.0.tgz#745768116599aca2f009fad426b00175049d8d92"
+ integrity sha1-dFdoEWWZrKLwCfrUJrABdQSdjZI=
+ dependencies:
+ cosmiconfig "^2.1.1"
+ object-assign "^4.1.0"
+
+postcss-loader@2.0.8:
+ version "2.0.8"
+ resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-2.0.8.tgz#8c67ddb029407dfafe684a406cfc16bad2ce0814"
+ integrity sha512-KtXBiQ/r/WYW8LxTSJK7h8wLqvCMSub/BqmRnud/Mu8RzwflW9cmXxwsMwbn15TNv287Hcufdb3ZSs7xHKnG8Q==
+ dependencies:
+ loader-utils "^1.1.0"
+ postcss "^6.0.0"
+ postcss-load-config "^1.2.0"
+ schema-utils "^0.3.0"
+
+postcss-merge-idents@^2.1.5:
+ version "2.1.7"
+ resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz#4c5530313c08e1d5b3bbf3d2bbc747e278eea270"
+ integrity sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=
+ dependencies:
+ has "^1.0.1"
+ postcss "^5.0.10"
+ postcss-value-parser "^3.1.1"
+
+postcss-merge-longhand@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz#23d90cd127b0a77994915332739034a1a4f3d658"
+ integrity sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=
+ dependencies:
+ postcss "^5.0.4"
+
+postcss-merge-rules@^2.0.3:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz#d1df5dfaa7b1acc3be553f0e9e10e87c61b5f721"
+ integrity sha1-0d9d+qexrMO+VT8OnhDofGG19yE=
+ dependencies:
+ browserslist "^1.5.2"
+ caniuse-api "^1.5.2"
+ postcss "^5.0.4"
+ postcss-selector-parser "^2.2.2"
+ vendors "^1.0.0"
+
+postcss-message-helpers@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz#a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e"
+ integrity sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4=
+
+postcss-minify-font-values@^1.0.2:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz#4b58edb56641eba7c8474ab3526cafd7bbdecb69"
+ integrity sha1-S1jttWZB66fIR0qzUmyv17vey2k=
+ dependencies:
+ object-assign "^4.0.1"
+ postcss "^5.0.4"
+ postcss-value-parser "^3.0.2"
+
+postcss-minify-gradients@^1.0.1:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz#5dbda11373703f83cfb4a3ea3881d8d75ff5e6e1"
+ integrity sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=
+ dependencies:
+ postcss "^5.0.12"
+ postcss-value-parser "^3.3.0"
+
+postcss-minify-params@^1.0.4:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz#ad2ce071373b943b3d930a3fa59a358c28d6f1f3"
+ integrity sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=
+ dependencies:
+ alphanum-sort "^1.0.1"
+ postcss "^5.0.2"
+ postcss-value-parser "^3.0.2"
+ uniqs "^2.0.0"
+
+postcss-minify-selectors@^2.0.4:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz#b2c6a98c0072cf91b932d1a496508114311735bf"
+ integrity sha1-ssapjAByz5G5MtGkllCBFDEXNb8=
+ dependencies:
+ alphanum-sort "^1.0.2"
+ has "^1.0.1"
+ postcss "^5.0.14"
+ postcss-selector-parser "^2.0.0"
+
+postcss-modules-extract-imports@^1.0.0:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz#dc87e34148ec7eab5f791f7cd5849833375b741a"
+ integrity sha512-6jt9XZwUhwmRUhb/CkyJY020PYaPJsCyt3UjbaWo6XEbH/94Hmv6MP7fG2C5NDU/BcHzyGYxNtHvM+LTf9HrYw==
+ dependencies:
+ postcss "^6.0.1"
+
+postcss-modules-local-by-default@^1.0.1:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069"
+ integrity sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=
+ dependencies:
+ css-selector-tokenizer "^0.7.0"
+ postcss "^6.0.1"
+
+postcss-modules-scope@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz#d6ea64994c79f97b62a72b426fbe6056a194bb90"
+ integrity sha1-1upkmUx5+XtipytCb75gVqGUu5A=
+ dependencies:
+ css-selector-tokenizer "^0.7.0"
+ postcss "^6.0.1"
+
+postcss-modules-values@^1.1.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz#ecffa9d7e192518389f42ad0e83f72aec456ea20"
+ integrity sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=
+ dependencies:
+ icss-replace-symbols "^1.1.0"
+ postcss "^6.0.1"
+
+postcss-normalize-charset@^1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz#ef9ee71212d7fe759c78ed162f61ed62b5cb93f1"
+ integrity sha1-757nEhLX/nWceO0WL2HtYrXLk/E=
+ dependencies:
+ postcss "^5.0.5"
+
+postcss-normalize-url@^3.0.7:
+ version "3.0.8"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz#108f74b3f2fcdaf891a2ffa3ea4592279fc78222"
+ integrity sha1-EI90s/L82viRov+j6kWSJ5/HgiI=
+ dependencies:
+ is-absolute-url "^2.0.0"
+ normalize-url "^1.4.0"
+ postcss "^5.0.14"
+ postcss-value-parser "^3.2.3"
+
+postcss-ordered-values@^2.1.0:
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz#eec6c2a67b6c412a8db2042e77fe8da43f95c11d"
+ integrity sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=
+ dependencies:
+ postcss "^5.0.4"
+ postcss-value-parser "^3.0.1"
+
+postcss-reduce-idents@^2.2.2:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz#c2c6d20cc958284f6abfbe63f7609bf409059ad3"
+ integrity sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=
+ dependencies:
+ postcss "^5.0.4"
+ postcss-value-parser "^3.0.2"
+
+postcss-reduce-initial@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz#68f80695f045d08263a879ad240df8dd64f644ea"
+ integrity sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=
+ dependencies:
+ postcss "^5.0.4"
+
+postcss-reduce-transforms@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz#ff76f4d8212437b31c298a42d2e1444025771ae1"
+ integrity sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=
+ dependencies:
+ has "^1.0.1"
+ postcss "^5.0.8"
+ postcss-value-parser "^3.0.1"
+
+postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2:
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90"
+ integrity sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=
+ dependencies:
+ flatten "^1.0.2"
+ indexes-of "^1.0.1"
+ uniq "^1.0.1"
+
+postcss-svgo@^2.1.1:
+ version "2.1.6"
+ resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-2.1.6.tgz#b6df18aa613b666e133f08adb5219c2684ac108d"
+ integrity sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=
+ dependencies:
+ is-svg "^2.0.0"
+ postcss "^5.0.14"
+ postcss-value-parser "^3.2.3"
+ svgo "^0.7.0"
+
+postcss-unique-selectors@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz#981d57d29ddcb33e7b1dfe1fd43b8649f933ca1d"
+ integrity sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=
+ dependencies:
+ alphanum-sort "^1.0.1"
+ postcss "^5.0.4"
+ uniqs "^2.0.0"
+
+postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^3.1.1, postcss-value-parser@^3.1.2, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0:
+ version "3.3.1"
+ resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281"
+ integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==
+
+postcss-zindex@^2.0.1:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-2.2.0.tgz#d2109ddc055b91af67fc4cb3b025946639d2af22"
+ integrity sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=
+ dependencies:
+ has "^1.0.1"
+ postcss "^5.0.4"
+ uniqs "^2.0.0"
+
+postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.2.16:
+ version "5.2.18"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5"
+ integrity sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==
+ dependencies:
+ chalk "^1.1.3"
+ js-base64 "^2.1.9"
+ source-map "^0.5.6"
+ supports-color "^3.2.3"
+
+postcss@^6.0.0, postcss@^6.0.1, postcss@^6.0.13:
+ version "6.0.23"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324"
+ integrity sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==
+ dependencies:
+ chalk "^2.4.1"
+ source-map "^0.6.1"
+ supports-color "^5.4.0"
+
+prelude-ls@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
+ integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=
+
+prepend-http@^1.0.0, prepend-http@^1.0.1:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc"
+ integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=
+
+preserve@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
+ integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=
+
+pretty-bytes@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9"
+ integrity sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk=
+
+pretty-error@^2.0.2:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3"
+ integrity sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=
+ dependencies:
+ renderkid "^2.0.1"
+ utila "~0.4"
+
+pretty-format@^20.0.3:
+ version "20.0.3"
+ resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-20.0.3.tgz#020e350a560a1fe1a98dc3beb6ccffb386de8b14"
+ integrity sha1-Ag41ClYKH+GpjcO+tsz/s4beixQ=
+ dependencies:
+ ansi-regex "^2.1.1"
+ ansi-styles "^3.0.0"
+
+private@^0.1.6, private@^0.1.7, private@^0.1.8:
+ version "0.1.8"
+ resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff"
+ integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==
+
+process-nextick-args@~2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
+ integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
+
+process@^0.11.10:
+ version "0.11.10"
+ resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
+ integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI=
+
+progress@^2.0.0:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
+ integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
+
+promise-inflight@^1.0.1, promise-inflight@~1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3"
+ integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM=
+
+promise-retry@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-1.1.1.tgz#6739e968e3051da20ce6497fb2b50f6911df3d6d"
+ integrity sha1-ZznpaOMFHaIM5kl/srUPaRHfPW0=
+ dependencies:
+ err-code "^1.0.0"
+ retry "^0.10.0"
+
+promise@8.0.1:
+ version "8.0.1"
+ resolved "https://registry.yarnpkg.com/promise/-/promise-8.0.1.tgz#e45d68b00a17647b6da711bf85ed6ed47208f450"
+ integrity sha1-5F1osAoXZHttpxG/he1u1HII9FA=
+ dependencies:
+ asap "~2.0.3"
+
+promise@^7.1.1:
+ version "7.3.1"
+ resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf"
+ integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==
+ dependencies:
+ asap "~2.0.3"
+
+promzard@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/promzard/-/promzard-0.3.0.tgz#26a5d6ee8c7dee4cb12208305acfb93ba382a9ee"
+ integrity sha1-JqXW7ox97kyxIggwWs+5O6OCqe4=
+ dependencies:
+ read "1"
+
+prop-types@15.x, prop-types@^15.5.0, prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.6, prop-types@^15.5.7, prop-types@^15.5.8, prop-types@^15.5.9, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2:
+ version "15.7.2"
+ resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5"
+ integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==
+ dependencies:
+ loose-envify "^1.4.0"
+ object-assign "^4.1.1"
+ react-is "^16.8.1"
+
+property-expr@^1.5.0:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/property-expr/-/property-expr-1.5.1.tgz#22e8706894a0c8e28d58735804f6ba3a3673314f"
+ integrity sha512-CGuc0VUTGthpJXL36ydB6jnbyOf/rAHFvmVrJlH+Rg0DqqLFQGAP6hIaxD/G0OAmBJPhXDHuEJigrp0e0wFV6g==
+
+proto-list@~1.2.1:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849"
+ integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=
+
+protoduck@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/protoduck/-/protoduck-5.0.1.tgz#03c3659ca18007b69a50fd82a7ebcc516261151f"
+ integrity sha512-WxoCeDCoCBY55BMvj4cAEjdVUFGRWed9ZxPlqTKYyw1nDDTQ4pqmnIMAGfJlg7Dx35uB/M+PHJPTmGOvaCaPTg==
+ dependencies:
+ genfun "^5.0.0"
+
+proxy-addr@~2.0.5:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf"
+ integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==
+ dependencies:
+ forwarded "~0.1.2"
+ ipaddr.js "1.9.1"
+
+prr@~1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
+ integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY=
+
+pseudomap@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
+ integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM=
+
+psl@^1.1.28:
+ version "1.8.0"
+ resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24"
+ integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==
+
+public-encrypt@^4.0.0:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0"
+ integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==
+ dependencies:
+ bn.js "^4.1.0"
+ browserify-rsa "^4.0.0"
+ create-hash "^1.1.0"
+ parse-asn1 "^5.0.0"
+ randombytes "^2.0.1"
+ safe-buffer "^5.1.2"
+
+pump@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909"
+ integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==
+ dependencies:
+ end-of-stream "^1.1.0"
+ once "^1.3.1"
+
+pump@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
+ integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
+ dependencies:
+ end-of-stream "^1.1.0"
+ once "^1.3.1"
+
+pumpify@^1.3.3:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce"
+ integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==
+ dependencies:
+ duplexify "^3.6.0"
+ inherits "^2.0.3"
+ pump "^2.0.0"
+
+punycode@1.3.2:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
+ integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=
+
+punycode@^1.2.4:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
+ integrity sha1-wNWmOycYgArY4esPpSachN1BhF4=
+
+punycode@^2.1.0, punycode@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
+ integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
+
+q@^1.1.2:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
+ integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=
+
+qrcode-terminal@^0.12.0:
+ version "0.12.0"
+ resolved "https://registry.yarnpkg.com/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz#bb5b699ef7f9f0505092a3748be4464fe71b5819"
+ integrity sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ==
+
+qs@6.7.0:
+ version "6.7.0"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc"
+ integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==
+
+qs@~6.5.2:
+ version "6.5.2"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
+ integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
+
+query-string@^4.1.0:
+ version "4.3.4"
+ resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb"
+ integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s=
+ dependencies:
+ object-assign "^4.1.0"
+ strict-uri-encode "^1.0.0"
+
+query-string@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb"
+ integrity sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==
+ dependencies:
+ decode-uri-component "^0.2.0"
+ object-assign "^4.1.0"
+ strict-uri-encode "^1.0.0"
+
+query-string@^6.8.2:
+ version "6.13.1"
+ resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.13.1.tgz#d913ccfce3b4b3a713989fe6d39466d92e71ccad"
+ integrity sha512-RfoButmcK+yCta1+FuU8REvisx1oEzhMKwhLUNcepQTPGcNMp1sIqjnfCtfnvGSQZQEhaBHvccujtWoUV3TTbA==
+ dependencies:
+ decode-uri-component "^0.2.0"
+ split-on-first "^1.0.0"
+ strict-uri-encode "^2.0.0"
+
+querystring-es3@^0.2.0:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
+ integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=
+
+querystring@0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
+ integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=
+
+querystringify@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e"
+ integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==
+
+qw@~1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/qw/-/qw-1.0.1.tgz#efbfdc740f9ad054304426acb183412cc8b996d4"
+ integrity sha1-77/cdA+a0FQwRCassYNBLMi5ltQ=
+
+raf@3.4.0:
+ version "3.4.0"
+ resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.0.tgz#a28876881b4bc2ca9117d4138163ddb80f781575"
+ integrity sha512-pDP/NMRAXoTfrhCfyfSEwJAKLaxBU9eApMeBPB1TkDouZmvPerIClV8lTAd+uF8ZiTaVl69e1FCxQrAd/VTjGw==
+ dependencies:
+ performance-now "^2.1.0"
+
+raf@^3.4.0, raf@^3.4.1:
+ version "3.4.1"
+ resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39"
+ integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==
+ dependencies:
+ performance-now "^2.1.0"
+
+randomatic@^3.0.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.1.tgz#b776efc59375984e36c537b2f51a1f0aff0da1ed"
+ integrity sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==
+ dependencies:
+ is-number "^4.0.0"
+ kind-of "^6.0.0"
+ math-random "^1.0.1"
+
+randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
+ integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==
+ dependencies:
+ safe-buffer "^5.1.0"
+
+randomfill@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458"
+ integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==
+ dependencies:
+ randombytes "^2.0.5"
+ safe-buffer "^5.1.0"
+
+range-parser@^1.0.3, range-parser@~1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
+ integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
+
+raw-body@2.4.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332"
+ integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==
+ dependencies:
+ bytes "3.1.0"
+ http-errors "1.7.2"
+ iconv-lite "0.4.24"
+ unpipe "1.0.0"
+
+rc-align@^2.4.0, rc-align@^2.4.1:
+ version "2.4.5"
+ resolved "https://registry.yarnpkg.com/rc-align/-/rc-align-2.4.5.tgz#c941a586f59d1017f23a428f0b468663fb7102ab"
+ integrity sha512-nv9wYUYdfyfK+qskThf4BQUSIadeI/dCsfaMZfNEoxm9HwOIioQ+LyqmMK6jWHAZQgOzMLaqawhuBXlF63vgjw==
+ dependencies:
+ babel-runtime "^6.26.0"
+ dom-align "^1.7.0"
+ prop-types "^15.5.8"
+ rc-util "^4.0.4"
+
+rc-animate@2.x, rc-animate@^2.10.1, rc-animate@^2.10.2, rc-animate@^2.3.0, rc-animate@^2.6.0, rc-animate@^2.8.2:
+ version "2.11.1"
+ resolved "https://registry.yarnpkg.com/rc-animate/-/rc-animate-2.11.1.tgz#2666eeb6f1f2a495a13b2af09e236712278fdb2c"
+ integrity sha512-1NyuCGFJG/0Y+9RKh5y/i/AalUCA51opyyS/jO2seELpgymZm2u9QV3xwODwEuzkmeQ1BDPxMLmYLcTJedPlkQ==
+ dependencies:
+ babel-runtime "6.x"
+ classnames "^2.2.6"
+ css-animation "^1.3.2"
+ prop-types "15.x"
+ raf "^3.4.0"
+ rc-util "^4.15.3"
+ react-lifecycles-compat "^3.0.4"
+
+rc-animate@^3.0.0-rc.1:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/rc-animate/-/rc-animate-3.1.0.tgz#051b689c2c7194e4c8ae016d32a0e5f9de6c8baa"
+ integrity sha512-8FsM+3B1H+0AyTyGggY6JyVldHTs1CyYT8CfTmG/nGHHXlecvSLeICJhcKgRLjUiQlctNnRtB1rwz79cvBVmrw==
+ dependencies:
+ "@ant-design/css-animation" "^1.7.2"
+ classnames "^2.2.6"
+ raf "^3.4.0"
+ rc-util "^5.0.1"
+
+rc-calendar@~9.15.7:
+ version "9.15.11"
+ resolved "https://registry.yarnpkg.com/rc-calendar/-/rc-calendar-9.15.11.tgz#ce1e5ea8e4d77435be66a8c77db12f1f0f9a345f"
+ integrity sha512-qv0VXfAAnysMWJigxaP6se4bJHvr17D9qsLbi8BOpdgEocsS0RkgY1IUiFaOVYKJDy/EyLC447O02sV/y5YYBg==
+ dependencies:
+ babel-runtime "6.x"
+ classnames "2.x"
+ moment "2.x"
+ prop-types "^15.5.8"
+ rc-trigger "^2.2.0"
+ rc-util "^4.1.1"
+ react-lifecycles-compat "^3.0.4"
+
+rc-cascader@~0.17.4:
+ version "0.17.5"
+ resolved "https://registry.yarnpkg.com/rc-cascader/-/rc-cascader-0.17.5.tgz#4fde91d23b7608c420263c38eee9c0687f80f7dc"
+ integrity sha512-WYMVcxU0+Lj+xLr4YYH0+yXODumvNXDcVEs5i7L1mtpWwYkubPV/zbQpn+jGKFCIW/hOhjkU4J1db8/P/UKE7A==
+ dependencies:
+ array-tree-filter "^2.1.0"
+ prop-types "^15.5.8"
+ rc-trigger "^2.2.0"
+ rc-util "^4.0.4"
+ react-lifecycles-compat "^3.0.4"
+ shallow-equal "^1.0.0"
+ warning "^4.0.1"
+
+rc-checkbox@~2.1.6:
+ version "2.1.8"
+ resolved "https://registry.yarnpkg.com/rc-checkbox/-/rc-checkbox-2.1.8.tgz#eedd9ef9c2f3af5b3b8e5cde5254aa89ad1a880a"
+ integrity sha512-6qOgh0/by0nVNASx6LZnhRTy17Etcgav+IrI7kL9V9kcDZ/g7K14JFlqrtJ3NjDq/Kyn+BPI1st1XvbkhfaJeg==
+ dependencies:
+ babel-runtime "^6.23.0"
+ classnames "2.x"
+ prop-types "15.x"
+ react-lifecycles-compat "^3.0.4"
+
+rc-collapse@~1.11.3:
+ version "1.11.8"
+ resolved "https://registry.yarnpkg.com/rc-collapse/-/rc-collapse-1.11.8.tgz#66a40089d469519e9424009ab1c927e214041d80"
+ integrity sha512-8EhfPyScTYljkbRuIoHniSwZagD5UPpZ3CToYgoNYWC85L2qCbPYF7+OaC713FOrIkp6NbfNqXsITNxmDAmxog==
+ dependencies:
+ classnames "2.x"
+ css-animation "1.x"
+ prop-types "^15.5.6"
+ rc-animate "2.x"
+ react-is "^16.7.0"
+ react-lifecycles-compat "^3.0.4"
+ shallowequal "^1.1.0"
+
+rc-dialog@~7.6.0:
+ version "7.6.1"
+ resolved "https://registry.yarnpkg.com/rc-dialog/-/rc-dialog-7.6.1.tgz#11545ccc0b945934fa76079726e0d853e52d705f"
+ integrity sha512-KUKf+2eZ4YL+lnXMG3hR4ZtIhC9glfH27NtTVz3gcoDIPAf3uUvaXVRNoDCiSi+OGKLyIb/b6EoidFh6nQC5Wg==
+ dependencies:
+ babel-runtime "6.x"
+ rc-animate "2.x"
+ rc-util "^4.16.1"
+
+rc-drawer@~3.1.1:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/rc-drawer/-/rc-drawer-3.1.3.tgz#cbcb04d4c07f0b66f2ece11d847f4a1bd80ea0b7"
+ integrity sha512-2z+RdxmzXyZde/1OhVMfDR1e/GBswFeWSZ7FS3Fdd0qhgVdpV1wSzILzzxRaT481ItB5hOV+e8pZT07vdJE8kg==
+ dependencies:
+ classnames "^2.2.6"
+ rc-util "^4.16.1"
+ react-lifecycles-compat "^3.0.4"
+
+rc-dropdown@~2.4.1:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/rc-dropdown/-/rc-dropdown-2.4.1.tgz#aaef6eb3a5152cdd9982895c2a78d9b5f046cdec"
+ integrity sha512-p0XYn0wrOpAZ2fUGE6YJ6U8JBNc5ASijznZ6dkojdaEfQJAeZtV9KMEewhxkVlxGSbbdXe10ptjBlTEW9vEwEg==
+ dependencies:
+ babel-runtime "^6.26.0"
+ classnames "^2.2.6"
+ prop-types "^15.5.8"
+ rc-trigger "^2.5.1"
+ react-lifecycles-compat "^3.0.2"
+
+rc-editor-core@~0.8.3:
+ version "0.8.10"
+ resolved "https://registry.yarnpkg.com/rc-editor-core/-/rc-editor-core-0.8.10.tgz#6f215bc5df9c33ffa9f6c5b30ca73a7dabe8ab7c"
+ integrity sha512-T3aHpeMCIYA1sdAI7ynHHjXy5fqp83uPlD68ovZ0oClTSc3tbHmyCxXlA+Ti4YgmcpCYv7avF6a+TIbAka53kw==
+ dependencies:
+ babel-runtime "^6.26.0"
+ classnames "^2.2.5"
+ draft-js "^0.10.0"
+ immutable "^3.7.4"
+ lodash "^4.16.5"
+ prop-types "^15.5.8"
+ setimmediate "^1.0.5"
+
+rc-editor-mention@^1.1.13:
+ version "1.1.13"
+ resolved "https://registry.yarnpkg.com/rc-editor-mention/-/rc-editor-mention-1.1.13.tgz#9f1cab1065f86b01523840321790c2ab12ac5e8b"
+ integrity sha512-3AOmGir91Fi2ogfRRaXLtqlNuIwQpvla7oUnGHS1+3eo7b+fUp5IlKcagqtwUBB5oDNofoySXkLBxzWvSYNp/Q==
+ dependencies:
+ babel-runtime "^6.23.0"
+ classnames "^2.2.5"
+ dom-scroll-into-view "^1.2.0"
+ draft-js "~0.10.0"
+ immutable "~3.7.4"
+ prop-types "^15.5.8"
+ rc-animate "^2.3.0"
+ rc-editor-core "~0.8.3"
+
+rc-form@^2.4.10:
+ version "2.4.11"
+ resolved "https://registry.yarnpkg.com/rc-form/-/rc-form-2.4.11.tgz#61ee3ae579259684ae30f2c48f55f0f23a5d3d08"
+ integrity sha512-8BL+FNlFLTOY/A5X6tU35GQJLSIpsmqpwn/tFAYQTczXc4dMJ33ggtH248Cum8+LS0jLTsJKG2L4Qp+1CkY+sA==
+ dependencies:
+ async-validator "~1.11.3"
+ babel-runtime "6.x"
+ create-react-class "^15.5.3"
+ dom-scroll-into-view "1.x"
+ hoist-non-react-statics "^3.3.0"
+ lodash "^4.17.4"
+ rc-util "^4.15.3"
+ warning "^4.0.3"
+
+rc-hammerjs@~0.6.0:
+ version "0.6.10"
+ resolved "https://registry.yarnpkg.com/rc-hammerjs/-/rc-hammerjs-0.6.10.tgz#1831a3bd8f2199700bfcc5ad6b20a35630aeb5e0"
+ integrity sha512-Vgh9qIudyN5CHRop4M+v+xUniQBFWXKrsJxQRVtJOi2xgRrCeI52/bkpaL5HWwUhqTK9Ayq0n7lYTItT6ld5rg==
+ dependencies:
+ babel-runtime "6.x"
+ hammerjs "^2.0.8"
+ prop-types "^15.5.9"
+
+rc-input-number@~4.5.0:
+ version "4.5.7"
+ resolved "https://registry.yarnpkg.com/rc-input-number/-/rc-input-number-4.5.7.tgz#7e6abe11aa50960c1f50a64cca0e64cb364a1ff9"
+ integrity sha512-99PrQ90sTOKyyj7eu0VzwxY17xQ+bwG1XTQd+bTwFQ+IOUkIw7L4qSAYxt58sVYL+Cw+bu/RAtT2IpT9yC2pCQ==
+ dependencies:
+ babel-runtime "6.x"
+ classnames "^2.2.0"
+ prop-types "^15.5.7"
+ rc-util "^4.5.1"
+ rmc-feedback "^2.0.0"
+
+rc-mentions@~0.4.0:
+ version "0.4.2"
+ resolved "https://registry.yarnpkg.com/rc-mentions/-/rc-mentions-0.4.2.tgz#c18ab701efb9e4b75b3851a0c0d2dd698640e246"
+ integrity sha512-DTZurQzacLXOfVuiHydGzqkq7cFMHXF18l2jZ9PhWUn2cqvOSY3W4osN0Pq29AOMOBpcxdZCzgc7Lb0r/bgkDw==
+ dependencies:
+ "@ant-design/create-react-context" "^0.2.4"
+ classnames "^2.2.6"
+ rc-menu "^7.4.22"
+ rc-trigger "^2.6.2"
+ rc-util "^4.6.0"
+ react-lifecycles-compat "^3.0.4"
+
+rc-menu@^7.3.0, rc-menu@^7.4.22, rc-menu@~7.5.1:
+ version "7.5.5"
+ resolved "https://registry.yarnpkg.com/rc-menu/-/rc-menu-7.5.5.tgz#78cdc817d86fc353a1430b864d3d96c7489600ca"
+ integrity sha512-4YJXJgrpUGEA1rMftXN7bDhrV5rPB8oBJoHqT+GVXtIWCanfQxEnM3fmhHQhatL59JoAFMZhJaNzhJIk4FUWCQ==
+ dependencies:
+ classnames "2.x"
+ dom-scroll-into-view "1.x"
+ mini-store "^2.0.0"
+ mutationobserver-shim "^0.3.2"
+ rc-animate "^2.10.1"
+ rc-trigger "^2.3.0"
+ rc-util "^4.13.0"
+ resize-observer-polyfill "^1.5.0"
+ shallowequal "^1.1.0"
+
+rc-notification@~3.3.1:
+ version "3.3.1"
+ resolved "https://registry.yarnpkg.com/rc-notification/-/rc-notification-3.3.1.tgz#0baa3e70f8d40ab015ce8fa78c260c490fc7beb4"
+ integrity sha512-U5+f4BmBVfMSf3OHSLyRagsJ74yKwlrQAtbbL5ijoA0F2C60BufwnOcHG18tVprd7iaIjzZt1TKMmQSYSvgrig==
+ dependencies:
+ babel-runtime "6.x"
+ classnames "2.x"
+ prop-types "^15.5.8"
+ rc-animate "2.x"
+ rc-util "^4.0.4"
+
+rc-pagination@~1.20.11:
+ version "1.20.15"
+ resolved "https://registry.yarnpkg.com/rc-pagination/-/rc-pagination-1.20.15.tgz#ccb4cd0e9bd4e47f72f29ea432c0350bf7b3d807"
+ integrity sha512-/Xr4/3GOa1DtL8iCYl7qRUroEMrRDhZiiuHwcVFfSiwa9LYloMlUWcOJsnr8LN6A7rLPdm3/CHStUNeYd+2pKw==
+ dependencies:
+ babel-runtime "6.x"
+ classnames "^2.2.6"
+ prop-types "^15.5.7"
+ react-lifecycles-compat "^3.0.4"
+
+rc-progress@~2.5.0:
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/rc-progress/-/rc-progress-2.5.3.tgz#00f01b95bdbe1856d3a5f82242051902e8b7a8e7"
+ integrity sha512-K2fa4CnqGehLZoMrdmBeZ86ONSTVcdk5FlqetbwJ3R/+42XfqhwQVOjWp2MH4P7XSQOMAGcNOy1SFfCP3415sg==
+ dependencies:
+ babel-runtime "6.x"
+ prop-types "^15.5.8"
+
+rc-rate@~2.5.0:
+ version "2.5.1"
+ resolved "https://registry.yarnpkg.com/rc-rate/-/rc-rate-2.5.1.tgz#55fc5fd23ea9dcc72250b9a889803479f4842961"
+ integrity sha512-3iJkNJT8xlHklPCdeZtUZmJmRVUbr6AHRlfSsztfYTXVlHrv2TcPn3XkHsH+12j812WVB7gvilS2j3+ffjUHXg==
+ dependencies:
+ classnames "^2.2.5"
+ prop-types "^15.5.8"
+ rc-util "^4.3.0"
+ react-lifecycles-compat "^3.0.4"
+
+rc-resize-observer@^0.1.0:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/rc-resize-observer/-/rc-resize-observer-0.1.3.tgz#097191f9c3ab186ed907b553ba6ef565df11c249"
+ integrity sha512-uzOQEwx83xdQSFOkOAM7x7GHIQKYnrDV4dWxtCxyG1BS1pkfJ4EvDeMfsvAJHSYkQXVBu+sgRHGbRtLG3qiuUg==
+ dependencies:
+ classnames "^2.2.1"
+ rc-util "^4.13.0"
+ resize-observer-polyfill "^1.5.1"
+
+rc-select@~9.2.0:
+ version "9.2.3"
+ resolved "https://registry.yarnpkg.com/rc-select/-/rc-select-9.2.3.tgz#64340e2d6ef64e8bc3cfc6f468ffd28625589ac2"
+ integrity sha512-WhswxOMWiNnkXRbxyrj0kiIvyCfo/BaRPaYbsDetSIAU2yEDwKHF798blCP5u86KLOBKBvtxWLFCkSsQw1so5w==
+ dependencies:
+ babel-runtime "^6.23.0"
+ classnames "2.x"
+ component-classes "1.x"
+ dom-scroll-into-view "1.x"
+ prop-types "^15.5.8"
+ raf "^3.4.0"
+ rc-animate "2.x"
+ rc-menu "^7.3.0"
+ rc-trigger "^2.5.4"
+ rc-util "^4.0.4"
+ react-lifecycles-compat "^3.0.2"
+ warning "^4.0.2"
+
+rc-slider@~8.7.1:
+ version "8.7.1"
+ resolved "https://registry.yarnpkg.com/rc-slider/-/rc-slider-8.7.1.tgz#9ed07362dc93489a38e654b21b8122ad70fd3c42"
+ integrity sha512-WMT5mRFUEcrLWwTxsyS8jYmlaMsTVCZIGENLikHsNv+tE8ThU2lCoPfi/xFNUfJFNFSBFP3MwPez9ZsJmNp13g==
+ dependencies:
+ babel-runtime "6.x"
+ classnames "^2.2.5"
+ prop-types "^15.5.4"
+ rc-tooltip "^3.7.0"
+ rc-util "^4.0.4"
+ react-lifecycles-compat "^3.0.4"
+ shallowequal "^1.1.0"
+ warning "^4.0.3"
+
+rc-steps@~3.5.0:
+ version "3.5.0"
+ resolved "https://registry.yarnpkg.com/rc-steps/-/rc-steps-3.5.0.tgz#36b2a7f1f49907b0d90363884b18623caf9fb600"
+ integrity sha512-2Vkkrpa7PZbg7qPsqTNzVDov4u78cmxofjjnIHiGB9+9rqKS8oTLPzbW2uiWDr3Lk+yGwh8rbpGO1E6VAgBCOg==
+ dependencies:
+ babel-runtime "^6.23.0"
+ classnames "^2.2.3"
+ lodash "^4.17.5"
+ prop-types "^15.5.7"
+
+rc-switch@~1.9.0:
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/rc-switch/-/rc-switch-1.9.0.tgz#ab2b878f2713c681358a453391976c9b95b290f7"
+ integrity sha512-Isas+egaK6qSk64jaEw4GgPStY4umYDbT7ZY93bZF1Af+b/JEsKsJdNOU2qG3WI0Z6tXo2DDq0kJCv8Yhu0zww==
+ dependencies:
+ classnames "^2.2.1"
+ prop-types "^15.5.6"
+ react-lifecycles-compat "^3.0.4"
+
+rc-table@~6.10.5:
+ version "6.10.15"
+ resolved "https://registry.yarnpkg.com/rc-table/-/rc-table-6.10.15.tgz#181f4c70c4fd74f657ee8f23196e7eb08a0365ca"
+ integrity sha512-LAr0M/gqt+irOjvPNBLApmQ0CUHNOfKsEBhu1uIuB3OlN1ynA9z+sdoTQyNd9+8NSl0MYnQOOfhtLChAY7nU0A==
+ dependencies:
+ classnames "^2.2.5"
+ component-classes "^1.2.6"
+ lodash "^4.17.5"
+ mini-store "^2.0.0"
+ prop-types "^15.5.8"
+ rc-util "^4.13.0"
+ react-lifecycles-compat "^3.0.2"
+ shallowequal "^1.0.2"
+
+rc-tabs@~9.7.0:
+ version "9.7.0"
+ resolved "https://registry.yarnpkg.com/rc-tabs/-/rc-tabs-9.7.0.tgz#ae09695bef5963d6e64e7bc10521c76dfdd8448b"
+ integrity sha512-kvmgp8/MfLzFZ06hWHignqomFQ5nF7BqKr5O1FfhE4VKsGrep52YSF/1MvS5oe0NPcI9XGNS2p751C5v6cYDpQ==
+ dependencies:
+ "@ant-design/create-react-context" "^0.2.4"
+ babel-runtime "6.x"
+ classnames "2.x"
+ lodash "^4.17.5"
+ prop-types "15.x"
+ raf "^3.4.1"
+ rc-hammerjs "~0.6.0"
+ rc-util "^4.0.4"
+ react-lifecycles-compat "^3.0.4"
+ resize-observer-polyfill "^1.5.1"
+ warning "^4.0.3"
+
+rc-time-picker@~3.7.1:
+ version "3.7.3"
+ resolved "https://registry.yarnpkg.com/rc-time-picker/-/rc-time-picker-3.7.3.tgz#65a8de904093250ae9c82b02a4905e0f995e23e2"
+ integrity sha512-Lv1Mvzp9fRXhXEnRLO4nW6GLNxUkfAZ3RsiIBsWjGjXXvMNjdr4BX/ayElHAFK0DoJqOhm7c5tjmIYpEOwcUXg==
+ dependencies:
+ classnames "2.x"
+ moment "2.x"
+ prop-types "^15.5.8"
+ raf "^3.4.1"
+ rc-trigger "^2.2.0"
+ react-lifecycles-compat "^3.0.4"
+
+rc-tooltip@^3.7.0, rc-tooltip@~3.7.3:
+ version "3.7.3"
+ resolved "https://registry.yarnpkg.com/rc-tooltip/-/rc-tooltip-3.7.3.tgz#280aec6afcaa44e8dff0480fbaff9e87fc00aecc"
+ integrity sha512-dE2ibukxxkrde7wH9W8ozHKUO4aQnPZ6qBHtrTH9LoO836PjDdiaWO73fgPB05VfJs9FbZdmGPVEbXCeOP99Ww==
+ dependencies:
+ babel-runtime "6.x"
+ prop-types "^15.5.8"
+ rc-trigger "^2.2.2"
+
+rc-tree-select@~2.9.1:
+ version "2.9.4"
+ resolved "https://registry.yarnpkg.com/rc-tree-select/-/rc-tree-select-2.9.4.tgz#6aa794e1f0e65c66c406aa0a2a0e74fd0a557b09"
+ integrity sha512-0HQkXAN4XbfBW20CZYh3G+V+VMrjX42XRtDCpyv6PDUm5vikC0Ob682ZBCVS97Ww2a5Hf6Ajmu0ahWEdIEpwhg==
+ dependencies:
+ classnames "^2.2.1"
+ dom-scroll-into-view "^1.2.1"
+ prop-types "^15.5.8"
+ raf "^3.4.0"
+ rc-animate "^2.8.2"
+ rc-tree "~2.1.0"
+ rc-trigger "^3.0.0"
+ rc-util "^4.5.0"
+ react-lifecycles-compat "^3.0.4"
+ shallowequal "^1.0.2"
+ warning "^4.0.1"
+
+rc-tree@~2.1.0:
+ version "2.1.4"
+ resolved "https://registry.yarnpkg.com/rc-tree/-/rc-tree-2.1.4.tgz#ef759f3e799a21b43c1ecf9c794ea1c14e70b59b"
+ integrity sha512-Xey794Iavgs8YldFlXcZLOhfcIhlX5Oz/yfKufknBXf2AlZCOkc7aHqSM9uTF7fBPtTGPhPxNEfOqHfY7b7xng==
+ dependencies:
+ "@ant-design/create-react-context" "^0.2.4"
+ classnames "2.x"
+ prop-types "^15.5.8"
+ rc-animate "^2.6.0"
+ rc-util "^4.5.1"
+ react-lifecycles-compat "^3.0.4"
+ warning "^4.0.3"
+
+rc-trigger@^2.2.0, rc-trigger@^2.2.2, rc-trigger@^2.3.0, rc-trigger@^2.5.1, rc-trigger@^2.5.4, rc-trigger@^2.6.2:
+ version "2.6.5"
+ resolved "https://registry.yarnpkg.com/rc-trigger/-/rc-trigger-2.6.5.tgz#140a857cf28bd0fa01b9aecb1e26a50a700e9885"
+ integrity sha512-m6Cts9hLeZWsTvWnuMm7oElhf+03GOjOLfTuU0QmdB9ZrW7jR2IpI5rpNM7i9MvAAlMAmTx5Zr7g3uu/aMvZAw==
+ dependencies:
+ babel-runtime "6.x"
+ classnames "^2.2.6"
+ prop-types "15.x"
+ rc-align "^2.4.0"
+ rc-animate "2.x"
+ rc-util "^4.4.0"
+ react-lifecycles-compat "^3.0.4"
+
+rc-trigger@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/rc-trigger/-/rc-trigger-3.0.0.tgz#f6d9b1da8a26b2b2d1d912a06876c1a486f5980f"
+ integrity sha512-hQxbbJpo23E2QnYczfq3Ec5J5tVl2mUDhkqxrEsQAqk16HfADQg+iKNWzEYXyERSncdxfnzYuaBgy764mNRzTA==
+ dependencies:
+ babel-runtime "6.x"
+ classnames "^2.2.6"
+ prop-types "15.x"
+ raf "^3.4.0"
+ rc-align "^2.4.1"
+ rc-animate "^3.0.0-rc.1"
+ rc-util "^4.15.7"
+
+rc-upload@~2.9.1:
+ version "2.9.4"
+ resolved "https://registry.yarnpkg.com/rc-upload/-/rc-upload-2.9.4.tgz#8e34a73a468d7907fe31982c38100e4593857d32"
+ integrity sha512-WXt0HGxXyzLrPV6iec/96Rbl/6dyrAW8pKuY6wwD7yFYwfU5bjgKjv7vC8KNMJ6wzitFrZjnoiogNL3dF9dj3Q==
+ dependencies:
+ babel-runtime "6.x"
+ classnames "^2.2.5"
+ prop-types "^15.5.7"
+ warning "4.x"
+
+rc-util@^4.0.4, rc-util@^4.1.1, rc-util@^4.13.0, rc-util@^4.15.3, rc-util@^4.15.7, rc-util@^4.16.1, rc-util@^4.3.0, rc-util@^4.4.0, rc-util@^4.5.0, rc-util@^4.5.1, rc-util@^4.6.0, rc-util@^4.9.0:
+ version "4.21.1"
+ resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-4.21.1.tgz#88602d0c3185020aa1053d9a1e70eac161becb05"
+ integrity sha512-Z+vlkSQVc1l8O2UjR3WQ+XdWlhj5q9BMQNLk2iOBch75CqPfrJyGtcWMcnhRlNuDu0Ndtt4kLVO8JI8BrABobg==
+ dependencies:
+ add-dom-event-listener "^1.1.0"
+ prop-types "^15.5.10"
+ react-is "^16.12.0"
+ react-lifecycles-compat "^3.0.4"
+ shallowequal "^1.1.0"
+
+rc-util@^5.0.1:
+ version "5.0.6"
+ resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-5.0.6.tgz#2b828bc87a818a66384b813f76a561ad4609e9b0"
+ integrity sha512-uLGxF9WjbpJSjd6iDnIjl8ZeMUglpcuh1DwO26aaXh++yAmlB6eIAJMUwwJCuqJvo4quCvsDPg1VkqHILc4U0A==
+ dependencies:
+ react-is "^16.12.0"
+ shallowequal "^1.1.0"
+
+rc@^1.0.1, rc@^1.1.6:
+ version "1.2.8"
+ resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
+ integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
+ dependencies:
+ deep-extend "^0.6.0"
+ ini "~1.3.0"
+ minimist "^1.2.0"
+ strip-json-comments "~2.0.1"
+
+react-app-rewire-less@^2.1.3:
+ version "2.1.3"
+ resolved "https://registry.yarnpkg.com/react-app-rewire-less/-/react-app-rewire-less-2.1.3.tgz#ccee72c41a3d2c85dbca3e62f39722e570af57d5"
+ integrity sha512-v/0iQts4RwYykioFuHUZA8+qYZdO/MBM/iP9JZnOs+oG+2LsoECQIelAGPvMt8SJzRGaFqDxy1/MvHyvqp6Zlg==
+ dependencies:
+ less "^3.0.2"
+ less-loader "^4.1.0"
+ npm "^6.4.1"
+
+react-app-rewired@^1.6.2:
+ version "1.6.2"
+ resolved "https://registry.yarnpkg.com/react-app-rewired/-/react-app-rewired-1.6.2.tgz#32ce90abc2c4e2b86c71e4e270bd36663b3b1c9a"
+ integrity sha512-TxbP1W9jPPTmj0YJeFNgcJc6IMg7sv845aHUIUvVQtXdA8IWzOZairk3Bth6GHbxoF2QitbvUlM7/NAH4VmmJg==
+ dependencies:
+ cross-spawn "^5.1.0"
+ dotenv "^4.0.0"
+
+react-copy-to-clipboard@^5.0.1:
+ version "5.0.2"
+ resolved "https://registry.yarnpkg.com/react-copy-to-clipboard/-/react-copy-to-clipboard-5.0.2.tgz#d82a437e081e68dfca3761fbd57dbf2abdda1316"
+ integrity sha512-/2t5mLMMPuN5GmdXo6TebFa8IoFxZ+KTDDqYhcDm0PhkgEzSxVvIX26G20s1EB02A4h2UZgwtfymZ3lGJm0OLg==
+ dependencies:
+ copy-to-clipboard "^3"
+ prop-types "^15.5.8"
+
+react-csv-reader@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/react-csv-reader/-/react-csv-reader-3.1.0.tgz#c7bf8ad9d7571a511317e03749c5733e96ab2e13"
+ integrity sha512-ZIPhKtitu2UlXJKCQJWJvvJ12GXuQLtQjsiTRubBT1sRNPc85rCT8w5LSHDdvvnCVoDcamqq5Cus2bBrsm/ypw==
+ dependencies:
+ "@types/papaparse" "^5.0.3"
+ papaparse "^5.1.1"
+
+react-csv@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/react-csv/-/react-csv-2.0.3.tgz#f5d17a3c71107d9bcbe580049350200debdc042a"
+ integrity sha512-exyAdFLAxtuM4wNwLYrlKyPYLiJ7e0mv9tqPAd3kq+k1CiJFtznevR3yP0icv5q/y200w+lzNgi7TQn1Wrhu0w==
+
+react-dev-utils@^5.0.2:
+ version "5.0.3"
+ resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-5.0.3.tgz#92f97668f03deb09d7fa11ea288832a8c756e35e"
+ integrity sha512-Mvs6ofsc2xTjeZIrMaIfbXfsPVrbdVy/cVqq6SAacnqfMlcBpDuivhWZ1ODGeJ8HgmyWTLH971PYjj/EPCDVAw==
+ dependencies:
+ address "1.0.3"
+ babel-code-frame "6.26.0"
+ chalk "1.1.3"
+ cross-spawn "5.1.0"
+ detect-port-alt "1.1.6"
+ escape-string-regexp "1.0.5"
+ filesize "3.5.11"
+ global-modules "1.0.0"
+ gzip-size "3.0.0"
+ inquirer "3.3.0"
+ is-root "1.0.0"
+ opn "5.2.0"
+ react-error-overlay "^4.0.1"
+ recursive-readdir "2.2.1"
+ shell-quote "1.6.1"
+ sockjs-client "1.1.5"
+ strip-ansi "3.0.1"
+ text-table "0.2.0"
+
+react-device-detect@^1.6.1:
+ version "1.13.1"
+ resolved "https://registry.yarnpkg.com/react-device-detect/-/react-device-detect-1.13.1.tgz#27ac0e86a03969e440e973d179aaa19e80a5ba66"
+ integrity sha512-XTPgAMsUVHC5lMNUGiAeO2UfAfhMfjq0CBUM67eHnc9XfO7iESh6h/cffKV8VGgrZBX+dyuqJl23bLLHoav5Ig==
+ dependencies:
+ ua-parser-js "^0.7.21"
+
+react-dom@^16.5.0:
+ version "16.13.1"
+ resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.13.1.tgz#c1bd37331a0486c078ee54c4740720993b2e0e7f"
+ integrity sha512-81PIMmVLnCNLO/fFOQxdQkvEq/+Hfpv24XNJfpyZhTRfO0QcmQIF/PgCa1zCOj2w1hrn12MFLyaJ/G0+Mxtfag==
+ dependencies:
+ loose-envify "^1.1.0"
+ object-assign "^4.1.1"
+ prop-types "^15.6.2"
+ scheduler "^0.19.1"
+
+react-error-overlay@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-4.0.1.tgz#417addb0814a90f3a7082eacba7cee588d00da89"
+ integrity sha512-xXUbDAZkU08aAkjtUvldqbvI04ogv+a1XdHxvYuHPYKIVk/42BIOD0zSKTHAWV4+gDy3yGm283z2072rA2gdtw==
+
+react-fast-compare@^2.0.1, react-fast-compare@^2.0.2:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-2.0.4.tgz#e84b4d455b0fec113e0402c329352715196f81f9"
+ integrity sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==
+
+react-geocode@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/react-geocode/-/react-geocode-0.2.1.tgz#c9f58d979097272831a01ef0ebd89add8e15725a"
+ integrity sha512-kipHpIA1w0XbQ2x6BOpLsup9kui6yjjAaXigCtom85xiKDB2KqDlxYx7dzd68Hxd5KG27nSFiWNRLosjKVg6VQ==
+ dependencies:
+ regenerator-runtime "^0.13.3"
+
+react-google-autocomplete@^1.2.6:
+ version "1.2.6"
+ resolved "https://registry.yarnpkg.com/react-google-autocomplete/-/react-google-autocomplete-1.2.6.tgz#69231a098445922d04e29ec8369fef7e26857606"
+ integrity sha512-qHz0+CLrpPTbrQItonFKY/8NQVioxikeW1/EyFoEMG3ekgqOmjN5b6FQAVy3qwRrUJALx5DCTWtbYOFG0Bw87Q==
+ dependencies:
+ prop-types "^15.5.0"
+
+react-google-map@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/react-google-map/-/react-google-map-3.1.1.tgz#e47e42287ef6bc7510422fbfd5014ab2b4a0d1b4"
+ integrity sha512-8pcddNPqQloBUugqu98z+Mb/gOhY56hKi9sWi3vdbSgOjKL8cMHAEW8sKj3caUysNY89+dEEInyOIAgC7ZUVag==
+ dependencies:
+ prop-types "^15.6.0"
+
+react-google-maps@^9.4.5:
+ version "9.4.5"
+ resolved "https://registry.yarnpkg.com/react-google-maps/-/react-google-maps-9.4.5.tgz#920c199bdc925e0ce93880edffb09428d263aafa"
+ integrity sha512-8z5nX9DxIcBCXuEiurmRT1VXVwnzx0C6+3Es6lxB2/OyY2SLax2/LcDu6Aldxnl3HegefTL7NJzGeaKAJ61pOA==
+ dependencies:
+ babel-runtime "^6.11.6"
+ can-use-dom "^0.1.0"
+ google-maps-infobox "^2.0.0"
+ invariant "^2.2.1"
+ lodash "^4.16.2"
+ marker-clusterer-plus "^2.1.4"
+ markerwithlabel "^2.0.1"
+ prop-types "^15.5.8"
+ recompose "^0.26.0"
+ scriptjs "^2.5.8"
+ warning "^3.0.0"
+
+react-helmet@^5.2.0:
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/react-helmet/-/react-helmet-5.2.1.tgz#16a7192fdd09951f8e0fe22ffccbf9bb3e591ffa"
+ integrity sha512-CnwD822LU8NDBnjCpZ4ySh8L6HYyngViTZLfBBb3NjtrpN8m49clH8hidHouq20I51Y6TpCTISCBbqiY5GamwA==
+ dependencies:
+ object-assign "^4.1.1"
+ prop-types "^15.5.4"
+ react-fast-compare "^2.0.2"
+ react-side-effect "^1.1.0"
+
+react-idle-timer@^4.0.9:
+ version "4.3.5"
+ resolved "https://registry.yarnpkg.com/react-idle-timer/-/react-idle-timer-4.3.5.tgz#e616461a3b86420b690174d244d712e86332e46e"
+ integrity sha512-02THbdaLDgqhVUiTyCumECskv26cyncMguSg/+FZxQDP0qlFPFfcgi/giSsy5vbEDjL6G4Bd8acwfm1YfU3JyQ==
+
+react-input-mask@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/react-input-mask/-/react-input-mask-2.0.4.tgz#9ade5cf8196f4a856dbf010820fe75a795f3eb14"
+ integrity sha512-1hwzMr/aO9tXfiroiVCx5EtKohKwLk/NT8QlJXHQ4N+yJJFyUuMT+zfTpLBwX/lK3PkuMlievIffncpMZ3HGRQ==
+ dependencies:
+ invariant "^2.2.4"
+ warning "^4.0.2"
+
+react-is@^16.12.0, react-is@^16.3.1, react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1:
+ version "16.13.1"
+ resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
+ integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
+
+react-lazy-load@^3.0.13:
+ version "3.1.13"
+ resolved "https://registry.yarnpkg.com/react-lazy-load/-/react-lazy-load-3.1.13.tgz#236943f76b7084cc8458716d9632a1c9853ea5cd"
+ integrity sha512-eAVNUn3vhNj79Iv04NOCwy/sCLyqDEhL3j9aJKV7VJuRBDg6rCiB+BIWHuG7VXJGCgb//6nX/soR8PTyWRhFvQ==
+ dependencies:
+ eventlistener "0.0.1"
+ lodash.debounce "^4.0.0"
+ lodash.throttle "^4.0.0"
+ prop-types "^15.5.8"
+
+react-lifecycles-compat@^3.0.0, react-lifecycles-compat@^3.0.2, react-lifecycles-compat@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362"
+ integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==
+
+react-loadable@^5.5.0:
+ version "5.5.0"
+ resolved "https://registry.yarnpkg.com/react-loadable/-/react-loadable-5.5.0.tgz#582251679d3da86c32aae2c8e689c59f1196d8c4"
+ integrity sha512-C8Aui0ZpMd4KokxRdVAm2bQtI03k2RMRNzOB+IipV3yxFTSVICv7WoUr5L9ALB5BmKO1iHgZtWM8EvYG83otdg==
+ dependencies:
+ prop-types "^15.5.0"
+
+react-papaparse@^3.7.1:
+ version "3.7.1"
+ resolved "https://registry.yarnpkg.com/react-papaparse/-/react-papaparse-3.7.1.tgz#d4238ed4f4eb781b23a703ecec5f391f60cb6094"
+ integrity sha512-L1LHeo7ulAJORNooTN9tquFGSHqf3dF2Hh6CHmFGsAejuKaZ6PjZjW/PaLsX2FqdX/cmE7Y77LtJ+WKZE3SoPg==
+ dependencies:
+ "@types/papaparse" "^5.0.4"
+ papaparse "^5.2.0"
+
+react-redux@^5.0.7:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-5.1.2.tgz#b19cf9e21d694422727bf798e934a916c4080f57"
+ integrity sha512-Ns1G0XXc8hDyH/OcBHOxNgQx9ayH3SPxBnFCOidGKSle8pKihysQw2rG/PmciUQRoclhVBO8HMhiRmGXnDja9Q==
+ dependencies:
+ "@babel/runtime" "^7.1.2"
+ hoist-non-react-statics "^3.3.0"
+ invariant "^2.2.4"
+ loose-envify "^1.1.0"
+ prop-types "^15.6.1"
+ react-is "^16.6.0"
+ react-lifecycles-compat "^3.0.0"
+
+react-router-dom@^4.2.2:
+ version "4.3.1"
+ resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-4.3.1.tgz#4c2619fc24c4fa87c9fd18f4fb4a43fe63fbd5c6"
+ integrity sha512-c/MlywfxDdCp7EnB7YfPMOfMD3tOtIjrQlj/CKfNMBxdmpJP8xcz5P/UAFn3JbnQCNUxsHyVVqllF9LhgVyFCA==
+ dependencies:
+ history "^4.7.2"
+ invariant "^2.2.4"
+ loose-envify "^1.3.1"
+ prop-types "^15.6.1"
+ react-router "^4.3.1"
+ warning "^4.0.1"
+
+react-router-redux@^4.0.8:
+ version "4.0.8"
+ resolved "https://registry.yarnpkg.com/react-router-redux/-/react-router-redux-4.0.8.tgz#227403596b5151e182377dab835b5d45f0f8054e"
+ integrity sha1-InQDWWtRUeGCN32rg1tdRfD4BU4=
+
+react-router@^4.3.1:
+ version "4.3.1"
+ resolved "https://registry.yarnpkg.com/react-router/-/react-router-4.3.1.tgz#aada4aef14c809cb2e686b05cee4742234506c4e"
+ integrity sha512-yrvL8AogDh2X42Dt9iknk4wF4V8bWREPirFfS9gLU1huk6qK41sg7Z/1S81jjTrGHxa3B8R3J6xIkDAA6CVarg==
+ dependencies:
+ history "^4.7.2"
+ hoist-non-react-statics "^2.5.0"
+ invariant "^2.2.4"
+ loose-envify "^1.3.1"
+ path-to-regexp "^1.7.0"
+ prop-types "^15.6.1"
+ warning "^4.0.1"
+
+react-scripts@1.1.5:
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-1.1.5.tgz#3041610ab0826736b52197711a4c4e3756e97768"
+ integrity sha512-ZXqnbg+kLRaacAkjuedMFTgKu9lNltMDDsuwn37CTV7X2tuZQmDKi08eI3LYvtpjqh5vm8/6BhwHRHkRtvMyJg==
+ dependencies:
+ autoprefixer "7.1.6"
+ babel-core "6.26.0"
+ babel-eslint "7.2.3"
+ babel-jest "20.0.3"
+ babel-loader "7.1.2"
+ babel-preset-react-app "^3.1.2"
+ babel-runtime "6.26.0"
+ case-sensitive-paths-webpack-plugin "2.1.1"
+ chalk "1.1.3"
+ css-loader "0.28.7"
+ dotenv "4.0.0"
+ dotenv-expand "4.2.0"
+ eslint "4.10.0"
+ eslint-config-react-app "^2.1.0"
+ eslint-loader "1.9.0"
+ eslint-plugin-flowtype "2.39.1"
+ eslint-plugin-import "2.8.0"
+ eslint-plugin-jsx-a11y "5.1.1"
+ eslint-plugin-react "7.4.0"
+ extract-text-webpack-plugin "3.0.2"
+ file-loader "1.1.5"
+ fs-extra "3.0.1"
+ html-webpack-plugin "2.29.0"
+ jest "20.0.4"
+ object-assign "4.1.1"
+ postcss-flexbugs-fixes "3.2.0"
+ postcss-loader "2.0.8"
+ promise "8.0.1"
+ raf "3.4.0"
+ react-dev-utils "^5.0.2"
+ resolve "1.6.0"
+ style-loader "0.19.0"
+ sw-precache-webpack-plugin "0.11.4"
+ url-loader "0.6.2"
+ webpack "3.8.1"
+ webpack-dev-server "2.11.3"
+ webpack-manifest-plugin "1.3.2"
+ whatwg-fetch "2.0.3"
+ optionalDependencies:
+ fsevents "^1.1.3"
+
+react-side-effect@^1.1.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/react-side-effect/-/react-side-effect-1.2.0.tgz#0e940c78faba0c73b9b0eba9cd3dda8dfb7e7dae"
+ integrity sha512-v1ht1aHg5k/thv56DRcjw+WtojuuDHFUgGfc+bFHOWsF4ZK6C2V57DO0Or0GPsg6+LSTE0M6Ry/gfzhzSwbc5w==
+ dependencies:
+ shallowequal "^1.0.1"
+
+react-slick@~0.25.2:
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/react-slick/-/react-slick-0.25.2.tgz#56331b67d47d8bcfe2dceb6acab1c8fd5bd1f6bc"
+ integrity sha512-8MNH/NFX/R7zF6W/w+FS5VXNyDusF+XDW1OU0SzODEU7wqYB+ZTGAiNJ++zVNAVqCAHdyCybScaUB+FCZOmBBw==
+ dependencies:
+ classnames "^2.2.5"
+ enquire.js "^2.1.6"
+ json2mq "^0.2.0"
+ lodash.debounce "^4.0.8"
+ resize-observer-polyfill "^1.5.0"
+
+react@^16.7.0:
+ version "16.13.1"
+ resolved "https://registry.yarnpkg.com/react/-/react-16.13.1.tgz#2e818822f1a9743122c063d6410d85c1e3afe48e"
+ integrity sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w==
+ dependencies:
+ loose-envify "^1.1.0"
+ object-assign "^4.1.1"
+ prop-types "^15.6.2"
+
+read-cmd-shim@^1.0.1, read-cmd-shim@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-1.0.5.tgz#87e43eba50098ba5a32d0ceb583ab8e43b961c16"
+ integrity sha512-v5yCqQ/7okKoZZkBQUAfTsQ3sVJtXdNfbPnI5cceppoxEVLYA3k+VtV2omkeo8MS94JCy4fSiUwlRBAwCVRPUA==
+ dependencies:
+ graceful-fs "^4.1.2"
+
+read-installed@~4.0.3:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/read-installed/-/read-installed-4.0.3.tgz#ff9b8b67f187d1e4c29b9feb31f6b223acd19067"
+ integrity sha1-/5uLZ/GH0eTCm5/rMfayI6zRkGc=
+ dependencies:
+ debuglog "^1.0.1"
+ read-package-json "^2.0.0"
+ readdir-scoped-modules "^1.0.0"
+ semver "2 || 3 || 4 || 5"
+ slide "~1.1.3"
+ util-extend "^1.0.1"
+ optionalDependencies:
+ graceful-fs "^4.1.2"
+
+"read-package-json@1 || 2", read-package-json@^2.0.0, read-package-json@^2.0.13, read-package-json@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-2.1.1.tgz#16aa66c59e7d4dad6288f179dd9295fd59bb98f1"
+ integrity sha512-dAiqGtVc/q5doFz6096CcnXhpYk0ZN8dEKVkGLU0CsASt8SrgF6SF7OTKAYubfvFhWaqofl+Y8HK19GR8jwW+A==
+ dependencies:
+ glob "^7.1.1"
+ json-parse-better-errors "^1.0.1"
+ normalize-package-data "^2.0.0"
+ npm-normalize-package-bin "^1.0.0"
+ optionalDependencies:
+ graceful-fs "^4.1.2"
+
+read-package-tree@^5.3.1:
+ version "5.3.1"
+ resolved "https://registry.yarnpkg.com/read-package-tree/-/read-package-tree-5.3.1.tgz#a32cb64c7f31eb8a6f31ef06f9cedf74068fe636"
+ integrity sha512-mLUDsD5JVtlZxjSlPPx1RETkNjjvQYuweKwNVt1Sn8kP5Jh44pvYuUHCp6xSVDZWbNxVxG5lyZJ921aJH61sTw==
+ dependencies:
+ read-package-json "^2.0.0"
+ readdir-scoped-modules "^1.0.0"
+ util-promisify "^2.1.0"
+
+read-pkg-up@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02"
+ integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=
+ dependencies:
+ find-up "^1.0.0"
+ read-pkg "^1.0.0"
+
+read-pkg-up@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be"
+ integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=
+ dependencies:
+ find-up "^2.0.0"
+ read-pkg "^2.0.0"
+
+read-pkg@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28"
+ integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=
+ dependencies:
+ load-json-file "^1.0.0"
+ normalize-package-data "^2.3.2"
+ path-type "^1.0.0"
+
+read-pkg@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8"
+ integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=
+ dependencies:
+ load-json-file "^2.0.0"
+ normalize-package-data "^2.3.2"
+ path-type "^2.0.0"
+
+read@1, read@~1.0.1, read@~1.0.7:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4"
+ integrity sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=
+ dependencies:
+ mute-stream "~0.0.4"
+
+"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6:
+ version "2.3.7"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
+ integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
+ dependencies:
+ core-util-is "~1.0.0"
+ inherits "~2.0.3"
+ isarray "~1.0.0"
+ process-nextick-args "~2.0.0"
+ safe-buffer "~5.1.1"
+ string_decoder "~1.1.1"
+ util-deprecate "~1.0.1"
+
+readable-stream@^3.1.1, readable-stream@^3.6.0:
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
+ integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
+ dependencies:
+ inherits "^2.0.3"
+ string_decoder "^1.1.1"
+ util-deprecate "^1.0.1"
+
+readable-stream@~1.1.10:
+ version "1.1.14"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9"
+ integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk=
+ dependencies:
+ core-util-is "~1.0.0"
+ inherits "~2.0.1"
+ isarray "0.0.1"
+ string_decoder "~0.10.x"
+
+readdir-scoped-modules@^1.0.0, readdir-scoped-modules@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz#8d45407b4f870a0dcaebc0e28670d18e74514309"
+ integrity sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==
+ dependencies:
+ debuglog "^1.0.1"
+ dezalgo "^1.0.0"
+ graceful-fs "^4.1.2"
+ once "^1.3.0"
+
+readdirp@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525"
+ integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==
+ dependencies:
+ graceful-fs "^4.1.11"
+ micromatch "^3.1.10"
+ readable-stream "^2.0.2"
+
+readdirp@~3.4.0:
+ version "3.4.0"
+ resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.4.0.tgz#9fdccdf9e9155805449221ac645e8303ab5b9ada"
+ integrity sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==
+ dependencies:
+ picomatch "^2.2.1"
+
+recompose@^0.26.0:
+ version "0.26.0"
+ resolved "https://registry.yarnpkg.com/recompose/-/recompose-0.26.0.tgz#9babff039cb72ba5bd17366d55d7232fbdfb2d30"
+ integrity sha512-KwOu6ztO0mN5vy3+zDcc45lgnaUoaQse/a5yLVqtzTK13czSWnFGmXbQVmnoMgDkI5POd1EwIKSbjU1V7xdZog==
+ dependencies:
+ change-emitter "^0.1.2"
+ fbjs "^0.8.1"
+ hoist-non-react-statics "^2.3.1"
+ symbol-observable "^1.0.4"
+
+recursive-readdir@2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.1.tgz#90ef231d0778c5ce093c9a48d74e5c5422d13a99"
+ integrity sha1-kO8jHQd4xc4JPJpI105cVCLROpk=
+ dependencies:
+ minimatch "3.0.3"
+
+redent@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde"
+ integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=
+ dependencies:
+ indent-string "^2.1.0"
+ strip-indent "^1.0.1"
+
+reduce-css-calc@^1.2.6:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716"
+ integrity sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=
+ dependencies:
+ balanced-match "^0.4.2"
+ math-expression-evaluator "^1.2.14"
+ reduce-function-call "^1.0.1"
+
+reduce-function-call@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/reduce-function-call/-/reduce-function-call-1.0.3.tgz#60350f7fb252c0a67eb10fd4694d16909971300f"
+ integrity sha512-Hl/tuV2VDgWgCSEeWMLwxLZqX7OK59eU1guxXsRKTAyeYimivsKdtcV4fu3r710tpG5GmDKDhQ0HSZLExnNmyQ==
+ dependencies:
+ balanced-match "^1.0.0"
+
+redux-logger@^3.0.6:
+ version "3.0.6"
+ resolved "https://registry.yarnpkg.com/redux-logger/-/redux-logger-3.0.6.tgz#f7555966f3098f3c88604c449cf0baf5778274bf"
+ integrity sha1-91VZZvMJjzyIYExEnPC69XeCdL8=
+ dependencies:
+ deep-diff "^0.3.5"
+
+redux-saga@^0.16.0:
+ version "0.16.2"
+ resolved "https://registry.yarnpkg.com/redux-saga/-/redux-saga-0.16.2.tgz#993662e86bc945d8509ac2b8daba3a8c615cc971"
+ integrity sha512-iIjKnRThI5sKPEASpUvySemjzwqwI13e3qP7oLub+FycCRDysLSAOwt958niZW6LhxfmS6Qm1BzbU70w/Koc4w==
+
+redux@^4.0.0:
+ version "4.0.5"
+ resolved "https://registry.yarnpkg.com/redux/-/redux-4.0.5.tgz#4db5de5816e17891de8a80c424232d06f051d93f"
+ integrity sha512-VSz1uMAH24DM6MF72vcojpYPtrTUu3ByVWfPL1nPfVRb5mZVTve5GnNCUV53QM/BZ66xfWrm0CTWoM+Xlz8V1w==
+ dependencies:
+ loose-envify "^1.4.0"
+ symbol-observable "^1.2.0"
+
+regenerate@^1.2.1:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.1.tgz#cad92ad8e6b591773485fbe05a485caf4f457e6f"
+ integrity sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A==
+
+regenerator-runtime@^0.11.0:
+ version "0.11.1"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9"
+ integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==
+
+regenerator-runtime@^0.12.0:
+ version "0.12.1"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz#fa1a71544764c036f8c49b13a08b2594c9f8a0de"
+ integrity sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==
+
+regenerator-runtime@^0.13.3, regenerator-runtime@^0.13.4:
+ version "0.13.7"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55"
+ integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==
+
+regenerator-transform@^0.10.0:
+ version "0.10.1"
+ resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd"
+ integrity sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==
+ dependencies:
+ babel-runtime "^6.18.0"
+ babel-types "^6.19.0"
+ private "^0.1.6"
+
+regex-cache@^0.4.2:
+ version "0.4.4"
+ resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd"
+ integrity sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==
+ dependencies:
+ is-equal-shallow "^0.1.3"
+
+regex-not@^1.0.0, regex-not@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c"
+ integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==
+ dependencies:
+ extend-shallow "^3.0.2"
+ safe-regex "^1.1.0"
+
+regexp.prototype.flags@^1.2.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75"
+ integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==
+ dependencies:
+ define-properties "^1.1.3"
+ es-abstract "^1.17.0-next.1"
+
+regexpu-core@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240"
+ integrity sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=
+ dependencies:
+ regenerate "^1.2.1"
+ regjsgen "^0.2.0"
+ regjsparser "^0.1.4"
+
+registry-auth-token@^3.0.1:
+ version "3.4.0"
+ resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.4.0.tgz#d7446815433f5d5ed6431cd5dca21048f66b397e"
+ integrity sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==
+ dependencies:
+ rc "^1.1.6"
+ safe-buffer "^5.0.1"
+
+registry-url@^3.0.3:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942"
+ integrity sha1-PU74cPc93h138M+aOBQyRE4XSUI=
+ dependencies:
+ rc "^1.0.1"
+
+regjsgen@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7"
+ integrity sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=
+
+regjsparser@^0.1.4:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c"
+ integrity sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=
+ dependencies:
+ jsesc "~0.5.0"
+
+relateurl@0.2.x:
+ version "0.2.7"
+ resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9"
+ integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=
+
+remove-trailing-separator@^1.0.1:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
+ integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8=
+
+renderkid@^2.0.1:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.3.tgz#380179c2ff5ae1365c522bf2fcfcff01c5b74149"
+ integrity sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA==
+ dependencies:
+ css-select "^1.1.0"
+ dom-converter "^0.2"
+ htmlparser2 "^3.3.0"
+ strip-ansi "^3.0.0"
+ utila "^0.4.0"
+
+repeat-element@^1.1.2:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce"
+ integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==
+
+repeat-string@^1.5.2, repeat-string@^1.6.1:
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
+ integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc=
+
+repeating@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda"
+ integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=
+ dependencies:
+ is-finite "^1.0.0"
+
+request@^2.79.0, request@^2.88.0:
+ version "2.88.2"
+ resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3"
+ integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==
+ dependencies:
+ aws-sign2 "~0.7.0"
+ aws4 "^1.8.0"
+ caseless "~0.12.0"
+ combined-stream "~1.0.6"
+ extend "~3.0.2"
+ forever-agent "~0.6.1"
+ form-data "~2.3.2"
+ har-validator "~5.1.3"
+ http-signature "~1.2.0"
+ is-typedarray "~1.0.0"
+ isstream "~0.1.2"
+ json-stringify-safe "~5.0.1"
+ mime-types "~2.1.19"
+ oauth-sign "~0.9.0"
+ performance-now "^2.1.0"
+ qs "~6.5.2"
+ safe-buffer "^5.1.2"
+ tough-cookie "~2.5.0"
+ tunnel-agent "^0.6.0"
+ uuid "^3.3.2"
+
+require-directory@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
+ integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I=
+
+require-from-string@^1.1.0:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-1.2.1.tgz#529c9ccef27380adfec9a2f965b649bbee636418"
+ integrity sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=
+
+require-main-filename@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1"
+ integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=
+
+require-main-filename@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b"
+ integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==
+
+require-uncached@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3"
+ integrity sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=
+ dependencies:
+ caller-path "^0.1.0"
+ resolve-from "^1.0.0"
+
+requires-port@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
+ integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=
+
+resize-observer-polyfill@^1.5.0, resize-observer-polyfill@^1.5.1:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464"
+ integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==
+
+resolve-cwd@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a"
+ integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=
+ dependencies:
+ resolve-from "^3.0.0"
+
+resolve-dir@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43"
+ integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=
+ dependencies:
+ expand-tilde "^2.0.0"
+ global-modules "^1.0.0"
+
+resolve-from@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226"
+ integrity sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=
+
+resolve-from@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748"
+ integrity sha1-six699nWiBvItuZTM17rywoYh0g=
+
+resolve-from@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
+ integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
+
+resolve-pathname@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd"
+ integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==
+
+resolve-url@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
+ integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
+
+resolve@1.1.7:
+ version "1.1.7"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
+ integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=
+
+resolve@1.6.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.6.0.tgz#0fbd21278b27b4004481c395349e7aba60a9ff5c"
+ integrity sha512-mw7JQNu5ExIkcw4LPih0owX/TZXjD/ZUF/ZQ/pDnkw3ZKhDcZZw5klmBlj6gVMwjQ3Pz5Jgu7F3d0jcDVuEWdw==
+ dependencies:
+ path-parse "^1.0.5"
+
+resolve@^1.10.0, resolve@^1.13.1, resolve@^1.3.2:
+ version "1.17.0"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444"
+ integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==
+ dependencies:
+ path-parse "^1.0.6"
+
+restore-cursor@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf"
+ integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368=
+ dependencies:
+ onetime "^2.0.0"
+ signal-exit "^3.0.2"
+
+ret@~0.1.10:
+ version "0.1.15"
+ resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
+ integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
+
+retry@^0.10.0:
+ version "0.10.1"
+ resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4"
+ integrity sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=
+
+retry@^0.12.0:
+ version "0.12.0"
+ resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b"
+ integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=
+
+right-align@^0.1.1:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef"
+ integrity sha1-YTObci/mo1FWiSENJOFMlhSGE+8=
+ dependencies:
+ align-text "^0.1.1"
+
+rimraf@^2.2.8, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3, rimraf@^2.7.1:
+ version "2.7.1"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
+ integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
+ dependencies:
+ glob "^7.1.3"
+
+rimraf@~2.6.2:
+ version "2.6.3"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab"
+ integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==
+ dependencies:
+ glob "^7.1.3"
+
+ripemd160@^2.0.0, ripemd160@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c"
+ integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==
+ dependencies:
+ hash-base "^3.0.0"
+ inherits "^2.0.1"
+
+rmc-feedback@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/rmc-feedback/-/rmc-feedback-2.0.0.tgz#cbc6cb3ae63c7a635eef0e25e4fbaf5ac366eeaa"
+ integrity sha512-5PWOGOW7VXks/l3JzlOU9NIxRpuaSS8d9zA3UULUCuTKnpwBHNvv1jSJzxgbbCQeYzROWUpgKI4za3X4C/mKmQ==
+ dependencies:
+ babel-runtime "6.x"
+ classnames "^2.2.5"
+
+run-async@^2.2.0:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455"
+ integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==
+
+run-queue@^1.0.0, run-queue@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47"
+ integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=
+ dependencies:
+ aproba "^1.1.1"
+
+rx-lite-aggregates@^4.0.8:
+ version "4.0.8"
+ resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be"
+ integrity sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=
+ dependencies:
+ rx-lite "*"
+
+rx-lite@*, rx-lite@^4.0.8:
+ version "4.0.8"
+ resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444"
+ integrity sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=
+
+safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
+ integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
+
+safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0:
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
+ integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
+
+safe-regex@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
+ integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4=
+ dependencies:
+ ret "~0.1.10"
+
+"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
+ integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
+
+sane@~1.6.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/sane/-/sane-1.6.0.tgz#9610c452307a135d29c1fdfe2547034180c46775"
+ integrity sha1-lhDEUjB6E10pwf3+JUcDQYDEZ3U=
+ dependencies:
+ anymatch "^1.3.0"
+ exec-sh "^0.2.0"
+ fb-watchman "^1.8.0"
+ minimatch "^3.0.2"
+ minimist "^1.1.1"
+ walker "~1.0.5"
+ watch "~0.10.0"
+
+sax@^1.2.1, sax@~1.2.1:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
+ integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
+
+scheduler@^0.19.1:
+ version "0.19.1"
+ resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.19.1.tgz#4f3e2ed2c1a7d65681f4c854fa8c5a1ccb40f196"
+ integrity sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==
+ dependencies:
+ loose-envify "^1.1.0"
+ object-assign "^4.1.1"
+
+schema-utils@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.3.0.tgz#f5877222ce3e931edae039f17eb3716e7137f8cf"
+ integrity sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=
+ dependencies:
+ ajv "^5.0.0"
+
+scriptjs@^2.5.8:
+ version "2.5.9"
+ resolved "https://registry.yarnpkg.com/scriptjs/-/scriptjs-2.5.9.tgz#343915cd2ec2ed9bfdde2b9875cd28f59394b35f"
+ integrity sha512-qGVDoreyYiP1pkQnbnFAUIS5AjenNwwQBdl7zeos9etl+hYKWahjRTfzAZZYBv5xNHx7vNKCmaLDQZ6Fr2AEXg==
+
+select-hose@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca"
+ integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=
+
+selfsigned@^1.9.1:
+ version "1.10.7"
+ resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.7.tgz#da5819fd049d5574f28e88a9bcc6dbc6e6f3906b"
+ integrity sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA==
+ dependencies:
+ node-forge "0.9.0"
+
+semver-diff@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36"
+ integrity sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=
+ dependencies:
+ semver "^5.0.3"
+
+"semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", "semver@^2.3.0 || 3.x || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.1:
+ version "5.7.1"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
+ integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
+
+send@0.17.1:
+ version "0.17.1"
+ resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8"
+ integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==
+ dependencies:
+ debug "2.6.9"
+ depd "~1.1.2"
+ destroy "~1.0.4"
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ etag "~1.8.1"
+ fresh "0.5.2"
+ http-errors "~1.7.2"
+ mime "1.6.0"
+ ms "2.1.1"
+ on-finished "~2.3.0"
+ range-parser "~1.2.1"
+ statuses "~1.5.0"
+
+serve-index@^1.7.2:
+ version "1.9.1"
+ resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239"
+ integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=
+ dependencies:
+ accepts "~1.3.4"
+ batch "0.6.1"
+ debug "2.6.9"
+ escape-html "~1.0.3"
+ http-errors "~1.6.2"
+ mime-types "~2.1.17"
+ parseurl "~1.3.2"
+
+serve-static@1.14.1:
+ version "1.14.1"
+ resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9"
+ integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==
+ dependencies:
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ parseurl "~1.3.3"
+ send "0.17.1"
+
+serviceworker-cache-polyfill@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/serviceworker-cache-polyfill/-/serviceworker-cache-polyfill-4.0.0.tgz#de19ee73bef21ab3c0740a37b33db62464babdeb"
+ integrity sha1-3hnuc77yGrPAdAo3sz22JGS6ves=
+
+set-blocking@^2.0.0, set-blocking@~2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
+ integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
+
+set-value@^2.0.0, set-value@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b"
+ integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==
+ dependencies:
+ extend-shallow "^2.0.1"
+ is-extendable "^0.1.1"
+ is-plain-object "^2.0.3"
+ split-string "^3.0.1"
+
+setimmediate@^1.0.4, setimmediate@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
+ integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=
+
+setprototypeof@1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
+ integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==
+
+setprototypeof@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683"
+ integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==
+
+sha.js@^2.4.0, sha.js@^2.4.8:
+ version "2.4.11"
+ resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7"
+ integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==
+ dependencies:
+ inherits "^2.0.1"
+ safe-buffer "^5.0.1"
+
+sha@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/sha/-/sha-3.0.0.tgz#b2f2f90af690c16a3a839a6a6c680ea51fedd1ae"
+ integrity sha512-DOYnM37cNsLNSGIG/zZWch5CKIRNoLdYUQTQlcgkRkoYIUwDYjqDyye16YcDZg/OPdcbUgTKMjc4SY6TB7ZAPw==
+ dependencies:
+ graceful-fs "^4.1.2"
+
+shallow-equal@^1.0.0:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/shallow-equal/-/shallow-equal-1.2.1.tgz#4c16abfa56043aa20d050324efa68940b0da79da"
+ integrity sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA==
+
+shallowequal@^1.0.1, shallowequal@^1.0.2, shallowequal@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8"
+ integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==
+
+shebang-command@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
+ integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=
+ dependencies:
+ shebang-regex "^1.0.0"
+
+shebang-regex@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
+ integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
+
+shell-quote@1.6.1:
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767"
+ integrity sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=
+ dependencies:
+ array-filter "~0.0.0"
+ array-map "~0.0.0"
+ array-reduce "~0.0.0"
+ jsonify "~0.0.0"
+
+shellwords@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b"
+ integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==
+
+signal-exit@^3.0.0, signal-exit@^3.0.2:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c"
+ integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==
+
+slash@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"
+ integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=
+
+slice-ansi@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d"
+ integrity sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==
+ dependencies:
+ is-fullwidth-code-point "^2.0.0"
+
+slide@^1.1.6, slide@~1.1.3, slide@~1.1.6:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707"
+ integrity sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=
+
+smart-buffer@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.1.0.tgz#91605c25d91652f4661ea69ccf45f1b331ca21ba"
+ integrity sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw==
+
+snapdragon-node@^2.0.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
+ integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==
+ dependencies:
+ define-property "^1.0.0"
+ isobject "^3.0.0"
+ snapdragon-util "^3.0.1"
+
+snapdragon-util@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2"
+ integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==
+ dependencies:
+ kind-of "^3.2.0"
+
+snapdragon@^0.8.1:
+ version "0.8.2"
+ resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d"
+ integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==
+ dependencies:
+ base "^0.11.1"
+ debug "^2.2.0"
+ define-property "^0.2.5"
+ extend-shallow "^2.0.1"
+ map-cache "^0.2.2"
+ source-map "^0.5.6"
+ source-map-resolve "^0.5.0"
+ use "^3.1.0"
+
+sockjs-client@1.1.5:
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.5.tgz#1bb7c0f7222c40f42adf14f4442cbd1269771a83"
+ integrity sha1-G7fA9yIsQPQq3xT0RCy9Eml3GoM=
+ dependencies:
+ debug "^2.6.6"
+ eventsource "0.1.6"
+ faye-websocket "~0.11.0"
+ inherits "^2.0.1"
+ json3 "^3.3.2"
+ url-parse "^1.1.8"
+
+sockjs@0.3.19:
+ version "0.3.19"
+ resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.19.tgz#d976bbe800af7bd20ae08598d582393508993c0d"
+ integrity sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==
+ dependencies:
+ faye-websocket "^0.10.0"
+ uuid "^3.0.1"
+
+socks-proxy-agent@^4.0.0:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz#3c8991f3145b2799e70e11bd5fbc8b1963116386"
+ integrity sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg==
+ dependencies:
+ agent-base "~4.2.1"
+ socks "~2.3.2"
+
+socks@~2.3.2:
+ version "2.3.3"
+ resolved "https://registry.yarnpkg.com/socks/-/socks-2.3.3.tgz#01129f0a5d534d2b897712ed8aceab7ee65d78e3"
+ integrity sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA==
+ dependencies:
+ ip "1.1.5"
+ smart-buffer "^4.1.0"
+
+sort-keys@^1.0.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad"
+ integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0=
+ dependencies:
+ is-plain-obj "^1.0.0"
+
+sorted-object@~2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/sorted-object/-/sorted-object-2.0.1.tgz#7d631f4bd3a798a24af1dffcfbfe83337a5df5fc"
+ integrity sha1-fWMfS9OnmKJK8d/8+/6DM3pd9fw=
+
+sorted-union-stream@~2.1.3:
+ version "2.1.3"
+ resolved "https://registry.yarnpkg.com/sorted-union-stream/-/sorted-union-stream-2.1.3.tgz#c7794c7e077880052ff71a8d4a2dbb4a9a638ac7"
+ integrity sha1-x3lMfgd4gAUv9xqNSi27Sppjisc=
+ dependencies:
+ from2 "^1.3.0"
+ stream-iterate "^1.1.0"
+
+source-list-map@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34"
+ integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==
+
+source-map-resolve@^0.5.0:
+ version "0.5.3"
+ resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a"
+ integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==
+ dependencies:
+ atob "^2.1.2"
+ decode-uri-component "^0.2.0"
+ resolve-url "^0.2.1"
+ source-map-url "^0.4.0"
+ urix "^0.1.0"
+
+source-map-support@^0.4.15:
+ version "0.4.18"
+ resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f"
+ integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==
+ dependencies:
+ source-map "^0.5.6"
+
+source-map-url@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
+ integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=
+
+source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.1:
+ version "0.5.7"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
+ integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
+
+source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
+ integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
+
+spdx-correct@^3.0.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9"
+ integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==
+ dependencies:
+ spdx-expression-parse "^3.0.0"
+ spdx-license-ids "^3.0.0"
+
+spdx-exceptions@^2.1.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d"
+ integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==
+
+spdx-expression-parse@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679"
+ integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==
+ dependencies:
+ spdx-exceptions "^2.1.0"
+ spdx-license-ids "^3.0.0"
+
+spdx-license-ids@^3.0.0:
+ version "3.0.5"
+ resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654"
+ integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==
+
+spdy-transport@^2.0.18:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-2.1.1.tgz#c54815d73858aadd06ce63001e7d25fa6441623b"
+ integrity sha512-q7D8c148escoB3Z7ySCASadkegMmUZW8Wb/Q1u0/XBgDKMO880rLQDj8Twiew/tYi7ghemKUi/whSYOwE17f5Q==
+ dependencies:
+ debug "^2.6.8"
+ detect-node "^2.0.3"
+ hpack.js "^2.1.6"
+ obuf "^1.1.1"
+ readable-stream "^2.2.9"
+ safe-buffer "^5.0.1"
+ wbuf "^1.7.2"
+
+spdy@^3.4.1:
+ version "3.4.7"
+ resolved "https://registry.yarnpkg.com/spdy/-/spdy-3.4.7.tgz#42ff41ece5cc0f99a3a6c28aabb73f5c3b03acbc"
+ integrity sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=
+ dependencies:
+ debug "^2.6.8"
+ handle-thing "^1.2.5"
+ http-deceiver "^1.2.7"
+ safe-buffer "^5.0.1"
+ select-hose "^2.0.0"
+ spdy-transport "^2.0.18"
+
+split-on-first@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f"
+ integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==
+
+split-string@^3.0.1, split-string@^3.0.2:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
+ integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==
+ dependencies:
+ extend-shallow "^3.0.0"
+
+sprintf-js@~1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
+ integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
+
+sshpk@^1.7.0:
+ version "1.16.1"
+ resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877"
+ integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==
+ dependencies:
+ asn1 "~0.2.3"
+ assert-plus "^1.0.0"
+ bcrypt-pbkdf "^1.0.0"
+ dashdash "^1.12.0"
+ ecc-jsbn "~0.1.1"
+ getpass "^0.1.1"
+ jsbn "~0.1.0"
+ safer-buffer "^2.0.2"
+ tweetnacl "~0.14.0"
+
+ssri@^6.0.0, ssri@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8"
+ integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==
+ dependencies:
+ figgy-pudding "^3.5.1"
+
+static-extend@^0.1.1:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
+ integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=
+ dependencies:
+ define-property "^0.2.5"
+ object-copy "^0.1.0"
+
+"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
+ integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=
+
+stream-browserify@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b"
+ integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==
+ dependencies:
+ inherits "~2.0.1"
+ readable-stream "^2.0.2"
+
+stream-each@^1.1.0:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae"
+ integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==
+ dependencies:
+ end-of-stream "^1.1.0"
+ stream-shift "^1.0.0"
+
+stream-http@^2.7.2:
+ version "2.8.3"
+ resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc"
+ integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==
+ dependencies:
+ builtin-status-codes "^3.0.0"
+ inherits "^2.0.1"
+ readable-stream "^2.3.6"
+ to-arraybuffer "^1.0.0"
+ xtend "^4.0.0"
+
+stream-iterate@^1.1.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/stream-iterate/-/stream-iterate-1.2.0.tgz#2bd7c77296c1702a46488b8ad41f79865eecd4e1"
+ integrity sha1-K9fHcpbBcCpGSIuK1B95hl7s1OE=
+ dependencies:
+ readable-stream "^2.1.5"
+ stream-shift "^1.0.0"
+
+stream-shift@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d"
+ integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==
+
+strict-uri-encode@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713"
+ integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=
+
+strict-uri-encode@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546"
+ integrity sha1-ucczDHBChi9rFC3CdLvMWGbONUY=
+
+string-convert@^0.2.0:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/string-convert/-/string-convert-0.2.1.tgz#6982cc3049fbb4cd85f8b24568b9d9bf39eeff97"
+ integrity sha1-aYLMMEn7tM2F+LJFaLnZvznu/5c=
+
+string-length@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/string-length/-/string-length-1.0.1.tgz#56970fb1c38558e9e70b728bf3de269ac45adfac"
+ integrity sha1-VpcPscOFWOnnC3KL894mmsRa36w=
+ dependencies:
+ strip-ansi "^3.0.0"
+
+string-width@^1.0.1, string-width@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
+ integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=
+ dependencies:
+ code-point-at "^1.0.0"
+ is-fullwidth-code-point "^1.0.0"
+ strip-ansi "^3.0.0"
+
+"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
+ integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==
+ dependencies:
+ is-fullwidth-code-point "^2.0.0"
+ strip-ansi "^4.0.0"
+
+string-width@^3.0.0, string-width@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961"
+ integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==
+ dependencies:
+ emoji-regex "^7.0.1"
+ is-fullwidth-code-point "^2.0.0"
+ strip-ansi "^5.1.0"
+
+string.prototype.trimend@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913"
+ integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==
+ dependencies:
+ define-properties "^1.1.3"
+ es-abstract "^1.17.5"
+
+string.prototype.trimstart@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54"
+ integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==
+ dependencies:
+ define-properties "^1.1.3"
+ es-abstract "^1.17.5"
+
+string_decoder@^1.0.0, string_decoder@^1.1.1:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
+ integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
+ dependencies:
+ safe-buffer "~5.2.0"
+
+string_decoder@~0.10.x:
+ version "0.10.31"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
+ integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=
+
+string_decoder@~1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
+ integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
+ dependencies:
+ safe-buffer "~5.1.0"
+
+stringify-package@^1.0.0, stringify-package@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/stringify-package/-/stringify-package-1.0.1.tgz#e5aa3643e7f74d0f28628b72f3dad5cecfc3ba85"
+ integrity sha512-sa4DUQsYciMP1xhKWGuFM04fB0LG/9DlluZoSVywUMRNvzid6XucHK0/90xGxRoHrAaROrcHK1aPKaijCtSrhg==
+
+strip-ansi@3.0.1, strip-ansi@^3.0.0, strip-ansi@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
+ integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=
+ dependencies:
+ ansi-regex "^2.0.0"
+
+strip-ansi@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
+ integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8=
+ dependencies:
+ ansi-regex "^3.0.0"
+
+strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae"
+ integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==
+ dependencies:
+ ansi-regex "^4.1.0"
+
+strip-bom@3.0.0, strip-bom@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
+ integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=
+
+strip-bom@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e"
+ integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=
+ dependencies:
+ is-utf8 "^0.2.0"
+
+strip-eof@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
+ integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=
+
+strip-indent@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2"
+ integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=
+ dependencies:
+ get-stdin "^4.0.1"
+
+strip-json-comments@~2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
+ integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
+
+style-loader@0.19.0:
+ version "0.19.0"
+ resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.19.0.tgz#7258e788f0fee6a42d710eaf7d6c2412a4c50759"
+ integrity sha512-9mx9sC9nX1dgP96MZOODpGC6l1RzQBITI2D5WJhu+wnbrSYVKLGuy14XJSLVQih/0GFrPpjelt+s//VcZQ2Evw==
+ dependencies:
+ loader-utils "^1.0.2"
+ schema-utils "^0.3.0"
+
+styled-components@^3.2.3, styled-components@^3.4.5:
+ version "3.4.10"
+ resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-3.4.10.tgz#9a654c50ea2b516c36ade57ddcfa296bf85c96e1"
+ integrity sha512-TA8ip8LoILgmSAFd3r326pKtXytUUGu5YWuqZcOQVwVVwB6XqUMn4MHW2IuYJ/HAD81jLrdQed8YWfLSG1LX4Q==
+ dependencies:
+ buffer "^5.0.3"
+ css-to-react-native "^2.0.3"
+ fbjs "^0.8.16"
+ hoist-non-react-statics "^2.5.0"
+ prop-types "^15.5.4"
+ react-is "^16.3.1"
+ stylis "^3.5.0"
+ stylis-rule-sheet "^0.0.10"
+ supports-color "^3.2.3"
+
+stylis-rule-sheet@^0.0.10:
+ version "0.0.10"
+ resolved "https://registry.yarnpkg.com/stylis-rule-sheet/-/stylis-rule-sheet-0.0.10.tgz#44e64a2b076643f4b52e5ff71efc04d8c3c4a430"
+ integrity sha512-nTbZoaqoBnmK+ptANthb10ZRZOGC+EmTLLUxeYIuHNkEKcmKgXX1XWKkUBT2Ac4es3NybooPe0SmvKdhKJZAuw==
+
+stylis@^3.5.0:
+ version "3.5.4"
+ resolved "https://registry.yarnpkg.com/stylis/-/stylis-3.5.4.tgz#f665f25f5e299cf3d64654ab949a57c768b73fbe"
+ integrity sha512-8/3pSmthWM7lsPBKv7NXkzn2Uc9W7NotcwGNpJaa3k7WMM1XDCA4MgT5k/8BIexd5ydZdboXtU90XH9Ec4Bv/Q==
+
+supports-color@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
+ integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=
+
+supports-color@^3.1.2, supports-color@^3.2.3:
+ version "3.2.3"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6"
+ integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=
+ dependencies:
+ has-flag "^1.0.0"
+
+supports-color@^4.2.1:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b"
+ integrity sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=
+ dependencies:
+ has-flag "^2.0.0"
+
+supports-color@^5.1.0, supports-color@^5.3.0, supports-color@^5.4.0:
+ version "5.5.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
+ integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
+ dependencies:
+ has-flag "^3.0.0"
+
+svgo@^0.7.0:
+ version "0.7.2"
+ resolved "https://registry.yarnpkg.com/svgo/-/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5"
+ integrity sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=
+ dependencies:
+ coa "~1.0.1"
+ colors "~1.1.2"
+ csso "~2.3.1"
+ js-yaml "~3.7.0"
+ mkdirp "~0.5.1"
+ sax "~1.2.1"
+ whet.extend "~0.9.9"
+
+sw-precache-webpack-plugin@0.11.4:
+ version "0.11.4"
+ resolved "https://registry.yarnpkg.com/sw-precache-webpack-plugin/-/sw-precache-webpack-plugin-0.11.4.tgz#a695017e54eed575551493a519dc1da8da2dc5e0"
+ integrity sha1-ppUBflTu1XVVFJOlGdwdqNotxeA=
+ dependencies:
+ del "^2.2.2"
+ sw-precache "^5.1.1"
+ uglify-js "^3.0.13"
+
+sw-precache@^5.1.1:
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/sw-precache/-/sw-precache-5.2.1.tgz#06134f319eec68f3b9583ce9a7036b1c119f7179"
+ integrity sha512-8FAy+BP/FXE+ILfiVTt+GQJ6UEf4CVHD9OfhzH0JX+3zoy2uFk7Vn9EfXASOtVmmIVbL3jE/W8Z66VgPSZcMhw==
+ dependencies:
+ dom-urls "^1.1.0"
+ es6-promise "^4.0.5"
+ glob "^7.1.1"
+ lodash.defaults "^4.2.0"
+ lodash.template "^4.4.0"
+ meow "^3.7.0"
+ mkdirp "^0.5.1"
+ pretty-bytes "^4.0.2"
+ sw-toolbox "^3.4.0"
+ update-notifier "^2.3.0"
+
+sw-toolbox@^3.4.0:
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/sw-toolbox/-/sw-toolbox-3.6.0.tgz#26df1d1c70348658e4dea2884319149b7b3183b5"
+ integrity sha1-Jt8dHHA0hljk3qKIQxkUm3sxg7U=
+ dependencies:
+ path-to-regexp "^1.0.1"
+ serviceworker-cache-polyfill "^4.0.0"
+
+symbol-observable@^1.0.4, symbol-observable@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804"
+ integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==
+
+symbol-tree@^3.2.1:
+ version "3.2.4"
+ resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2"
+ integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==
+
+synchronous-promise@^2.0.5:
+ version "2.0.13"
+ resolved "https://registry.yarnpkg.com/synchronous-promise/-/synchronous-promise-2.0.13.tgz#9d8c165ddee69c5a6542862b405bc50095926702"
+ integrity sha512-R9N6uDkVsghHePKh1TEqbnLddO2IY25OcsksyFp/qBe7XYd0PVbKEWxhcdMhpLzE1I6skj5l4aEZ3CRxcbArlA==
+
+table@^4.0.1:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/table/-/table-4.0.3.tgz#00b5e2b602f1794b9acaf9ca908a76386a7813bc"
+ integrity sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg==
+ dependencies:
+ ajv "^6.0.1"
+ ajv-keywords "^3.0.0"
+ chalk "^2.1.0"
+ lodash "^4.17.4"
+ slice-ansi "1.0.0"
+ string-width "^2.1.1"
+
+tapable@^0.2.7:
+ version "0.2.9"
+ resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.9.tgz#af2d8bbc9b04f74ee17af2b4d9048f807acd18a8"
+ integrity sha512-2wsvQ+4GwBvLPLWsNfLCDYGsW6xb7aeC6utq2Qh0PFwgEy7K7dsma9Jsmb2zSQj7GvYAyUGSntLtsv++GmgL1A==
+
+tar@^4.4.10, tar@^4.4.12, tar@^4.4.13:
+ version "4.4.13"
+ resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525"
+ integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==
+ dependencies:
+ chownr "^1.1.1"
+ fs-minipass "^1.2.5"
+ minipass "^2.8.6"
+ minizlib "^1.2.1"
+ mkdirp "^0.5.0"
+ safe-buffer "^5.1.2"
+ yallist "^3.0.3"
+
+term-size@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69"
+ integrity sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=
+ dependencies:
+ execa "^0.7.0"
+
+test-exclude@^4.2.1:
+ version "4.2.3"
+ resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.2.3.tgz#a9a5e64474e4398339245a0a769ad7c2f4a97c20"
+ integrity sha512-SYbXgY64PT+4GAL2ocI3HwPa4Q4TBKm0cwAVeKOt/Aoc0gSpNRjJX8w0pA1LMKZ3LBmd8pYBqApFNQLII9kavA==
+ dependencies:
+ arrify "^1.0.1"
+ micromatch "^2.3.11"
+ object-assign "^4.1.0"
+ read-pkg-up "^1.0.1"
+ require-main-filename "^1.0.1"
+
+text-table@0.2.0, text-table@~0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
+ integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=
+
+throat@^3.0.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/throat/-/throat-3.2.0.tgz#50cb0670edbc40237b9e347d7e1f88e4620af836"
+ integrity sha512-/EY8VpvlqJ+sFtLPeOgc8Pl7kQVOWv0woD87KTXVHPIAE842FGT+rokxIhe8xIUP1cfgrkt0as0vDLjDiMtr8w==
+
+through2@^2.0.0:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd"
+ integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==
+ dependencies:
+ readable-stream "~2.3.6"
+ xtend "~4.0.1"
+
+"through@>=2.2.7 <3", through@^2.3.6:
+ version "2.3.8"
+ resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
+ integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
+
+thunky@^1.0.2:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d"
+ integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==
+
+time-stamp@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-2.2.0.tgz#917e0a66905688790ec7bbbde04046259af83f57"
+ integrity sha512-zxke8goJQpBeEgD82CXABeMh0LSJcj7CXEd0OHOg45HgcofF7pxNwZm9+RknpxpDhwN4gFpySkApKfFYfRQnUA==
+
+timed-out@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f"
+ integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=
+
+timers-browserify@^2.0.4:
+ version "2.0.11"
+ resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.11.tgz#800b1f3eee272e5bc53ee465a04d0e804c31211f"
+ integrity sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==
+ dependencies:
+ setimmediate "^1.0.4"
+
+tiny-invariant@^1.0.2:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.1.0.tgz#634c5f8efdc27714b7f386c35e6760991d230875"
+ integrity sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw==
+
+tiny-relative-date@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/tiny-relative-date/-/tiny-relative-date-1.3.0.tgz#fa08aad501ed730f31cc043181d995c39a935e07"
+ integrity sha512-MOQHpzllWxDCHHaDno30hhLfbouoYlOI8YlMNtvKe1zXbjEVhbcEovQxvZrPvtiYW630GQDoMMarCnjfyfHA+A==
+
+tiny-warning@^1.0.0, tiny-warning@^1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754"
+ integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==
+
+tinycolor2@^1.4.1:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.1.tgz#f4fad333447bc0b07d4dc8e9209d8f39a8ac77e8"
+ integrity sha1-9PrTM0R7wLB9TcjpIJ2POaisd+g=
+
+tmp@^0.0.33:
+ version "0.0.33"
+ resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
+ integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==
+ dependencies:
+ os-tmpdir "~1.0.2"
+
+tmpl@1.0.x:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1"
+ integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=
+
+to-arraybuffer@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
+ integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=
+
+to-fast-properties@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47"
+ integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=
+
+to-fast-properties@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
+ integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=
+
+to-object-path@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af"
+ integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=
+ dependencies:
+ kind-of "^3.0.2"
+
+to-regex-range@^2.1.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38"
+ integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=
+ dependencies:
+ is-number "^3.0.0"
+ repeat-string "^1.6.1"
+
+to-regex-range@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
+ integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
+ dependencies:
+ is-number "^7.0.0"
+
+to-regex@^3.0.1, to-regex@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"
+ integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==
+ dependencies:
+ define-property "^2.0.2"
+ extend-shallow "^3.0.2"
+ regex-not "^1.0.2"
+ safe-regex "^1.1.0"
+
+toggle-selection@^1.0.6:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32"
+ integrity sha1-bkWxJj8gF/oKzH2J14sVuL932jI=
+
+toidentifier@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553"
+ integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==
+
+toposort@^1.0.0:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029"
+ integrity sha1-LmhELZ9k7HILjMieZEOsbKqVACk=
+
+toposort@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/toposort/-/toposort-2.0.2.tgz#ae21768175d1559d48bef35420b2f4962f09c330"
+ integrity sha1-riF2gXXRVZ1IvvNUILL0li8JwzA=
+
+tough-cookie@^2.3.2, tough-cookie@~2.5.0:
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"
+ integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==
+ dependencies:
+ psl "^1.1.28"
+ punycode "^2.1.1"
+
+tr46@~0.0.3:
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
+ integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=
+
+trim-newlines@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613"
+ integrity sha1-WIeWa7WCpFA6QetST301ARgVphM=
+
+trim-right@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
+ integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=
+
+tslib@^1.10.0, tslib@^1.9.3:
+ version "1.13.0"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043"
+ integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==
+
+tty-browserify@0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
+ integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=
+
+tunnel-agent@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
+ integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=
+ dependencies:
+ safe-buffer "^5.0.1"
+
+tweetnacl@^0.14.3, tweetnacl@~0.14.0:
+ version "0.14.5"
+ resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
+ integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=
+
+type-check@~0.3.2:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
+ integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=
+ dependencies:
+ prelude-ls "~1.1.2"
+
+type-is@~1.6.17, type-is@~1.6.18:
+ version "1.6.18"
+ resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
+ integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==
+ dependencies:
+ media-typer "0.3.0"
+ mime-types "~2.1.24"
+
+type@^1.0.1:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0"
+ integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==
+
+type@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/type/-/type-2.0.0.tgz#5f16ff6ef2eb44f260494dae271033b29c09a9c3"
+ integrity sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==
+
+typedarray@^0.0.6:
+ version "0.0.6"
+ resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
+ integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
+
+ua-parser-js@^0.7.18, ua-parser-js@^0.7.21:
+ version "0.7.21"
+ resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.21.tgz#853cf9ce93f642f67174273cc34565ae6f308777"
+ integrity sha512-+O8/qh/Qj8CgC6eYBVBykMrNtp5Gebn4dlGD/kKXVkJNDwyrAwSIqwz8CDf+tsAIWVycKcku6gIXJ0qwx/ZXaQ==
+
+uglify-js@3.4.x:
+ version "3.4.10"
+ resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.10.tgz#9ad9563d8eb3acdfb8d38597d2af1d815f6a755f"
+ integrity sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==
+ dependencies:
+ commander "~2.19.0"
+ source-map "~0.6.1"
+
+uglify-js@^2.8.29:
+ version "2.8.29"
+ resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd"
+ integrity sha1-KcVzMUgFe7Th913zW3qcty5qWd0=
+ dependencies:
+ source-map "~0.5.1"
+ yargs "~3.10.0"
+ optionalDependencies:
+ uglify-to-browserify "~1.0.0"
+
+uglify-js@^3.0.13, uglify-js@^3.1.4:
+ version "3.10.0"
+ resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.10.0.tgz#397a7e6e31ce820bfd1cb55b804ee140c587a9e7"
+ integrity sha512-Esj5HG5WAyrLIdYU74Z3JdG2PxdIusvj6IWHMtlyESxc7kcDz7zYlYjpnSokn1UbpV0d/QX9fan7gkCNd/9BQA==
+
+uglify-to-browserify@~1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7"
+ integrity sha1-bgkk1r2mta/jSeOabWMoUKD4grc=
+
+uglifyjs-webpack-plugin@^0.4.6:
+ version "0.4.6"
+ resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz#b951f4abb6bd617e66f63eb891498e391763e309"
+ integrity sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=
+ dependencies:
+ source-map "^0.5.6"
+ uglify-js "^2.8.29"
+ webpack-sources "^1.0.1"
+
+uid-number@0.0.6:
+ version "0.0.6"
+ resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81"
+ integrity sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=
+
+umask@^1.1.0, umask@~1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/umask/-/umask-1.1.0.tgz#f29cebf01df517912bb58ff9c4e50fde8e33320d"
+ integrity sha1-8pzr8B31F5ErtY/5xOUP3o4zMg0=
+
+union-value@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847"
+ integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==
+ dependencies:
+ arr-union "^3.1.0"
+ get-value "^2.0.6"
+ is-extendable "^0.1.1"
+ set-value "^2.0.1"
+
+uniq@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff"
+ integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=
+
+uniqs@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02"
+ integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI=
+
+unique-filename@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230"
+ integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==
+ dependencies:
+ unique-slug "^2.0.0"
+
+unique-slug@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c"
+ integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==
+ dependencies:
+ imurmurhash "^0.1.4"
+
+unique-string@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a"
+ integrity sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=
+ dependencies:
+ crypto-random-string "^1.0.0"
+
+universal-cookie@3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/universal-cookie/-/universal-cookie-3.0.4.tgz#22c1a0dca6bb9e72da20d9e331d9d8f93d95e9dc"
+ integrity sha512-3rhx6RAIuRmCWJttnbgzMrp2TbHhUmgQ2GrpY/US03Siv5T28iXr2qYw1m3YqmluBxEyrvZaloVemkLSId+Oyg==
+ dependencies:
+ "@types/cookie" "^0.3.1"
+ "@types/object-assign" "^4.0.30"
+ cookie "^0.3.1"
+ object-assign "^4.1.0"
+
+universalify@^0.1.0:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
+ integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
+
+unpipe@1.0.0, unpipe@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
+ integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=
+
+unset-value@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"
+ integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=
+ dependencies:
+ has-value "^0.3.1"
+ isobject "^3.0.0"
+
+unzip-response@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97"
+ integrity sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=
+
+upath@^1.1.1:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894"
+ integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==
+
+update-notifier@^2.2.0, update-notifier@^2.3.0, update-notifier@^2.5.0:
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.5.0.tgz#d0744593e13f161e406acb1d9408b72cad08aff6"
+ integrity sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==
+ dependencies:
+ boxen "^1.2.1"
+ chalk "^2.0.1"
+ configstore "^3.0.0"
+ import-lazy "^2.1.0"
+ is-ci "^1.0.10"
+ is-installed-globally "^0.1.0"
+ is-npm "^1.0.0"
+ latest-version "^3.0.0"
+ semver-diff "^2.0.0"
+ xdg-basedir "^3.0.0"
+
+upper-case@^1.1.1:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598"
+ integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=
+
+uri-js@^4.2.2:
+ version "4.2.2"
+ resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0"
+ integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==
+ dependencies:
+ punycode "^2.1.0"
+
+urijs@^1.16.1:
+ version "1.19.2"
+ resolved "https://registry.yarnpkg.com/urijs/-/urijs-1.19.2.tgz#f9be09f00c4c5134b7cb3cf475c1dd394526265a"
+ integrity sha512-s/UIq9ap4JPZ7H1EB5ULo/aOUbWqfDi7FKzMC2Nz+0Si8GiT1rIEaprt8hy3Vy2Ex2aJPpOQv4P4DuOZ+K1c6w==
+
+urix@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
+ integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=
+
+url-loader@0.6.2:
+ version "0.6.2"
+ resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-0.6.2.tgz#a007a7109620e9d988d14bce677a1decb9a993f7"
+ integrity sha512-h3qf9TNn53BpuXTTcpC+UehiRrl0Cv45Yr/xWayApjw6G8Bg2dGke7rIwDQ39piciWCWrC+WiqLjOh3SUp9n0Q==
+ dependencies:
+ loader-utils "^1.0.2"
+ mime "^1.4.1"
+ schema-utils "^0.3.0"
+
+url-parse-lax@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73"
+ integrity sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=
+ dependencies:
+ prepend-http "^1.0.1"
+
+url-parse@^1.1.8, url-parse@^1.4.3:
+ version "1.4.7"
+ resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278"
+ integrity sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==
+ dependencies:
+ querystringify "^2.1.1"
+ requires-port "^1.0.0"
+
+url@^0.11.0:
+ version "0.11.0"
+ resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
+ integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=
+ dependencies:
+ punycode "1.3.2"
+ querystring "0.2.0"
+
+use@^3.1.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
+ integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==
+
+util-deprecate@^1.0.1, util-deprecate@~1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
+ integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
+
+util-extend@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/util-extend/-/util-extend-1.0.3.tgz#a7c216d267545169637b3b6edc6ca9119e2ff93f"
+ integrity sha1-p8IW0mdUUWljeztu3GypEZ4v+T8=
+
+util-promisify@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/util-promisify/-/util-promisify-2.1.0.tgz#3c2236476c4d32c5ff3c47002add7c13b9a82a53"
+ integrity sha1-PCI2R2xNMsX/PEcAKt18E7moKlM=
+ dependencies:
+ object.getownpropertydescriptors "^2.0.3"
+
+util@0.10.3:
+ version "0.10.3"
+ resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9"
+ integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk=
+ dependencies:
+ inherits "2.0.1"
+
+util@^0.11.0:
+ version "0.11.1"
+ resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61"
+ integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==
+ dependencies:
+ inherits "2.0.3"
+
+utila@^0.4.0, utila@~0.4:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c"
+ integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=
+
+utils-merge@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
+ integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=
+
+uuid@^3.0.1, uuid@^3.3.2, uuid@^3.3.3:
+ version "3.4.0"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
+ integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
+
+validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
+ integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==
+ dependencies:
+ spdx-correct "^3.0.0"
+ spdx-expression-parse "^3.0.0"
+
+validate-npm-package-name@^3.0.0, validate-npm-package-name@~3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e"
+ integrity sha1-X6kS2B630MdK/BQN5zF/DKffQ34=
+ dependencies:
+ builtins "^1.0.3"
+
+value-equal@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c"
+ integrity sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==
+
+vary@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
+ integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=
+
+vendors@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e"
+ integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==
+
+verror@1.10.0:
+ version "1.10.0"
+ resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400"
+ integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=
+ dependencies:
+ assert-plus "^1.0.0"
+ core-util-is "1.0.2"
+ extsprintf "^1.2.0"
+
+vm-browserify@^1.0.1:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0"
+ integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==
+
+walker@~1.0.5:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb"
+ integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=
+ dependencies:
+ makeerror "1.0.x"
+
+warning@4.x, warning@^4.0.1, warning@^4.0.2, warning@^4.0.3, warning@~4.0.3:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3"
+ integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==
+ dependencies:
+ loose-envify "^1.0.0"
+
+warning@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/warning/-/warning-3.0.0.tgz#32e5377cb572de4ab04753bdf8821c01ed605b7c"
+ integrity sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=
+ dependencies:
+ loose-envify "^1.0.0"
+
+watch@~0.10.0:
+ version "0.10.0"
+ resolved "https://registry.yarnpkg.com/watch/-/watch-0.10.0.tgz#77798b2da0f9910d595f1ace5b0c2258521f21dc"
+ integrity sha1-d3mLLaD5kQ1ZXxrOWwwiWFIfIdw=
+
+watchpack-chokidar2@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz#9948a1866cbbd6cb824dea13a7ed691f6c8ddff0"
+ integrity sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA==
+ dependencies:
+ chokidar "^2.1.8"
+
+watchpack@^1.4.0:
+ version "1.7.4"
+ resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.4.tgz#6e9da53b3c80bb2d6508188f5b200410866cd30b"
+ integrity sha512-aWAgTW4MoSJzZPAicljkO1hsi1oKj/RRq/OJQh2PKI2UKL04c2Bs+MBOB+BBABHTXJpf9mCwHN7ANCvYsvY2sg==
+ dependencies:
+ graceful-fs "^4.1.2"
+ neo-async "^2.5.0"
+ optionalDependencies:
+ chokidar "^3.4.1"
+ watchpack-chokidar2 "^2.0.0"
+
+wbuf@^1.1.0, wbuf@^1.7.2:
+ version "1.7.3"
+ resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df"
+ integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==
+ dependencies:
+ minimalistic-assert "^1.0.0"
+
+wcwidth@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8"
+ integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=
+ dependencies:
+ defaults "^1.0.3"
+
+webidl-conversions@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
+ integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=
+
+webidl-conversions@^4.0.0:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad"
+ integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==
+
+webpack-dev-middleware@1.12.2:
+ version "1.12.2"
+ resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz#f8fc1120ce3b4fc5680ceecb43d777966b21105e"
+ integrity sha512-FCrqPy1yy/sN6U/SaEZcHKRXGlqU0DUaEBL45jkUYoB8foVb6wCnbIJ1HKIx+qUFTW+3JpVcCJCxZ8VATL4e+A==
+ dependencies:
+ memory-fs "~0.4.1"
+ mime "^1.5.0"
+ path-is-absolute "^1.0.0"
+ range-parser "^1.0.3"
+ time-stamp "^2.0.0"
+
+webpack-dev-server@2.11.3:
+ version "2.11.3"
+ resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-2.11.3.tgz#3fd48a402164a6569d94d3d17f131432631b4873"
+ integrity sha512-Qz22YEFhWx+M2vvJ+rQppRv39JA0h5NNbOOdODApdX6iZ52Diz7vTPXjF7kJlfn+Uc24Qr48I3SZ9yncQwRycg==
+ dependencies:
+ ansi-html "0.0.7"
+ array-includes "^3.0.3"
+ bonjour "^3.5.0"
+ chokidar "^2.0.0"
+ compression "^1.5.2"
+ connect-history-api-fallback "^1.3.0"
+ debug "^3.1.0"
+ del "^3.0.0"
+ express "^4.16.2"
+ html-entities "^1.2.0"
+ http-proxy-middleware "~0.17.4"
+ import-local "^1.0.0"
+ internal-ip "1.2.0"
+ ip "^1.1.5"
+ killable "^1.0.0"
+ loglevel "^1.4.1"
+ opn "^5.1.0"
+ portfinder "^1.0.9"
+ selfsigned "^1.9.1"
+ serve-index "^1.7.2"
+ sockjs "0.3.19"
+ sockjs-client "1.1.5"
+ spdy "^3.4.1"
+ strip-ansi "^3.0.0"
+ supports-color "^5.1.0"
+ webpack-dev-middleware "1.12.2"
+ yargs "6.6.0"
+
+webpack-manifest-plugin@1.3.2:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-1.3.2.tgz#5ea8ee5756359ddc1d98814324fe43496349a7d4"
+ integrity sha512-MX60Bv2G83Zks9pi3oLOmRgnPAnwrlMn+lftMrWBm199VQjk46/xgzBi9lPfpZldw2+EI2S+OevuLIaDuxCWRw==
+ dependencies:
+ fs-extra "^0.30.0"
+ lodash ">=3.5 <5"
+
+webpack-sources@^1.0.1:
+ version "1.4.3"
+ resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933"
+ integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==
+ dependencies:
+ source-list-map "^2.0.0"
+ source-map "~0.6.1"
+
+webpack@3.8.1:
+ version "3.8.1"
+ resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.8.1.tgz#b16968a81100abe61608b0153c9159ef8bb2bd83"
+ integrity sha512-5ZXLWWsMqHKFr5y0N3Eo5IIisxeEeRAajNq4mELb/WELOR7srdbQk2N5XiyNy2A/AgvlR3AmeBCZJW8lHrolbw==
+ dependencies:
+ acorn "^5.0.0"
+ acorn-dynamic-import "^2.0.0"
+ ajv "^5.1.5"
+ ajv-keywords "^2.0.0"
+ async "^2.1.2"
+ enhanced-resolve "^3.4.0"
+ escope "^3.6.0"
+ interpret "^1.0.0"
+ json-loader "^0.5.4"
+ json5 "^0.5.1"
+ loader-runner "^2.3.0"
+ loader-utils "^1.1.0"
+ memory-fs "~0.4.1"
+ mkdirp "~0.5.0"
+ node-libs-browser "^2.0.0"
+ source-map "^0.5.3"
+ supports-color "^4.2.1"
+ tapable "^0.2.7"
+ uglifyjs-webpack-plugin "^0.4.6"
+ watchpack "^1.4.0"
+ webpack-sources "^1.0.1"
+ yargs "^8.0.2"
+
+websocket-driver@>=0.5.1:
+ version "0.7.4"
+ resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760"
+ integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==
+ dependencies:
+ http-parser-js ">=0.5.1"
+ safe-buffer ">=5.1.0"
+ websocket-extensions ">=0.1.1"
+
+websocket-extensions@>=0.1.1:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42"
+ integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==
+
+whatwg-encoding@^1.0.1:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0"
+ integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==
+ dependencies:
+ iconv-lite "0.4.24"
+
+whatwg-fetch@2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz#9c84ec2dcf68187ff00bc64e1274b442176e1c84"
+ integrity sha1-nITsLc9oGH/wC8ZOEnS0QhduHIQ=
+
+whatwg-fetch@>=0.10.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.2.0.tgz#8e134f701f0a4ab5fda82626f113e2b647fd16dc"
+ integrity sha512-SdGPoQMMnzVYThUbSrEvqTlkvC1Ux27NehaJ/GUHBfNrh5Mjg+1/uRyFMwVnxO2MrikMWvWAqUGgQOfVU4hT7w==
+
+whatwg-url@^4.3.0:
+ version "4.8.0"
+ resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-4.8.0.tgz#d2981aa9148c1e00a41c5a6131166ab4683bbcc0"
+ integrity sha1-0pgaqRSMHgCkHFphMRZqtGg7vMA=
+ dependencies:
+ tr46 "~0.0.3"
+ webidl-conversions "^3.0.0"
+
+whet.extend@~0.9.9:
+ version "0.9.9"
+ resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1"
+ integrity sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=
+
+which-module@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f"
+ integrity sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=
+
+which-module@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
+ integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=
+
+which@^1.2.12, which@^1.2.14, which@^1.2.9, which@^1.3.0, which@^1.3.1:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
+ integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
+ dependencies:
+ isexe "^2.0.0"
+
+wide-align@^1.1.0:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457"
+ integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==
+ dependencies:
+ string-width "^1.0.2 || 2"
+
+widest-line@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.1.tgz#7438764730ec7ef4381ce4df82fb98a53142a3fc"
+ integrity sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==
+ dependencies:
+ string-width "^2.1.1"
+
+window-size@0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d"
+ integrity sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=
+
+word-wrap@~1.2.3:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
+ integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==
+
+wordwrap@0.0.2:
+ version "0.0.2"
+ resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f"
+ integrity sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=
+
+wordwrap@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
+ integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=
+
+worker-farm@^1.3.1, worker-farm@^1.6.0, worker-farm@^1.7.0:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8"
+ integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==
+ dependencies:
+ errno "~0.1.7"
+
+wrap-ansi@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85"
+ integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=
+ dependencies:
+ string-width "^1.0.1"
+ strip-ansi "^3.0.1"
+
+wrap-ansi@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09"
+ integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==
+ dependencies:
+ ansi-styles "^3.2.0"
+ string-width "^3.0.0"
+ strip-ansi "^5.0.0"
+
+wrappy@1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
+ integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
+
+write-file-atomic@^2.0.0, write-file-atomic@^2.3.0, write-file-atomic@^2.4.3:
+ version "2.4.3"
+ resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481"
+ integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==
+ dependencies:
+ graceful-fs "^4.1.11"
+ imurmurhash "^0.1.4"
+ signal-exit "^3.0.2"
+
+write@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757"
+ integrity sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=
+ dependencies:
+ mkdirp "^0.5.1"
+
+xdg-basedir@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4"
+ integrity sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=
+
+xml-name-validator@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-2.0.1.tgz#4d8b8f1eccd3419aa362061becef515e1e559635"
+ integrity sha1-TYuPHszTQZqjYgYb7O9RXh5VljU=
+
+xtend@^4.0.0, xtend@~4.0.1:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
+ integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
+
+y18n@^3.2.1:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41"
+ integrity sha1-bRX7qITAhnnA136I53WegR4H+kE=
+
+y18n@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b"
+ integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==
+
+yallist@^2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
+ integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=
+
+yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
+ integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
+
+yargs-parser@5.0.0-security.0:
+ version "5.0.0-security.0"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0-security.0.tgz#4ff7271d25f90ac15643b86076a2ab499ec9ee24"
+ integrity sha512-T69y4Ps64LNesYxeYGYPvfoMTt/7y1XtfpIslUeK4um+9Hu7hlGoRtaDLvdXb7+/tfq4opVa2HRY5xGip022rQ==
+ dependencies:
+ camelcase "^3.0.0"
+ object.assign "^4.1.0"
+
+yargs-parser@^15.0.1:
+ version "15.0.1"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-15.0.1.tgz#54786af40b820dcb2fb8025b11b4d659d76323b3"
+ integrity sha512-0OAMV2mAZQrs3FkNpDQcBk1x5HXb8X4twADss4S0Iuk+2dGnLOE/fRHrsYm542GduMveyA77OF4wrNJuanRCWw==
+ dependencies:
+ camelcase "^5.0.0"
+ decamelize "^1.2.0"
+
+yargs-parser@^4.2.0:
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c"
+ integrity sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=
+ dependencies:
+ camelcase "^3.0.0"
+
+yargs-parser@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9"
+ integrity sha1-jQrELxbqVd69MyyvTEA4s+P139k=
+ dependencies:
+ camelcase "^4.1.0"
+
+yargs@6.6.0:
+ version "6.6.0"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208"
+ integrity sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=
+ dependencies:
+ camelcase "^3.0.0"
+ cliui "^3.2.0"
+ decamelize "^1.1.1"
+ get-caller-file "^1.0.1"
+ os-locale "^1.4.0"
+ read-pkg-up "^1.0.1"
+ require-directory "^2.1.1"
+ require-main-filename "^1.0.1"
+ set-blocking "^2.0.0"
+ string-width "^1.0.2"
+ which-module "^1.0.0"
+ y18n "^3.2.1"
+ yargs-parser "^4.2.0"
+
+yargs@^14.2.3:
+ version "14.2.3"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-14.2.3.tgz#1a1c3edced1afb2a2fea33604bc6d1d8d688a414"
+ integrity sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==
+ dependencies:
+ cliui "^5.0.0"
+ decamelize "^1.2.0"
+ find-up "^3.0.0"
+ get-caller-file "^2.0.1"
+ require-directory "^2.1.1"
+ require-main-filename "^2.0.0"
+ set-blocking "^2.0.0"
+ string-width "^3.0.0"
+ which-module "^2.0.0"
+ y18n "^4.0.0"
+ yargs-parser "^15.0.1"
+
+yargs@^7.0.2:
+ version "7.1.1"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.1.tgz#67f0ef52e228d4ee0d6311acede8850f53464df6"
+ integrity sha512-huO4Fr1f9PmiJJdll5kwoS2e4GqzGSsMT3PPMpOwoVkOK8ckqAewMTZyA6LXVQWflleb/Z8oPBEvNsMft0XE+g==
+ dependencies:
+ camelcase "^3.0.0"
+ cliui "^3.2.0"
+ decamelize "^1.1.1"
+ get-caller-file "^1.0.1"
+ os-locale "^1.4.0"
+ read-pkg-up "^1.0.1"
+ require-directory "^2.1.1"
+ require-main-filename "^1.0.1"
+ set-blocking "^2.0.0"
+ string-width "^1.0.2"
+ which-module "^1.0.0"
+ y18n "^3.2.1"
+ yargs-parser "5.0.0-security.0"
+
+yargs@^8.0.2:
+ version "8.0.2"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360"
+ integrity sha1-YpmpBVsc78lp/355wdkY3Osiw2A=
+ dependencies:
+ camelcase "^4.1.0"
+ cliui "^3.2.0"
+ decamelize "^1.1.1"
+ get-caller-file "^1.0.1"
+ os-locale "^2.0.0"
+ read-pkg-up "^2.0.0"
+ require-directory "^2.1.1"
+ require-main-filename "^1.0.1"
+ set-blocking "^2.0.0"
+ string-width "^2.0.0"
+ which-module "^2.0.0"
+ y18n "^3.2.1"
+ yargs-parser "^7.0.0"
+
+yargs@~3.10.0:
+ version "3.10.0"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1"
+ integrity sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=
+ dependencies:
+ camelcase "^1.0.2"
+ cliui "^2.1.0"
+ decamelize "^1.0.0"
+ window-size "0.1.0"
+
+yup@^0.26.3:
+ version "0.26.10"
+ resolved "https://registry.yarnpkg.com/yup/-/yup-0.26.10.tgz#3545839663289038faf25facfc07e11fd67c0cb1"
+ integrity sha512-keuNEbNSnsOTOuGCt3UJW69jDE3O4P+UHAakO7vSeFMnjaitcmlbij/a3oNb9g1Y1KvSKH/7O1R2PQ4m4TRylw==
+ dependencies:
+ "@babel/runtime" "7.0.0"
+ fn-name "~2.0.1"
+ lodash "^4.17.10"
+ property-expr "^1.5.0"
+ synchronous-promise "^2.0.5"
+ toposort "^2.0.2"