yazid138 3 år sedan
incheckning
00d926eed9
100 ändrade filer med 26338 tillägg och 0 borttagningar
  1. 19 0
      .gitignore
  2. 2 0
      .nowignore
  3. 76 0
      components/Charts/Flot.js
  4. 43 0
      components/Charts/Morris.js
  5. 63 0
      components/Charts/chart-flot.scss
  6. 111 0
      components/Common/CardTool.js
  7. 44 0
      components/Common/Now.js
  8. 11 0
      components/Common/PageLoader.js
  9. 38 0
      components/Common/Scrollable.js
  10. 77 0
      components/Common/Sparklines.js
  11. 36 0
      components/Common/Swal.js
  12. 81 0
      components/Common/ToggleFullscreen.js
  13. 47 0
      components/Common/TooltipWrapper.js
  14. 145 0
      components/Common/Translate.js
  15. 28 0
      components/Common/constants.js
  16. 52 0
      components/Extras/calendar.events.js
  17. 270 0
      components/Extras/calendar.view.js
  18. 111 0
      components/Forms/Validator.js
  19. 34 0
      components/Layout/Base.js
  20. 54 0
      components/Layout/BaseHorizontal.js
  21. 11 0
      components/Layout/BasePage.js
  22. 25 0
      components/Layout/ContentWrapper.js
  23. 16 0
      components/Layout/Footer.js
  24. 21 0
      components/Layout/Head.js
  25. 263 0
      components/Layout/Header.js
  26. 259 0
      components/Layout/HeaderHorizontal.js
  27. 51 0
      components/Layout/HeaderSearch.js
  28. 81 0
      components/Layout/Menu.js
  29. 400 0
      components/Layout/Offsidebar.js
  30. 34 0
      components/Layout/SettingsProvider.js
  31. 367 0
      components/Layout/Sidebar.js
  32. 51 0
      components/Layout/SidebarUserBlock.js
  33. 25 0
      components/Layout/ThemesProvider.js
  34. 56 0
      components/Maps/VectorMap.js
  35. 45 0
      components/Maps/vector-map.scss
  36. 63 0
      components/Tables/Datatable.js
  37. 10 0
      keys-note.txt
  38. 24 0
      lib/fetchJson.js
  39. 29 0
      lib/useUser.js
  40. 400 0
      master-asli.json
  41. 51 0
      next.config.js
  42. 6 0
      now.json
  43. 11162 0
      package-lock.json
  44. 112 0
      package.json
  45. 84 0
      pages/_app.js
  46. 25 0
      pages/_error.js
  47. 3 0
      pages/api/profile.js
  48. 57 0
      pages/app/PT-ID.json
  49. 9 0
      pages/app/calendar.js
  50. 411 0
      pages/app/faq.js
  51. 907 0
      pages/app/pelaporan.js
  52. 146 0
      pages/app/pelaporan.new.js
  53. 321 0
      pages/app/pelaporan.search.js
  54. 902 0
      pages/app/pelaporan_bak.js
  55. 264 0
      pages/app/pemeriksaan.js
  56. 146 0
      pages/app/pemeriksaan.new.js
  57. 264 0
      pages/app/penjadwalan.js
  58. 9 0
      pages/app/penjadwalan.todo.js
  59. 1070 0
      pages/app/profile-pt.js
  60. 636 0
      pages/app/profile.wizard.vertical copy.js
  61. 425 0
      pages/app/projectdetails.js
  62. 892 0
      pages/app/projects.js
  63. 887 0
      pages/app/pt.sanksi.js
  64. 636 0
      pages/app/pt.wizard.vertical.js
  65. 285 0
      pages/app/sanksi.js
  66. 431 0
      pages/app/sanksi.proses.js
  67. 737 0
      pages/app/sanksi.proses.wizard.js
  68. 310 0
      pages/app/search.js
  69. 186 0
      pages/app/timeline.dikti.bak
  70. 194 0
      pages/app/timeline.js
  71. 450 0
      pages/app/userlist.js
  72. 21 0
      pages/index.js
  73. 207 0
      pages/login.js
  74. 48 0
      pages/pages/error500.js
  75. 57 0
      pages/pages/lock.js
  76. 22 0
      pages/pages/maintenance.js
  77. 52 0
      pages/pages/notfound.js
  78. 51 0
      pages/pages/recover.js
  79. 175 0
      pages/pages/register.js
  80. 58 0
      pages/singleview.js
  81. 27 0
      pelanggaran-object-post.json
  82. 29 0
      polyfills.js
  83. BIN
      public/static/favicon.ico
  84. BIN
      public/static/img/bg1.jpg
  85. BIN
      public/static/img/bg10.jpg
  86. BIN
      public/static/img/bg2.jpg
  87. BIN
      public/static/img/bg3.jpg
  88. BIN
      public/static/img/bg4.jpg
  89. BIN
      public/static/img/bg5.jpg
  90. BIN
      public/static/img/bg6.jpg
  91. BIN
      public/static/img/bg7.jpg
  92. BIN
      public/static/img/bg8.jpg
  93. BIN
      public/static/img/bg9.jpg
  94. BIN
      public/static/img/dummy-search.png
  95. BIN
      public/static/img/dummy.png
  96. BIN
      public/static/img/lock-bg.jpg
  97. BIN
      public/static/img/logo-inner.png
  98. BIN
      public/static/img/logo-ristekdikti.png
  99. BIN
      public/static/img/logo-single-ori.png
  100. BIN
      public/static/img/logo-single.png

+ 19 - 0
.gitignore

@@ -0,0 +1,19 @@
+# See https://help.github.com/ignore-files/ for more about ignoring files.
+
+# dependencies
+/node_modules
+
+# testing
+/coverage
+
+# production
+/build
+/dist
+/.next
+
+# misc
+.DS_Store
+.env
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*

+ 2 - 0
.nowignore

@@ -0,0 +1,2 @@
+.next
+node_modules

+ 76 - 0
components/Charts/Flot.js

@@ -0,0 +1,76 @@
+import $ from 'jquery';
+import React, { Component } from 'react';
+import PropTypes from 'prop-types';
+import deepEqual from 'deep-equal';
+
+import './chart-flot.scss';
+
+/**
+ * Wrapper component for jquery-flot plugin
+ */
+class FlotChart extends Component {
+    static propTypes = {
+        /** data to display */
+        data: PropTypes.array.isRequired,
+        /** flot options object */
+        options: PropTypes.object.isRequired,
+        /** height of the container element */
+        height: PropTypes.string,
+        /** width of the container element */
+        width: PropTypes.string
+    }
+
+    static defaultProps = {
+        height: null,
+        width: '100%'
+    }
+
+    componentDidMount() {
+
+        // Flot Charts
+        require('flot/jquery.flot.js');
+        require('flot/jquery.flot.categories.js');
+        require('flot/jquery.flot.pie.js');
+        require('flot/jquery.flot.resize.js');
+        require('flot/jquery.flot.time.js');
+        require('jquery.flot.spline/jquery.flot.spline.js');
+        require('jquery.flot.tooltip/js/jquery.flot.tooltip.min.js');
+
+        setTimeout(() => {
+            this.drawChart();
+        }, 100);
+    }
+
+    componentDidUpdate(prevProps) {
+        if (!deepEqual(prevProps.data, this.props.data) || !deepEqual(prevProps.options, this.props.options)) {
+            this.drawChart();
+        }
+    }
+
+    componentWillUnmount() {
+        $(this.flotElement).data('plot').shutdown();
+    }
+
+    drawChart(nextProps) {
+        const data = (nextProps && nextProps.data) || this.props.data;
+        const options = (nextProps && nextProps.options) || this.props.options;
+        $.plot(this.flotElement, data, options);
+    }
+
+    setRef = node => {
+        this.flotElement = node;
+    }
+
+    render() {
+        const style = {
+            height: this.props.height,
+            width: this.props.width
+        };
+
+        return (
+            <div ref={this.setRef} style={style} {...this.props}/>
+        );
+    }
+}
+
+export default FlotChart;

+ 43 - 0
components/Charts/Morris.js

@@ -0,0 +1,43 @@
+/* global Morris */
+import React, { Component } from 'react';
+import PropTypes from 'prop-types';
+
+/**
+ * Wrapper for morris chart plugin
+ */
+class MorrisChart extends Component {
+    static propTypes = {
+        /** id of the container element */
+        id: PropTypes.string.isRequired,
+        /** data to display */
+        data: PropTypes.array.isRequired,
+        /** morris option object */
+        options: PropTypes.object.isRequired,
+        /** chart type */
+        type: PropTypes.oneOf(['Line', 'Area', 'Donut', 'Bar']).isRequired
+    };
+
+    componentDidMount() {
+        // Morris.js
+        require('morris.js.so/morris.js');
+        require('morris.js.so/morris.css');
+
+        window.requestAnimationFrame(() => this.drawChart());
+    }
+
+    drawChart() {
+        const element = { element: this.props.id };
+        const data = { data: this.props.data };
+        this.chart = new Morris[this.props.type]({
+            ...element,
+            ...data,
+            ...this.props.options
+        });
+    }
+
+    render() {
+        return <div id={this.props.id} />;
+    }
+}
+
+export default MorrisChart;

+ 63 - 0
components/Charts/chart-flot.scss

@@ -0,0 +1,63 @@
+/* ========================================================================
+     Component: chart-flot
+ ======================================================================== */
+
+
+.flot-chart {
+    display: block;
+    width: 100%;
+    height: 250px;
+    .legend {
+        >table tr td {
+            padding: 3px;
+        }
+        >table tr td:first-child {
+            padding-left: 3px;
+        }
+        >table tr td:last-child {
+            padding-right: 3px;
+        }
+        >table tr+tr td {
+            padding-top: 0;
+        }
+
+        >div:first-child {
+            border-color: rgba(0, 0, 0, .1) !important;
+        }
+
+        .legendColorBox>div,
+        .legendColorBox>div>div {
+            border-radius: 400px;
+        }
+    }
+}
+
+.flot-chart-content {
+    width: 100%;
+    height: 100%;
+}
+
+// Labels for PIE CHARTS
+.flot-pie-label {
+    padding: 3px 5px;
+    font-size: 10px;
+    text-align: center;
+    color: #fff;
+}
+
+.flot-base {
+    max-width: 100% !important;
+}
+
+// Tooltip style
+// --------------------------------------
+#flotTip {
+    position: relative;
+    padding: 5px;
+    font-size: 12px !important;
+    border-radius: 2px !important;
+    border-color: transparent !important;
+    background-color: rgba(0, 0, 0, .75) !important;
+    color: #f1f1f1;
+    z-index: 5;
+}

+ 111 - 0
components/Common/CardTool.js

@@ -0,0 +1,111 @@
+// Card Tools
+// -----------------------------------
+import React, { Component } from 'react';
+import PropTypes from 'prop-types';
+
+const checkRequiredProps = (props, propName, componentName) => {
+  if (!props.dismiss && !props.refresh) {
+    return new Error(`One of 'dismiss' or 'refresh' is required by '${componentName}' component.`)
+  }
+}
+
+/**
+ * Add action icons to card components to allow
+ * refresh data or remove a card element
+ */
+class CardTool extends Component {
+
+    static propTypes = {
+        /** show the refreshe icon */
+        refresh: checkRequiredProps,
+        /** show the remove icon */
+        dismiss: checkRequiredProps,
+        /** triggers before card is removed */
+        onRemove: PropTypes.func,
+        /** triggers after card was removed */
+        onRemoved: PropTypes.func,
+        /** triggers when user click on refresh button */
+        onRefresh: PropTypes.func,
+        /** name if the icon class to use as spinner */
+        spinner: PropTypes.string
+    }
+
+    static defaultProps = {
+        refresh: false,
+        dismiss: false,
+        onRemove: () => {},
+        onRemoved: () => {},
+        onRefresh: () => {},
+        spinner: 'standard'
+    }
+
+    /**
+     * Helper function to find the closest
+     * ascending .card element
+     */
+    getCardParent(item) {
+        var el = item.parentElement;
+        while (el && !el.classList.contains('card'))
+            el = el.parentElement
+        return el
+    }
+
+    handleDismiss = e => {
+        // find the first parent card
+        const card = this.getCardParent(this.element);
+
+        const destroyCard = () => {
+            // remove card
+            card.parentNode.removeChild(card);
+            // An event to catch when the card has been removed from DOM
+            this.props.onRemoved();
+        }
+
+        const animate = function(item, cb) {
+            if ('onanimationend' in window) { // animation supported
+                item.addEventListener('animationend', cb.bind(this))
+                item.className += ' animated bounceOut'; // requires animate.css
+            } else cb.call(this) // no animation, just remove
+        }
+
+        const confirmRemove = function() {
+            animate(card, function() {
+                destroyCard();
+            })
+        }
+
+        // Trigger the event and finally remove the element
+        this.props.onRemove(card, confirmRemove);
+
+    }
+
+    handleRefresh = e => {
+        const WHIRL_CLASS = 'whirl';
+        const card = this.getCardParent(this.element);
+
+        const showSpinner = function(card, spinner) {
+            card.classList.add(WHIRL_CLASS);
+            spinner.forEach(function(s) { card.classList.add(s) })
+        }
+
+        // method to clear the spinner when done
+        const done = () => { card.classList.remove(WHIRL_CLASS); }
+        // start showing the spinner
+        showSpinner(card, this.props.spinner.split(' '));
+        // event to remove spinner when refres is done
+        this.props.onRefresh(card, done);
+    }
+
+    setRef = node => this.element = node;
+
+    render() {
+        return (
+            <div ref={this.setRef} className="card-tool float-right">
+                { this.props.refresh && <em onClick={this.handleRefresh} className="fas fa-sync"></em> }
+                { this.props.dismiss && <em onClick={this.handleDismiss} className="fa fa-times"></em> }
+            </div>
+        )
+    }
+}
+
+export default CardTool;

+ 44 - 0
components/Common/Now.js

@@ -0,0 +1,44 @@
+import React, { Component } from 'react';
+import PropTypes from 'prop-types';
+import * as moment from 'moment';
+
+/**
+ * Updates every second the content of the element
+ * with the current time formmated
+ */
+export default class Now extends Component {
+
+    static propTypes = {
+        /** string to format current date */
+        format: PropTypes.string.isRequired
+    }
+
+    state = {
+        currentTime: null,
+        format: ''
+    }
+
+    componentDidMount() {
+        this.updateTime();
+        this.interval = setInterval(this.updateTime, 1000);
+    }
+
+    componentWillUnmount() {
+        if(this.interval)
+            clearInterval(this.interval);
+    }
+
+    updateTime = () => {
+        this.setState({
+            currentTime: moment(new Date()).format(this.props.format)
+        })
+    }
+
+    render() {
+        return (
+            <div {...this.props} style={{display: 'inline-block'}}>
+                {this.state.currentTime}
+            </div>
+        )
+    }
+}

+ 11 - 0
components/Common/PageLoader.js

@@ -0,0 +1,11 @@
+import React from 'react';
+
+// See more loading icons here:
+// https://fontawesome.com/how-to-use/on-the-web/styling/animating-icons
+const PageLoader = () => (
+    <div className="page-loader">
+        <em className="fas fa-circle-notch fa-spin fa-2x text-muted"></em>
+    </div>
+)
+
+export default PageLoader;

+ 38 - 0
components/Common/Scrollable.js

@@ -0,0 +1,38 @@
+// SLIMSCROLL
+// -----------------------------------
+import React, { Component } from 'react';
+import PropTypes from 'prop-types';
+// Perfect Scrollbar
+import PerfectScrollbar from 'react-perfect-scrollbar';
+import 'react-perfect-scrollbar/dist/css/styles.css';
+
+// ensure rails are shown over the rest
+const fixRailsZIndex = '.ps__rail-y, ps__rail-x {z-index: 999999; }';
+
+const Scrollable = props => {
+    const scrollStyle = {
+        position: 'relative'
+    };
+    if (props.height !== null) {
+        scrollStyle.height = props.height;
+    }
+    return (
+        <>
+            <style>{fixRailsZIndex}</style>
+            <PerfectScrollbar {...props} style={scrollStyle}>
+                {props.children}
+            </PerfectScrollbar>
+        </>
+    );
+};
+
+Scrollable.propTypes = {
+    /** height of the element */
+    height: PropTypes.string
+};
+
+Scrollable.defaultProps = {
+    height: '250px'
+};
+
+export default Scrollable;

+ 77 - 0
components/Common/Sparklines.js

@@ -0,0 +1,77 @@
+// SPARKLINE
+// -----------------------------------
+import React, { Component } from 'react';
+import PropTypes from 'prop-types';
+import $ from 'jquery';
+
+const RESIZE_EVENT = 'resize.sparkline';
+
+/**
+ * Wrapper for for jquery-sparkline plugin
+ */
+export default class Sparkline extends Component {
+
+    static propTypes = {
+        /** sparkline options object */
+        options: PropTypes.object.isRequired,
+        /** tag to use, defaults to div */
+        tag: PropTypes.string,
+        /** values to display, allows array or csv string */
+        values: PropTypes.oneOfType([
+            PropTypes.string.isRequired,
+            PropTypes.array.isRequired
+        ])
+    }
+
+    static defaultProps = {
+        options: {},
+        tag: 'div'
+    }
+
+    state = {
+        values: this.props.values,
+        options: this.props.options
+    }
+
+    normalizeParams() {
+        let { options, values } = this.state;
+
+        options.disableHiddenCheck = true; // allow draw when initially is not visible
+        options.type = options.type || 'bar'; // default chart is bar
+        values = Array.isArray(values) ? values : values.split(','); // support array of csv strings
+
+        this.setState({ options, values });
+    }
+
+    componentDidMount() {
+        this.normalizeParams();
+        // Sparklines
+        require('jquery-sparkline/jquery.sparkline.min.js');
+
+        // init sparkline
+        $(this.element).sparkline(this.state.values, this.state.options);
+
+        // allow responsive
+        if (this.state.options.resize) {
+            $(window).on(RESIZE_EVENT, () => {
+                $(this.element).sparkline(this.state.values, this.state.options);
+            });
+        }
+    }
+
+    componentWillUnmount() {
+        $(window).off(RESIZE_EVENT);
+        $(this.element).sparkline('destroy');
+    }
+
+    setRef = node => {
+        this.element = node;
+    }
+
+    render() {
+        const {tag:Tag} = this.props;
+        return (
+            <Tag ref={this.setRef} {...this.props}></Tag>
+        )
+    }
+}

+ 36 - 0
components/Common/Swal.js

@@ -0,0 +1,36 @@
+import React from 'react';
+import PropTypes from 'prop-types';
+// Sweet Alert
+import swal from 'sweetalert';
+
+/**
+ * Wrapper component for sweetalert plugin
+ */
+const Swal = props => {
+
+    const handleClick = e => {
+        e.preventDefault();
+        // pass swal reference so is possible to chain popups
+        swal(props.options).then(p => props.callback(p, swal));
+    }
+
+    const { callback, ...rest } = props;
+    return (
+        <div {...rest} onClick={handleClick}>
+            {props.children}
+        </div>
+    )
+}
+
+Swal.propType = {
+    /** swal options object */
+    options: PropTypes.object.isRequired,
+    /** callback function for swal response */
+    callback: PropTypes.func
+}
+
+Swal.defaultProps = {
+    callback: () => {}
+}
+
+export default Swal;

+ 81 - 0
components/Common/ToggleFullscreen.js

@@ -0,0 +1,81 @@
+// FULLSCREEN
+// -----------------------------------
+import React, { Component } from 'react';
+import PropTypes from 'prop-types';
+import screenfull from 'screenfull';
+
+const FULLSCREEN_ON_ICON = 'fa fa-expand';
+const FULLSCREEN_OFF_ICON = 'fa fa-compress';
+
+/**
+ * Wrapper for screenfull plugin
+ * Wraps child element and toggles
+ * fullscreen mode on click
+ */
+export default class ToggleFullscreen extends Component {
+    static propTypes = {
+        /** tag to use, defaults to A */
+        tag: PropTypes.string
+    };
+
+    static defaultProps = {
+        tag: 'a'
+    };
+
+    state = {
+        iconClass: FULLSCREEN_ON_ICON
+    };
+
+    componentDidMount() {
+        this.fsToggler = this.element;
+
+        // Not supported under IE
+        const ua = window.navigator.userAgent;
+        if (ua.indexOf('MSIE ') > 0 || !!ua.match(/Trident.*rv:11\./)) {
+            this.fsToggler.style.display = 'none';
+            return; // and abort
+        }
+
+        this.fsToggler.addEventListener('click', this.handleClisk);
+
+        if (screenfull.raw && screenfull.raw.fullscreenchange)
+            document.addEventListener(screenfull.raw.fullscreenchange, this.toggleFSIcon);
+    }
+
+    handleClisk = e => {
+        e.preventDefault();
+
+        if (screenfull.enabled) {
+            screenfull.toggle();
+
+            // Switch icon indicator
+            this.toggleFSIcon();
+        } else {
+            console.log('Fullscreen not enabled');
+        }
+    };
+
+    toggleFSIcon = () => {
+        this.setState({
+            iconClass: screenfull.isFullscreen ? FULLSCREEN_OFF_ICON : FULLSCREEN_ON_ICON
+        });
+    };
+
+    componentWillUnmount() {
+        this.fsToggler.removeEventListener('click', this.handleClisk);
+        document.removeEventListener(screenfull.raw.fullscreenchange, this.toggleFSIcon);
+    }
+
+    setRef = node => {
+        this.element = node;
+    };
+
+    render() {
+        const { tag: Tag } = this.props;
+        return (
+            <Tag ref={this.setRef} {...this.props}>
+                <em className={this.state.iconClass} />
+            </Tag>
+        );
+    }
+}

+ 47 - 0
components/Common/TooltipWrapper.js

@@ -0,0 +1,47 @@
+import React, { Component } from 'react';
+import { Tooltip } from 'reactstrap';
+
+// track id generation
+let idCounter = 0;
+// return unique id number
+const UUID = () => idCounter++;
+// reset to sync client/server rendering
+export const resetUUID = () => idCounter = 0;
+
+/**
+ * Wrap an element and assign automatically an ID,
+ * creates a handler to show/hide tooltips without
+ * the hassle of creating new states and class methods.
+ * Support only one child and simple text content.
+ */
+
+class TooltipWrapper extends Component {
+    // static propTypes { content: PropTypes.string }
+    state = {
+        _id: 'id4tooltip_' + UUID(),
+        tooltipOpen: false
+    };
+    toggle = e => {
+        this.setState({ tooltipOpen: !this.state.tooltipOpen });
+    };
+    render() {
+        return [
+            <Tooltip
+                {...this.props}
+                isOpen={this.state.tooltipOpen}
+                toggle={this.toggle}
+                target={this.state._id}
+                placement={this.props.placement}
+                key="1"
+            >
+                {this.props.content}
+            </Tooltip>,
+            React.cloneElement(React.Children.only(this.props.children), {
+                id: this.state._id,
+                key: '2'
+            })
+        ];
+    }
+}
+
+export default TooltipWrapper;

+ 145 - 0
components/Common/Translate.js

@@ -0,0 +1,145 @@
+import React, { useContext, useState } from 'react';
+import PropTypes from 'prop-types';
+
+const DEFAULT_LANGUAGE = 'en';
+const LANGUAGES_PATH = 'static/locales';
+const LANGUAGES_FILE = 'translations.json';
+const VARIABLE_REGEX = /\{([^}]+)\}/g;
+
+export const store = {
+    /* dictionaries */
+};
+
+/**
+ * Set a dictionary for a specific language
+ * @param  {String} lang language
+ * @param  {Object} data dictionary
+ * @return {Object}      dictionary added
+ */
+export const setDict = (lang, data) => (store[lang] = data);
+
+/**
+ * Get a dictionary for specific language
+ * @param  {String} lang language
+ * @return {Object}      dictionary
+ */
+export const getDict = lang => store[lang];
+
+/**
+ * Fetch a dictionary for specific language defined in JSON format
+ * @param  {Strong} lang language
+ * @return {Object}      dictionary loaded
+ */
+export const fetchStore = async lang => {
+    if (!store[lang]) {
+        const res = await fetch(`/${LANGUAGES_PATH}/${lang}/${LANGUAGES_FILE}`);
+        store[lang] = await res.json();
+    }
+    return store[lang];
+};
+
+/**
+ * Interpolates values given in 'params'
+ * @param  {String} str    text
+ * @param  {Object} params object to interpolate
+ * @return {String}
+ */
+const compile = (str = '', params) => {
+    const matches = str.match(VARIABLE_REGEX);
+    if (matches) {
+        matches
+            .map(v => v.replace(/\{|\}/g, ''))
+            .forEach(v => (str = str.replace('{' + v + '}', params[v])));
+    }
+    return str;
+};
+
+/**
+ * Reads an object value using dot notation for nested keys
+ * @param  {Object} obj  object to parse
+ * @param  {String} skey key to search
+ * @return {String|null}
+ */
+export const accessKey = (obj, skey = '') => skey.split('.').reduce((a, b) => a && a[b], obj);
+
+/**
+ * Returns the translated text for given key and interpolates values in 'params'
+ * @param  {String} key    the key to search for
+ * @param  {String} lang   language
+ * @param  {Object} params object with params to interpolate
+ * @return {[type]}        [description]
+ */
+export const translateKey = (key, lang, params = {}) => compile(accessKey(getDict(lang), key));
+
+// =====================
+// REACT INTERFACE
+// =====================
+
+/**
+ * Context used to handle translation in the component tree
+ */
+const TranslateContext = React.createContext({
+    language: DEFAULT_LANGUAGE,
+    changeLanguage: () => {}
+});
+
+/**
+ * Component provider to pass down context to child components
+ * Must be used to wrap application
+ */
+export class Provider extends React.Component {
+    changeLanguage = language => {
+        fetchStore(language).then(() => {
+            this.setState(state => ({
+                language
+            }));
+        });
+    };
+
+    state = {
+        language: DEFAULT_LANGUAGE,
+        changeLanguage: this.changeLanguage
+    };
+
+    constructor(props) {
+        super(props);
+        if (props.store) {
+            Object.keys(props.store).forEach(l => setDict(l, props.store[l]));
+        }
+    }
+
+    render() {
+        return (
+            <TranslateContext.Provider value={this.state}>
+                {this.props.children}
+            </TranslateContext.Provider>
+        );
+    }
+}
+
+/**
+ * HOC to provide 'changeLanguage' and 't' method to WrappedComponent
+ */
+export function withTranslation(WrappedComponent) {
+    return function TranslatedComponent(props) {
+        const { language, changeLanguage } = useContext(TranslateContext);
+        const t = (k, l, p) => translateKey(k, l || language, p);
+        return <WrappedComponent changeLanguage={changeLanguage} t={t} {...props} />;
+    };
+}
+
+/**
+ * Component to translate a given key
+ * If key is missing, render children without changes
+ */
+export const Trans = props => {
+    const { language } = useContext(TranslateContext);
+    const { i18nKey, lang, params, children } = props;
+    return [translateKey(i18nKey, lang || language, params) || children];
+};
+
+Trans.proptypes = {
+    i18nKey: PropTypes.string.isRequired,
+    lang: PropTypes.string,
+    params: PropTypes.object
+};

+ 28 - 0
components/Common/constants.js

@@ -0,0 +1,28 @@
+// GLOBAL CONSTANTS
+// -----------------------------------
+
+export const APP_COLORS = {
+    'primary':                '#5d9cec',
+    'success':                '#27c24c',
+    'info':                   '#23b7e5',
+    'warning':                '#ff902b',
+    'danger':                 '#f05050',
+    'inverse':                '#131e26',
+    'green':                  '#37bc9b',
+    'pink':                   '#f532e5',
+    'purple':                 '#7266ba',
+    'dark':                   '#3a3f51',
+    'yellow':                 '#fad732',
+    'gray-darker':            '#232735',
+    'gray-dark':              '#3a3f51',
+    'gray':                   '#dde6e9',
+    'gray-light':             '#e4eaec',
+    'gray-lighter':           '#edf1f2'
+};
+
+export const APP_MEDIAQUERY = {
+    'desktopLG':             1200,
+    'desktop':                992,
+    'tablet':                 768,
+    'mobile':                 480
+};

+ 52 - 0
components/Extras/calendar.events.js

@@ -0,0 +1,52 @@
+// Date for the calendar events (dummy data)
+var date = new Date();
+var d = date.getDate(),
+    m = date.getMonth(),
+    y = date.getFullYear();
+
+export default [
+    {
+        title: 'Jadwal Pemeriksaan - BI:88389',
+        start: new Date(y, m, 1),
+        backgroundColor: '#f56954', //red
+        borderColor: '#f56954' //red
+    },
+    {
+        title: 'Jadwal Pemeriksaan - BI:77589',
+        start: new Date(y, m, d - 5),
+        end: new Date(y, m, d - 2),
+        backgroundColor: '#f39c12', //yellow
+        borderColor: '#f39c12' //yellow
+    },
+    {
+        title: 'Jadwal Pemeriksaan - BI:36458',
+        start: new Date(y, m, d, 10, 30),
+        allDay: false,
+        backgroundColor: '#0073b7', //Blue
+        borderColor: '#0073b7' //Blue
+    },
+    {
+        title: 'Jadwal Pemeriksaan - BI:36KLP',
+        start: new Date(y, m, d, 12, 0),
+        end: new Date(y, m, d, 14, 0),
+        allDay: false,
+        backgroundColor: '#00c0ef', //Info (aqua)
+        borderColor: '#00c0ef' //Info (aqua)
+    },
+    {
+        title: 'Jadwal Pemeriksaan - BI:36589',
+        start: new Date(y, m, d + 1, 19, 0),
+        end: new Date(y, m, d + 1, 22, 30),
+        allDay: false,
+        backgroundColor: '#00a65a', //Success (green)
+        borderColor: '#00a65a' //Success (green)
+    },
+    {
+        title: 'Jadwal Pemeriksaan - BI:56989',
+        start: new Date(y, m, 28),
+        end: new Date(y, m, 29),
+        url: '//google.com/',
+        backgroundColor: '#3c8dbc', //Primary (light-blue)
+        borderColor: '#3c8dbc' //Primary (light-blue)
+    }
+];

+ 270 - 0
components/Extras/calendar.view.js

@@ -0,0 +1,270 @@
+import React, { Component } from 'react';
+import ContentWrapper from '@/components/Layout/ContentWrapper';
+import { Card, CardBody, CardHeader, CardTitle } from 'reactstrap';
+
+import FullCalendar from '@fullcalendar/react';
+import dayGridPlugin from '@fullcalendar/daygrid';
+import timeGridPlugin from '@fullcalendar/timegrid';
+import interactionPlugin, { Draggable } from '@fullcalendar/interaction';
+import listPlugin from '@fullcalendar/list';
+import bootstrapPlugin from '@fullcalendar/bootstrap';
+
+import '@fullcalendar/core/main.css';
+import '@fullcalendar/daygrid/main.css';
+import '@fullcalendar/timegrid/main.css';
+import '@fullcalendar/list/main.css';
+import '@fullcalendar/bootstrap/main.css';
+
+import events from './calendar.events';
+
+class Calendar extends Component {
+    calendarEvents = events;
+
+    calendarPlugins = [
+        interactionPlugin,
+        dayGridPlugin,
+        timeGridPlugin,
+        listPlugin,
+        bootstrapPlugin
+    ];
+
+    calendarHeader = {
+        left: 'prev,next today',
+        center: 'title',
+        right: 'dayGridMonth,timeGridWeek,timeGridDay,listWeek'
+    };
+
+    // External events properties
+
+    evColors = [
+        'danger',
+        'primary',
+        'info',
+        'success',
+        'warning',
+        'green',
+        'pink',
+        'inverse',
+        'purple'
+    ];
+
+    state = {
+        selectedEvent: null,
+        evRemoveOnDrop: true,
+        evSelectedColor: this.evColors[0],
+        evNewName: '',
+        _externalEvents: [
+            { color: 'green', name: 'Lunch' },
+            { color: 'danger', name: 'Go home' },
+            { color: 'info', name: 'Do homework' },
+            { color: 'warning', name: 'Work on UI design' },
+            { color: 'inverse', name: 'Sleep tight' }
+        ],
+        externalEvents:[
+            { color: 'info', name: 'Jadwal Pemeriksaan - BI:54678' }
+        ]
+    };
+
+    componentDidMount() {
+        /* initialize the external events */
+        new Draggable(this.refs.externalEventsList, {
+            itemSelector: '.fce-event',
+            eventData: function(eventEl) {
+                return {
+                    title: eventEl.innerText.trim()
+                };
+            }
+        });
+    }
+
+    addRandomEvent() {
+        // add dynamically an event
+        this.addEvent({
+            title: 'Random Event',
+            start: new Date(
+                new Date().getFullYear(),
+                new Date().getMonth(),
+                Math.random() * (30 - 1) + 1
+            ),
+            backgroundColor: '#c594c5', //purple
+            borderColor: '#c594c5' //purple
+        });
+    }
+
+    dayClick = date => {
+        this.setState({
+            selectedEvent: {
+                date: date.dateStr
+            }
+        });
+    };
+
+    // add event directly into calendar
+    addEvent(event) {
+        this.calendarEvents.push(event);
+    }
+
+    handleEventReceive = info => {
+        var styles = getComputedStyle(info.draggedEl);
+        info.event.setProp('backgroundColor', styles.backgroundColor);
+        info.event.setProp('borderColor', styles.borderColor);
+
+        // is the "remove after drop" checkbox checked?
+        if (this.state.evRemoveOnDrop) {
+            this.removeExternalEvent(info.draggedEl.textContent);
+        }
+    };
+
+    getEvColorClasses(evcolor) {
+        return 'bg-' + evcolor + (this.state.evSelectedColor === evcolor ? ' selected' : '');
+    }
+
+    addNewExternalEvent = () => {
+        const externalEvents = this.state.externalEvents.concat({
+            color: this.state.evSelectedColor,
+            name: this.state.evNewName
+        });
+        this.setState({
+            externalEvents
+        });
+    };
+
+    removeExternalEvent = name => {
+        let externalEvents = [...this.state.externalEvents];
+        const index = externalEvents.findIndex(e => e.name === name);
+        if (index > -1) {
+            externalEvents.splice(index, 1);
+            this.setState({
+                externalEvents
+            });
+        }
+    };
+
+    selectColor = color => () => {
+        this.setState({
+            evSelectedColor: color
+        });
+    };
+
+    handleCheck = event => {
+        this.setState({
+            //evRemoveOnDrop: event.target.checked
+            evRemoveOnDrop: true
+        });
+    };
+
+    handleInputName = event => {
+        this.setState({
+            evNewName: event.target.value
+        });
+    };
+
+    render() {
+        const { externalEvents, selectedEvent } = this.state;
+        return (
+            <ContentWrapper>
+                <div className="content-heading">
+                    <div>
+                        Jadwal Pemeriksaan
+                        <small>Format pembuatan jadwal pemeriksaan v.0.1</small>
+                    </div>
+                </div>
+                <div className="calendar-app">
+                    <div className="row">
+                        <div className="col-xl-3 col-lg-4">
+                            <div className="row">
+                                <div className="col-lg-12 col-md-6 col-12">
+                                    {/* START card */}
+                                    <Card className="card-default" title="">
+                                        <CardHeader>
+                                            <CardTitle tag="h4">Draggable Events</CardTitle>
+                                        </CardHeader>
+                                        {/* Default external events list */}
+                                        <CardBody>
+                                            <div className="external-events" ref="externalEventsList">
+                                            {
+                                                externalEvents.map(ev =>
+                                                    <div className={'fce-event bg-' + ev.color} key={ev.name+ev.color}>{ev.name}</div>
+                                                )
+                                            }
+                                            </div>
+                                            {/* <div className="custom-control custom-checkbox mt-3">
+                                                <input className="custom-control-input" id="drop-remove" type="checkbox" onChange={this.handleCheck}/>
+                                                <label className="custom-control-label" htmlFor="drop-remove">Remove after Drop</label>
+                                            </div> */}
+                                        </CardBody>
+                                    </Card>
+                                {/* END card */}
+                                </div>
+                                <div className="col-lg-12 col-md-6 col-12">
+                                    {/* START card */}
+                                    <Card className="card-default">
+                                        <CardHeader>
+                                            <CardTitle tag="h4">Create Event</CardTitle>
+                                        </CardHeader>
+                                        <CardBody>
+                                            <div className="input-group mb-2">
+                                                <input className="form-control" type="text" placeholder="Event name..." onChange={this.handleInputName}/>
+                                                <div className="input-group-btn">
+                                                    <button className="btn btn-secondary" onClick={this.addNewExternalEvent} type="button">Add</button>
+                                                </div>
+                                            </div>
+                                            <p className="text-muted"><small>Choose a Color</small></p>
+                                            <ul className="list-inline" id="external-event-color-selector">
+                                                {
+                                                    this.evColors.map(evc =>
+                                                        <li className="list-inline-item p-0" key={evc}>
+                                                            <div
+                                                                className={"circle circle-xl " + this.getEvColorClasses(evc)}
+                                                                onClick={this.selectColor(evc)}></div>
+                                                        </li>
+                                                    )
+                                                }
+                                            </ul>
+                                        </CardBody>
+                                    </Card>
+                                {/* END card */}
+                                </div>
+                            </div>
+                            <div className="mb-3">
+                                {selectedEvent &&
+                                    <div>
+                                        <p>Selected:</p>
+                                        <div className="box-placeholder">{JSON.stringify(selectedEvent)}</div>
+                                    </div>
+                                }
+                                {!selectedEvent &&
+                                    <div>
+                                        <p>Click calendar to show information</p>
+                                    </div>
+                                }
+                            </div>
+                        </div>
+                        <div className="col-xl-9 col-lg-8">
+                            <Card className="card-default">
+                                <CardBody>
+                                    {/* START calendar */}
+                                    <FullCalendar
+                                        defaultView={this.dayGridMonth}
+                                        plugins={this.calendarPlugins}
+                                        events={this.calendarEvents}
+                                        themeSystem={"bootstrap"}
+                                        header={this.calendarHeader}
+                                        editable={true}
+                                        droppable={true}
+                                        deepChangeDetection={true}
+                                        dateClick={this.dayClick}
+                                        eventReceive={this.handleEventReceive}
+                                        >
+                                    </FullCalendar>
+                                </CardBody>
+                            </Card>
+                        </div>
+                    </div>
+                </div>
+            </ContentWrapper>
+        );
+    }
+}
+
+export default Calendar;

+ 111 - 0
components/Forms/Validator.js

@@ -0,0 +1,111 @@
+// https://github.com/chriso/validator.js
+import validator from 'validator';
+
+/**
+ * Helper methods to validate form inputs
+ * using controlled components
+ */
+const FormValidator = {
+    /**
+     * Validate input element
+     * @param element Dome element of the input
+     * Uses the following attributes
+     *     data-validate: array in json format with validation methods
+     *     data-param: used to provide arguments for certain methods.
+     */
+    validate(element) {
+
+        const isCheckbox = element.type === 'checkbox';
+        const value = isCheckbox ? element.checked : element.value;
+        const name = element.name;
+
+        if (!name) throw new Error('Input name must not be empty.');
+
+        // use getAttribute to support IE10+
+        const param = element.getAttribute('data-param');
+        const validations = JSON.parse(element.getAttribute('data-validate'));
+
+        let result = []
+        if(validations && validations.length) {
+            /*  Result of each validation must be true if the input is invalid
+                and false if valid. */
+            validations.forEach(m => {
+                switch (m) {
+                    case 'required':
+                        result[m] = isCheckbox ? value === false : validator.isEmpty(value)
+                        break;
+                    case 'email':
+                        result[m] = !validator.isEmail(value)
+                        break;
+                    case 'number':
+                        result[m] = !validator.isNumeric(value)
+                        break;
+                    case 'integer':
+                        result[m] = !validator.isInt(value)
+                        break;
+                    case 'alphanum':
+                        result[m] = !validator.isAlphanumeric(value)
+                        break;
+                    case 'url':
+                        result[m] = !validator.isURL(value)
+                        break;
+                    case 'equalto':
+                        // here we expect a valid ID as param
+                        const value2 = document.getElementById(param).value;
+                        result[m] = !validator.equals(value, value2)
+                        break;
+                    case 'minlen':
+                        result[m] = !validator.isLength(value, { min: param })
+                        break;
+                    case 'maxlen':
+                        result[m] = !validator.isLength(value, { max: param })
+                        break;
+                    case 'len':
+                        const [min, max] = JSON.parse(param)
+                        result[m] = !validator.isLength(value, { min, max })
+                        break;
+                    case 'min':
+                        result[m] = !validator.isInt(value, { min: validator.toInt(param) })
+                        break;
+                    case 'max':
+                        result[m] = !validator.isInt(value, { max: validator.toInt(param) })
+                        break;
+                    case 'list':
+                        const list = JSON.parse(param)
+                        result[m] = !validator.isIn(value, list)
+                        break;
+                    default:
+                        throw new Error('Unrecognized validator.');
+                }
+
+            })
+        }
+
+        return result;
+    },
+
+    /**
+     * Bulk validation of input elements.
+     * Used with form elements collection.
+     * @param  {Array} inputs Array for DOM element
+     * @return {Object}       Contains array of error and a flag to
+     *                        indicate if there was a validation error
+     */
+    bulkValidate(inputs) {
+        let errors = {},
+            hasError = false;
+
+        inputs.forEach(input => {
+            let result = this.validate(input)
+            errors = { ...errors, [input.name]: result }
+            if (!hasError) hasError = Object.keys(result).some(val => result[val])
+        })
+
+        return {
+            errors,
+            hasError
+        }
+    }
+}
+
+export default FormValidator;

+ 34 - 0
components/Layout/Base.js

@@ -0,0 +1,34 @@
+import React from 'react';
+
+import Head from './Head'
+import Header from './Header'
+import Sidebar from './Sidebar'
+import Offsidebar from './Offsidebar'
+import Footer from './Footer'
+import SettingsProvider from './SettingsProvider'
+import ThemesProvider from './ThemesProvider'
+
+const Base = props => (
+    <ThemesProvider>
+        <SettingsProvider>
+            <div className="wrapper">
+
+                <Head />
+
+                <Header />
+
+                <Sidebar />
+
+                <Offsidebar />
+
+                <section className="section-container">
+                    { props.children }
+                </section>
+
+                <Footer />
+            </div>
+        </SettingsProvider>
+    </ThemesProvider>
+)
+
+export default Base;

+ 54 - 0
components/Layout/BaseHorizontal.js

@@ -0,0 +1,54 @@
+import React, { Component } from 'react';
+import PropTypes from 'prop-types';
+import { connect } from 'react-redux';
+import { bindActionCreators } from 'redux';
+import * as actions from '../../store/actions/actions';
+
+import Head from './Head';
+import HeaderHorizontal from './HeaderHorizontal';
+import Offsidebar from './Offsidebar';
+import Footer from './Footer';
+import SettingsProvider from './SettingsProvider';
+import ThemesProvider from './ThemesProvider';
+
+class BaseHorizontal extends Component {
+    /* Toggle Horizontal layout for demo purposes.
+        Set the 'horizontal' flag using redux in the settingsReducer
+        and remove bwloe methods so it gets rendered on the server
+    */
+    componentWillMount = () => this.props.actions.changeSetting('horizontal', true);
+    componentWillUnmount = () => this.props.actions.changeSetting('horizontal', false);
+
+    render() {
+        return (
+            <ThemesProvider>
+                <SettingsProvider>
+                    <div className="wrapper">
+                        <Head />
+
+                        <HeaderHorizontal />
+
+                        <Offsidebar />
+
+                        <section className="section-container">{this.props.children}</section>
+
+                        <Footer />
+                    </div>
+                </SettingsProvider>
+            </ThemesProvider>
+        );
+    }
+}
+
+BaseHorizontal.propTypes = {
+    actions: PropTypes.object,
+    settings: PropTypes.object
+};
+
+const mapStateToProps = state => ({ settings: state.settings });
+const mapDispatchToProps = dispatch => ({ actions: bindActionCreators(actions, dispatch) });
+
+export default connect(
+    mapStateToProps,
+    mapDispatchToProps
+)(BaseHorizontal);

+ 11 - 0
components/Layout/BasePage.js

@@ -0,0 +1,11 @@
+import React from 'react';
+import Head from './Head';
+
+const BasePage = props => (
+    <>
+        <Head />
+        <div className="wrapper">{props.children}</div>
+    </>
+);
+
+export default BasePage;

+ 25 - 0
components/Layout/ContentWrapper.js

@@ -0,0 +1,25 @@
+import React from 'react';
+import PropTypes from 'prop-types';
+
+/**
+ * Wrapper element for template content
+ */
+const ContentWrapper = props =>(
+    <div className="content-wrapper">
+        {props.unwrap ?
+            (<div className="unwrap">{props.children}</div>)
+            :
+            (props.children)
+        }
+    </div>
+)
+
+ContentWrapper.propTypes = {
+    /** add element with 'unwrap' class to expand content area */
+    unwrap: PropTypes.bool
+}
+ContentWrapper.defaultProps = {
+    unwrap: false
+}
+
+export default ContentWrapper;

+ 16 - 0
components/Layout/Footer.js

@@ -0,0 +1,16 @@
+import React, { Component } from 'react';
+
+class Footer extends Component {
+
+    render() {
+        const year = new Date().getFullYear()
+        return (
+            <footer className="footer-container">
+                <span>&copy; {year}</span>
+            </footer>
+        );
+    }
+
+}
+
+export default Footer;

+ 21 - 0
components/Layout/Head.js

@@ -0,0 +1,21 @@
+import React from 'react';
+import NextHead from 'next/head';
+import PropTypes from 'prop-types';
+
+const defaultDescription = '';
+
+const Head = props => (
+    <NextHead>
+        <meta charSet="UTF-8" />
+        <title>PTB-Ristekdikti</title>
+        <meta name="description" content={props.description || defaultDescription} />
+        <meta name="viewport" content="width=device-width, initial-scale=1" />
+        <link rel="icon" href="/static/favicon.ico" />
+    </NextHead>
+);
+
+Head.propTypes = {
+    description: PropTypes.string
+};
+
+export default Head;

+ 263 - 0
components/Layout/Header.js

@@ -0,0 +1,263 @@
+import React, { Component } from 'react';
+import PropTypes from 'prop-types';
+import Link from 'next/link';
+import {
+    UncontrolledDropdown,
+    DropdownToggle,
+    DropdownMenu,
+    DropdownItem,
+    ListGroup,
+    ListGroupItem
+} from 'reactstrap';
+
+import { connect } from 'react-redux';
+import { bindActionCreators } from 'redux';
+import * as actions from '../../store/actions/actions';
+
+import ToggleFullscreen from '../Common/ToggleFullscreen';
+import HeaderSearch from './HeaderSearch';
+
+class Header extends Component {
+    state = {
+        navSearchOpen: false
+    };
+
+    toggleNavSearch = e => {
+        e.preventDefault();
+        this.setState({
+            navSearchOpen: !this.state.navSearchOpen
+        });
+    };
+
+    closeNavSearch = e => {
+        e.preventDefault();
+        this.setState({
+            navSearchOpen: false
+        });
+    };
+
+    toggleUserblock = e => {
+        e.preventDefault();
+        this.props.actions.toggleSetting('showUserBlock');
+    };
+
+    toggleOffsidebar = e => {
+        e.preventDefault();
+        this.props.actions.toggleSetting('offsidebarOpen');
+    };
+
+    toggleCollapsed = e => {
+        e.preventDefault();
+        this.props.actions.toggleSetting('isCollapsed');
+        this.resize();
+    };
+
+    toggleAside = e => {
+        e.preventDefault();
+        this.props.actions.toggleSetting('asideToggled');
+    };
+
+    resize() {
+        // all IE friendly dispatchEvent
+        var evt = document.createEvent('UIEvents');
+        evt.initUIEvent('resize', true, false, window, 0);
+        window.dispatchEvent(evt);
+        // modern dispatchEvent way
+        // window.dispatchEvent(new Event('resize'));
+    }
+
+    render() {
+        return (
+            <header className="topnavbar-wrapper">
+                {/* START Top Navbar */}
+                <nav className="navbar topnavbar">
+                    {/* START navbar header */}
+                    <div className="navbar-header">
+                        <a className="navbar-brand" href="#/">
+                            <div className="brand-logo">
+                                {/* <img
+                                    className="img-fluid"
+                                    src="/static/img/logo-inner.png"
+                                    alt="App Logo"
+                                /> */}
+                            </div>
+                            <div className="brand-logo-collapsed">
+                                <img
+                                    className="img-fluid"
+                                    src="/static/img/logo-single.png"
+                                    alt="App Logo"
+                                />
+                            </div>
+                        </a>
+                    </div>
+                    {/* END navbar header */}
+
+                    {/* START Left navbar */}
+                    <ul className="navbar-nav mr-auto flex-row">
+                        <li className="nav-item">
+                            {/* Button used to collapse the left sidebar. Only visible on tablet and desktops */}
+                            <a
+                                href=""
+                                className="nav-link d-none d-md-block d-lg-block d-xl-block"
+                                onClick={this.toggleCollapsed}
+                            >
+                                <em className="fas fa-bars" />
+                            </a>
+                            {/* Button to show/hide the sidebar on mobile. Visible on mobile only. */}
+                            <a
+                                href=""
+                                className="nav-link sidebar-toggle d-md-none"
+                                onClick={this.toggleAside}
+                            >
+                                <em className="fas fa-bars" />
+                            </a>
+                        </li>
+                        {/* START User avatar toggle */}
+                        <li className="nav-item d-none d-md-block">
+                            <a className="nav-link" onClick={this.toggleUserblock}>
+                                <em className="icon-user" />
+                            </a>
+                        </li>
+                        {/* END User avatar toggle */}
+                        {/* START lock screen */}
+                        <li className="nav-item d-none d-md-block">
+                            <Link href="/pages/lock" as="/lock">
+                                <a title="Lock screen" className="nav-link">
+                                    <em className="icon-lock" />
+                                </a>
+                            </Link>
+                        </li>
+                        {/* END lock screen */}
+                    </ul>
+                    {/* END Left navbar */}
+                    {/* START Right Navbar */}
+                    <ul className="navbar-nav flex-row">
+                        {/* Search icon */}
+                        <li className="nav-item">
+                            <a className="nav-link" href="" onClick={this.toggleNavSearch}>
+                                <em className="icon-magnifier" />
+                            </a>
+                        </li>
+                        {/* Fullscreen (only desktops) */}
+                        <li className="nav-item d-none d-md-block">
+                            <ToggleFullscreen className="nav-link" />
+                        </li>
+                        {/* START Alert menu */}
+                        <UncontrolledDropdown nav inNavbar className="dropdown-list">
+                            <DropdownToggle nav className="dropdown-toggle-nocaret">
+                                <em className="icon-bell" />
+                                <span className="badge badge-danger">11</span>
+                            </DropdownToggle>
+                            {/* START Dropdown menu */}
+                            <DropdownMenu right className="dropdown-menu-right animated flipInX">
+                                <DropdownItem>
+                                    {/* START list group */}
+                                    <ListGroup>
+                                        <ListGroupItem
+                                            action
+                                            tag="a"
+                                            href=""
+                                            onClick={e => e.preventDefault()}
+                                        >
+                                            <div className="media">
+                                                <div className="align-self-start mr-2">
+                                                    <em className="fab fa-twitter fa-2x text-info" />
+                                                </div>
+                                                <div className="media-body">
+                                                    <p className="m-0">New followers</p>
+                                                    <p className="m-0 text-muted text-sm">
+                                                        1 new follower
+                                                    </p>
+                                                </div>
+                                            </div>
+                                        </ListGroupItem>
+                                        <ListGroupItem
+                                            action
+                                            tag="a"
+                                            href=""
+                                            onClick={e => e.preventDefault()}
+                                        >
+                                            <div className="media">
+                                                <div className="align-self-start mr-2">
+                                                    <em className="fa fa-envelope fa-2x text-warning" />
+                                                </div>
+                                                <div className="media-body">
+                                                    <p className="m-0">New e-mails</p>
+                                                    <p className="m-0 text-muted text-sm">
+                                                        You have 10 new emails
+                                                    </p>
+                                                </div>
+                                            </div>
+                                        </ListGroupItem>
+                                        <ListGroupItem
+                                            action
+                                            tag="a"
+                                            href=""
+                                            onClick={e => e.preventDefault()}
+                                        >
+                                            <div className="media">
+                                                <div className="align-self-start mr-2">
+                                                    <em className="fa fa-tasks fa-2x text-success" />
+                                                </div>
+                                                <div className="media-body">
+                                                    <p className="m-0">Pending Tasks</p>
+                                                    <p className="m-0 text-muted text-sm">
+                                                        11 pending task
+                                                    </p>
+                                                </div>
+                                            </div>
+                                        </ListGroupItem>
+                                        <ListGroupItem
+                                            action
+                                            tag="a"
+                                            href=""
+                                            onClick={e => e.preventDefault()}
+                                        >
+                                            <span className="d-flex align-items-center">
+                                                <span className="text-sm">More notifications</span>
+                                                <span className="badge badge-danger ml-auto">
+                                                    14
+                                                </span>
+                                            </span>
+                                        </ListGroupItem>
+                                    </ListGroup>
+                                    {/* END list group */}
+                                </DropdownItem>
+                            </DropdownMenu>
+                            {/* END Dropdown menu */}
+                        </UncontrolledDropdown>
+                        {/* END Alert menu */}
+                        {/* START Offsidebar button */}
+                        <li className="nav-item">
+                            <a className="nav-link" href="" onClick={this.toggleOffsidebar}>
+                                <em className="icon-notebook" />
+                            </a>
+                        </li>
+                        {/* END Offsidebar menu */}
+                    </ul>
+                    {/* END Right Navbar */}
+
+                    {/* START Search form */}
+                    <HeaderSearch isOpen={this.state.navSearchOpen} onClose={this.closeNavSearch} />
+                    {/* END Search form */}
+                </nav>
+                {/* END Top Navbar */}
+            </header>
+        );
+    }
+}
+
+Header.propTypes = {
+    actions: PropTypes.object,
+    settings: PropTypes.object
+};
+
+const mapStateToProps = state => ({ settings: state.settings });
+const mapDispatchToProps = dispatch => ({
+    actions: bindActionCreators(actions, dispatch)
+});
+
+export default connect(
+    mapStateToProps,
+    mapDispatchToProps
+)(Header);

+ 259 - 0
components/Layout/HeaderHorizontal.js

@@ -0,0 +1,259 @@
+import React, { Component } from 'react';
+import PropTypes from 'prop-types';
+import Link from 'next/link';
+import {
+    UncontrolledDropdown,
+    DropdownToggle,
+    DropdownMenu,
+    DropdownItem,
+    ListGroup,
+    ListGroupItem,
+    Nav,
+    Collapse,
+    NavItem,
+    NavLink,
+    NavbarToggler
+} from 'reactstrap';
+
+import { connect } from 'react-redux';
+import { bindActionCreators } from 'redux';
+import * as actions from '../../store/actions/actions';
+
+import ToggleFullscreen from '../Common/ToggleFullscreen';
+import HeaderSearch from './HeaderSearch';
+
+import Menu from './Menu.js';
+
+class HeaderHorizontal extends Component {
+    state = {
+        navSearchOpen: false,
+        isOpen: false
+    };
+
+    toggleNavSearch = e => {
+        e.preventDefault();
+        this.setState({
+            navSearchOpen: !this.state.navSearchOpen
+        });
+    };
+
+    closeNavSearch = e => {
+        e.preventDefault();
+        this.setState({
+            navSearchOpen: false
+        });
+    };
+
+    toggle = () => {
+        this.setState({
+            isOpen: !this.state.isOpen
+        });
+    };
+
+    toggleOffsidebar = e => {
+        e.preventDefault();
+        this.props.actions.toggleSetting('offsidebarOpen');
+    };
+
+    /** map menu config to string to determine which element to render */
+    itemType = item => {
+        if (item.heading) return 'heading';
+        if (!item.submenu) return 'menu';
+        if (item.submenu) return 'submenu';
+    };
+
+    render() {
+        return (
+            <header className="topnavbar-wrapper">
+                {/* START Top Navbar */}
+                <nav className="navbar topnavbar navbar-expand-lg navbar-light">
+                    {/* START navbar header */}
+                    <div className="navbar-header">
+                        <a className="navbar-brand" href="#/">
+                            <div className="brand-logo">
+                                {/* <img
+                                    className="img-fluid"
+                                    src="/static/img/logo-inner.png"
+                                    alt="App Logo"
+                                /> */}
+                            </div>
+                            <div className="brand-logo-collapsed">
+                                <img
+                                    className="img-fluid"
+                                    src="/static/img/logo-single.png"
+                                    alt="App Logo"
+                                />
+                            </div>
+                        </a>
+                        <NavbarToggler onClick={this.toggle} />
+                    </div>
+                    {/* END navbar header */}
+                    {/* START Nav wrapper */}
+                    <Collapse isOpen={this.state.isOpen} navbar>
+                        <Nav navbar className="mr-auto flex-column flex-lg-row">
+                            {Menu.map((item, i) => {
+                                if (this.itemType(item) === 'menu') {
+                                    return (
+                                        <NavItem key={i}>
+                                            <Link href={item.path}>
+                                                <NavLink>{item.name}</NavLink>
+                                            </Link>
+                                        </NavItem>
+                                    );
+                                }
+                                if (this.itemType(item) === 'submenu') {
+                                    return (
+                                        <UncontrolledDropdown nav inNavbar key={i}>
+                                            <DropdownToggle nav>{item.name}</DropdownToggle>
+                                            <DropdownMenu className="animated fadeIn">
+                                                {item.submenu.map((sitem, si) => {
+                                                    return (
+                                                        <Link href={sitem.path} key={si}>
+                                                            <DropdownItem>
+                                                                {sitem.name}
+                                                            </DropdownItem>
+                                                        </Link>
+                                                    );
+                                                })}
+                                            </DropdownMenu>
+                                        </UncontrolledDropdown>
+                                    );
+                                }
+                            })}
+                            {/* END Left navbar */}
+                        </Nav>
+                        <Nav className="flex-row" navbar>
+                            {/* Search icon */}
+                            <NavItem>
+                                <NavLink onClick={this.toggleNavSearch}>
+                                    <em className="icon-magnifier" />
+                                </NavLink>
+                            </NavItem>
+                            {/* Fullscreen (only desktops) */}
+                            <NavItem className="d-none d-md-block">
+                                <ToggleFullscreen className="nav-link" />
+                            </NavItem>
+                            {/* START Alert menu */}
+                            <UncontrolledDropdown nav inNavbar className="dropdown-list">
+                                <DropdownToggle nav className="dropdown-toggle-nocaret">
+                                    <em className="icon-bell" />
+                                    <span className="badge badge-danger">11</span>
+                                </DropdownToggle>
+                                {/* START Dropdown menu */}
+                                <DropdownMenu
+                                    right
+                                    className="dropdown-menu-right animated flipInX"
+                                >
+                                    <DropdownItem>
+                                        {/* START list group */}
+                                        <ListGroup>
+                                            <ListGroupItem
+                                                action
+                                                tag="a"
+                                                href=""
+                                                onClick={e => e.preventDefault()}
+                                            >
+                                                <div className="media">
+                                                    <div className="align-self-start mr-2">
+                                                        <em className="fab fa-twitter fa-2x text-info" />
+                                                    </div>
+                                                    <div className="media-body">
+                                                        <p className="m-0">New followers</p>
+                                                        <p className="m-0 text-muted text-sm">
+                                                            1 new follower
+                                                        </p>
+                                                    </div>
+                                                </div>
+                                            </ListGroupItem>
+                                            <ListGroupItem
+                                                action
+                                                tag="a"
+                                                href=""
+                                                onClick={e => e.preventDefault()}
+                                            >
+                                                <div className="media">
+                                                    <div className="align-self-start mr-2">
+                                                        <em className="fa fa-envelope fa-2x text-warning" />
+                                                    </div>
+                                                    <div className="media-body">
+                                                        <p className="m-0">New e-mails</p>
+                                                        <p className="m-0 text-muted text-sm">
+                                                            You have 10 new emails
+                                                        </p>
+                                                    </div>
+                                                </div>
+                                            </ListGroupItem>
+                                            <ListGroupItem
+                                                action
+                                                tag="a"
+                                                href=""
+                                                onClick={e => e.preventDefault()}
+                                            >
+                                                <div className="media">
+                                                    <div className="align-self-start mr-2">
+                                                        <em className="fa fa-tasks fa-2x text-success" />
+                                                    </div>
+                                                    <div className="media-body">
+                                                        <p className="m-0">Pending Tasks</p>
+                                                        <p className="m-0 text-muted text-sm">
+                                                            11 pending task
+                                                        </p>
+                                                    </div>
+                                                </div>
+                                            </ListGroupItem>
+                                            <ListGroupItem
+                                                action
+                                                tag="a"
+                                                href=""
+                                                onClick={e => e.preventDefault()}
+                                            >
+                                                <span className="d-flex align-items-center">
+                                                    <span className="text-sm">
+                                                        More notifications
+                                                    </span>
+                                                    <span className="badge badge-danger ml-auto">
+                                                        14
+                                                    </span>
+                                                </span>
+                                            </ListGroupItem>
+                                        </ListGroup>
+                                        {/* END list group */}
+                                    </DropdownItem>
+                                </DropdownMenu>
+                                {/* END Dropdown menu */}
+                            </UncontrolledDropdown>
+                            {/* END Alert menu */}
+                            {/* START Offsidebar button */}
+                            <NavItem>
+                                <NavLink href="" onClick={this.toggleOffsidebar}>
+                                    <em className="icon-notebook" />
+                                </NavLink>
+                            </NavItem>
+                            {/* END Offsidebar menu */}
+                        </Nav>
+                    </Collapse>
+                    {/* END Nav wrapper */}
+                    {/* START Search form */}
+                    <HeaderSearch isOpen={this.state.navSearchOpen} onClose={this.closeNavSearch} />
+                    {/* END Search form */}
+                </nav>
+                {/* END Top Navbar */}
+            </header>
+        );
+    }
+}
+
+HeaderHorizontal.propTypes = {
+    actions: PropTypes.object,
+    settings: PropTypes.object
+};
+
+const mapStateToProps = state => ({ settings: state.settings });
+const mapDispatchToProps = dispatch => ({
+    actions: bindActionCreators(actions, dispatch)
+});
+
+export default connect(
+    mapStateToProps,
+    mapDispatchToProps
+)(HeaderHorizontal);

+ 51 - 0
components/Layout/HeaderSearch.js

@@ -0,0 +1,51 @@
+import React, { Component } from 'react';
+import PropTypes from 'prop-types';
+
+class HeaderSearch extends Component {
+    componentDidMount() {
+        document.addEventListener('keydown', this.closeNavSearchKey);
+    }
+
+    componentWillUnmount() {
+        document.removeEventListener('keydown', this.closeNavSearchKey);
+    }
+
+    setInputSearch = isOpen => input => {
+        if (input) input[isOpen ? 'focus' : 'blur']();
+    };
+
+    closeNavSearchKey = e => {
+        if (e.keyCode === 27) this.props.onClose(e);
+    };
+
+    render() {
+        const { isOpen, onClose } = this.props;
+        return (
+            <form
+                className={'navbar-form ' + (isOpen ? 'open' : '')}
+                role="search"
+                action="search.html"
+            >
+                <div className="form-group">
+                    <input
+                        ref={this.setInputSearch(isOpen)}
+                        className="form-control"
+                        type="text"
+                        placeholder="Type and hit enter ..."
+                    />
+                    <div className="fa fa-times navbar-form-close" onClick={onClose} />
+                </div>
+                <button className="d-none" type="submit">
+                    Submit
+                </button>
+            </form>
+        );
+    }
+}
+
+HeaderSearch.propTypes = {
+    isOpen: PropTypes.bool,
+    onClose: PropTypes.func
+};
+
+export default HeaderSearch;

+ 81 - 0
components/Layout/Menu.js

@@ -0,0 +1,81 @@
+const Menu = [
+    {
+        heading: 'Main Navigation',
+        translate: 'sidebar.heading.HEADER'
+    },
+    {
+        name: 'Perbaikan & Keberatan',
+        path: '/app/pt.sanksi',
+        icon : 'icon-grid',
+        translate: 'sidebar.nav.USERVIEW'
+    },
+    {
+        name: 'Login',
+        path: '/login',
+        icon: 'icon-login',
+        translate: 'sidebar.nav.LOGIN'
+    },
+    {
+        name: 'Pelaporan',
+        path: '/app/pelaporan',
+        icon: 'icon-notebook',
+        translate: 'sidebar.nav.PELAPORAN'
+    },
+    {
+        name: 'Penjadwalan Evaluasi',
+        path: '/app/penjadwalan',
+        icon: 'icon-notebook',
+        translate: 'sidebar.nav.PENJADWALAN'
+    },
+    {
+        name: 'Pemeriksaan',
+        path: '/app/pemeriksaan',
+        icon: 'icon-notebook',
+        translate: 'sidebar.nav.PEMERIKSAAN'
+    },
+    {
+        name: 'Sanksi',
+        path: '/app/sanksi',
+        icon: 'icon-notebook',
+        translate: 'sidebar.nav.SANKSI'
+    },
+    // {
+    //     name: 'Project',
+    //     path: '/app/projects',
+    //     icon: 'icon-notebook',
+    //     translate: 'sidebar.nav.PROJECT'
+    // },
+    // {
+    //     name: 'Project Detail',
+    //     path: '/app/projectdetails',
+    //     icon: 'icon-note',
+    //     translate: 'sidebar.nav.PROJECTDETAIL'
+    // },
+    {
+        name: 'Pencarian',
+        path: '/app/search',
+        icon: 'icon-note',
+        translate: 'sidebar.nav.SEARCH'
+    },
+    {
+        name: 'FAQ',
+        path: '/app/faq',
+        //icon: 'icon-notebook',
+        translate: 'sidebar.nav.FAQ'
+    },
+    // {
+    //     name: 'Todo',
+    //     path: '/app/calendar',
+    //     //icon: 'icon-notebook',
+    //     translate: 'sidebar.nav.TODO'
+    // },
+    {
+        name: 'User List',
+        path: '/app/userlist',
+        //icon: 'icon-notebook',
+        translate: 'sidebar.nav.USERLIST'
+    }
+];
+
+export default Menu;
+``

+ 400 - 0
components/Layout/Offsidebar.js

@@ -0,0 +1,400 @@
+import React, { Component } from 'react';
+import PropTypes from 'prop-types';
+
+import { connect } from 'react-redux';
+import { bindActionCreators } from 'redux';
+import * as actions from '../../store/actions/actions';
+
+import { TabContent, TabPane, Nav, NavItem, NavLink } from 'reactstrap';
+
+class Offsidebar extends Component {
+
+    state = {
+        activeTab: 'settings',
+        offsidebarReady: false
+    }
+
+    componentDidMount() {
+        // When mounted display the offsidebar
+        window.requestAnimationFrame(() => this.setState({ offsidebarReady: true }));
+    }
+
+    toggle = tab => {
+        if (this.state.activeTab !== tab) {
+            this.setState({
+                activeTab: tab
+            });
+        }
+    }
+
+    handleSettingCheckbox = event => {
+        this.props.actions.changeSetting(event.target.name, event.target.checked);
+    }
+
+    handleThemeRadio = event => {
+        this.props.actions.changeTheme(event.target.value);
+    }
+
+    render() {
+
+        return (
+            this.state.offsidebarReady &&
+            <aside className="offsidebar">
+                { /* START Off Sidebar (right) */ }
+                <nav>
+                    <div>
+                        { /* Nav tabs */ }
+                        <Nav tabs justified>
+                            <NavItem>
+                                <NavLink className={ this.state.activeTab === 'settings' ? 'active':'' }
+                                    onClick={() => { this.toggle('settings'); }}
+                                >
+                                    <em className="icon-equalizer fa-lg"></em>
+                                </NavLink>
+                            </NavItem>
+                            <NavItem>
+                                <NavLink className={ this.state.activeTab === 'chat' ? 'active':'' }
+                                    onClick={() => { this.toggle('chat'); }}
+                                >
+                                    <em className="icon-user fa-lg"></em>
+                                </NavLink>
+                            </NavItem>
+                        </Nav>
+                        { /* Tab panes */ }
+                        <TabContent activeTab={this.state.activeTab}>
+                            <TabPane tabId="settings">
+                                <h3 className="text-center text-thin mt-4">Settings</h3>
+                                <div className="p-2">
+                                    <h4 className="text-muted text-thin">Themes</h4>
+                                    <div className="row row-flush mb-2">
+                                        <div className="col-3 mb-3">
+                                            <div className="setting-color">
+                                                <label>
+                                                    <input type="radio" name="setting-theme" checked={this.props.theme.name === 'theme-a'}  value='theme-a' onChange={this.handleThemeRadio} />
+                                                    <span className="icon-check"></span>
+                                                    <span className="split">
+                                                        <span className="color bg-info"></span>
+                                                        <span className="color bg-info-light"></span>
+                                                    </span>
+                                                    <span className="color bg-white"></span>
+                                                </label>
+                                            </div>
+                                        </div>
+                                        <div className="col-3 mb-3">
+                                            <div className="setting-color">
+                                                <label>
+                                                    <input type="radio" name="setting-theme" checked={this.props.theme.name === 'theme-b'}  value='theme-b' onChange={this.handleThemeRadio} />
+                                                    <span className="icon-check"></span>
+                                                    <span className="split">
+                                                        <span className="color bg-green"></span>
+                                                        <span className="color bg-green-light"></span>
+                                                    </span>
+                                                    <span className="color bg-white"></span>
+                                                </label>
+                                            </div>
+                                        </div>
+                                        <div className="col-3 mb-3">
+                                            <div className="setting-color">
+                                                <label>
+                                                    <input type="radio" name="setting-theme" checked={this.props.theme.name === 'theme-c'}  value='theme-c' onChange={this.handleThemeRadio} />
+                                                    <span className="icon-check"></span>
+                                                    <span className="split">
+                                                        <span className="color bg-purple"></span>
+                                                        <span className="color bg-purple-light"></span>
+                                                    </span>
+                                                    <span className="color bg-white"></span>
+                                                </label>
+                                            </div>
+                                        </div>
+                                        <div className="col-3 mb-3">
+                                            <div className="setting-color">
+                                                <label>
+                                                    <input type="radio" name="setting-theme" checked={this.props.theme.name === 'theme-d'}  value='theme-d' onChange={this.handleThemeRadio} />
+                                                    <span className="icon-check"></span>
+                                                    <span className="split">
+                                                        <span className="color bg-danger"></span>
+                                                        <span className="color bg-danger-light"></span>
+                                                    </span>
+                                                    <span className="color bg-white"></span>
+                                                </label>
+                                            </div>
+                                        </div>
+                                        <div className="col-3 mb-3">
+                                            <div className="setting-color">
+                                                <label>
+                                                    <input type="radio" name="setting-theme" checked={this.props.theme.name === 'theme-e'}  value='theme-e' onChange={this.handleThemeRadio} />
+                                                    <span className="icon-check"></span>
+                                                    <span className="split">
+                                                        <span className="color bg-info-dark"></span>
+                                                        <span className="color bg-info"></span>
+                                                    </span>
+                                                    <span className="color bg-gray-dark"></span>
+                                                </label>
+                                            </div>
+                                        </div>
+                                        <div className="col-3 mb-3">
+                                            <div className="setting-color">
+                                                <label>
+                                                    <input type="radio" name="setting-theme" checked={this.props.theme.name === 'theme-f'}  value='theme-f' onChange={this.handleThemeRadio} />
+                                                    <span className="icon-check"></span>
+                                                    <span className="split">
+                                                        <span className="color bg-green-dark"></span>
+                                                        <span className="color bg-green"></span>
+                                                    </span>
+                                                    <span className="color bg-gray-dark"></span>
+                                                </label>
+                                            </div>
+                                        </div>
+                                        <div className="col-3 mb-3">
+                                            <div className="setting-color">
+                                                <label>
+                                                    <input type="radio" name="setting-theme" checked={this.props.theme.name === 'theme-g'}  value='theme-g' onChange={this.handleThemeRadio} />
+                                                    <span className="icon-check"></span>
+                                                    <span className="split">
+                                                        <span className="color bg-purple-dark"></span>
+                                                        <span className="color bg-purple"></span>
+                                                    </span>
+                                                    <span className="color bg-gray-dark"></span>
+                                                </label>
+                                            </div>
+                                        </div>
+                                        <div className="col-3 mb-3">
+                                            <div className="setting-color">
+                                                <label>
+                                                    <input type="radio" name="setting-theme" checked={this.props.theme.name === 'theme-h'}  value='theme-h' onChange={this.handleThemeRadio} />
+                                                    <span className="icon-check"></span>
+                                                    <span className="split">
+                                                        <span className="color bg-danger-dark"></span>
+                                                        <span className="color bg-danger"></span>
+                                                    </span>
+                                                    <span className="color bg-gray-dark"></span>
+                                                </label>
+                                            </div>
+                                        </div>
+                                    </div>
+                                </div>
+                                <div className="p-2">
+                                    <h4 className="text-muted text-thin">Layout</h4>
+                                    <div className="clearfix">
+                                        <p className="float-left">Fixed</p>
+                                        <div className="float-right">
+                                            <label className="switch">
+                                                <input id="chk-fixed" type="checkbox" name="isFixed" checked={this.props.settings.isFixed} onChange={this.handleSettingCheckbox}/>
+                                                <span></span>
+                                            </label>
+                                        </div>
+                                    </div>
+                                    <div className="clearfix">
+                                        <p className="float-left">Boxed</p>
+                                        <div className="float-right">
+                                            <label className="switch">
+                                                <input id="chk-boxed" type="checkbox" name="isBoxed" checked={this.props.settings.isBoxed} onChange={this.handleSettingCheckbox}/>
+                                                <span></span>
+                                            </label>
+                                        </div>
+                                    </div>
+                                </div>
+                                <div className="p-2">
+                                    <h4 className="text-muted text-thin">Aside</h4>
+                                    <div className="clearfix">
+                                        <p className="float-left">Collapsed</p>
+                                        <div className="float-right">
+                                            <label className="switch">
+                                                <input id="chk-collapsed" type="checkbox" name="isCollapsed" checked={this.props.settings.isCollapsed} onChange={this.handleSettingCheckbox}/>
+                                                <span></span>
+                                            </label>
+                                        </div>
+                                    </div>
+                                    <div className="clearfix">
+                                        <p className="float-left">Collapsed Text</p>
+                                        <div className="float-right">
+                                            <label className="switch">
+                                                <input id="chk-collapsed-text" type="checkbox" name="isCollapsedText" checked={this.props.settings.isCollapsedText} onChange={this.handleSettingCheckbox}/>
+                                                <span></span>
+                                            </label>
+                                        </div>
+                                    </div>
+                                    <div className="clearfix">
+                                        <p className="float-left">Float</p>
+                                        <div className="float-right">
+                                            <label className="switch">
+                                                <input id="chk-float" type="checkbox" name="isFloat" checked={this.props.settings.isFloat} onChange={this.handleSettingCheckbox}/>
+                                                <span></span>
+                                            </label>
+                                        </div>
+                                    </div>
+                                    <div className="clearfix">
+                                        <p className="float-left">Hover</p>
+                                        <div className="float-right">
+                                            <label className="switch">
+                                                <input id="chk-hover" type="checkbox" name="asideHover" checked={this.props.settings.asideHover} onChange={this.handleSettingCheckbox}/>
+                                                <span></span>
+                                            </label>
+                                        </div>
+                                    </div>
+                                    <div className="clearfix">
+                                        <p className="float-left">Show Scrollbar</p>
+                                        <div className="float-right">
+                                            <label className="switch">
+                                                <input id="chk-scrollbar" type="checkbox" name="asideScrollbar" checked={this.props.settings.asideScrollbar} onChange={this.handleSettingCheckbox}/>
+                                                <span></span>
+                                            </label>
+                                        </div>
+                                    </div>
+                                </div>
+                            </TabPane>
+                            <TabPane tabId="chat">
+                                <h3 className="text-center text-thin mt-4">Connections</h3>
+                                <div className="list-group">
+                                    { /* START list title */ }
+                                    <div className="list-group-item border-0">
+                                        <small className="text-muted">ONLINE</small>
+                                    </div>
+                                    { /* END list title */ }
+                                    <div className="list-group-item list-group-item-action border-0">
+                                        <div className="media">
+                                            <img className="align-self-center mr-3 rounded-circle thumb48" src="/static/img/user/05.jpg" alt="User avatar" />
+                                            <div className="media-body text-truncate">
+                                                <a href="">
+                                                    <strong>Juan Sims</strong>
+                                                </a>
+                                                <br/>
+                                                <small className="text-muted">Designeer</small>
+                                            </div>
+                                            <div className="ml-auto">
+                                                <span className="circle bg-success circle-lg"></span>
+                                            </div>
+                                        </div>
+                                    </div>
+                                    <div className="list-group-item list-group-item-action border-0">
+                                        <div className="media">
+                                            <img className="align-self-center mr-3 rounded-circle thumb48" src="/static/img/user/06.jpg" alt="User avatar" />
+                                            <div className="media-body text-truncate">
+                                                <a href="">
+                                                    <strong>Maureen Jenkins</strong>
+                                                </a>
+                                                <br/>
+                                                <small className="text-muted">Designeer</small>
+                                            </div>
+                                            <div className="ml-auto">
+                                                <span className="circle bg-success circle-lg"></span>
+                                            </div>
+                                        </div>
+                                    </div>
+                                    <div className="list-group-item list-group-item-action border-0">
+                                        <div className="media">
+                                            <img className="align-self-center mr-3 rounded-circle thumb48" src="/static/img/user/07.jpg" alt="User avatar" />
+                                            <div className="media-body text-truncate">
+                                                <a href="">
+                                                    <strong>Billie Dunn</strong>
+                                                </a>
+                                                <br/>
+                                                <small className="text-muted">Designeer</small>
+                                            </div>
+                                            <div className="ml-auto">
+                                                <span className="circle bg-danger circle-lg"></span>
+                                            </div>
+                                        </div>
+                                    </div>
+                                    <div className="list-group-item list-group-item-action border-0">
+                                        <div className="media">
+                                            <img className="align-self-center mr-3 rounded-circle thumb48" src="/static/img/user/08.jpg" alt="User avatar" />
+                                            <div className="media-body text-truncate">
+                                                <a href="">
+                                                    <strong>Tomothy Roberts</strong>
+                                                </a>
+                                                <br/>
+                                                <small className="text-muted">Designeer</small>
+                                            </div>
+                                            <div className="ml-auto">
+                                                <span className="circle bg-warning circle-lg"></span>
+                                            </div>
+                                        </div>
+                                    </div>
+                                    { /* START list title */ }
+                                    <div className="list-group-item border-0">
+                                        <small className="text-muted">OFFLINE</small>
+                                    </div>
+                                    { /* END list title */ }
+                                    <div className="list-group-item list-group-item-action border-0">
+                                        <div className="media">
+                                            <img className="align-self-center mr-3 rounded-circle thumb48" src="/static/img/user/09.jpg" alt="User avatar" />
+                                            <div className="media-body text-truncate">
+                                                <a href="">
+                                                    <strong>Lawrence Robinson</strong>
+                                                </a>
+                                                <br/>
+                                                <small className="text-muted">Designeer</small>
+                                            </div>
+                                            <div className="ml-auto">
+                                                <span className="circle bg-warning circle-lg"></span>
+                                            </div>
+                                        </div>
+                                    </div>
+                                    <div className="list-group-item list-group-item-action border-0">
+                                        <div className="media">
+                                            <img className="align-self-center mr-3 rounded-circle thumb48" src="/static/img/user/10.jpg" alt="User avatar" />
+                                            <div className="media-body text-truncate">
+                                                <a href="">
+                                                    <strong>Tyrone Owens</strong>
+                                                </a>
+                                                <br/>
+                                                <small className="text-muted">Designeer</small>
+                                            </div>
+                                            <div className="ml-auto">
+                                                <span className="circle bg-warning circle-lg"></span>
+                                            </div>
+                                        </div>
+                                    </div>
+                                </div>
+                                <div className="px-3 py-4 text-center">
+                                    { /* Optional link to list more users */ }
+                                    <a className="btn btn-purple btn-sm" href="" title="See more contacts">
+                                        <strong>Load more..</strong>
+                                    </a>
+                                </div>
+                                { /* Extra items */ }
+                                <div className="px-3 py-2">
+                                    <p>
+                                        <small className="text-muted">Tasks completion</small>
+                                    </p>
+                                    <div className="progress progress-xs m-0">
+                                        <div className="progress-bar bg-success" aria-valuenow="80" aria-valuemin="0" aria-valuemax="100" style={{width: '80%'}}>
+                                            <span className="sr-only">80% Complete</span>
+                                        </div>
+                                    </div>
+                                </div>
+                                <div className="px-3 py-2">
+                                    <p>
+                                        <small className="text-muted">Upload quota</small>
+                                    </p>
+                                    <div className="progress progress-xs m-0">
+                                        <div className="progress-bar bg-warning" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style={{width: '40%'}}>
+                                            <span className="sr-only">40% Complete</span>
+                                        </div>
+                                    </div>
+                                </div>
+                            </TabPane>
+                        </TabContent>
+                    </div>
+                </nav>
+                { /* END Off Sidebar (right) */ }
+            </aside>
+        );
+    }
+
+}
+
+Offsidebar.propTypes = {
+    actions: PropTypes.object,
+    settings: PropTypes.object,
+    theme: PropTypes.object
+};
+
+const mapStateToProps = state => ({ settings: state.settings, theme: state.theme })
+const mapDispatchToProps = dispatch => ({ actions: bindActionCreators(actions, dispatch) })
+
+export default connect(
+    mapStateToProps,
+    mapDispatchToProps
+)(Offsidebar);

+ 34 - 0
components/Layout/SettingsProvider.js

@@ -0,0 +1,34 @@
+import React, { Component } from 'react';
+import PropTypes from 'prop-types';
+import { connect } from 'react-redux';
+
+const getClasses = settings => {
+    let c = [];
+
+    if (settings.isFixed) c.push('layout-fixed');
+    if (settings.isBoxed) c.push('layout-boxed');
+    if (settings.isCollapsed) c.push('aside-collapsed');
+    if (settings.isCollapsedText) c.push('aside-collapsed-text');
+    if (settings.isFloat) c.push('aside-float');
+    if (settings.asideHover) c.push('aside-hover');
+    if (settings.offsidebarOpen) c.push('offsidebar-open');
+    if (settings.asideToggled) c.push('aside-toggled');
+    // layout horizontal
+    if (settings.horizontal) c.push('layout-h');
+
+    return c.join(' ');
+};
+
+const SettingsProvider = props => (
+    <div id="__settings_provider" className={getClasses(props.settings)}>
+        {props.children}
+    </div>
+);
+
+SettingsProvider.propTypes = {
+    settings: PropTypes.object
+};
+
+export default connect(
+    state => ({ settings: state.settings })
+)(SettingsProvider);

+ 367 - 0
components/Layout/Sidebar.js

@@ -0,0 +1,367 @@
+import React, { Component } from 'react';
+import PropTypes from 'prop-types';
+import { withTranslation, Trans } from '@/components/Common/Translate';
+import Link from 'next/link';
+import Router, { withRouter } from 'next/router';
+import { Collapse, Badge } from 'reactstrap';
+
+import { connect } from 'react-redux';
+import { bindActionCreators } from 'redux';
+import * as actions from '../../store/actions/actions';
+
+import SidebarUserBlock from './SidebarUserBlock';
+
+import Menu from './Menu.js';
+
+// Helper to check for parrent of an given elements
+const parents = (element, selector) => {
+    if (typeof selector !== 'string') {
+        return null;
+    }
+
+    const parents = [];
+    let ancestor = element.parentNode;
+
+    while (
+        ancestor &&
+        ancestor.nodeType === Node.ELEMENT_NODE &&
+        ancestor.nodeType !== 3 /*NODE_TEXT*/
+    ) {
+        if (ancestor.matches(selector)) {
+            parents.push(ancestor);
+        }
+
+        ancestor = ancestor.parentNode;
+    }
+    return parents;
+};
+// Helper to get outerHeight of a dom element
+const outerHeight = (elem, includeMargin) => {
+    const style = getComputedStyle(elem);
+    const margins = includeMargin
+        ? parseInt(style.marginTop, 10) + parseInt(style.marginBottom, 10)
+        : 0;
+    return elem.offsetHeight + margins;
+};
+
+/**
+    Component to display headings on sidebar
+*/
+const SidebarItemHeader = ({ item }) => (
+    <li className="nav-heading">
+        <span>
+            <Trans i18nKey={item.translate}>{item.heading}</Trans>
+        </span>
+    </li>
+);
+
+/**
+    Normal items for the sidebar
+*/
+const SidebarItem = ({ item, isActive, className, onMouseEnter }) => (
+    <li className={isActive ? 'active' : ''} onMouseEnter={onMouseEnter}>
+        <Link href={item.path} as={item.as}>
+            <a title={item.name}>
+                {item.label && (
+                    <Badge tag="div" className="float-right" color={item.label.color}>
+                        {item.label.value}
+                    </Badge>
+                )}
+                {item.icon && <em className={item.icon} />}
+                <span>
+                    <Trans i18nKey={item.translate}>{item.name}</Trans>
+                </span>
+            </a>
+        </Link>
+    </li>
+);
+
+/**
+    Build a sub menu with items inside and attach collapse behavior
+*/
+const SidebarSubItem = ({ item, isActive, handler, children, isOpen, onMouseEnter }) => (
+    <li className={isActive ? 'active' : ''}>
+        <div className="nav-item" onClick={handler} onMouseEnter={onMouseEnter}>
+            {item.label && (
+                <Badge tag="div" className="float-right" color={item.label.color}>
+                    {item.label.value}
+                </Badge>
+            )}
+            {item.icon && <em className={item.icon} />}
+            <span>
+                <Trans i18nKey={item.translate}>{item.name}</Trans>
+            </span>
+        </div>
+        <Collapse isOpen={isOpen}>
+            <ul id={item.path} className="sidebar-nav sidebar-subnav">
+                {children}
+            </ul>
+        </Collapse>
+    </li>
+);
+
+/**
+    Component used to display a header on menu when using collapsed/hover mode
+*/
+const SidebarSubHeader = ({ item }) => <li className="sidebar-subnav-header">{item.name}</li>;
+
+const SidebarBackdrop = ({ closeFloatingNav }) => (
+    <div className="sidebar-backdrop" onClick={closeFloatingNav} />
+);
+
+const FloatingNav = ({ item, target, routeActive, isFixed, closeFloatingNav }) => {
+    let asideContainer = document.querySelector('.aside-container');
+    let asideInner = asideContainer.firstElementChild; /*('.aside-inner')*/
+    let sidebar = asideInner.firstElementChild; /*('.sidebar')*/
+
+    let mar =
+        parseInt(getComputedStyle(asideInner)['padding-top'], 0) +
+        parseInt(getComputedStyle(asideContainer)['padding-top'], 0);
+    let itemTop = target.parentElement.offsetTop + mar - sidebar.scrollTop;
+    let vwHeight = document.body.clientHeight;
+
+    const setPositionStyle = el => {
+        if (!el) return;
+        el.style.position = isFixed ? 'fixed' : 'absolute';
+        el.style.top = itemTop + 'px';
+        el.style.bottom = outerHeight(el, true) + itemTop > vwHeight ? 0 : 'auto';
+    };
+
+    return (
+        <ul
+            id={item.path}
+            ref={setPositionStyle}
+            className="sidebar-nav sidebar-subnav nav-floating"
+            onMouseLeave={closeFloatingNav}
+        >
+            <SidebarSubHeader item={item} />
+            {item.submenu.map((subitem, i) => (
+                <SidebarItem key={i} item={subitem} isActive={routeActive(subitem.path)} />
+            ))}
+        </ul>
+    );
+};
+
+/**
+    The main sidebar component
+*/
+class Sidebar extends Component {
+    state = {
+        collapse: {},
+        showSidebarBackdrop: false,
+        currentFloatingItem: null,
+        currentFloatingItemTarget: null,
+        pathname: this.props.router.pathname
+    };
+
+    componentDidMount() {
+        // prepare the flags to handle menu collapsed states
+        this.buildCollapseList();
+
+        // Listen for routes changes in order to hide the sidebar on mobile
+        Router.events.on('routeChangeStart', this.handleRouteChange);
+        Router.events.on('routeChangeComplete', this.handleRouteComplete);
+
+        // Attach event listener to automatically close sidebar when click outside
+        document.addEventListener('click', this.closeSidebarOnExternalClicks);
+    }
+
+    handleRouteComplete = (pathname) => {
+        this.setState({
+            pathname
+        })
+    }
+
+    handleRouteChange = () => {
+        this.closeFloatingNav();
+        this.closeSidebar();
+    };
+
+    componentWillUnmount() {
+        document.removeEventListener('click', this.closeSidebarOnExternalClicks);
+        Router.events.off('routeChangeStart', this.handleRouteChange);
+        Router.events.off('routeChangeComplete', this.handleRouteComplete);
+    }
+
+    closeSidebar = () => {
+        this.props.actions.toggleSetting('asideToggled');
+    };
+
+    closeSidebarOnExternalClicks = e => {
+        // don't check if sidebar not visible
+        if (!this.props.settings.asideToggled) return;
+
+        if (
+            !parents(e.target, '.aside-container').length && // if not child of sidebar
+            !parents(e.target, '.topnavbar-wrapper').length && // if not child of header
+            !e.target.matches('#user-block-toggle') && // user block toggle anchor
+            !e.target.parentElement.matches('#user-block-toggle') // user block toggle icon
+        ) {
+            this.closeSidebar();
+        }
+    };
+
+    /** prepare initial state of collapse menus.*/
+    buildCollapseList = () => {
+        let collapse = {};
+        Menu.filter(({ heading }) => !heading).forEach(({ name, path, submenu }) => {
+            collapse[name] = this.routeActive(submenu ? submenu.map(({ path }) => path) : path);
+        });
+        this.setState({ collapse });
+    };
+
+    routeActive = paths => {
+        const currpath = this.state.pathname;
+        paths = Array.isArray(paths) ? paths : [paths];
+        return paths.some(p => (p === '/' ? currpath === p : currpath.indexOf(p) > -1));
+    };
+
+    toggleItemCollapse = stateName => () => {
+        for (let c in this.state.collapse) {
+            if (this.state.collapse[c] === true && c !== stateName)
+                this.setState({
+                    collapse: {
+                        [c]: false
+                    }
+                });
+        }
+        this.setState({
+            collapse: {
+                [stateName]: !this.state.collapse[stateName]
+            }
+        });
+    };
+
+    getSubRoutes = item => item.submenu.map(({ path }) => path);
+
+    /** map menu config to string to determine which element to render */
+    itemType = item => {
+        if (item.heading) return 'heading';
+        if (!item.submenu) return 'menu';
+        if (item.submenu) return 'submenu';
+    };
+
+    shouldUseFloatingNav = () => {
+        return (
+            this.props.settings.isCollapsed ||
+            this.props.settings.isCollapsedText ||
+            this.props.settings.asideHover
+        );
+    };
+
+    showFloatingNav = item => e => {
+        if (this.shouldUseFloatingNav())
+            this.setState({
+                currentFloatingItem: item,
+                currentFloatingItemTarget: e.currentTarget,
+                showSidebarBackdrop: true
+            });
+    };
+
+    closeFloatingNav = () => {
+        this.setState({
+            currentFloatingItem: null,
+            currentFloatingItemTarget: null,
+            showSidebarBackdrop: false
+        });
+    };
+
+    render() {
+        return (
+            <>
+                <aside className="aside-container">
+                    {/* START Sidebar (left) */}
+                    <div className="aside-inner">
+                        <nav
+                            className={
+                                'sidebar ' +
+                                (this.props.settings.asideScrollbar ? 'show-scrollbar' : '')
+                            }
+                        >
+                            {/* START sidebar nav */}
+                            <ul className="sidebar-nav">
+                                {/* START user info */}
+                                <li className="has-user-block">
+                                    <SidebarUserBlock />
+                                </li>
+                                {/* END user info */}
+
+                                {/* Iterates over all sidebar items */}
+                                {Menu.map((item, i) => {
+                                    // heading
+                                    if (this.itemType(item) === 'heading')
+                                        return <SidebarItemHeader item={item} key={i} />;
+                                    else {
+                                        if (this.itemType(item) === 'menu')
+                                            return (
+                                                <SidebarItem
+                                                    isActive={this.routeActive(item.path)}
+                                                    item={item}
+                                                    key={i}
+                                                    onMouseEnter={this.closeFloatingNav}
+                                                />
+                                            );
+                                        if (this.itemType(item) === 'submenu')
+                                            return [
+                                                <SidebarSubItem
+                                                    item={item}
+                                                    isOpen={this.state.collapse[item.name]}
+                                                    handler={this.toggleItemCollapse(item.name)}
+                                                    isActive={this.routeActive(
+                                                        this.getSubRoutes(item)
+                                                    )}
+                                                    key={i}
+                                                    onMouseEnter={this.showFloatingNav(item)}
+                                                >
+                                                    <SidebarSubHeader item={item} key={i} />
+                                                    {item.submenu.map((subitem, i) => (
+                                                        <SidebarItem
+                                                            key={i}
+                                                            item={subitem}
+                                                            isActive={this.routeActive(
+                                                                subitem.path
+                                                            )}
+                                                        />
+                                                    ))}
+                                                </SidebarSubItem>
+                                            ];
+                                    }
+                                    return null; // unrecognized item
+                                })}
+                            </ul>
+                            {/* END sidebar nav */}
+                        </nav>
+                    </div>
+                    {/* END Sidebar (left) */}
+                    {this.state.currentFloatingItem && this.state.currentFloatingItem.submenu && (
+                        <FloatingNav
+                            item={this.state.currentFloatingItem}
+                            target={this.state.currentFloatingItemTarget}
+                            routeActive={this.routeActive}
+                            isFixed={this.props.settings.isFixed}
+                            closeFloatingNav={this.closeFloatingNav}
+                        />
+                    )}
+                </aside>
+                {this.state.showSidebarBackdrop && (
+                    <SidebarBackdrop closeFloatingNav={this.closeFloatingNav} />
+                )}
+            </>
+        );
+    }
+}
+
+Sidebar.propTypes = {
+    actions: PropTypes.object,
+    settings: PropTypes.object
+};
+
+const mapStateToProps = state => ({ settings: state.settings });
+const mapDispatchToProps = dispatch => ({
+    actions: bindActionCreators(actions, dispatch)
+});
+
+export default connect(
+    mapStateToProps,
+    mapDispatchToProps
+)(withRouter(withTranslation(Sidebar)));

+ 51 - 0
components/Layout/SidebarUserBlock.js

@@ -0,0 +1,51 @@
+import React, { Component } from 'react';
+import PropTypes from 'prop-types';
+import { Collapse } from 'reactstrap';
+
+import { connect } from 'react-redux';
+
+class SidebarUserBlock extends Component {
+
+    state = {
+        showUserBlock: false
+    }
+
+    componentDidUpdate(oldProps) {
+        if (oldProps.showUserBlock !== this.props.showUserBlock) {
+            this.setState({ showUserBlock: this.props.showUserBlock })
+        }
+    }
+
+    render() {
+        return (
+            <Collapse id="user-block" isOpen={ this.state.showUserBlock }>
+                <div>
+                    <div className="item user-block">
+                       {/* User picture */}
+                       <div className="user-block-picture">
+                          <div className="user-block-status">
+                             <img className="img-thumbnail rounded-circle" src="/static/img/user/02.jpg" alt="Avatar" width="60" height="60" />
+                             <div className="circle bg-success circle-lg"></div>
+                          </div>
+                       </div>
+                       {/* Name and Job */}
+                       <div className="user-block-info">
+                          <span className="user-block-name">Hello, Mike</span>
+                          <span className="user-block-role">Designer</span>
+                       </div>
+                    </div>
+                </div>
+            </Collapse>
+        )
+    }
+}
+
+SidebarUserBlock.propTypes = {
+    showUserBlock: PropTypes.bool
+};
+
+const mapStateToProps = state => ({ showUserBlock: state.settings.showUserBlock })
+
+export default connect(
+    mapStateToProps
+)(SidebarUserBlock);

+ 25 - 0
components/Layout/ThemesProvider.js

@@ -0,0 +1,25 @@
+import React, { Component } from 'react';
+import PropTypes from 'prop-types';
+import { connect } from 'react-redux';
+
+// Import all theme into main css chunk
+// todo: import dynamically
+import '../../styles/themes/theme-a.scss';
+import '../../styles/themes/theme-b.scss';
+import '../../styles/themes/theme-c.scss';
+import '../../styles/themes/theme-d.scss';
+import '../../styles/themes/theme-e.scss';
+import '../../styles/themes/theme-f.scss';
+import '../../styles/themes/theme-h.scss';
+
+const ThemesProvider = props => (
+    <div id="__themes_provider" className={props.theme.name}>
+        {props.children}
+    </div>
+);
+
+ThemesProvider.propTypes = {
+    theme: PropTypes.object
+};
+
+export default connect(state => ({ theme: state.theme }))(ThemesProvider);

+ 56 - 0
components/Maps/VectorMap.js

@@ -0,0 +1,56 @@
+import React, { Component } from 'react';
+import PropTypes from 'prop-types';
+import $ from 'jquery';
+
+import './vector-map.scss';
+
+/** Wrapper component for jquery-vectormap plugin */
+class VectorMap extends Component {
+
+    static propTypes = {
+        /** series entry of options object */
+        series: PropTypes.object.isRequired,
+        /** markers entry of options object */
+        markers: PropTypes.array.isRequired,
+        /** jvectormap options object */
+        options: PropTypes.object.isRequired,
+        /** height of the container element */
+        height: PropTypes.string
+    }
+
+    static defaultProps = {
+        height: '300px'
+    }
+
+    componentDidMount() {
+        // jquery Vector Map
+        require('ika.jvectormap/jquery-jvectormap-1.2.2.min.js');
+        require('ika.jvectormap/jquery-jvectormap-world-mill-en.js');
+        require('ika.jvectormap/jquery-jvectormap-us-mill-en.js');
+        require('ika.jvectormap/jquery-jvectormap-1.2.2.css');
+
+        window.requestAnimationFrame(() => this.drawMap());
+
+    }
+
+    drawMap() {
+        this.props.options.markers = this.props.markers;
+        this.props.options.series = this.props.series;
+        $(this.mapElement).vectorMap(this.props.options);
+    }
+
+    componentWillUnmount() {
+        const map = $(this.mapElement).vectorMap('get', 'mapObject');
+        map.remove()
+    }
+
+    setRef = node => this.mapElement = node
+
+    render() {
+        return (
+            <div ref={this.setRef} style={{height: this.props.height}}/>
+        )
+    }
+}
+
+export default VectorMap;

+ 45 - 0
components/Maps/vector-map.scss

@@ -0,0 +1,45 @@
+/* ========================================================================
+     Component: vector-map
+ ========================================================================== */
+
+$vmap-label-bg: #313232;
+$vmap-zoom-ctrl-bg: #515253;
+
+body {
+    // adds priority
+
+    .jvectormap-label {
+        position: absolute;
+        display: none;
+        border: solid 1px $vmap-label-bg;
+        border-radius: 2px;
+        background: $vmap-label-bg;
+        color: white;
+        padding: 3px 6px;
+        opacity: 0.9;
+        z-index: 1100;
+    }
+
+    .jvectormap-zoomin, .jvectormap-zoomout {
+        position: absolute;
+        left: 10px;
+        width: 22px;
+        height: 22px;
+        border-radius: 2px;
+        background: $vmap-zoom-ctrl-bg;
+        padding: 5px;
+        color: white;
+        cursor: pointer;
+        line-height: 10px;
+        text-align: center;
+    }
+
+    .jvectormap-zoomin {
+        top: 10px;
+    }
+
+    .jvectormap-zoomout {
+        top: 30px;
+    }
+
+}

+ 63 - 0
components/Tables/Datatable.js

@@ -0,0 +1,63 @@
+import React, { Component } from 'react';
+import PropTypes from 'prop-types';
+import $ from 'jquery';
+
+/**
+ * Wrapper component for dataTable plugin
+ * Only DOM child elements, componets are not supported (e.g. <Table>)
+ */
+export default class Datatable extends Component {
+
+    static propTypes = {
+        /** datatables options object */
+        options: PropTypes.object,
+        /** only one children allowed */
+        children: PropTypes.element.isRequired,
+        /** callback that receives the datatable instance as param */
+        dtInstance: PropTypes.func
+    }
+
+    static defaultProps = {
+        options: {}
+    }
+
+    componentDidMount() {
+        // Datatables
+        require('datatables.net-bs')
+        require('datatables.net-bs4/js/dataTables.bootstrap4.js')
+        require('datatables.net-bs4/css/dataTables.bootstrap4.css')
+        require('datatables.net-buttons')
+        require('datatables.net-buttons-bs')
+        require('datatables.net-responsive')
+        require('datatables.net-responsive-bs')
+        require('datatables.net-responsive-bs/css/responsive.bootstrap.css')
+        require('datatables.net-buttons/js/buttons.colVis.js') // Column visibility
+        require('datatables.net-buttons/js/buttons.html5.js') // HTML 5 file export
+        require('datatables.net-buttons/js/buttons.flash.js') // Flash file export
+        require('datatables.net-buttons/js/buttons.print.js') // Print view button
+        require('datatables.net-keytable');
+        require('datatables.net-keytable-bs/css/keyTable.bootstrap.css')
+        require('jszip/dist/jszip.js');
+        require('pdfmake/build/pdfmake.js');
+        require('pdfmake/build/vfs_fonts.js');
+
+        const dtInstance = $(this.tableElement).dataTable(this.props.options);
+
+        if(this.props.dtInstance)
+            this.props.dtInstance(dtInstance)
+    }
+
+    componentWillUnmount() {
+        $(this.tableElement).dataTable({destroy: true});
+    }
+
+    setRef = node => this.tableElement = node;
+
+    render() {
+        return (
+            React.cloneElement(React.Children.only(this.props.children), {
+                ref: this.setRef
+            })
+        )
+    }
+}

+ 10 - 0
keys-note.txt

@@ -0,0 +1,10 @@
+It's pretty simple when you think about it:
+
+Store - Is what holds all the data your application uses.
+Reducer - is what manipulates that data when it recieves an action.
+Action - is what tells reducer to manipulate the store data, it carries the name and (not required) some data.
+
+Reducer is usually in a format of a switch statement, 
+that switches between all possible Actions (Cases) and 
+then manipulates the Store data based on action. 
+When a reducer data changes within the redux, the properties in your components are changed and then the re-render ocurrs.

+ 24 - 0
lib/fetchJson.js

@@ -0,0 +1,24 @@
+export default async function fetcher(...args) {
+    try {
+      const response = await fetch(...args)
+  
+      // if the server replies, there's always some data in json
+      // if there's a network error, it will throw at the previous line
+      const data = await response.json()
+  
+      if (response.ok) {
+        return data
+      }
+  
+      const error = new Error(response.statusText)
+      error.response = response
+      error.data = data
+      throw error
+    } catch (error) {
+      if (!error.data) {
+        error.data = { message: error.message }
+      }
+      throw error
+    }
+  }
+  

+ 29 - 0
lib/useUser.js

@@ -0,0 +1,29 @@
+import { useEffect } from 'react'
+//import React, { useEffect } from 'react';
+import Router from 'next/router'
+import useSWR from 'swr'
+
+export default function useUser({
+  redirectTo = false,
+  redirectIfFound = false,
+} = {}) {
+    
+  const { data: user, mutate: mutateUser } = useSWR('/api/user')
+
+  useEffect(() => {
+    // if no redirect needed, just return (example: already on /dashboard)
+    // if user data not yet there (fetch in progress, logged in or not) then don't do anything yet
+    if (!redirectTo || !user) return
+
+    if (
+      // If redirectTo is set, redirect if the user was not found.
+      (redirectTo && !redirectIfFound && !user?.isLoggedIn) ||
+      // If redirectIfFound is also set, redirect if the user was found
+      (redirectIfFound && user?.isLoggedIn)
+    ) {
+      Router.push(redirectTo)
+    }
+  }, [user, redirectIfFound, redirectTo])
+
+  return { user, mutateUser }
+}

+ 400 - 0
master-asli.json

@@ -0,0 +1,400 @@
+[
+    {
+        "idPelanggaran": 0,
+        "Pelanggaran":"Tidak Ada",
+        "Sangsi":"Tanpa Sangsi",
+        "KeteranganSangsi":"-",
+        "LevelSangsi":0,
+        "LabelSangsi":"Tidak ada",
+        "checked":false,
+        "TMTBulan":0
+    },
+    {
+        "idPelanggaran": 1,
+        "Pelanggaran":"Pemimpin perguruan tinggi tidak melindungi dan memfasilitasi pelaksanaan kebebasan akademik,kebebasan mimbar akademik, dan otonomi keilmuan di perguruan tinggi",
+        "Sangsi":"Peringatan Tertulis",
+        "KeteranganSangsi":"-",
+        "LevelSangsi":1,
+        "LabelSangsi":"Ringan",
+        "checked":false,
+         "TMTBulan":6
+    },
+    {
+        "idPelanggaran": 2,
+        "Pelanggaran":"Perguruan tinggi tidak memuat mata kuliah agama,Pancasila, kewarganegaraan, dan bahasa Indonesia dalam kurikulumnya",
+        "Sangsi":"Peringatan Tertulis",
+        "KeteranganSangsi":"-",
+        "LevelSangsi":1,
+        "LabelSangsi":"Ringan",
+        "checked":false,
+         "TMTBulan":6
+    },
+    {
+        "idPelanggaran": 3,
+        "Pelanggaran":"Perguruan tinggi tidak menggunakan bahasa Indonesia sebagai bahasa pengantar utama",
+        "Sangsi":"Peringatan Tertulis",
+        "KeteranganSangsi":"-",
+        "LevelSangsi":1,
+        "LabelSangsi":"Ringan",
+        "checked":false,
+         "TMTBulan":6
+    },
+    {
+        "idPelanggaran": 4,
+        "Pelanggaran":"Perguruan tinggi tidak menyebarluaskan hasil penelitian dengan cara diseminarkan, dipublikasikan, dan/atau dipatenkan, kecuali hasil penelitian yang bersifat rahasia, mengganggu, dan/atau membahayakan kepentingan umum",
+        "Sangsi":"Peringatan Tertulis",
+        "KeteranganSangsi":"",
+        "LevelSangsi":1,
+        "LabelSangsi":"Ringan",
+        "checked":false,
+         "TMTBulan":6
+    },
+    {
+        "idPelanggaran": 5,
+        "Pelanggaran":"PTN tidak menerima calon Mahasiswa yang telah memenuhi persyaratan akademik dan lolos seleksi penerimaan Mahasiswa secara nasional",
+        "Sangsi":"Peringatan Tertulis",
+        "KeteranganSangsi":"",
+        "LevelSangsi":1,
+        "LabelSangsi":"Ringan",
+         "TMTBulan":6
+    },
+    {
+        "idPelanggaran": 6,
+        "Pelanggaran":"PTN tidak mencari dan menjaring calon Mahasiswa yang memiliki potensi akademik tinggi, tetapi kurang mampu secara ekonomi dan calon Mahasiswa dari daerah terdepan, terluar, dan tertinggal untuk diterima paling sedikit 20% (dua puluh persen) dari seluruh Mahasiswa baru yang diterima dan tersebar pada semua Program Studi",
+        "Sangsi":"Peringatan Tertulis",
+        "KeteranganSangsi":"",
+        "LevelSangsi":1,
+        "LabelSangsi":"Ringan",
+        "checked":false,
+         "TMTBulan":6
+    },
+    {
+        "idPelanggaran": 7,
+        "Pelanggaran":"Perguruan tinggi tidak memenuhi hak Mahasiswa yang kurang mampu secara ekonomi untuk dapat menyelesaikan studinya sesuai dengan peraturan akademik",
+        "Sangsi":"Peringatan Tertulis",
+        "KeteranganSangsi":"",
+        "LevelSangsi":1,
+        "LabelSangsi":"Ringan",
+        "checked":false,
+         "TMTBulan":6
+    },
+    {
+        "idPelanggaran": 8,
+        "Pelanggaran":"Perguruan tinggi memberi gelar yang tidak menggunakan bahasa Indonesia",
+        "Sangsi":"Peringatan Tertulis",
+        "KeteranganSangsi":"",
+        "LevelSangsi":1,
+        "LabelSangsi":"Ringan",
+        "checked":false,
+         "TMTBulan":6
+    },
+    {
+        "idPelanggaran": 9,
+        "Pelanggaran":"Pemimpin perguruan tinggi tidak melindungi dan memfasilitasi pengelolaan di bidang non akademik",
+        "Sangsi":"Peringatan Tertulis",
+        "KeteranganSangsi":"",
+        "LevelSangsi":1,
+        "LabelSangsi":"Ringan",
+        "checked":false,
+         "TMTBulan":6
+    },
+    {
+        "idPelanggaran": 10,
+        "Pelanggaran":"Perguruan tinggi tidak mengumumkan ringkasan laporan tahunan kepada masyarakat",
+        "Sangsi":"Peringatan Tertulis",
+        "KeteranganSangsi":"",
+        "LevelSangsi":1,
+        "LabelSangsi":"Ringan",
+        "checked":false,
+         "TMTBulan":6
+    },
+    {
+        "idPelanggaran": 11,
+        "Pelanggaran":"Perguruan tinggi memiliki Dosen tetap kurang dari 5 (lima) orang untuk setiap Program Studi",
+        "Sangsi":"Peringatan Tertulis",
+        "KeteranganSangsi":"",
+        "LevelSangsi":1,
+        "LabelSangsi":"Ringan",
+        "checked":false,
+         "TMTBulan":6
+    },
+    {
+        "idPelanggaran": 12,
+        "Pelanggaran":"Perguruan tinggi tidak memenuh  nisbah Dosen dan Mahasiswa sesuai dengan ketentuan peraturan perundang-undangan",
+        "Sangsi":"Peringatan Tertulis",
+        "KeteranganSangsi":"",
+        "LevelSangsi":1,
+        "LabelSangsi":"Ringan",
+        "checked":false,
+         "TMTBulan":6
+    },
+    {
+        "idPelanggaran": 13,
+        "Pelanggaran":"Perguruan tinggi tidak melakukan pelaporan secara berkala ke pangkalan data Pendidikan Tinggi",
+        "Sangsi":"Peringatan Tertulis",
+        "KeteranganSangsi":"",
+        "LevelSangsi":1,
+        "LabelSangsi":"Ringan",
+        "checked":false,
+         "TMTBulan":6
+    },
+    {
+        "idPelanggaran": 14,
+        "Pelanggaran":"Program sarjana memiliki Dosen yang tidak berkualifikasi akademik minimum lulusan program magister atau sederajat",
+        "Sangsi":"Penghentian sementara bantuan biaya pendidikan dari pemerintahan pusat",
+        "KeteranganSangsi":"Berupa penundaan pemberian bantuan keuangan, hibah, dan/atau bentuk bantuan lain bagi perguruan tinggi",
+        "LevelSangsi":2,
+        "LabelSangsi":"Sedang",
+        "checked":false,
+         "TMTBulan":6
+    },
+    {
+        "idPelanggaran": 15,
+        "Pelanggaran":"Program magister memiliki Dosen yang tidak berkualifikasi akademik lulusan program doktor atau sederajat",
+        "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+        "KeteranganSangsi":"Penghentian sementara penerimaan Mahasiswa baru",
+        "LevelSangsi":2,
+        "LabelSangsi":"Sedang",
+        "checked":false,
+         "TMTBulan":6
+    },
+    {
+        "idPelanggaran": 16,
+        "Pelanggaran":"Program doktor memiliki Dosen yang tidak berkualifikasi akademik lulusan program doktor atau sederajat",
+        "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+        "KeteranganSangsi":"Penundaan proses usul pembukaan Program Studi baru",
+        "LevelSangsi":2,
+        "LabelSangsi":"Sedang",
+        "checked":false,
+         "TMTBulan":6
+    },
+    {
+        "idPelanggaran": 17,
+        "Pelanggaran":"Program diploma memiliki Dosen yang tidak berkualifikasi akademik minimum lulusan program magister atau sederajat",
+        "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+        "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+        "LevelSangsi":2,
+        "LabelSangsi":"Sedang",
+        "checked":false,
+        "TMTBulan":6
+    },
+    {
+        "idPelanggaran": 18,
+        "Pelanggaran":"Program magister terapan memiliki Dosen yang tidak berkualifikasi akademik lulusan program doktor atau sederajat",
+        "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+        "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+        "LevelSangsi":2,
+        "LabelSangsi":"Sedang",
+        "checked":false,
+        "TMTBulan":6
+    },
+    {
+        "idPelanggaran": 19,
+        "Pelanggaran":"Program doktor terapan memiliki Dosen yang tidak berkualifikasi akademik lulusan program doktor atau sederajat",
+        "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+        "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+        "LevelSangsi":2,
+        "LabelSangsi":"Sedang",
+        "checked":false,
+        "TMTBulan":6
+    },
+    {
+        "idPelanggaran": 20,
+        "Pelanggaran":"Program profesi memiliki Dosen yang tidak berkualifikasi akademik minimum lulusan profesi dan/atau lulusan program magister atau sederajat dengan pengalaman kerja paling singkat 2 (dua) tahun",
+        "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+        "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+        "LevelSangsi":2,
+        "LabelSangsi":"Sedang",
+        "TMTBulan":6
+    },
+    {
+        "idPelanggaran": 21,
+        "Pelanggaran":"Program spesialis memiliki Dosen yang tidak berkualifikasi akademik minimum lulusan program spesialis dan/atau lulusan program doktor atau sederajat dengan pengalaman kerja paling singkat 2 (dua) tahun",
+        "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+        "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+        "LevelSangsi":2,
+        "LabelSangsi":"Sedang",
+        "checked":false,
+        "TMTBulan":6
+    },
+    {
+        "idPelanggaran": 22,
+        "Pelanggaran":"Perguruan tinggi tidak mencabut gelar akademik, gelar vokasi, atau gelar profesi apabila karya ilmiah yang digunakan untuk memperoleh gelar akademik, gelar vokasi, atau gelar profesi terbukti merupakan hasil plagiat",
+        "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+        "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+        "LevelSangsi":2,
+        "LabelSangsi":"Sedang",
+        "checked":false,
+        "TMTBulan":6
+    },
+    {
+        "idPelanggaran": 23,
+        "Pelanggaran":"Perguruan tinggi tidak menyediakan, memfasilitasi, memiliki Sumber Belajar sesuai dengan Program Studi yang dikembangkan",
+        "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+        "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+        "LevelSangsi":2,
+        "LabelSangsi":"Sedang",
+        "checked":false,
+        "TMTBulan":6
+    },
+    {
+        "idPelanggaran": 24,
+        "Pelanggaran":"Perguruan tinggi tidak memiliki statuta",
+        "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+        "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+        "LevelSangsi":2,
+        "LabelSangsi":"Sedang",
+        "checked":false,
+        "TMTBulan":6
+    },
+    {
+        "idPelanggaran": 25,
+        "Pelanggaran":"Perguruan tinggi tidak memiliki panduan/prosedur peralihan dan perolehan satuan kredit semester serta rekognisi pembelajaran lampau",
+        "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+        "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+        "LevelSangsi":2,
+        "LabelSangsi":"Sedang",
+        "checked":false,
+        "TMTBulan":6
+    },
+    {
+        "idPelanggaran": 26,
+        "Pelanggaran":"Perguruan tinggi melaporkan data yang tidak valid ke PDDIKTI",
+        "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+        "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+        "LevelSangsi":2,
+        "LabelSangsi":"Sedang",
+        "checked":false,
+        "TMTBulan":6
+    },
+    {
+        "idPelanggaran": 27,
+        "Pelanggaran":"Perguruan tinggi yang menyelenggarakan kegiatan akademik yang tidak sesuai dengan seluruh Standar Nasional Pendidikan Tinggi",
+        "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+        "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+        "LevelSangsi":2,
+        "LabelSangsi":"Sedang",
+        "checked":false,
+        "TMTBulan":6
+    },
+    {
+        "idPelanggaran": 28,
+        "Pelanggaran":"Badan Penyelenggara tidak memberikan gaji pokok serta tunjangan kepada Dosen dan tenaga kependidikan sesuai dengan ketentuan peraturan perundang-undangan",
+        "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+        "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+        "LevelSangsi":2,
+        "LabelSangsi":"Sedang",
+        "checked":false,
+        "TMTBulan":6
+    },
+    {
+        "idPelanggaran": 29,
+        "Pelanggaran":"Perguruan tinggi dan/atau Program Studi yang tidak terakreditasi mengeluarkan gelar akademik, gelar vokasi, dan/atau gelar profesi",
+        "Sangsi":"Penghentian pembinaan",
+        "KeteranganSangsi":"Penghentian bantuan keuangan, hibah, dan/atau bentuk bantuan lain yang diperuntukkan bagi perguruan tinggi",
+        "LevelSangsi":3,
+        "LabelSangsi":"Berat",
+        "checked":false,
+        "TMTBulan":6
+    },
+    {
+        "idPelanggaran": 30,
+        "Pelanggaran":"Perguruan tinggi dan/atau Program Studi memberikan ijazah, gelar akademik, gelar vokasi, dan/atau gelar profesi kepada orang yang tidak berhak",
+        "Sangsi":"Penghentian pembinaan",
+        "KeteranganSangsi":"Penghentian layanan Pemerintah Pusat bagi perguruan tinggi",
+        "LevelSangsi":3,
+        "LabelSangsi":"Berat",
+        "checked":false,
+        "TMTBulan":6
+    },
+    {
+        "idPelanggaran": 31,
+        "Pelanggaran":"Perguruan tinggi tidak mengusulkan akreditasi ulang Program Studi sebagaimana ditentukan dalam peraturan perundang-undangan",
+        "Sangsi":"Penghentian pembinaan",
+        "KeteranganSangsi":"Penghentian penerimaan Mahasiswa baru",
+        "LevelSangsi":3,
+        "LabelSangsi":"Berat",
+        "checked":false,
+        "TMTBulan":6
+    },
+    {
+        "idPelanggaran": 32,
+        "Pelanggaran":"Perguruan tinggi lembaga negara lain yang menyelenggarakan pendidikan di wilayah Negara Kesatuan Republik Indonesia yang tidak sesuai dengan ketentuan peraturan perundang-undangan",
+        "Sangsi":"Penghentian pembinaan",
+        "KeteranganSangsi":"Larangan melakukan wisuda",
+        "LevelSangsi":3,
+        "LabelSangsi":"Berat",
+        "checked":false,
+        "TMTBulan":6
+    },
+    {
+        "idPelanggaran": 33,
+        "Pelanggaran":"Perguruan tinggi melakukan penerimaan Mahasiswa baru dengan tujuan komersial",
+        "Sangsi":"Penghentian pembinaan",
+        "KeteranganSangsi":"Penghentian proses usul pembukaan Program Studi baru",
+        "LevelSangsi":3,
+        "LabelSangsi":"Berat",
+        "checked":false,
+        "TMTBulan":6
+    },
+    {
+        "idPelanggaran": 34,
+        "Pelanggaran":"Pengelolaan perguruan tinggi tidak berprinsip nirlaba",
+        "Sangsi":"Penghentian pembinaan",
+        "KeteranganSangsi":"Penarikan Dosen Pegawai Negeri Sipil yang dipekerjakan",
+        "LevelSangsi":3,
+        "LabelSangsi":"Berat",
+        "checked":false,
+        "TMTBulan":6
+    },
+    {
+        "idPelanggaran": 35,
+        "Pelanggaran":"Perguruan tinggi dan/atau Badan Penyelenggara melakukan perubahan nama perguruan tinggi, nama dan/atau bentuk Badan Penyelenggara, dan/atau lokasi Kampus Utama PTS tanpa izin dari Menteri",
+        "Sangsi":"Pencabutan izin Program Studi",
+        "KeteranganSangsi":"",
+        "LevelSangsi":3,
+        "LabelSangsi":"Berat",
+        "checked":false,
+        "TMTBulan":6
+    },
+    {
+        "idPelanggaran": 36,
+        "Pelanggaran":"Perguruan tinggi menyelenggarakan Program Studi tanpa izin dari Menteri",
+        "Sangsi":"Pembubaran PTN atau pencabutan izin PTS",
+        "KeteranganSangsi":"",
+        "LevelSangsi":3,
+        "LabelSangsi":"Berat",
+        "checked":false,
+        "TMTBulan":6
+    },
+    {
+        "idPelanggaran": 37,
+        "Pelanggaran":"Perguruan tinggi menyelenggarakan PJJ tanpa izin dari Menteri",
+        "Sangsi":"Pembubaran PTN atau pencabutan izin PTS",
+        "KeteranganSangsi":"",
+        "LevelSangsi":3,
+        "LabelSangsi":"Berat",
+        "checked":false,
+        "TMTBulan":6
+    },
+    {
+        "idPelanggaran": 38,
+        "Pelanggaran":"Perguruan tinggi dan/atau Program Studi tidak lagi memenuhi syarat pendirian perguruan tinggi dan/atau pembukaan Program Studi",
+        "Sangsi":"Pembubaran PTN atau pencabutan izin PTS",
+        "KeteranganSangsi":"",
+        "LevelSangsi":3,
+        "LabelSangsi":"Berat",
+        "checked":false,
+        "TMTBulan":6
+    },
+    {
+        "idPelanggaran": 39,
+        "Pelanggaran":"Terjadi sengketa",
+        "Sangsi":"Pembubaran PTN atau pencabutan izin PTS",
+        "KeteranganSangsi":"",
+        "LevelSangsi":3,
+        "LabelSangsi":"Berat",
+        "checked":false,
+        "TMTBulan":6
+    }
+]

+ 51 - 0
next.config.js

@@ -0,0 +1,51 @@
+const path = require("path");
+const webpack = require("webpack");
+const withSass = require("@zeit/next-sass");
+const withCss = require("@zeit/next-css");
+
+module.exports = withSass(
+    withCss({
+        // target: 'serverless',
+        webpack: config => {
+            // Fixes npm packages that depend on `fs` module
+            config.node = {
+                fs: "empty"
+            };
+
+            // Resolves alias to root folder
+            config.resolve.alias["@"] = __dirname;
+
+            // Provide alias for plugins
+            config.plugins.push(
+                new webpack.ProvidePlugin({
+                    $: "jquery",
+                    jQuery: "jquery",
+                    "window.jQuery": "jquery",
+                    "window.moment": "moment",
+                    moment: "moment",
+                    Raphael: "raphael" // required by morris.js
+                })
+            );
+
+            // Fix for flot resize
+            config.module.rules.push({
+                test: /jquery\.flot\.resize\.js$/,
+                use: ["imports-loader?this=>window"]
+            });
+
+            // Font face support
+            config.module.rules.push({
+                test: /\.(eot|woff|woff2|ttf|svg|png|jpg|gif)$/,
+                use: {
+                    loader: "url-loader",
+                    options: {
+                        limit: 100000,
+                        name: "[name].[ext]"
+                    }
+                }
+            });
+
+            return config;
+        }
+    })
+);

+ 6 - 0
now.json

@@ -0,0 +1,6 @@
+{
+    "version": 2,
+    "name": "angle-nextjs-seed",
+    "builds": [{ "src": "package.json", "use": "@now/next" }],
+    "routes": []
+}

+ 11162 - 0
package-lock.json

@@ -0,0 +1,11162 @@
+{
+  "name": "angle",
+  "version": "0.0.0",
+  "lockfileVersion": 1,
+  "requires": true,
+  "dependencies": {
+    "@ampproject/toolbox-core": {
+      "version": "2.7.4",
+      "resolved": "https://registry.npmjs.org/@ampproject/toolbox-core/-/toolbox-core-2.7.4.tgz",
+      "integrity": "sha512-qpBhcS4urB7IKc+jx2kksN7BuvvwCo7Y3IstapWo+EW+COY5EYAUwb2pil37v3TsaqHKgX//NloFP1SKzGZAnw==",
+      "requires": {
+        "cross-fetch": "3.0.6",
+        "lru-cache": "6.0.0"
+      },
+      "dependencies": {
+        "cross-fetch": {
+          "version": "3.0.6",
+          "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.0.6.tgz",
+          "integrity": "sha512-KBPUbqgFjzWlVcURG+Svp9TlhA5uliYtiNx/0r8nv0pdypeQCRJ9IaSIc3q/x3q8t3F75cHuwxVql1HFGHCNJQ==",
+          "requires": {
+            "node-fetch": "2.6.1"
+          }
+        }
+      }
+    },
+    "@ampproject/toolbox-optimizer": {
+      "version": "2.6.0",
+      "resolved": "https://registry.npmjs.org/@ampproject/toolbox-optimizer/-/toolbox-optimizer-2.6.0.tgz",
+      "integrity": "sha512-saToXVopb15a6zKK6kW4B1N/sYZZddkECcqmfTotRxJ2DaLE+wFB6jgWLbaPkgHwvLPQyA2IjV9BHJ/KUFuGzg==",
+      "requires": {
+        "@ampproject/toolbox-core": "^2.6.0",
+        "@ampproject/toolbox-runtime-version": "^2.6.0",
+        "@ampproject/toolbox-script-csp": "^2.5.4",
+        "@ampproject/toolbox-validator-rules": "^2.5.4",
+        "abort-controller": "3.0.0",
+        "cross-fetch": "3.0.5",
+        "cssnano-simple": "1.0.5",
+        "dom-serializer": "1.0.1",
+        "domhandler": "3.0.0",
+        "domutils": "2.1.0",
+        "htmlparser2": "4.1.0",
+        "https-proxy-agent": "5.0.0",
+        "lru-cache": "6.0.0",
+        "node-fetch": "2.6.0",
+        "normalize-html-whitespace": "1.0.0",
+        "postcss": "7.0.32",
+        "postcss-safe-parser": "4.0.2",
+        "terser": "4.8.0"
+      },
+      "dependencies": {
+        "cross-fetch": {
+          "version": "3.0.5",
+          "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.0.5.tgz",
+          "integrity": "sha512-FFLcLtraisj5eteosnX1gf01qYDCOc4fDy0+euOt8Kn9YBY2NtXL/pCoYPavw24NIQkQqm5ZOLsGD5Zzj0gyew==",
+          "requires": {
+            "node-fetch": "2.6.0"
+          }
+        },
+        "cssnano-simple": {
+          "version": "1.0.5",
+          "resolved": "https://registry.npmjs.org/cssnano-simple/-/cssnano-simple-1.0.5.tgz",
+          "integrity": "sha512-NJjx2Er1C3pa75v1GwMKm0w6xAp1GsW2Ql1As4CWPNFxTgYFN5e8wblYeHfna13sANAhyIdSIPqKJjBO4CU5Eg==",
+          "requires": {
+            "cssnano-preset-simple": "1.1.4",
+            "postcss": "^7.0.32"
+          }
+        },
+        "node-fetch": {
+          "version": "2.6.0",
+          "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz",
+          "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA=="
+        }
+      }
+    },
+    "@ampproject/toolbox-runtime-version": {
+      "version": "2.7.4",
+      "resolved": "https://registry.npmjs.org/@ampproject/toolbox-runtime-version/-/toolbox-runtime-version-2.7.4.tgz",
+      "integrity": "sha512-SAdOUOERp42thVNWaBJlnFvFVvnacMVnz5z9LyUZHSnoL1EqrAW5Sz5jv+Ly+gkA8NYsEaUxAdSCBAzE9Uzb4Q==",
+      "requires": {
+        "@ampproject/toolbox-core": "2.7.4"
+      }
+    },
+    "@ampproject/toolbox-script-csp": {
+      "version": "2.5.4",
+      "resolved": "https://registry.npmjs.org/@ampproject/toolbox-script-csp/-/toolbox-script-csp-2.5.4.tgz",
+      "integrity": "sha512-+knTYetI5nWllRZ9wFcj7mYxelkiiFVRAAW/hl0ad8EnKHMH82tRlk40CapEnUHhp6Er5sCYkumQ8dngs3Q4zQ=="
+    },
+    "@ampproject/toolbox-validator-rules": {
+      "version": "2.7.4",
+      "resolved": "https://registry.npmjs.org/@ampproject/toolbox-validator-rules/-/toolbox-validator-rules-2.7.4.tgz",
+      "integrity": "sha512-z3JRcpIZLLdVC9XVe7YTZuB3a/eR9s2SjElYB9AWRdyJyL5Jt7+pGNv4Uwh1uHVoBXsWEVQzNOWSNtrO3mSwZA==",
+      "requires": {
+        "cross-fetch": "3.0.6"
+      },
+      "dependencies": {
+        "cross-fetch": {
+          "version": "3.0.6",
+          "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.0.6.tgz",
+          "integrity": "sha512-KBPUbqgFjzWlVcURG+Svp9TlhA5uliYtiNx/0r8nv0pdypeQCRJ9IaSIc3q/x3q8t3F75cHuwxVql1HFGHCNJQ==",
+          "requires": {
+            "node-fetch": "2.6.1"
+          }
+        }
+      }
+    },
+    "@babel/code-frame": {
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz",
+      "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==",
+      "requires": {
+        "@babel/highlight": "^7.10.4"
+      }
+    },
+    "@babel/compat-data": {
+      "version": "7.13.12",
+      "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.12.tgz",
+      "integrity": "sha512-3eJJ841uKxeV8dcN/2yGEUy+RfgQspPEgQat85umsE1rotuquQ2AbIub4S6j7c50a2d+4myc+zSlnXeIHrOnhQ=="
+    },
+    "@babel/core": {
+      "version": "7.7.7",
+      "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.7.7.tgz",
+      "integrity": "sha512-jlSjuj/7z138NLZALxVgrx13AOtqip42ATZP7+kYl53GvDV6+4dCek1mVUo8z8c8Xnw/mx2q3d9HWh3griuesQ==",
+      "requires": {
+        "@babel/code-frame": "^7.5.5",
+        "@babel/generator": "^7.7.7",
+        "@babel/helpers": "^7.7.4",
+        "@babel/parser": "^7.7.7",
+        "@babel/template": "^7.7.4",
+        "@babel/traverse": "^7.7.4",
+        "@babel/types": "^7.7.4",
+        "convert-source-map": "^1.7.0",
+        "debug": "^4.1.0",
+        "json5": "^2.1.0",
+        "lodash": "^4.17.13",
+        "resolve": "^1.3.2",
+        "semver": "^5.4.1",
+        "source-map": "^0.5.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "4.3.1",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
+          "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
+          "requires": {
+            "ms": "2.1.2"
+          }
+        },
+        "ms": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+        },
+        "source-map": {
+          "version": "0.5.7",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+          "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
+        }
+      }
+    },
+    "@babel/generator": {
+      "version": "7.13.9",
+      "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz",
+      "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==",
+      "requires": {
+        "@babel/types": "^7.13.0",
+        "jsesc": "^2.5.1",
+        "source-map": "^0.5.0"
+      },
+      "dependencies": {
+        "@babel/types": {
+          "version": "7.13.12",
+          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz",
+          "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==",
+          "requires": {
+            "@babel/helper-validator-identifier": "^7.12.11",
+            "lodash": "^4.17.19",
+            "to-fast-properties": "^2.0.0"
+          }
+        },
+        "source-map": {
+          "version": "0.5.7",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+          "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
+        }
+      }
+    },
+    "@babel/helper-annotate-as-pure": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz",
+      "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==",
+      "requires": {
+        "@babel/types": "^7.12.13"
+      },
+      "dependencies": {
+        "@babel/types": {
+          "version": "7.13.12",
+          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz",
+          "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==",
+          "requires": {
+            "@babel/helper-validator-identifier": "^7.12.11",
+            "lodash": "^4.17.19",
+            "to-fast-properties": "^2.0.0"
+          }
+        }
+      }
+    },
+    "@babel/helper-builder-binary-assignment-operator-visitor": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz",
+      "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==",
+      "requires": {
+        "@babel/helper-explode-assignable-expression": "^7.12.13",
+        "@babel/types": "^7.12.13"
+      },
+      "dependencies": {
+        "@babel/types": {
+          "version": "7.13.12",
+          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz",
+          "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==",
+          "requires": {
+            "@babel/helper-validator-identifier": "^7.12.11",
+            "lodash": "^4.17.19",
+            "to-fast-properties": "^2.0.0"
+          }
+        }
+      }
+    },
+    "@babel/helper-compilation-targets": {
+      "version": "7.13.10",
+      "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.10.tgz",
+      "integrity": "sha512-/Xju7Qg1GQO4mHZ/Kcs6Au7gfafgZnwm+a7sy/ow/tV1sHeraRUHbjdat8/UvDor4Tez+siGKDk6zIKtCPKVJA==",
+      "requires": {
+        "@babel/compat-data": "^7.13.8",
+        "@babel/helper-validator-option": "^7.12.17",
+        "browserslist": "^4.14.5",
+        "semver": "^6.3.0"
+      },
+      "dependencies": {
+        "browserslist": {
+          "version": "4.16.3",
+          "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz",
+          "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==",
+          "requires": {
+            "caniuse-lite": "^1.0.30001181",
+            "colorette": "^1.2.1",
+            "electron-to-chromium": "^1.3.649",
+            "escalade": "^3.1.1",
+            "node-releases": "^1.1.70"
+          }
+        },
+        "semver": {
+          "version": "6.3.0",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
+        }
+      }
+    },
+    "@babel/helper-create-class-features-plugin": {
+      "version": "7.13.11",
+      "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.11.tgz",
+      "integrity": "sha512-ays0I7XYq9xbjCSvT+EvysLgfc3tOkwCULHjrnscGT3A9qD4sk3wXnJ3of0MAWsWGjdinFvajHU2smYuqXKMrw==",
+      "requires": {
+        "@babel/helper-function-name": "^7.12.13",
+        "@babel/helper-member-expression-to-functions": "^7.13.0",
+        "@babel/helper-optimise-call-expression": "^7.12.13",
+        "@babel/helper-replace-supers": "^7.13.0",
+        "@babel/helper-split-export-declaration": "^7.12.13"
+      }
+    },
+    "@babel/helper-create-regexp-features-plugin": {
+      "version": "7.12.17",
+      "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz",
+      "integrity": "sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==",
+      "requires": {
+        "@babel/helper-annotate-as-pure": "^7.12.13",
+        "regexpu-core": "^4.7.1"
+      }
+    },
+    "@babel/helper-explode-assignable-expression": {
+      "version": "7.13.0",
+      "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz",
+      "integrity": "sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==",
+      "requires": {
+        "@babel/types": "^7.13.0"
+      },
+      "dependencies": {
+        "@babel/types": {
+          "version": "7.13.12",
+          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz",
+          "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==",
+          "requires": {
+            "@babel/helper-validator-identifier": "^7.12.11",
+            "lodash": "^4.17.19",
+            "to-fast-properties": "^2.0.0"
+          }
+        }
+      }
+    },
+    "@babel/helper-function-name": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz",
+      "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==",
+      "requires": {
+        "@babel/helper-get-function-arity": "^7.12.13",
+        "@babel/template": "^7.12.13",
+        "@babel/types": "^7.12.13"
+      },
+      "dependencies": {
+        "@babel/types": {
+          "version": "7.13.12",
+          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz",
+          "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==",
+          "requires": {
+            "@babel/helper-validator-identifier": "^7.12.11",
+            "lodash": "^4.17.19",
+            "to-fast-properties": "^2.0.0"
+          }
+        }
+      }
+    },
+    "@babel/helper-get-function-arity": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz",
+      "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==",
+      "requires": {
+        "@babel/types": "^7.12.13"
+      },
+      "dependencies": {
+        "@babel/types": {
+          "version": "7.13.12",
+          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz",
+          "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==",
+          "requires": {
+            "@babel/helper-validator-identifier": "^7.12.11",
+            "lodash": "^4.17.19",
+            "to-fast-properties": "^2.0.0"
+          }
+        }
+      }
+    },
+    "@babel/helper-hoist-variables": {
+      "version": "7.13.0",
+      "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz",
+      "integrity": "sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g==",
+      "requires": {
+        "@babel/traverse": "^7.13.0",
+        "@babel/types": "^7.13.0"
+      },
+      "dependencies": {
+        "@babel/types": {
+          "version": "7.13.12",
+          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz",
+          "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==",
+          "requires": {
+            "@babel/helper-validator-identifier": "^7.12.11",
+            "lodash": "^4.17.19",
+            "to-fast-properties": "^2.0.0"
+          }
+        }
+      }
+    },
+    "@babel/helper-member-expression-to-functions": {
+      "version": "7.13.12",
+      "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz",
+      "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==",
+      "requires": {
+        "@babel/types": "^7.13.12"
+      },
+      "dependencies": {
+        "@babel/types": {
+          "version": "7.13.12",
+          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz",
+          "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==",
+          "requires": {
+            "@babel/helper-validator-identifier": "^7.12.11",
+            "lodash": "^4.17.19",
+            "to-fast-properties": "^2.0.0"
+          }
+        }
+      }
+    },
+    "@babel/helper-module-imports": {
+      "version": "7.13.12",
+      "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz",
+      "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==",
+      "requires": {
+        "@babel/types": "^7.13.12"
+      },
+      "dependencies": {
+        "@babel/types": {
+          "version": "7.13.12",
+          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz",
+          "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==",
+          "requires": {
+            "@babel/helper-validator-identifier": "^7.12.11",
+            "lodash": "^4.17.19",
+            "to-fast-properties": "^2.0.0"
+          }
+        }
+      }
+    },
+    "@babel/helper-module-transforms": {
+      "version": "7.13.12",
+      "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.12.tgz",
+      "integrity": "sha512-7zVQqMO3V+K4JOOj40kxiCrMf6xlQAkewBB0eu2b03OO/Q21ZutOzjpfD79A5gtE/2OWi1nv625MrDlGlkbknQ==",
+      "requires": {
+        "@babel/helper-module-imports": "^7.13.12",
+        "@babel/helper-replace-supers": "^7.13.12",
+        "@babel/helper-simple-access": "^7.13.12",
+        "@babel/helper-split-export-declaration": "^7.12.13",
+        "@babel/helper-validator-identifier": "^7.12.11",
+        "@babel/template": "^7.12.13",
+        "@babel/traverse": "^7.13.0",
+        "@babel/types": "^7.13.12"
+      },
+      "dependencies": {
+        "@babel/types": {
+          "version": "7.13.12",
+          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz",
+          "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==",
+          "requires": {
+            "@babel/helper-validator-identifier": "^7.12.11",
+            "lodash": "^4.17.19",
+            "to-fast-properties": "^2.0.0"
+          }
+        }
+      }
+    },
+    "@babel/helper-optimise-call-expression": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz",
+      "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==",
+      "requires": {
+        "@babel/types": "^7.12.13"
+      },
+      "dependencies": {
+        "@babel/types": {
+          "version": "7.13.12",
+          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz",
+          "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==",
+          "requires": {
+            "@babel/helper-validator-identifier": "^7.12.11",
+            "lodash": "^4.17.19",
+            "to-fast-properties": "^2.0.0"
+          }
+        }
+      }
+    },
+    "@babel/helper-plugin-utils": {
+      "version": "7.13.0",
+      "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz",
+      "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ=="
+    },
+    "@babel/helper-remap-async-to-generator": {
+      "version": "7.13.0",
+      "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz",
+      "integrity": "sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==",
+      "requires": {
+        "@babel/helper-annotate-as-pure": "^7.12.13",
+        "@babel/helper-wrap-function": "^7.13.0",
+        "@babel/types": "^7.13.0"
+      },
+      "dependencies": {
+        "@babel/types": {
+          "version": "7.13.12",
+          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz",
+          "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==",
+          "requires": {
+            "@babel/helper-validator-identifier": "^7.12.11",
+            "lodash": "^4.17.19",
+            "to-fast-properties": "^2.0.0"
+          }
+        }
+      }
+    },
+    "@babel/helper-replace-supers": {
+      "version": "7.13.12",
+      "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz",
+      "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==",
+      "requires": {
+        "@babel/helper-member-expression-to-functions": "^7.13.12",
+        "@babel/helper-optimise-call-expression": "^7.12.13",
+        "@babel/traverse": "^7.13.0",
+        "@babel/types": "^7.13.12"
+      },
+      "dependencies": {
+        "@babel/types": {
+          "version": "7.13.12",
+          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz",
+          "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==",
+          "requires": {
+            "@babel/helper-validator-identifier": "^7.12.11",
+            "lodash": "^4.17.19",
+            "to-fast-properties": "^2.0.0"
+          }
+        }
+      }
+    },
+    "@babel/helper-simple-access": {
+      "version": "7.13.12",
+      "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz",
+      "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==",
+      "requires": {
+        "@babel/types": "^7.13.12"
+      },
+      "dependencies": {
+        "@babel/types": {
+          "version": "7.13.12",
+          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz",
+          "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==",
+          "requires": {
+            "@babel/helper-validator-identifier": "^7.12.11",
+            "lodash": "^4.17.19",
+            "to-fast-properties": "^2.0.0"
+          }
+        }
+      }
+    },
+    "@babel/helper-skip-transparent-expression-wrappers": {
+      "version": "7.12.1",
+      "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz",
+      "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==",
+      "requires": {
+        "@babel/types": "^7.12.1"
+      },
+      "dependencies": {
+        "@babel/types": {
+          "version": "7.13.12",
+          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz",
+          "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==",
+          "requires": {
+            "@babel/helper-validator-identifier": "^7.12.11",
+            "lodash": "^4.17.19",
+            "to-fast-properties": "^2.0.0"
+          }
+        }
+      }
+    },
+    "@babel/helper-split-export-declaration": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz",
+      "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==",
+      "requires": {
+        "@babel/types": "^7.12.13"
+      },
+      "dependencies": {
+        "@babel/types": {
+          "version": "7.13.12",
+          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz",
+          "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==",
+          "requires": {
+            "@babel/helper-validator-identifier": "^7.12.11",
+            "lodash": "^4.17.19",
+            "to-fast-properties": "^2.0.0"
+          }
+        }
+      }
+    },
+    "@babel/helper-validator-identifier": {
+      "version": "7.12.11",
+      "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz",
+      "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw=="
+    },
+    "@babel/helper-validator-option": {
+      "version": "7.12.17",
+      "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz",
+      "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw=="
+    },
+    "@babel/helper-wrap-function": {
+      "version": "7.13.0",
+      "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz",
+      "integrity": "sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==",
+      "requires": {
+        "@babel/helper-function-name": "^7.12.13",
+        "@babel/template": "^7.12.13",
+        "@babel/traverse": "^7.13.0",
+        "@babel/types": "^7.13.0"
+      },
+      "dependencies": {
+        "@babel/types": {
+          "version": "7.13.12",
+          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz",
+          "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==",
+          "requires": {
+            "@babel/helper-validator-identifier": "^7.12.11",
+            "lodash": "^4.17.19",
+            "to-fast-properties": "^2.0.0"
+          }
+        }
+      }
+    },
+    "@babel/helpers": {
+      "version": "7.13.10",
+      "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.10.tgz",
+      "integrity": "sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ==",
+      "requires": {
+        "@babel/template": "^7.12.13",
+        "@babel/traverse": "^7.13.0",
+        "@babel/types": "^7.13.0"
+      },
+      "dependencies": {
+        "@babel/types": {
+          "version": "7.13.12",
+          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz",
+          "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==",
+          "requires": {
+            "@babel/helper-validator-identifier": "^7.12.11",
+            "lodash": "^4.17.19",
+            "to-fast-properties": "^2.0.0"
+          }
+        }
+      }
+    },
+    "@babel/highlight": {
+      "version": "7.13.10",
+      "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz",
+      "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==",
+      "requires": {
+        "@babel/helper-validator-identifier": "^7.12.11",
+        "chalk": "^2.0.0",
+        "js-tokens": "^4.0.0"
+      }
+    },
+    "@babel/parser": {
+      "version": "7.13.12",
+      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.12.tgz",
+      "integrity": "sha512-4T7Pb244rxH24yR116LAuJ+adxXXnHhZaLJjegJVKSdoNCe4x1eDBaud5YIcQFcqzsaD5BHvJw5BQ0AZapdCRw=="
+    },
+    "@babel/plugin-proposal-async-generator-functions": {
+      "version": "7.13.8",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.8.tgz",
+      "integrity": "sha512-rPBnhj+WgoSmgq+4gQUtXx/vOcU+UYtjy1AA/aeD61Hwj410fwYyqfUcRP3lR8ucgliVJL/G7sXcNUecC75IXA==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.13.0",
+        "@babel/helper-remap-async-to-generator": "^7.13.0",
+        "@babel/plugin-syntax-async-generators": "^7.8.4"
+      }
+    },
+    "@babel/plugin-proposal-class-properties": {
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.4.tgz",
+      "integrity": "sha512-vhwkEROxzcHGNu2mzUC0OFFNXdZ4M23ib8aRRcJSsW8BZK9pQMD7QB7csl97NBbgGZO7ZyHUyKDnxzOaP4IrCg==",
+      "requires": {
+        "@babel/helper-create-class-features-plugin": "^7.10.4",
+        "@babel/helper-plugin-utils": "^7.10.4"
+      }
+    },
+    "@babel/plugin-proposal-dynamic-import": {
+      "version": "7.13.8",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz",
+      "integrity": "sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.13.0",
+        "@babel/plugin-syntax-dynamic-import": "^7.8.3"
+      }
+    },
+    "@babel/plugin-proposal-export-namespace-from": {
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.10.4.tgz",
+      "integrity": "sha512-aNdf0LY6/3WXkhh0Fdb6Zk9j1NMD8ovj3F6r0+3j837Pn1S1PdNtcwJ5EG9WkVPNHPxyJDaxMaAOVq4eki0qbg==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.10.4",
+        "@babel/plugin-syntax-export-namespace-from": "^7.8.3"
+      }
+    },
+    "@babel/plugin-proposal-json-strings": {
+      "version": "7.13.8",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz",
+      "integrity": "sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.13.0",
+        "@babel/plugin-syntax-json-strings": "^7.8.3"
+      }
+    },
+    "@babel/plugin-proposal-logical-assignment-operators": {
+      "version": "7.13.8",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz",
+      "integrity": "sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.13.0",
+        "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
+      }
+    },
+    "@babel/plugin-proposal-nullish-coalescing-operator": {
+      "version": "7.13.8",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz",
+      "integrity": "sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.13.0",
+        "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
+      }
+    },
+    "@babel/plugin-proposal-numeric-separator": {
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.4.tgz",
+      "integrity": "sha512-73/G7QoRoeNkLZFxsoCCvlg4ezE4eM+57PnOqgaPOozd5myfj7p0muD1mRVJvbUWbOzD+q3No2bWbaKy+DJ8DA==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.10.4",
+        "@babel/plugin-syntax-numeric-separator": "^7.10.4"
+      }
+    },
+    "@babel/plugin-proposal-object-rest-spread": {
+      "version": "7.11.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.11.0.tgz",
+      "integrity": "sha512-wzch41N4yztwoRw0ak+37wxwJM2oiIiy6huGCoqkvSTA9acYWcPfn9Y4aJqmFFJ70KTJUu29f3DQ43uJ9HXzEA==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.10.4",
+        "@babel/plugin-syntax-object-rest-spread": "^7.8.0",
+        "@babel/plugin-transform-parameters": "^7.10.4"
+      }
+    },
+    "@babel/plugin-proposal-optional-catch-binding": {
+      "version": "7.13.8",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz",
+      "integrity": "sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.13.0",
+        "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
+      }
+    },
+    "@babel/plugin-proposal-optional-chaining": {
+      "version": "7.13.12",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.12.tgz",
+      "integrity": "sha512-fcEdKOkIB7Tf4IxrgEVeFC4zeJSTr78no9wTdBuZZbqF64kzllU0ybo2zrzm7gUQfxGhBgq4E39oRs8Zx/RMYQ==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.13.0",
+        "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1",
+        "@babel/plugin-syntax-optional-chaining": "^7.8.3"
+      }
+    },
+    "@babel/plugin-proposal-private-methods": {
+      "version": "7.13.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz",
+      "integrity": "sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==",
+      "requires": {
+        "@babel/helper-create-class-features-plugin": "^7.13.0",
+        "@babel/helper-plugin-utils": "^7.13.0"
+      }
+    },
+    "@babel/plugin-proposal-unicode-property-regex": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz",
+      "integrity": "sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==",
+      "requires": {
+        "@babel/helper-create-regexp-features-plugin": "^7.12.13",
+        "@babel/helper-plugin-utils": "^7.12.13"
+      }
+    },
+    "@babel/plugin-syntax-async-generators": {
+      "version": "7.8.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
+      "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      }
+    },
+    "@babel/plugin-syntax-bigint": {
+      "version": "7.8.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz",
+      "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      }
+    },
+    "@babel/plugin-syntax-class-properties": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
+      "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.12.13"
+      }
+    },
+    "@babel/plugin-syntax-dynamic-import": {
+      "version": "7.8.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
+      "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      }
+    },
+    "@babel/plugin-syntax-export-namespace-from": {
+      "version": "7.8.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz",
+      "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.3"
+      }
+    },
+    "@babel/plugin-syntax-json-strings": {
+      "version": "7.8.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
+      "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      }
+    },
+    "@babel/plugin-syntax-jsx": {
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.10.4.tgz",
+      "integrity": "sha512-KCg9mio9jwiARCB7WAcQ7Y1q+qicILjoK8LP/VkPkEKaf5dkaZZK1EcTe91a3JJlZ3qy6L5s9X52boEYi8DM9g==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.10.4"
+      }
+    },
+    "@babel/plugin-syntax-logical-assignment-operators": {
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
+      "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.10.4"
+      }
+    },
+    "@babel/plugin-syntax-nullish-coalescing-operator": {
+      "version": "7.8.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
+      "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      }
+    },
+    "@babel/plugin-syntax-numeric-separator": {
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
+      "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.10.4"
+      }
+    },
+    "@babel/plugin-syntax-object-rest-spread": {
+      "version": "7.8.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
+      "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      }
+    },
+    "@babel/plugin-syntax-optional-catch-binding": {
+      "version": "7.8.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
+      "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      }
+    },
+    "@babel/plugin-syntax-optional-chaining": {
+      "version": "7.8.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
+      "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      }
+    },
+    "@babel/plugin-syntax-top-level-await": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz",
+      "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.12.13"
+      }
+    },
+    "@babel/plugin-syntax-typescript": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.13.tgz",
+      "integrity": "sha512-cHP3u1JiUiG2LFDKbXnwVad81GvfyIOmCD6HIEId6ojrY0Drfy2q1jw7BwN7dE84+kTnBjLkXoL3IEy/3JPu2w==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.12.13"
+      }
+    },
+    "@babel/plugin-transform-arrow-functions": {
+      "version": "7.13.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz",
+      "integrity": "sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.13.0"
+      }
+    },
+    "@babel/plugin-transform-async-to-generator": {
+      "version": "7.13.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz",
+      "integrity": "sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg==",
+      "requires": {
+        "@babel/helper-module-imports": "^7.12.13",
+        "@babel/helper-plugin-utils": "^7.13.0",
+        "@babel/helper-remap-async-to-generator": "^7.13.0"
+      }
+    },
+    "@babel/plugin-transform-block-scoped-functions": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz",
+      "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.12.13"
+      }
+    },
+    "@babel/plugin-transform-block-scoping": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz",
+      "integrity": "sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.12.13"
+      }
+    },
+    "@babel/plugin-transform-classes": {
+      "version": "7.13.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz",
+      "integrity": "sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g==",
+      "requires": {
+        "@babel/helper-annotate-as-pure": "^7.12.13",
+        "@babel/helper-function-name": "^7.12.13",
+        "@babel/helper-optimise-call-expression": "^7.12.13",
+        "@babel/helper-plugin-utils": "^7.13.0",
+        "@babel/helper-replace-supers": "^7.13.0",
+        "@babel/helper-split-export-declaration": "^7.12.13",
+        "globals": "^11.1.0"
+      }
+    },
+    "@babel/plugin-transform-computed-properties": {
+      "version": "7.13.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz",
+      "integrity": "sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.13.0"
+      }
+    },
+    "@babel/plugin-transform-destructuring": {
+      "version": "7.13.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz",
+      "integrity": "sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.13.0"
+      }
+    },
+    "@babel/plugin-transform-dotall-regex": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz",
+      "integrity": "sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==",
+      "requires": {
+        "@babel/helper-create-regexp-features-plugin": "^7.12.13",
+        "@babel/helper-plugin-utils": "^7.12.13"
+      }
+    },
+    "@babel/plugin-transform-duplicate-keys": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz",
+      "integrity": "sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.12.13"
+      }
+    },
+    "@babel/plugin-transform-exponentiation-operator": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz",
+      "integrity": "sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==",
+      "requires": {
+        "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13",
+        "@babel/helper-plugin-utils": "^7.12.13"
+      }
+    },
+    "@babel/plugin-transform-for-of": {
+      "version": "7.13.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz",
+      "integrity": "sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.13.0"
+      }
+    },
+    "@babel/plugin-transform-function-name": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz",
+      "integrity": "sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==",
+      "requires": {
+        "@babel/helper-function-name": "^7.12.13",
+        "@babel/helper-plugin-utils": "^7.12.13"
+      }
+    },
+    "@babel/plugin-transform-literals": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz",
+      "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.12.13"
+      }
+    },
+    "@babel/plugin-transform-member-expression-literals": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz",
+      "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.12.13"
+      }
+    },
+    "@babel/plugin-transform-modules-amd": {
+      "version": "7.13.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz",
+      "integrity": "sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ==",
+      "requires": {
+        "@babel/helper-module-transforms": "^7.13.0",
+        "@babel/helper-plugin-utils": "^7.13.0",
+        "babel-plugin-dynamic-import-node": "^2.3.3"
+      }
+    },
+    "@babel/plugin-transform-modules-commonjs": {
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz",
+      "integrity": "sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w==",
+      "requires": {
+        "@babel/helper-module-transforms": "^7.10.4",
+        "@babel/helper-plugin-utils": "^7.10.4",
+        "@babel/helper-simple-access": "^7.10.4",
+        "babel-plugin-dynamic-import-node": "^2.3.3"
+      }
+    },
+    "@babel/plugin-transform-modules-systemjs": {
+      "version": "7.13.8",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz",
+      "integrity": "sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==",
+      "requires": {
+        "@babel/helper-hoist-variables": "^7.13.0",
+        "@babel/helper-module-transforms": "^7.13.0",
+        "@babel/helper-plugin-utils": "^7.13.0",
+        "@babel/helper-validator-identifier": "^7.12.11",
+        "babel-plugin-dynamic-import-node": "^2.3.3"
+      }
+    },
+    "@babel/plugin-transform-modules-umd": {
+      "version": "7.13.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz",
+      "integrity": "sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw==",
+      "requires": {
+        "@babel/helper-module-transforms": "^7.13.0",
+        "@babel/helper-plugin-utils": "^7.13.0"
+      }
+    },
+    "@babel/plugin-transform-named-capturing-groups-regex": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz",
+      "integrity": "sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==",
+      "requires": {
+        "@babel/helper-create-regexp-features-plugin": "^7.12.13"
+      }
+    },
+    "@babel/plugin-transform-new-target": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz",
+      "integrity": "sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.12.13"
+      }
+    },
+    "@babel/plugin-transform-object-super": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz",
+      "integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.12.13",
+        "@babel/helper-replace-supers": "^7.12.13"
+      }
+    },
+    "@babel/plugin-transform-parameters": {
+      "version": "7.13.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz",
+      "integrity": "sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.13.0"
+      }
+    },
+    "@babel/plugin-transform-property-literals": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz",
+      "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.12.13"
+      }
+    },
+    "@babel/plugin-transform-react-display-name": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.12.13.tgz",
+      "integrity": "sha512-MprESJzI9O5VnJZrL7gg1MpdqmiFcUv41Jc7SahxYsNP2kDkFqClxxTZq+1Qv4AFCamm+GXMRDQINNn+qrxmiA==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.12.13"
+      }
+    },
+    "@babel/plugin-transform-react-jsx": {
+      "version": "7.13.12",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.13.12.tgz",
+      "integrity": "sha512-jcEI2UqIcpCqB5U5DRxIl0tQEProI2gcu+g8VTIqxLO5Iidojb4d77q+fwGseCvd8af/lJ9masp4QWzBXFE2xA==",
+      "requires": {
+        "@babel/helper-annotate-as-pure": "^7.12.13",
+        "@babel/helper-module-imports": "^7.13.12",
+        "@babel/helper-plugin-utils": "^7.13.0",
+        "@babel/plugin-syntax-jsx": "^7.12.13",
+        "@babel/types": "^7.13.12"
+      },
+      "dependencies": {
+        "@babel/plugin-syntax-jsx": {
+          "version": "7.12.13",
+          "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.13.tgz",
+          "integrity": "sha512-d4HM23Q1K7oq/SLNmG6mRt85l2csmQ0cHRaxRXjKW0YFdEXqlZ5kzFQKH5Uc3rDJECgu+yCRgPkG04Mm98R/1g==",
+          "requires": {
+            "@babel/helper-plugin-utils": "^7.12.13"
+          }
+        },
+        "@babel/types": {
+          "version": "7.13.12",
+          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz",
+          "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==",
+          "requires": {
+            "@babel/helper-validator-identifier": "^7.12.11",
+            "lodash": "^4.17.19",
+            "to-fast-properties": "^2.0.0"
+          }
+        }
+      }
+    },
+    "@babel/plugin-transform-react-jsx-development": {
+      "version": "7.12.17",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.12.17.tgz",
+      "integrity": "sha512-BPjYV86SVuOaudFhsJR1zjgxxOhJDt6JHNoD48DxWEIxUCAMjV1ys6DYw4SDYZh0b1QsS2vfIA9t/ZsQGsDOUQ==",
+      "requires": {
+        "@babel/plugin-transform-react-jsx": "^7.12.17"
+      }
+    },
+    "@babel/plugin-transform-react-jsx-self": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.12.13.tgz",
+      "integrity": "sha512-FXYw98TTJ125GVCCkFLZXlZ1qGcsYqNQhVBQcZjyrwf8FEUtVfKIoidnO8S0q+KBQpDYNTmiGo1gn67Vti04lQ==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.12.13"
+      }
+    },
+    "@babel/plugin-transform-react-jsx-source": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.12.13.tgz",
+      "integrity": "sha512-O5JJi6fyfih0WfDgIJXksSPhGP/G0fQpfxYy87sDc+1sFmsCS6wr3aAn+whbzkhbjtq4VMqLRaSzR6IsshIC0Q==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.12.13"
+      }
+    },
+    "@babel/plugin-transform-react-pure-annotations": {
+      "version": "7.12.1",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.12.1.tgz",
+      "integrity": "sha512-RqeaHiwZtphSIUZ5I85PEH19LOSzxfuEazoY7/pWASCAIBuATQzpSVD+eT6MebeeZT2F4eSL0u4vw6n4Nm0Mjg==",
+      "requires": {
+        "@babel/helper-annotate-as-pure": "^7.10.4",
+        "@babel/helper-plugin-utils": "^7.10.4"
+      }
+    },
+    "@babel/plugin-transform-regenerator": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz",
+      "integrity": "sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA==",
+      "requires": {
+        "regenerator-transform": "^0.14.2"
+      }
+    },
+    "@babel/plugin-transform-reserved-words": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz",
+      "integrity": "sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.12.13"
+      }
+    },
+    "@babel/plugin-transform-runtime": {
+      "version": "7.11.5",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.11.5.tgz",
+      "integrity": "sha512-9aIoee+EhjySZ6vY5hnLjigHzunBlscx9ANKutkeWTJTx6m5Rbq6Ic01tLvO54lSusR+BxV7u4UDdCmXv5aagg==",
+      "requires": {
+        "@babel/helper-module-imports": "^7.10.4",
+        "@babel/helper-plugin-utils": "^7.10.4",
+        "resolve": "^1.8.1",
+        "semver": "^5.5.1"
+      }
+    },
+    "@babel/plugin-transform-shorthand-properties": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz",
+      "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.12.13"
+      }
+    },
+    "@babel/plugin-transform-spread": {
+      "version": "7.13.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz",
+      "integrity": "sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.13.0",
+        "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1"
+      }
+    },
+    "@babel/plugin-transform-sticky-regex": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz",
+      "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.12.13"
+      }
+    },
+    "@babel/plugin-transform-template-literals": {
+      "version": "7.13.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz",
+      "integrity": "sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.13.0"
+      }
+    },
+    "@babel/plugin-transform-typeof-symbol": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz",
+      "integrity": "sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.12.13"
+      }
+    },
+    "@babel/plugin-transform-typescript": {
+      "version": "7.13.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.13.0.tgz",
+      "integrity": "sha512-elQEwluzaU8R8dbVuW2Q2Y8Nznf7hnjM7+DSCd14Lo5fF63C9qNLbwZYbmZrtV9/ySpSUpkRpQXvJb6xyu4hCQ==",
+      "requires": {
+        "@babel/helper-create-class-features-plugin": "^7.13.0",
+        "@babel/helper-plugin-utils": "^7.13.0",
+        "@babel/plugin-syntax-typescript": "^7.12.13"
+      }
+    },
+    "@babel/plugin-transform-unicode-escapes": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz",
+      "integrity": "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.12.13"
+      }
+    },
+    "@babel/plugin-transform-unicode-regex": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz",
+      "integrity": "sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==",
+      "requires": {
+        "@babel/helper-create-regexp-features-plugin": "^7.12.13",
+        "@babel/helper-plugin-utils": "^7.12.13"
+      }
+    },
+    "@babel/polyfill": {
+      "version": "7.2.5",
+      "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.2.5.tgz",
+      "integrity": "sha512-8Y/t3MWThtMLYr0YNC/Q76tqN1w30+b0uQMeFUYauG2UGTR19zyUtFrAzT23zNtBxPp+LbE5E/nwV/q/r3y6ug==",
+      "requires": {
+        "core-js": "^2.5.7",
+        "regenerator-runtime": "^0.12.0"
+      }
+    },
+    "@babel/preset-env": {
+      "version": "7.11.5",
+      "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.11.5.tgz",
+      "integrity": "sha512-kXqmW1jVcnB2cdueV+fyBM8estd5mlNfaQi6lwLgRwCby4edpavgbFhiBNjmWA3JpB/yZGSISa7Srf+TwxDQoA==",
+      "requires": {
+        "@babel/compat-data": "^7.11.0",
+        "@babel/helper-compilation-targets": "^7.10.4",
+        "@babel/helper-module-imports": "^7.10.4",
+        "@babel/helper-plugin-utils": "^7.10.4",
+        "@babel/plugin-proposal-async-generator-functions": "^7.10.4",
+        "@babel/plugin-proposal-class-properties": "^7.10.4",
+        "@babel/plugin-proposal-dynamic-import": "^7.10.4",
+        "@babel/plugin-proposal-export-namespace-from": "^7.10.4",
+        "@babel/plugin-proposal-json-strings": "^7.10.4",
+        "@babel/plugin-proposal-logical-assignment-operators": "^7.11.0",
+        "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.4",
+        "@babel/plugin-proposal-numeric-separator": "^7.10.4",
+        "@babel/plugin-proposal-object-rest-spread": "^7.11.0",
+        "@babel/plugin-proposal-optional-catch-binding": "^7.10.4",
+        "@babel/plugin-proposal-optional-chaining": "^7.11.0",
+        "@babel/plugin-proposal-private-methods": "^7.10.4",
+        "@babel/plugin-proposal-unicode-property-regex": "^7.10.4",
+        "@babel/plugin-syntax-async-generators": "^7.8.0",
+        "@babel/plugin-syntax-class-properties": "^7.10.4",
+        "@babel/plugin-syntax-dynamic-import": "^7.8.0",
+        "@babel/plugin-syntax-export-namespace-from": "^7.8.3",
+        "@babel/plugin-syntax-json-strings": "^7.8.0",
+        "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
+        "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0",
+        "@babel/plugin-syntax-numeric-separator": "^7.10.4",
+        "@babel/plugin-syntax-object-rest-spread": "^7.8.0",
+        "@babel/plugin-syntax-optional-catch-binding": "^7.8.0",
+        "@babel/plugin-syntax-optional-chaining": "^7.8.0",
+        "@babel/plugin-syntax-top-level-await": "^7.10.4",
+        "@babel/plugin-transform-arrow-functions": "^7.10.4",
+        "@babel/plugin-transform-async-to-generator": "^7.10.4",
+        "@babel/plugin-transform-block-scoped-functions": "^7.10.4",
+        "@babel/plugin-transform-block-scoping": "^7.10.4",
+        "@babel/plugin-transform-classes": "^7.10.4",
+        "@babel/plugin-transform-computed-properties": "^7.10.4",
+        "@babel/plugin-transform-destructuring": "^7.10.4",
+        "@babel/plugin-transform-dotall-regex": "^7.10.4",
+        "@babel/plugin-transform-duplicate-keys": "^7.10.4",
+        "@babel/plugin-transform-exponentiation-operator": "^7.10.4",
+        "@babel/plugin-transform-for-of": "^7.10.4",
+        "@babel/plugin-transform-function-name": "^7.10.4",
+        "@babel/plugin-transform-literals": "^7.10.4",
+        "@babel/plugin-transform-member-expression-literals": "^7.10.4",
+        "@babel/plugin-transform-modules-amd": "^7.10.4",
+        "@babel/plugin-transform-modules-commonjs": "^7.10.4",
+        "@babel/plugin-transform-modules-systemjs": "^7.10.4",
+        "@babel/plugin-transform-modules-umd": "^7.10.4",
+        "@babel/plugin-transform-named-capturing-groups-regex": "^7.10.4",
+        "@babel/plugin-transform-new-target": "^7.10.4",
+        "@babel/plugin-transform-object-super": "^7.10.4",
+        "@babel/plugin-transform-parameters": "^7.10.4",
+        "@babel/plugin-transform-property-literals": "^7.10.4",
+        "@babel/plugin-transform-regenerator": "^7.10.4",
+        "@babel/plugin-transform-reserved-words": "^7.10.4",
+        "@babel/plugin-transform-shorthand-properties": "^7.10.4",
+        "@babel/plugin-transform-spread": "^7.11.0",
+        "@babel/plugin-transform-sticky-regex": "^7.10.4",
+        "@babel/plugin-transform-template-literals": "^7.10.4",
+        "@babel/plugin-transform-typeof-symbol": "^7.10.4",
+        "@babel/plugin-transform-unicode-escapes": "^7.10.4",
+        "@babel/plugin-transform-unicode-regex": "^7.10.4",
+        "@babel/preset-modules": "^0.1.3",
+        "@babel/types": "^7.11.5",
+        "browserslist": "^4.12.0",
+        "core-js-compat": "^3.6.2",
+        "invariant": "^2.2.2",
+        "levenary": "^1.1.1",
+        "semver": "^5.5.0"
+      }
+    },
+    "@babel/preset-modules": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz",
+      "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/plugin-proposal-unicode-property-regex": "^7.4.4",
+        "@babel/plugin-transform-dotall-regex": "^7.4.4",
+        "@babel/types": "^7.4.4",
+        "esutils": "^2.0.2"
+      }
+    },
+    "@babel/preset-react": {
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.10.4.tgz",
+      "integrity": "sha512-BrHp4TgOIy4M19JAfO1LhycVXOPWdDbTRep7eVyatf174Hff+6Uk53sDyajqZPu8W1qXRBiYOfIamek6jA7YVw==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.10.4",
+        "@babel/plugin-transform-react-display-name": "^7.10.4",
+        "@babel/plugin-transform-react-jsx": "^7.10.4",
+        "@babel/plugin-transform-react-jsx-development": "^7.10.4",
+        "@babel/plugin-transform-react-jsx-self": "^7.10.4",
+        "@babel/plugin-transform-react-jsx-source": "^7.10.4",
+        "@babel/plugin-transform-react-pure-annotations": "^7.10.4"
+      }
+    },
+    "@babel/preset-typescript": {
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.10.4.tgz",
+      "integrity": "sha512-SdYnvGPv+bLlwkF2VkJnaX/ni1sMNetcGI1+nThF1gyv6Ph8Qucc4ZZAjM5yZcE/AKRXIOTZz7eSRDWOEjPyRQ==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.10.4",
+        "@babel/plugin-transform-typescript": "^7.10.4"
+      }
+    },
+    "@babel/runtime": {
+      "version": "7.13.10",
+      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.10.tgz",
+      "integrity": "sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==",
+      "requires": {
+        "regenerator-runtime": "^0.13.4"
+      },
+      "dependencies": {
+        "regenerator-runtime": {
+          "version": "0.13.7",
+          "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz",
+          "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew=="
+        }
+      }
+    },
+    "@babel/template": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz",
+      "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==",
+      "requires": {
+        "@babel/code-frame": "^7.12.13",
+        "@babel/parser": "^7.12.13",
+        "@babel/types": "^7.12.13"
+      },
+      "dependencies": {
+        "@babel/code-frame": {
+          "version": "7.12.13",
+          "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz",
+          "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==",
+          "requires": {
+            "@babel/highlight": "^7.12.13"
+          }
+        },
+        "@babel/types": {
+          "version": "7.13.12",
+          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz",
+          "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==",
+          "requires": {
+            "@babel/helper-validator-identifier": "^7.12.11",
+            "lodash": "^4.17.19",
+            "to-fast-properties": "^2.0.0"
+          }
+        }
+      }
+    },
+    "@babel/traverse": {
+      "version": "7.13.0",
+      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.0.tgz",
+      "integrity": "sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==",
+      "requires": {
+        "@babel/code-frame": "^7.12.13",
+        "@babel/generator": "^7.13.0",
+        "@babel/helper-function-name": "^7.12.13",
+        "@babel/helper-split-export-declaration": "^7.12.13",
+        "@babel/parser": "^7.13.0",
+        "@babel/types": "^7.13.0",
+        "debug": "^4.1.0",
+        "globals": "^11.1.0",
+        "lodash": "^4.17.19"
+      },
+      "dependencies": {
+        "@babel/code-frame": {
+          "version": "7.12.13",
+          "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz",
+          "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==",
+          "requires": {
+            "@babel/highlight": "^7.12.13"
+          }
+        },
+        "@babel/types": {
+          "version": "7.13.12",
+          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz",
+          "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==",
+          "requires": {
+            "@babel/helper-validator-identifier": "^7.12.11",
+            "lodash": "^4.17.19",
+            "to-fast-properties": "^2.0.0"
+          }
+        },
+        "debug": {
+          "version": "4.3.1",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
+          "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
+          "requires": {
+            "ms": "2.1.2"
+          }
+        },
+        "ms": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+        }
+      }
+    },
+    "@babel/types": {
+      "version": "7.11.5",
+      "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz",
+      "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==",
+      "requires": {
+        "@babel/helper-validator-identifier": "^7.10.4",
+        "lodash": "^4.17.19",
+        "to-fast-properties": "^2.0.0"
+      }
+    },
+    "@choojs/findup": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/@choojs/findup/-/findup-0.2.1.tgz",
+      "integrity": "sha512-YstAqNb0MCN8PjdLCDfRsBcGVRN41f3vgLvaI0IrIcBp4AqILRSS0DeWNGkicC+f/zRIPJLc+9RURVSepwvfBw==",
+      "requires": {
+        "commander": "^2.15.1"
+      }
+    },
+    "@emotion/cache": {
+      "version": "10.0.29",
+      "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-10.0.29.tgz",
+      "integrity": "sha512-fU2VtSVlHiF27empSbxi1O2JFdNWZO+2NFHfwO0pxgTep6Xa3uGb+3pVKfLww2l/IBGLNEZl5Xf/++A4wAYDYQ==",
+      "requires": {
+        "@emotion/sheet": "0.9.4",
+        "@emotion/stylis": "0.8.5",
+        "@emotion/utils": "0.11.3",
+        "@emotion/weak-memoize": "0.2.5"
+      }
+    },
+    "@emotion/core": {
+      "version": "10.1.1",
+      "resolved": "https://registry.npmjs.org/@emotion/core/-/core-10.1.1.tgz",
+      "integrity": "sha512-ZMLG6qpXR8x031NXD8HJqugy/AZSkAuMxxqB46pmAR7ze47MhNJ56cdoX243QPZdGctrdfo+s08yZTiwaUcRKA==",
+      "requires": {
+        "@babel/runtime": "^7.5.5",
+        "@emotion/cache": "^10.0.27",
+        "@emotion/css": "^10.0.27",
+        "@emotion/serialize": "^0.11.15",
+        "@emotion/sheet": "0.9.4",
+        "@emotion/utils": "0.11.3"
+      }
+    },
+    "@emotion/css": {
+      "version": "10.0.27",
+      "resolved": "https://registry.npmjs.org/@emotion/css/-/css-10.0.27.tgz",
+      "integrity": "sha512-6wZjsvYeBhyZQYNrGoR5yPMYbMBNEnanDrqmsqS1mzDm1cOTu12shvl2j4QHNS36UaTE0USIJawCH9C8oW34Zw==",
+      "requires": {
+        "@emotion/serialize": "^0.11.15",
+        "@emotion/utils": "0.11.3",
+        "babel-plugin-emotion": "^10.0.27"
+      }
+    },
+    "@emotion/hash": {
+      "version": "0.8.0",
+      "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz",
+      "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow=="
+    },
+    "@emotion/memoize": {
+      "version": "0.7.4",
+      "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz",
+      "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw=="
+    },
+    "@emotion/serialize": {
+      "version": "0.11.16",
+      "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-0.11.16.tgz",
+      "integrity": "sha512-G3J4o8by0VRrO+PFeSc3js2myYNOXVJ3Ya+RGVxnshRYgsvErfAOglKAiy1Eo1vhzxqtUvjCyS5gtewzkmvSSg==",
+      "requires": {
+        "@emotion/hash": "0.8.0",
+        "@emotion/memoize": "0.7.4",
+        "@emotion/unitless": "0.7.5",
+        "@emotion/utils": "0.11.3",
+        "csstype": "^2.5.7"
+      }
+    },
+    "@emotion/sheet": {
+      "version": "0.9.4",
+      "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-0.9.4.tgz",
+      "integrity": "sha512-zM9PFmgVSqBw4zL101Q0HrBVTGmpAxFZH/pYx/cjJT5advXguvcgjHFTCaIO3enL/xr89vK2bh0Mfyj9aa0ANA=="
+    },
+    "@emotion/stylis": {
+      "version": "0.8.5",
+      "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz",
+      "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ=="
+    },
+    "@emotion/unitless": {
+      "version": "0.7.5",
+      "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz",
+      "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg=="
+    },
+    "@emotion/utils": {
+      "version": "0.11.3",
+      "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-0.11.3.tgz",
+      "integrity": "sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw=="
+    },
+    "@emotion/weak-memoize": {
+      "version": "0.2.5",
+      "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz",
+      "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA=="
+    },
+    "@fortawesome/fontawesome-free": {
+      "version": "5.15.3",
+      "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-5.15.3.tgz",
+      "integrity": "sha512-rFnSUN/QOtnOAgqFRooTA3H57JLDm0QEG/jPdk+tLQNL/eWd+Aok8g3qCI+Q1xuDPWpGW/i9JySpJVsq8Q0s9w=="
+    },
+    "@fullcalendar/bootstrap": {
+      "version": "4.4.2",
+      "resolved": "https://registry.npmjs.org/@fullcalendar/bootstrap/-/bootstrap-4.4.2.tgz",
+      "integrity": "sha512-zxtQvpZqr7zeBCfszo/i1e4zCvGwLh2zOp8J6Wxw5s73HsB1zuftWop7sPO+qhRrhX5MdM9i/wr8/nNY8BZSmw=="
+    },
+    "@fullcalendar/core": {
+      "version": "4.4.2",
+      "resolved": "https://registry.npmjs.org/@fullcalendar/core/-/core-4.4.2.tgz",
+      "integrity": "sha512-vq7KQGuAJ1ieFG5tUqwxwUwmXYtblFOTjHaLAVHo6iEPB52mS7DS45VJfkhaQmX4+5/+BHRpg82G1qkuAINwtg=="
+    },
+    "@fullcalendar/daygrid": {
+      "version": "4.4.2",
+      "resolved": "https://registry.npmjs.org/@fullcalendar/daygrid/-/daygrid-4.4.2.tgz",
+      "integrity": "sha512-axjfMhxEXHShV3r2TZjf+2niJ1C6LdAxkHKmg7mVq4jXtUQHOldU5XsjV0v2lUAt1urJBFi2zajfK8798ukL3Q=="
+    },
+    "@fullcalendar/interaction": {
+      "version": "4.4.2",
+      "resolved": "https://registry.npmjs.org/@fullcalendar/interaction/-/interaction-4.4.2.tgz",
+      "integrity": "sha512-3ItpGFnxcYQT4NClqhq93QTQwOI8x3mlMf5M4DgK5avVaSzpv9g8p+opqeotK2yzpFeINps06cuQyB1h7vcv1Q=="
+    },
+    "@fullcalendar/list": {
+      "version": "4.4.2",
+      "resolved": "https://registry.npmjs.org/@fullcalendar/list/-/list-4.4.2.tgz",
+      "integrity": "sha512-buhfd0w0PavH3EVZ6DR6kvjb+wPDe16XEpNcPkTpvIxnAziwGBvcUeHUBd9KvtEhOcvs9sAKoYKbU4xwHFK0Wg=="
+    },
+    "@fullcalendar/react": {
+      "version": "4.4.2",
+      "resolved": "https://registry.npmjs.org/@fullcalendar/react/-/react-4.4.2.tgz",
+      "integrity": "sha512-CObyC53Ph2wer83XOm2ae7gEDP5YuENbycetnKgXPLrUVx94hxJGo+G8lZFI4LeUG1nkecfNCpazoa3+x0yKsQ==",
+      "requires": {
+        "@fullcalendar/core": "~4.4.0",
+        "fast-deep-equal": "^2.0.1"
+      }
+    },
+    "@fullcalendar/timegrid": {
+      "version": "4.4.2",
+      "resolved": "https://registry.npmjs.org/@fullcalendar/timegrid/-/timegrid-4.4.2.tgz",
+      "integrity": "sha512-M5an7qii8OUmI4ogY47k5pn2j/qUbLp6sa6Vo0gO182HR5pb9YtrEZnoQhnScok+I0BkDkLFzMQoiAMTjBm2PQ==",
+      "requires": {
+        "@fullcalendar/daygrid": "~4.4.0"
+      }
+    },
+    "@googlemaps/js-api-loader": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/@googlemaps/js-api-loader/-/js-api-loader-1.6.0.tgz",
+      "integrity": "sha512-amuilneCf7q5A/jDUE3ml83c9NjW/3DzIqiBDFIKZcraD0JSKbetkEQa5s57Z6QY7jxcequXgoL9CKJUY1xZ5A=="
+    },
+    "@hapi/accept": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/@hapi/accept/-/accept-5.0.1.tgz",
+      "integrity": "sha512-fMr4d7zLzsAXo28PRRQPXR1o2Wmu+6z+VY1UzDp0iFo13Twj8WePakwXBiqn3E1aAlTpSNzCXdnnQXFhst8h8Q==",
+      "requires": {
+        "@hapi/boom": "9.x.x",
+        "@hapi/hoek": "9.x.x"
+      }
+    },
+    "@hapi/b64": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/@hapi/b64/-/b64-5.0.0.tgz",
+      "integrity": "sha512-ngu0tSEmrezoiIaNGG6rRvKOUkUuDdf4XTPnONHGYfSGRmDqPZX5oJL6HAdKTo1UQHECbdB4OzhWrfgVppjHUw==",
+      "requires": {
+        "@hapi/hoek": "9.x.x"
+      }
+    },
+    "@hapi/boom": {
+      "version": "9.1.2",
+      "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-9.1.2.tgz",
+      "integrity": "sha512-uJEJtiNHzKw80JpngDGBCGAmWjBtzxDCz17A9NO2zCi8LLBlb5Frpq4pXwyN+2JQMod4pKz5BALwyneCgDg89Q==",
+      "requires": {
+        "@hapi/hoek": "9.x.x"
+      }
+    },
+    "@hapi/bourne": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-2.0.0.tgz",
+      "integrity": "sha512-WEezM1FWztfbzqIUbsDzFRVMxSoLy3HugVcux6KDDtTqzPsLE8NDRHfXvev66aH1i2oOKKar3/XDjbvh/OUBdg=="
+    },
+    "@hapi/cryptiles": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/@hapi/cryptiles/-/cryptiles-5.1.0.tgz",
+      "integrity": "sha512-fo9+d1Ba5/FIoMySfMqPBR/7Pa29J2RsiPrl7bkwo5W5o+AN1dAYQRi4SPrPwwVxVGKjgLOEWrsvt1BonJSfLA==",
+      "requires": {
+        "@hapi/boom": "9.x.x"
+      }
+    },
+    "@hapi/hoek": {
+      "version": "9.1.1",
+      "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.1.1.tgz",
+      "integrity": "sha512-CAEbWH7OIur6jEOzaai83jq3FmKmv4PmX1JYfs9IrYcGEVI/lyL1EXJGCj7eFVJ0bg5QR8LMxBlEtA+xKiLpFw=="
+    },
+    "@hapi/iron": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/@hapi/iron/-/iron-6.0.0.tgz",
+      "integrity": "sha512-zvGvWDufiTGpTJPG1Y/McN8UqWBu0k/xs/7l++HVU535NLHXsHhy54cfEMdW7EjwKfbBfM9Xy25FmTiobb7Hvw==",
+      "requires": {
+        "@hapi/b64": "5.x.x",
+        "@hapi/boom": "9.x.x",
+        "@hapi/bourne": "2.x.x",
+        "@hapi/cryptiles": "5.x.x",
+        "@hapi/hoek": "9.x.x"
+      }
+    },
+    "@hypnosphi/create-react-context": {
+      "version": "0.3.1",
+      "resolved": "https://registry.npmjs.org/@hypnosphi/create-react-context/-/create-react-context-0.3.1.tgz",
+      "integrity": "sha512-V1klUed202XahrWJLLOT3EXNeCpFHCcJntdFGI15ntCwau+jfT386w7OFTMaCqOgXUH1fa0w/I1oZs+i/Rfr0A==",
+      "requires": {
+        "gud": "^1.0.0",
+        "warning": "^4.0.3"
+      }
+    },
+    "@icons/material": {
+      "version": "0.2.4",
+      "resolved": "https://registry.npmjs.org/@icons/material/-/material-0.2.4.tgz",
+      "integrity": "sha512-QPcGmICAPbGLGb6F/yNf/KzKqvFx8z5qx3D1yFqVAjoFmXK35EgyW+cJ57Te3CNsmzblwtzakLGFqHPqrfb4Tw=="
+    },
+    "@next/env": {
+      "version": "9.5.5",
+      "resolved": "https://registry.npmjs.org/@next/env/-/env-9.5.5.tgz",
+      "integrity": "sha512-N9wdjU6XoqLqNQWtrGiWtp1SUuJsYK1cNrZ24A6YD+4w5CNV5SkZX6aewKZCCLP5Y8UNfTij2FkJiSYUfBjX8g=="
+    },
+    "@next/polyfill-module": {
+      "version": "9.5.5",
+      "resolved": "https://registry.npmjs.org/@next/polyfill-module/-/polyfill-module-9.5.5.tgz",
+      "integrity": "sha512-itqYFeHo3yN4ccpHq2uNFC2UVQm12K6DxUVwYdui9MJiiueT0pSGb2laYEjf/G5+vVq7M2vb+DkjkOkPMBVfeg=="
+    },
+    "@next/react-dev-overlay": {
+      "version": "9.5.5",
+      "resolved": "https://registry.npmjs.org/@next/react-dev-overlay/-/react-dev-overlay-9.5.5.tgz",
+      "integrity": "sha512-B1nDANxjXr2oyohv+tX0OXZTmJtO5qEWmisNPGnqQ2Z32IixfaAgyNYVuCVf20ap6EUz5elhgNUwRIFh/e26mQ==",
+      "requires": {
+        "@babel/code-frame": "7.10.4",
+        "ally.js": "1.4.1",
+        "anser": "1.4.9",
+        "chalk": "4.0.0",
+        "classnames": "2.2.6",
+        "data-uri-to-buffer": "3.0.0",
+        "shell-quote": "1.7.2",
+        "source-map": "0.8.0-beta.0",
+        "stacktrace-parser": "0.1.10",
+        "strip-ansi": "6.0.0"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "4.3.0",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+          "requires": {
+            "color-convert": "^2.0.1"
+          }
+        },
+        "chalk": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz",
+          "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==",
+          "requires": {
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
+          }
+        },
+        "color-convert": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+          "requires": {
+            "color-name": "~1.1.4"
+          }
+        },
+        "has-flag": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
+        },
+        "source-map": {
+          "version": "0.8.0-beta.0",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz",
+          "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==",
+          "requires": {
+            "whatwg-url": "^7.0.0"
+          }
+        },
+        "supports-color": {
+          "version": "7.2.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+          "requires": {
+            "has-flag": "^4.0.0"
+          }
+        }
+      }
+    },
+    "@next/react-refresh-utils": {
+      "version": "9.5.5",
+      "resolved": "https://registry.npmjs.org/@next/react-refresh-utils/-/react-refresh-utils-9.5.5.tgz",
+      "integrity": "sha512-Gz5z0+ID+KAGto6Tkgv1a340damEw3HG6ANLKwNi5/QSHqQ3JUAVxMuhz3qnL54505I777evpzL89ofWEMIWKw=="
+    },
+    "@npmcli/move-file": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz",
+      "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==",
+      "requires": {
+        "mkdirp": "^1.0.4",
+        "rimraf": "^3.0.2"
+      },
+      "dependencies": {
+        "mkdirp": {
+          "version": "1.0.4",
+          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+          "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw=="
+        }
+      }
+    },
+    "@react-google-maps/api": {
+      "version": "1.13.0",
+      "resolved": "https://registry.npmjs.org/@react-google-maps/api/-/api-1.13.0.tgz",
+      "integrity": "sha512-mKwXziG5MbOvvcWG53FyZVZ8zjAuPNYkcS/+nYX9STMFNrI96AFq5l/zUn2QifRJnPzE8iO4V1vyMM+Ie9LpGg==",
+      "requires": {
+        "@googlemaps/js-api-loader": "1.6.0",
+        "@react-google-maps/infobox": "1.12.1",
+        "@react-google-maps/marker-clusterer": "1.12.1",
+        "invariant": "2.2.4"
+      }
+    },
+    "@react-google-maps/infobox": {
+      "version": "1.12.1",
+      "resolved": "https://registry.npmjs.org/@react-google-maps/infobox/-/infobox-1.12.1.tgz",
+      "integrity": "sha512-tD/xijqRtKK/LNRzuerzuyvybnRaD8SLgCA064len4/enTo1abhQN215ZYqwbTOn7RgYt9qMgNnwoX//u3xoWw=="
+    },
+    "@react-google-maps/marker-clusterer": {
+      "version": "1.12.1",
+      "resolved": "https://registry.npmjs.org/@react-google-maps/marker-clusterer/-/marker-clusterer-1.12.1.tgz",
+      "integrity": "sha512-JBSO5VJuouP/boBnSdRDCWq0UKO7jr3HvZVhis3ew+VGJ/BoCPu3lpU0HDsjjulfng+xwqLfVOIzP3QnvBPdCA=="
+    },
+    "@types/cookie": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz",
+      "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q=="
+    },
+    "@types/json-schema": {
+      "version": "7.0.7",
+      "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz",
+      "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA=="
+    },
+    "@types/parse-json": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz",
+      "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA=="
+    },
+    "@types/react": {
+      "version": "15.7.0",
+      "resolved": "https://registry.npmjs.org/@types/react/-/react-15.7.0.tgz",
+      "integrity": "sha512-fROvMBKisHbCUGMRXqAVAhZeehNQkeLYRZW/PhYI+Ahd+HdC1DWNWktiFYUy44Iys7qvBo7O8J5UNneWEVxAQw=="
+    },
+    "@types/reactstrap": {
+      "version": "8.7.2",
+      "resolved": "https://registry.npmjs.org/@types/reactstrap/-/reactstrap-8.7.2.tgz",
+      "integrity": "sha512-8sYGS/LhG+ic8vhLwxhuVn+TSqS1lKzplm9BHv4JaQoetStAi9uOqP2VREfefIRT3JnOq5Y+G7Afdryvn+UgZQ==",
+      "dev": true,
+      "requires": {
+        "reactstrap": "*"
+      }
+    },
+    "@webassemblyjs/ast": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz",
+      "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==",
+      "requires": {
+        "@webassemblyjs/helper-module-context": "1.9.0",
+        "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+        "@webassemblyjs/wast-parser": "1.9.0"
+      }
+    },
+    "@webassemblyjs/floating-point-hex-parser": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz",
+      "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA=="
+    },
+    "@webassemblyjs/helper-api-error": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz",
+      "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw=="
+    },
+    "@webassemblyjs/helper-buffer": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz",
+      "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA=="
+    },
+    "@webassemblyjs/helper-code-frame": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz",
+      "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==",
+      "requires": {
+        "@webassemblyjs/wast-printer": "1.9.0"
+      }
+    },
+    "@webassemblyjs/helper-fsm": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz",
+      "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw=="
+    },
+    "@webassemblyjs/helper-module-context": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz",
+      "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==",
+      "requires": {
+        "@webassemblyjs/ast": "1.9.0"
+      }
+    },
+    "@webassemblyjs/helper-wasm-bytecode": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz",
+      "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw=="
+    },
+    "@webassemblyjs/helper-wasm-section": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz",
+      "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==",
+      "requires": {
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/helper-buffer": "1.9.0",
+        "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+        "@webassemblyjs/wasm-gen": "1.9.0"
+      }
+    },
+    "@webassemblyjs/ieee754": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz",
+      "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==",
+      "requires": {
+        "@xtuc/ieee754": "^1.2.0"
+      }
+    },
+    "@webassemblyjs/leb128": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz",
+      "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==",
+      "requires": {
+        "@xtuc/long": "4.2.2"
+      }
+    },
+    "@webassemblyjs/utf8": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz",
+      "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w=="
+    },
+    "@webassemblyjs/wasm-edit": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz",
+      "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==",
+      "requires": {
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/helper-buffer": "1.9.0",
+        "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+        "@webassemblyjs/helper-wasm-section": "1.9.0",
+        "@webassemblyjs/wasm-gen": "1.9.0",
+        "@webassemblyjs/wasm-opt": "1.9.0",
+        "@webassemblyjs/wasm-parser": "1.9.0",
+        "@webassemblyjs/wast-printer": "1.9.0"
+      }
+    },
+    "@webassemblyjs/wasm-gen": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz",
+      "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==",
+      "requires": {
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+        "@webassemblyjs/ieee754": "1.9.0",
+        "@webassemblyjs/leb128": "1.9.0",
+        "@webassemblyjs/utf8": "1.9.0"
+      }
+    },
+    "@webassemblyjs/wasm-opt": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz",
+      "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==",
+      "requires": {
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/helper-buffer": "1.9.0",
+        "@webassemblyjs/wasm-gen": "1.9.0",
+        "@webassemblyjs/wasm-parser": "1.9.0"
+      }
+    },
+    "@webassemblyjs/wasm-parser": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz",
+      "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==",
+      "requires": {
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/helper-api-error": "1.9.0",
+        "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+        "@webassemblyjs/ieee754": "1.9.0",
+        "@webassemblyjs/leb128": "1.9.0",
+        "@webassemblyjs/utf8": "1.9.0"
+      }
+    },
+    "@webassemblyjs/wast-parser": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz",
+      "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==",
+      "requires": {
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/floating-point-hex-parser": "1.9.0",
+        "@webassemblyjs/helper-api-error": "1.9.0",
+        "@webassemblyjs/helper-code-frame": "1.9.0",
+        "@webassemblyjs/helper-fsm": "1.9.0",
+        "@xtuc/long": "4.2.2"
+      }
+    },
+    "@webassemblyjs/wast-printer": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz",
+      "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==",
+      "requires": {
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/wast-parser": "1.9.0",
+        "@xtuc/long": "4.2.2"
+      }
+    },
+    "@xtuc/ieee754": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
+      "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA=="
+    },
+    "@xtuc/long": {
+      "version": "4.2.2",
+      "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
+      "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ=="
+    },
+    "@zeit/next-css": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/@zeit/next-css/-/next-css-1.0.1.tgz",
+      "integrity": "sha512-yfHPRy/ne/5SddVClsoy+fpU7e0Cs1gkWA67/wm2uIu+9rznF45yQLxHEt5dPGF3h6IiIh7ZtIgA8VV8YKq87A==",
+      "dev": true,
+      "requires": {
+        "css-loader": "1.0.0",
+        "extracted-loader": "1.0.4",
+        "find-up": "2.1.0",
+        "ignore-loader": "0.1.2",
+        "mini-css-extract-plugin": "0.4.3",
+        "postcss-loader": "3.0.0"
+      },
+      "dependencies": {
+        "css-loader": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-1.0.0.tgz",
+          "integrity": "sha512-tMXlTYf3mIMt3b0dDCOQFJiVvxbocJ5Ho577WiGPYPZcqVEO218L2iU22pDXzkTZCLDE+9AmGSUkWxeh/nZReA==",
+          "dev": true,
+          "requires": {
+            "babel-code-frame": "^6.26.0",
+            "css-selector-tokenizer": "^0.7.0",
+            "icss-utils": "^2.1.0",
+            "loader-utils": "^1.0.2",
+            "lodash.camelcase": "^4.3.0",
+            "postcss": "^6.0.23",
+            "postcss-modules-extract-imports": "^1.2.0",
+            "postcss-modules-local-by-default": "^1.2.0",
+            "postcss-modules-scope": "^1.1.0",
+            "postcss-modules-values": "^1.3.0",
+            "postcss-value-parser": "^3.3.0",
+            "source-list-map": "^2.0.0"
+          }
+        },
+        "find-up": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+          "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+          "dev": true,
+          "requires": {
+            "locate-path": "^2.0.0"
+          }
+        },
+        "icss-utils": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz",
+          "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=",
+          "dev": true,
+          "requires": {
+            "postcss": "^6.0.1"
+          }
+        },
+        "json5": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
+          "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+          "dev": true,
+          "requires": {
+            "minimist": "^1.2.0"
+          }
+        },
+        "loader-utils": {
+          "version": "1.4.0",
+          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz",
+          "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
+          "dev": true,
+          "requires": {
+            "big.js": "^5.2.2",
+            "emojis-list": "^3.0.0",
+            "json5": "^1.0.1"
+          }
+        },
+        "locate-path": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+          "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+          "dev": true,
+          "requires": {
+            "p-locate": "^2.0.0",
+            "path-exists": "^3.0.0"
+          }
+        },
+        "p-limit": {
+          "version": "1.3.0",
+          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
+          "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+          "dev": true,
+          "requires": {
+            "p-try": "^1.0.0"
+          }
+        },
+        "p-locate": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+          "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+          "dev": true,
+          "requires": {
+            "p-limit": "^1.1.0"
+          }
+        },
+        "p-try": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
+          "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+          "dev": true
+        },
+        "path-exists": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+          "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+          "dev": true
+        },
+        "postcss": {
+          "version": "6.0.23",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
+          "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
+          "dev": true,
+          "requires": {
+            "chalk": "^2.4.1",
+            "source-map": "^0.6.1",
+            "supports-color": "^5.4.0"
+          }
+        },
+        "postcss-modules-extract-imports": {
+          "version": "1.2.1",
+          "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz",
+          "integrity": "sha512-6jt9XZwUhwmRUhb/CkyJY020PYaPJsCyt3UjbaWo6XEbH/94Hmv6MP7fG2C5NDU/BcHzyGYxNtHvM+LTf9HrYw==",
+          "dev": true,
+          "requires": {
+            "postcss": "^6.0.1"
+          }
+        },
+        "postcss-modules-local-by-default": {
+          "version": "1.2.0",
+          "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz",
+          "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=",
+          "dev": true,
+          "requires": {
+            "css-selector-tokenizer": "^0.7.0",
+            "postcss": "^6.0.1"
+          }
+        },
+        "postcss-modules-scope": {
+          "version": "1.1.0",
+          "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz",
+          "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=",
+          "dev": true,
+          "requires": {
+            "css-selector-tokenizer": "^0.7.0",
+            "postcss": "^6.0.1"
+          }
+        },
+        "postcss-modules-values": {
+          "version": "1.3.0",
+          "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz",
+          "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=",
+          "dev": true,
+          "requires": {
+            "icss-replace-symbols": "^1.1.0",
+            "postcss": "^6.0.1"
+          }
+        },
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+          "dev": true
+        },
+        "supports-color": {
+          "version": "5.5.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+          "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+          "dev": true,
+          "requires": {
+            "has-flag": "^3.0.0"
+          }
+        }
+      }
+    },
+    "@zeit/next-sass": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/@zeit/next-sass/-/next-sass-1.0.1.tgz",
+      "integrity": "sha512-QVmrsLye85gtIYj+QSBuFadzd6NQgI5DZfqlV+ET1nXI3B+C91wAaJN71O98KMvNIc8R2QLosxugEyd2V5wE6w==",
+      "dev": true,
+      "requires": {
+        "@zeit/next-css": "1.0.1",
+        "sass-loader": "6.0.6"
+      },
+      "dependencies": {
+        "json5": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
+          "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+          "dev": true,
+          "requires": {
+            "minimist": "^1.2.0"
+          }
+        },
+        "loader-utils": {
+          "version": "1.4.0",
+          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz",
+          "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
+          "dev": true,
+          "requires": {
+            "big.js": "^5.2.2",
+            "emojis-list": "^3.0.0",
+            "json5": "^1.0.1"
+          }
+        },
+        "pify": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+          "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+          "dev": true
+        },
+        "sass-loader": {
+          "version": "6.0.6",
+          "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-6.0.6.tgz",
+          "integrity": "sha512-c3/Zc+iW+qqDip6kXPYLEgsAu2lf4xz0EZDplB7EmSUMda12U1sGJPetH55B/j9eu0bTtKzKlNPWWyYC7wFNyQ==",
+          "dev": true,
+          "requires": {
+            "async": "^2.1.5",
+            "clone-deep": "^0.3.0",
+            "loader-utils": "^1.0.1",
+            "lodash.tail": "^4.1.1",
+            "pify": "^3.0.0"
+          }
+        }
+      }
+    },
+    "abbrev": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
+      "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
+    },
+    "abort-controller": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
+      "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
+      "requires": {
+        "event-target-shim": "^5.0.0"
+      }
+    },
+    "accepts": {
+      "version": "1.3.7",
+      "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
+      "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
+      "requires": {
+        "mime-types": "~2.1.24",
+        "negotiator": "0.6.2"
+      }
+    },
+    "acorn": {
+      "version": "6.4.2",
+      "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz",
+      "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ=="
+    },
+    "acorn-node": {
+      "version": "1.8.2",
+      "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz",
+      "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==",
+      "requires": {
+        "acorn": "^7.0.0",
+        "acorn-walk": "^7.0.0",
+        "xtend": "^4.0.2"
+      },
+      "dependencies": {
+        "acorn": {
+          "version": "7.4.1",
+          "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
+          "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A=="
+        }
+      }
+    },
+    "acorn-walk": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz",
+      "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA=="
+    },
+    "add-dom-event-listener": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/add-dom-event-listener/-/add-dom-event-listener-1.1.0.tgz",
+      "integrity": "sha512-WCxx1ixHT0GQU9hb0KI/mhgRQhnU+U3GvwY6ZvVjYq8rsihIGoaIOUbY0yMPBxLH5MDtr0kz3fisWGNcbWW7Jw==",
+      "requires": {
+        "object-assign": "4.x"
+      }
+    },
+    "adjust-sourcemap-loader": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-2.0.0.tgz",
+      "integrity": "sha512-4hFsTsn58+YjrU9qKzML2JSSDqKvN8mUGQ0nNIrfPi8hmIONT4L3uUaT6MKdMsZ9AjsU6D2xDkZxCkbQPxChrA==",
+      "requires": {
+        "assert": "1.4.1",
+        "camelcase": "5.0.0",
+        "loader-utils": "1.2.3",
+        "object-path": "0.11.4",
+        "regex-parser": "2.2.10"
+      },
+      "dependencies": {
+        "camelcase": {
+          "version": "5.0.0",
+          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz",
+          "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA=="
+        },
+        "emojis-list": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz",
+          "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k="
+        },
+        "json5": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
+          "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+          "requires": {
+            "minimist": "^1.2.0"
+          }
+        },
+        "loader-utils": {
+          "version": "1.2.3",
+          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz",
+          "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==",
+          "requires": {
+            "big.js": "^5.2.2",
+            "emojis-list": "^2.0.0",
+            "json5": "^1.0.1"
+          }
+        }
+      }
+    },
+    "agent-base": {
+      "version": "6.0.2",
+      "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+      "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+      "requires": {
+        "debug": "4"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "4.3.1",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
+          "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
+          "requires": {
+            "ms": "2.1.2"
+          }
+        },
+        "ms": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+        }
+      }
+    },
+    "aggregate-error": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
+      "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
+      "requires": {
+        "clean-stack": "^2.0.0",
+        "indent-string": "^4.0.0"
+      }
+    },
+    "ajv": {
+      "version": "6.12.6",
+      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+      "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+      "requires": {
+        "fast-deep-equal": "^3.1.1",
+        "fast-json-stable-stringify": "^2.0.0",
+        "json-schema-traverse": "^0.4.1",
+        "uri-js": "^4.2.2"
+      },
+      "dependencies": {
+        "fast-deep-equal": {
+          "version": "3.1.3",
+          "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+          "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
+        }
+      }
+    },
+    "ajv-errors": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz",
+      "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ=="
+    },
+    "ajv-keywords": {
+      "version": "3.5.2",
+      "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
+      "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ=="
+    },
+    "ally.js": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/ally.js/-/ally.js-1.4.1.tgz",
+      "integrity": "sha1-n7fmuljvrE7pExyymqnuO1QLzx4=",
+      "requires": {
+        "css.escape": "^1.5.0",
+        "platform": "1.3.3"
+      }
+    },
+    "amdefine": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
+      "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU="
+    },
+    "animate.css": {
+      "version": "3.7.2",
+      "resolved": "https://registry.npmjs.org/animate.css/-/animate.css-3.7.2.tgz",
+      "integrity": "sha512-0bE8zYo7C0KvgOYrSVfrzkbYk6IOTVPNqkiHg2cbyF4Pq/PXzilz4BRWA3hwEUBoMp5VBgrC29lQIZyhRWdBTw=="
+    },
+    "anser": {
+      "version": "1.4.9",
+      "resolved": "https://registry.npmjs.org/anser/-/anser-1.4.9.tgz",
+      "integrity": "sha512-AI+BjTeGt2+WFk4eWcqbQ7snZpDBt8SaLlj0RT2h5xfdWaiy51OjYvqwMrNzJLGy8iOAL6nKDITWO+rd4MkYEA=="
+    },
+    "ansi-regex": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
+      "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg=="
+    },
+    "ansi-styles": {
+      "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+      "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+      "requires": {
+        "color-convert": "^1.9.0"
+      }
+    },
+    "anymatch": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
+      "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+      "requires": {
+        "micromatch": "^3.1.4",
+        "normalize-path": "^2.1.1"
+      },
+      "dependencies": {
+        "normalize-path": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+          "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+          "requires": {
+            "remove-trailing-separator": "^1.0.1"
+          }
+        }
+      }
+    },
+    "aproba": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
+      "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw=="
+    },
+    "are-we-there-yet": {
+      "version": "1.1.5",
+      "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz",
+      "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",
+      "requires": {
+        "delegates": "^1.0.0",
+        "readable-stream": "^2.0.6"
+      }
+    },
+    "argparse": {
+      "version": "1.0.10",
+      "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+      "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+      "dev": true,
+      "requires": {
+        "sprintf-js": "~1.0.2"
+      }
+    },
+    "arity-n": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/arity-n/-/arity-n-1.0.4.tgz",
+      "integrity": "sha1-2edrEXM+CFacCEeuezmyhgswt0U="
+    },
+    "arr-diff": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+      "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA="
+    },
+    "arr-flatten": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
+      "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg=="
+    },
+    "arr-union": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
+      "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ="
+    },
+    "array-find-index": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
+      "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
+      "dev": true
+    },
+    "array-flatten": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+      "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
+    },
+    "array-from": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz",
+      "integrity": "sha1-z+nYwmYoudxa7MYqn12PHzUsEZU="
+    },
+    "array-unique": {
+      "version": "0.3.2",
+      "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+      "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg="
+    },
+    "array.prototype.flat": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz",
+      "integrity": "sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==",
+      "requires": {
+        "call-bind": "^1.0.0",
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.18.0-next.1"
+      }
+    },
+    "asap": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
+      "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY="
+    },
+    "asn1": {
+      "version": "0.2.4",
+      "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
+      "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
+      "dev": true,
+      "requires": {
+        "safer-buffer": "~2.1.0"
+      }
+    },
+    "asn1.js": {
+      "version": "5.4.1",
+      "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz",
+      "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==",
+      "requires": {
+        "bn.js": "^4.0.0",
+        "inherits": "^2.0.1",
+        "minimalistic-assert": "^1.0.0",
+        "safer-buffer": "^2.1.0"
+      },
+      "dependencies": {
+        "bn.js": {
+          "version": "4.12.0",
+          "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
+          "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
+        }
+      }
+    },
+    "assert": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz",
+      "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=",
+      "requires": {
+        "util": "0.10.3"
+      }
+    },
+    "assert-plus": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+      "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
+      "dev": true
+    },
+    "assign-symbols": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
+      "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c="
+    },
+    "ast-transform": {
+      "version": "0.0.0",
+      "resolved": "https://registry.npmjs.org/ast-transform/-/ast-transform-0.0.0.tgz",
+      "integrity": "sha1-dJRAWIh9goPhidlUYAlHvJj+AGI=",
+      "requires": {
+        "escodegen": "~1.2.0",
+        "esprima": "~1.0.4",
+        "through": "~2.3.4"
+      },
+      "dependencies": {
+        "escodegen": {
+          "version": "1.2.0",
+          "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.2.0.tgz",
+          "integrity": "sha1-Cd55Z3kcyVi3+Jot220jRRrzJ+E=",
+          "requires": {
+            "esprima": "~1.0.4",
+            "estraverse": "~1.5.0",
+            "esutils": "~1.0.0",
+            "source-map": "~0.1.30"
+          }
+        },
+        "esprima": {
+          "version": "1.0.4",
+          "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz",
+          "integrity": "sha1-n1V+CPw7TSbs6d00+Pv0drYlha0="
+        },
+        "estraverse": {
+          "version": "1.5.1",
+          "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.5.1.tgz",
+          "integrity": "sha1-hno+jlip+EYYr7bC3bzZFrfLr3E="
+        },
+        "esutils": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/esutils/-/esutils-1.0.0.tgz",
+          "integrity": "sha1-gVHTWOIMisx/t0XnRywAJf5JZXA="
+        },
+        "source-map": {
+          "version": "0.1.43",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz",
+          "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=",
+          "optional": true,
+          "requires": {
+            "amdefine": ">=0.0.4"
+          }
+        }
+      }
+    },
+    "ast-types": {
+      "version": "0.13.2",
+      "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.2.tgz",
+      "integrity": "sha512-uWMHxJxtfj/1oZClOxDEV1sQ1HCDkA4MG8Gr69KKeBjEVH0R84WlejZ0y2DcwyBlpAEMltmVYkVgqfLFb2oyiA=="
+    },
+    "async": {
+      "version": "2.6.3",
+      "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz",
+      "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==",
+      "dev": true,
+      "requires": {
+        "lodash": "^4.17.14"
+      }
+    },
+    "async-each": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz",
+      "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ=="
+    },
+    "async-foreach": {
+      "version": "0.1.3",
+      "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz",
+      "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=",
+      "dev": true
+    },
+    "asynckit": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+      "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
+      "dev": true
+    },
+    "atob": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
+      "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg=="
+    },
+    "attr-accept": {
+      "version": "2.2.2",
+      "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.2.tgz",
+      "integrity": "sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg=="
+    },
+    "aws-sign2": {
+      "version": "0.7.0",
+      "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
+      "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
+      "dev": true
+    },
+    "aws4": {
+      "version": "1.11.0",
+      "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz",
+      "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==",
+      "dev": true
+    },
+    "babel-code-frame": {
+      "version": "6.26.0",
+      "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
+      "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
+      "dev": true,
+      "requires": {
+        "chalk": "^1.1.3",
+        "esutils": "^2.0.2",
+        "js-tokens": "^3.0.2"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+          "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+          "dev": true
+        },
+        "ansi-styles": {
+          "version": "2.2.1",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+          "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+          "dev": true
+        },
+        "chalk": {
+          "version": "1.1.3",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+          "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+          "dev": true,
+          "requires": {
+            "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"
+          }
+        },
+        "js-tokens": {
+          "version": "3.0.2",
+          "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
+          "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
+          "dev": true
+        },
+        "strip-ansi": {
+          "version": "3.0.1",
+          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+          "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^2.0.0"
+          }
+        },
+        "supports-color": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+          "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+          "dev": true
+        }
+      }
+    },
+    "babel-plugin-dynamic-import-node": {
+      "version": "2.3.3",
+      "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz",
+      "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==",
+      "requires": {
+        "object.assign": "^4.1.0"
+      }
+    },
+    "babel-plugin-emotion": {
+      "version": "10.2.2",
+      "resolved": "https://registry.npmjs.org/babel-plugin-emotion/-/babel-plugin-emotion-10.2.2.tgz",
+      "integrity": "sha512-SMSkGoqTbTyUTDeuVuPIWifPdUGkTk1Kf9BWRiXIOIcuyMfsdp2EjeiiFvOzX8NOBvEh/ypKYvUh2rkgAJMCLA==",
+      "requires": {
+        "@babel/helper-module-imports": "^7.0.0",
+        "@emotion/hash": "0.8.0",
+        "@emotion/memoize": "0.7.4",
+        "@emotion/serialize": "^0.11.16",
+        "babel-plugin-macros": "^2.0.0",
+        "babel-plugin-syntax-jsx": "^6.18.0",
+        "convert-source-map": "^1.5.0",
+        "escape-string-regexp": "^1.0.5",
+        "find-root": "^1.1.0",
+        "source-map": "^0.5.7"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.5.7",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+          "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
+        }
+      }
+    },
+    "babel-plugin-macros": {
+      "version": "2.8.0",
+      "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz",
+      "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==",
+      "requires": {
+        "@babel/runtime": "^7.7.2",
+        "cosmiconfig": "^6.0.0",
+        "resolve": "^1.12.0"
+      }
+    },
+    "babel-plugin-syntax-jsx": {
+      "version": "6.18.0",
+      "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz",
+      "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY="
+    },
+    "babel-plugin-transform-define": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/babel-plugin-transform-define/-/babel-plugin-transform-define-2.0.0.tgz",
+      "integrity": "sha512-0dv5RNRUlUKxGYIIErl01lpvi8b7W2R04Qcl1mCj70ahwZcgiklfXnFlh4FGnRh6aayCfSZKdhiMryVzcq5Dmg==",
+      "requires": {
+        "lodash": "^4.17.11",
+        "traverse": "0.6.6"
+      }
+    },
+    "babel-plugin-transform-react-remove-prop-types": {
+      "version": "0.4.24",
+      "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz",
+      "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA=="
+    },
+    "babel-runtime": {
+      "version": "6.26.0",
+      "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
+      "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
+      "requires": {
+        "core-js": "^2.4.0",
+        "regenerator-runtime": "^0.11.0"
+      },
+      "dependencies": {
+        "regenerator-runtime": {
+          "version": "0.11.1",
+          "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
+          "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="
+        }
+      }
+    },
+    "balanced-match": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+      "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
+    },
+    "base": {
+      "version": "0.11.2",
+      "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
+      "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
+      "requires": {
+        "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"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+          "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+          "requires": {
+            "is-descriptor": "^1.0.0"
+          }
+        },
+        "is-accessor-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-data-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-descriptor": {
+          "version": "1.0.2",
+          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+          "requires": {
+            "is-accessor-descriptor": "^1.0.0",
+            "is-data-descriptor": "^1.0.0",
+            "kind-of": "^6.0.2"
+          }
+        }
+      }
+    },
+    "base64-js": {
+      "version": "1.5.1",
+      "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
+      "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
+    },
+    "bcrypt-pbkdf": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
+      "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
+      "dev": true,
+      "requires": {
+        "tweetnacl": "^0.14.3"
+      }
+    },
+    "big.js": {
+      "version": "5.2.2",
+      "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
+      "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ=="
+    },
+    "binary-extensions": {
+      "version": "1.13.1",
+      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
+      "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw=="
+    },
+    "bindings": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
+      "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
+      "optional": true,
+      "requires": {
+        "file-uri-to-path": "1.0.0"
+      }
+    },
+    "block-stream": {
+      "version": "0.0.9",
+      "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz",
+      "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=",
+      "dev": true,
+      "requires": {
+        "inherits": "~2.0.0"
+      }
+    },
+    "bluebird": {
+      "version": "3.7.2",
+      "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
+      "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg=="
+    },
+    "bn.js": {
+      "version": "5.2.0",
+      "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz",
+      "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw=="
+    },
+    "body-parser": {
+      "version": "1.19.0",
+      "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
+      "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
+      "requires": {
+        "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"
+      }
+    },
+    "bootstrap": {
+      "version": "4.6.0",
+      "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.0.tgz",
+      "integrity": "sha512-Io55IuQY3kydzHtbGvQya3H+KorS/M9rSNyfCGCg9WZ4pyT/lCxIlpJgG1GXW/PswzC84Tr2fBYi+7+jFVQQBw=="
+    },
+    "brace-expansion": {
+      "version": "1.1.11",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+      "requires": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "braces": {
+      "version": "2.3.2",
+      "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+      "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+      "requires": {
+        "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"
+      },
+      "dependencies": {
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        }
+      }
+    },
+    "brfs": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/brfs/-/brfs-2.0.2.tgz",
+      "integrity": "sha512-IrFjVtwu4eTJZyu8w/V2gxU7iLTtcHih67sgEdzrhjLBMHp2uYefUBfdM4k2UvcuWMgV7PQDZHSLeNWnLFKWVQ==",
+      "requires": {
+        "quote-stream": "^1.0.1",
+        "resolve": "^1.1.5",
+        "static-module": "^3.0.2",
+        "through2": "^2.0.0"
+      }
+    },
+    "brorand": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
+      "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8="
+    },
+    "brotli": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/brotli/-/brotli-1.3.2.tgz",
+      "integrity": "sha1-UlqcrU/LqWR119OI9q7LE+7VL0Y=",
+      "requires": {
+        "base64-js": "^1.1.2"
+      }
+    },
+    "browser-resolve": {
+      "version": "1.11.3",
+      "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz",
+      "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==",
+      "requires": {
+        "resolve": "1.1.7"
+      },
+      "dependencies": {
+        "resolve": {
+          "version": "1.1.7",
+          "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz",
+          "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs="
+        }
+      }
+    },
+    "browserify-aes": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
+      "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
+      "requires": {
+        "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": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz",
+      "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
+      "requires": {
+        "browserify-aes": "^1.0.4",
+        "browserify-des": "^1.0.0",
+        "evp_bytestokey": "^1.0.0"
+      }
+    },
+    "browserify-des": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz",
+      "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==",
+      "requires": {
+        "cipher-base": "^1.0.1",
+        "des.js": "^1.0.0",
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.1.2"
+      }
+    },
+    "browserify-optional": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/browserify-optional/-/browserify-optional-1.0.1.tgz",
+      "integrity": "sha1-HhNyLP3g2F8SFnbCpyztUzoBiGk=",
+      "requires": {
+        "ast-transform": "0.0.0",
+        "ast-types": "^0.7.0",
+        "browser-resolve": "^1.8.1"
+      },
+      "dependencies": {
+        "ast-types": {
+          "version": "0.7.8",
+          "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.7.8.tgz",
+          "integrity": "sha1-kC0uDWDQcb3NRtwRXhgJ7RHBOKk="
+        }
+      }
+    },
+    "browserify-rsa": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz",
+      "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==",
+      "requires": {
+        "bn.js": "^5.0.0",
+        "randombytes": "^2.0.1"
+      }
+    },
+    "browserify-sign": {
+      "version": "4.2.1",
+      "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz",
+      "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==",
+      "requires": {
+        "bn.js": "^5.1.1",
+        "browserify-rsa": "^4.0.1",
+        "create-hash": "^1.2.0",
+        "create-hmac": "^1.1.7",
+        "elliptic": "^6.5.3",
+        "inherits": "^2.0.4",
+        "parse-asn1": "^5.1.5",
+        "readable-stream": "^3.6.0",
+        "safe-buffer": "^5.2.0"
+      },
+      "dependencies": {
+        "inherits": {
+          "version": "2.0.4",
+          "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+          "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+        },
+        "readable-stream": {
+          "version": "3.6.0",
+          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
+          "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
+          "requires": {
+            "inherits": "^2.0.3",
+            "string_decoder": "^1.1.1",
+            "util-deprecate": "^1.0.1"
+          }
+        },
+        "safe-buffer": {
+          "version": "5.2.1",
+          "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+          "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
+        }
+      }
+    },
+    "browserify-zlib": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz",
+      "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
+      "requires": {
+        "pako": "~1.0.5"
+      }
+    },
+    "browserslist": {
+      "version": "4.13.0",
+      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.13.0.tgz",
+      "integrity": "sha512-MINatJ5ZNrLnQ6blGvePd/QOz9Xtu+Ne+x29iQSCHfkU5BugKVJwZKn/iiL8UbpIpa3JhviKjz+XxMo0m2caFQ==",
+      "requires": {
+        "caniuse-lite": "^1.0.30001093",
+        "electron-to-chromium": "^1.3.488",
+        "escalade": "^3.0.1",
+        "node-releases": "^1.1.58"
+      }
+    },
+    "buffer": {
+      "version": "5.6.0",
+      "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz",
+      "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==",
+      "requires": {
+        "base64-js": "^1.0.2",
+        "ieee754": "^1.1.4"
+      }
+    },
+    "buffer-equal": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz",
+      "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs="
+    },
+    "buffer-from": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
+      "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
+    },
+    "buffer-xor": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
+      "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk="
+    },
+    "builtin-status-codes": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
+      "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug="
+    },
+    "bytes": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
+      "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg=="
+    },
+    "cacache": {
+      "version": "15.0.5",
+      "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.0.5.tgz",
+      "integrity": "sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A==",
+      "requires": {
+        "@npmcli/move-file": "^1.0.1",
+        "chownr": "^2.0.0",
+        "fs-minipass": "^2.0.0",
+        "glob": "^7.1.4",
+        "infer-owner": "^1.0.4",
+        "lru-cache": "^6.0.0",
+        "minipass": "^3.1.1",
+        "minipass-collect": "^1.0.2",
+        "minipass-flush": "^1.0.5",
+        "minipass-pipeline": "^1.2.2",
+        "mkdirp": "^1.0.3",
+        "p-map": "^4.0.0",
+        "promise-inflight": "^1.0.1",
+        "rimraf": "^3.0.2",
+        "ssri": "^8.0.0",
+        "tar": "^6.0.2",
+        "unique-filename": "^1.1.1"
+      },
+      "dependencies": {
+        "mkdirp": {
+          "version": "1.0.4",
+          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+          "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw=="
+        }
+      }
+    },
+    "cache-base": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
+      "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
+      "requires": {
+        "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-bind": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
+      "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
+      "requires": {
+        "function-bind": "^1.1.1",
+        "get-intrinsic": "^1.0.2"
+      }
+    },
+    "caller-callsite": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz",
+      "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=",
+      "dev": true,
+      "requires": {
+        "callsites": "^2.0.0"
+      },
+      "dependencies": {
+        "callsites": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz",
+          "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=",
+          "dev": true
+        }
+      }
+    },
+    "caller-path": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz",
+      "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=",
+      "dev": true,
+      "requires": {
+        "caller-callsite": "^2.0.0"
+      }
+    },
+    "callsites": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+      "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="
+    },
+    "camelcase": {
+      "version": "6.2.0",
+      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz",
+      "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg=="
+    },
+    "camelcase-keys": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
+      "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
+      "dev": true,
+      "requires": {
+        "camelcase": "^2.0.0",
+        "map-obj": "^1.0.0"
+      },
+      "dependencies": {
+        "camelcase": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
+          "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
+          "dev": true
+        }
+      }
+    },
+    "caniuse-lite": {
+      "version": "1.0.30001299",
+      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001299.tgz",
+      "integrity": "sha512-iujN4+x7QzqA2NCSrS5VUy+4gLmRd4xv6vbBBsmfVqTx8bLAD8097euLqQgKxSVLvxjSDcvF1T/i9ocgnUFexw=="
+    },
+    "canvas": {
+      "version": "2.7.0",
+      "resolved": "https://registry.npmjs.org/canvas/-/canvas-2.7.0.tgz",
+      "integrity": "sha512-pzCxtkHb+5su5MQjTtepMDlIOtaXo277x0C0u3nMOxtkhTyQ+h2yNKhlROAaDllWgRyePAUitC08sXw26Eb6aw==",
+      "requires": {
+        "nan": "^2.14.0",
+        "node-pre-gyp": "^0.15.0",
+        "simple-get": "^3.0.3"
+      }
+    },
+    "caseless": {
+      "version": "0.12.0",
+      "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
+      "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
+      "dev": true
+    },
+    "chalk": {
+      "version": "2.4.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+      "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+      "requires": {
+        "ansi-styles": "^3.2.1",
+        "escape-string-regexp": "^1.0.5",
+        "supports-color": "^5.3.0"
+      },
+      "dependencies": {
+        "supports-color": {
+          "version": "5.5.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+          "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+          "requires": {
+            "has-flag": "^3.0.0"
+          }
+        }
+      }
+    },
+    "change-emitter": {
+      "version": "0.1.6",
+      "resolved": "https://registry.npmjs.org/change-emitter/-/change-emitter-0.1.6.tgz",
+      "integrity": "sha1-6LL+PX8at9aaMhma/5HqaTFAlRU="
+    },
+    "chart.js": {
+      "version": "2.9.4",
+      "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-2.9.4.tgz",
+      "integrity": "sha512-B07aAzxcrikjAPyV+01j7BmOpxtQETxTSlQ26BEYJ+3iUkbNKaOJ/nDbT6JjyqYxseM0ON12COHYdU2cTIjC7A==",
+      "requires": {
+        "chartjs-color": "^2.1.0",
+        "moment": "^2.10.2"
+      }
+    },
+    "chartist": {
+      "version": "0.11.4",
+      "resolved": "https://registry.npmjs.org/chartist/-/chartist-0.11.4.tgz",
+      "integrity": "sha512-H4AimxaUD738/u9Mq8t27J4lh6STsLi4BQHt65nOtpLk3xyrBPaLiLMrHw7/WV9CmsjGA02WihjuL5qpSagLYw=="
+    },
+    "chartjs-color": {
+      "version": "2.4.1",
+      "resolved": "https://registry.npmjs.org/chartjs-color/-/chartjs-color-2.4.1.tgz",
+      "integrity": "sha512-haqOg1+Yebys/Ts/9bLo/BqUcONQOdr/hoEr2LLTRl6C5LXctUdHxsCYfvQVg5JIxITrfCNUDr4ntqmQk9+/0w==",
+      "requires": {
+        "chartjs-color-string": "^0.6.0",
+        "color-convert": "^1.9.3"
+      }
+    },
+    "chartjs-color-string": {
+      "version": "0.6.0",
+      "resolved": "https://registry.npmjs.org/chartjs-color-string/-/chartjs-color-string-0.6.0.tgz",
+      "integrity": "sha512-TIB5OKn1hPJvO7JcteW4WY/63v6KwEdt6udfnDE9iCAZgy+V4SrbSxoIbTw/xkUIapjEI4ExGtD0+6D3KyFd7A==",
+      "requires": {
+        "color-name": "^1.0.0"
+      }
+    },
+    "chokidar": {
+      "version": "2.1.8",
+      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
+      "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
+      "requires": {
+        "anymatch": "^2.0.0",
+        "async-each": "^1.0.1",
+        "braces": "^2.3.2",
+        "fsevents": "^1.2.7",
+        "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"
+      }
+    },
+    "chownr": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
+      "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ=="
+    },
+    "chrome-trace-event": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz",
+      "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==",
+      "requires": {
+        "tslib": "^1.9.0"
+      }
+    },
+    "cipher-base": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
+      "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
+      "requires": {
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "class-utils": {
+      "version": "0.3.6",
+      "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
+      "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
+      "requires": {
+        "arr-union": "^3.1.0",
+        "define-property": "^0.2.5",
+        "isobject": "^3.0.0",
+        "static-extend": "^0.1.1"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "0.2.5",
+          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+          "requires": {
+            "is-descriptor": "^0.1.0"
+          }
+        }
+      }
+    },
+    "classnames": {
+      "version": "2.2.6",
+      "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz",
+      "integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q=="
+    },
+    "clean-stack": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
+      "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A=="
+    },
+    "cliui": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
+      "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
+      "dev": true,
+      "requires": {
+        "string-width": "^3.1.0",
+        "strip-ansi": "^5.2.0",
+        "wrap-ansi": "^5.1.0"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "4.1.0",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+          "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+          "dev": true
+        },
+        "is-fullwidth-code-point": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+          "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+          "dev": true
+        },
+        "string-width": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+          "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+          "dev": true,
+          "requires": {
+            "emoji-regex": "^7.0.1",
+            "is-fullwidth-code-point": "^2.0.0",
+            "strip-ansi": "^5.1.0"
+          }
+        },
+        "strip-ansi": {
+          "version": "5.2.0",
+          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+          "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^4.1.0"
+          }
+        }
+      }
+    },
+    "clone": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
+      "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4="
+    },
+    "clone-deep": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-0.3.0.tgz",
+      "integrity": "sha1-NIxhrpzb4O3+BT2R/0zFIdeQ7eg=",
+      "dev": true,
+      "requires": {
+        "for-own": "^1.0.0",
+        "is-plain-object": "^2.0.1",
+        "kind-of": "^3.2.2",
+        "shallow-clone": "^0.1.2"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "code-point-at": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
+      "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
+    },
+    "collection-visit": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
+      "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
+      "requires": {
+        "map-visit": "^1.0.0",
+        "object-visit": "^1.0.0"
+      }
+    },
+    "color-convert": {
+      "version": "1.9.3",
+      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+      "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+      "requires": {
+        "color-name": "1.1.3"
+      },
+      "dependencies": {
+        "color-name": {
+          "version": "1.1.3",
+          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+          "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
+        }
+      }
+    },
+    "color-name": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+    },
+    "colorette": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz",
+      "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w=="
+    },
+    "combined-stream": {
+      "version": "1.0.8",
+      "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+      "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+      "dev": true,
+      "requires": {
+        "delayed-stream": "~1.0.0"
+      }
+    },
+    "commander": {
+      "version": "2.20.3",
+      "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+      "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
+    },
+    "commondir": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
+      "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs="
+    },
+    "component-classes": {
+      "version": "1.2.6",
+      "resolved": "https://registry.npmjs.org/component-classes/-/component-classes-1.2.6.tgz",
+      "integrity": "sha1-xkI5TDYYpNiwuJGe/Mu9kw5c1pE=",
+      "requires": {
+        "component-indexof": "0.0.3"
+      }
+    },
+    "component-emitter": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
+      "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg=="
+    },
+    "component-indexof": {
+      "version": "0.0.3",
+      "resolved": "https://registry.npmjs.org/component-indexof/-/component-indexof-0.0.3.tgz",
+      "integrity": "sha1-EdCRMSI5648yyPJa6csAL/6NPCQ="
+    },
+    "compose-function": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/compose-function/-/compose-function-3.0.3.tgz",
+      "integrity": "sha1-ntZ18TzFRQHTCVCkhv9qe6OrGF8=",
+      "requires": {
+        "arity-n": "^1.0.4"
+      }
+    },
+    "concat-map": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
+    },
+    "concat-stream": {
+      "version": "1.6.2",
+      "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
+      "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
+      "requires": {
+        "buffer-from": "^1.0.0",
+        "inherits": "^2.0.3",
+        "readable-stream": "^2.2.2",
+        "typedarray": "^0.0.6"
+      }
+    },
+    "console-browserify": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz",
+      "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA=="
+    },
+    "console-control-strings": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
+      "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4="
+    },
+    "constants-browserify": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
+      "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U="
+    },
+    "content-disposition": {
+      "version": "0.5.3",
+      "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
+      "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
+      "requires": {
+        "safe-buffer": "5.1.2"
+      }
+    },
+    "content-type": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
+      "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
+    },
+    "convert-source-map": {
+      "version": "1.7.0",
+      "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz",
+      "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==",
+      "requires": {
+        "safe-buffer": "~5.1.1"
+      }
+    },
+    "cookie": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
+      "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg=="
+    },
+    "cookie-signature": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+      "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
+    },
+    "copy-anything": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.3.tgz",
+      "integrity": "sha512-GK6QUtisv4fNS+XcI7shX0Gx9ORg7QqIznyfho79JTnX1XhLiyZHfftvGiziqzRiEi/Bjhgpi+D2o7HxJFPnDQ==",
+      "requires": {
+        "is-what": "^3.12.0"
+      }
+    },
+    "copy-concurrently": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz",
+      "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==",
+      "requires": {
+        "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"
+      },
+      "dependencies": {
+        "rimraf": {
+          "version": "2.7.1",
+          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+          "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+          "requires": {
+            "glob": "^7.1.3"
+          }
+        }
+      }
+    },
+    "copy-descriptor": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
+      "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40="
+    },
+    "core-js": {
+      "version": "2.5.7",
+      "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz",
+      "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw=="
+    },
+    "core-js-compat": {
+      "version": "3.9.1",
+      "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.9.1.tgz",
+      "integrity": "sha512-jXAirMQxrkbiiLsCx9bQPJFA6llDadKMpYrBJQJ3/c4/vsPP/fAf29h24tviRlvwUL6AmY5CHLu2GvjuYviQqA==",
+      "requires": {
+        "browserslist": "^4.16.3",
+        "semver": "7.0.0"
+      },
+      "dependencies": {
+        "browserslist": {
+          "version": "4.16.3",
+          "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz",
+          "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==",
+          "requires": {
+            "caniuse-lite": "^1.0.30001181",
+            "colorette": "^1.2.1",
+            "electron-to-chromium": "^1.3.649",
+            "escalade": "^3.1.1",
+            "node-releases": "^1.1.70"
+          }
+        },
+        "semver": {
+          "version": "7.0.0",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz",
+          "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A=="
+        }
+      }
+    },
+    "core-util-is": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+      "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
+    },
+    "cosmiconfig": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz",
+      "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==",
+      "requires": {
+        "@types/parse-json": "^4.0.0",
+        "import-fresh": "^3.1.0",
+        "parse-json": "^5.0.0",
+        "path-type": "^4.0.0",
+        "yaml": "^1.7.2"
+      }
+    },
+    "create-ecdh": {
+      "version": "4.0.4",
+      "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz",
+      "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==",
+      "requires": {
+        "bn.js": "^4.1.0",
+        "elliptic": "^6.5.3"
+      },
+      "dependencies": {
+        "bn.js": {
+          "version": "4.12.0",
+          "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
+          "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
+        }
+      }
+    },
+    "create-hash": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
+      "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
+      "requires": {
+        "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": {
+      "version": "1.1.7",
+      "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
+      "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
+      "requires": {
+        "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": {
+      "version": "15.7.0",
+      "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.7.0.tgz",
+      "integrity": "sha512-QZv4sFWG9S5RUvkTYWbflxeZX+JG7Cz0Tn33rQBJ+WFQTqTfUTjMjiv9tnfXazjsO5r0KhPs+AqCjyrQX6h2ng==",
+      "requires": {
+        "loose-envify": "^1.3.1",
+        "object-assign": "^4.1.1"
+      }
+    },
+    "cropper": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/cropper/-/cropper-4.1.0.tgz",
+      "integrity": "sha512-dNbkWNT606oMgRQ2aYMerDnPpSVLBMTWyERDHsDwih1ahJiVpyfSM9ev/n6G4ElfRG8t0shUZ5FXLg7YtmDdBQ==",
+      "requires": {
+        "cropperjs": "^1.5.6"
+      }
+    },
+    "cropperjs": {
+      "version": "1.5.11",
+      "resolved": "https://registry.npmjs.org/cropperjs/-/cropperjs-1.5.11.tgz",
+      "integrity": "sha512-SJUeBBhtNBnnn+UrLKluhFRIXLJn7XFPv8QN1j49X5t+BIMwkgvDev541f96bmu8Xe0TgCx3gON22KmY/VddaA=="
+    },
+    "cross-env": {
+      "version": "5.2.1",
+      "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-5.2.1.tgz",
+      "integrity": "sha512-1yHhtcfAd1r4nwQgknowuUNfIT9E8dOMMspC36g45dN+iD1blloi7xp8X/xAIDnjHWyt1uQ8PHk2fkNaym7soQ==",
+      "dev": true,
+      "requires": {
+        "cross-spawn": "^6.0.5"
+      }
+    },
+    "cross-fetch": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.2.tgz",
+      "integrity": "sha512-+JhD65rDNqLbGmB3Gzs3HrEKC0aQnD+XA3SY6RjgkF88jV2q5cTc5+CwxlS3sdmLk98gpPt5CF9XRnPdlxZe6w==",
+      "requires": {
+        "node-fetch": "2.6.1"
+      }
+    },
+    "cross-spawn": {
+      "version": "6.0.5",
+      "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+      "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+      "dev": true,
+      "requires": {
+        "nice-try": "^1.0.4",
+        "path-key": "^2.0.1",
+        "semver": "^5.5.0",
+        "shebang-command": "^1.2.0",
+        "which": "^1.2.9"
+      }
+    },
+    "crypto-browserify": {
+      "version": "3.12.0",
+      "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
+      "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
+      "requires": {
+        "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": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-3.3.0.tgz",
+      "integrity": "sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q=="
+    },
+    "css": {
+      "version": "2.2.4",
+      "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz",
+      "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==",
+      "requires": {
+        "inherits": "^2.0.3",
+        "source-map": "^0.6.1",
+        "source-map-resolve": "^0.5.2",
+        "urix": "^0.1.0"
+      }
+    },
+    "css-animation": {
+      "version": "1.6.1",
+      "resolved": "https://registry.npmjs.org/css-animation/-/css-animation-1.6.1.tgz",
+      "integrity": "sha512-/48+/BaEaHRY6kNQ2OIPzKf9A6g8WjZYjhiNDNuIVbsm5tXCGIAsHDjB4Xu1C4vXJtUWZo26O68OQkDpNBaPog==",
+      "requires": {
+        "babel-runtime": "6.x",
+        "component-classes": "^1.2.5"
+      }
+    },
+    "css-loader": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-4.3.0.tgz",
+      "integrity": "sha512-rdezjCjScIrsL8BSYszgT4s476IcNKt6yX69t0pHjJVnPUTDpn4WfIpDQTN3wCJvUvfsz/mFjuGOekf3PY3NUg==",
+      "requires": {
+        "camelcase": "^6.0.0",
+        "cssesc": "^3.0.0",
+        "icss-utils": "^4.1.1",
+        "loader-utils": "^2.0.0",
+        "postcss": "^7.0.32",
+        "postcss-modules-extract-imports": "^2.0.0",
+        "postcss-modules-local-by-default": "^3.0.3",
+        "postcss-modules-scope": "^2.2.0",
+        "postcss-modules-values": "^3.0.0",
+        "postcss-value-parser": "^4.1.0",
+        "schema-utils": "^2.7.1",
+        "semver": "^7.3.2"
+      },
+      "dependencies": {
+        "semver": {
+          "version": "7.3.5",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
+          "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
+          "requires": {
+            "lru-cache": "^6.0.0"
+          }
+        }
+      }
+    },
+    "css-mediaquery": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/css-mediaquery/-/css-mediaquery-0.1.2.tgz",
+      "integrity": "sha1-aiw3NEkoYYYxxUvTPO3TAdoYvqA="
+    },
+    "css-selector-tokenizer": {
+      "version": "0.7.3",
+      "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz",
+      "integrity": "sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg==",
+      "dev": true,
+      "requires": {
+        "cssesc": "^3.0.0",
+        "fastparse": "^1.1.2"
+      }
+    },
+    "css.escape": {
+      "version": "1.5.1",
+      "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz",
+      "integrity": "sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s="
+    },
+    "cssesc": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
+      "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg=="
+    },
+    "cssnano-preset-simple": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/cssnano-preset-simple/-/cssnano-preset-simple-1.1.4.tgz",
+      "integrity": "sha512-EYKDo65W+AxMViUijv/hvhbEnxUjmu3V7omcH1MatPOwjRLrAgVArUOE8wTUyc1ePFEtvV8oCT4/QSRJDorm/A==",
+      "requires": {
+        "postcss": "^7.0.32"
+      }
+    },
+    "cssnano-simple": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/cssnano-simple/-/cssnano-simple-1.2.0.tgz",
+      "integrity": "sha512-pton9cZ70/wOCWMAbEGHO1ACsW1KggTB6Ikj7k71uOEsz6SfByH++86+WAmXjRSc9q/g9gxkpFP9bDX9vRotdA==",
+      "requires": {
+        "cssnano-preset-simple": "1.2.0",
+        "postcss": "^7.0.32"
+      },
+      "dependencies": {
+        "cssnano-preset-simple": {
+          "version": "1.2.0",
+          "resolved": "https://registry.npmjs.org/cssnano-preset-simple/-/cssnano-preset-simple-1.2.0.tgz",
+          "integrity": "sha512-zojGlY+KasFeQT/SnD/WqYXHcKddz2XHRDtIwxrWpGqGHp5IyLWsWFS3UW7pOf3AWvfkpYSRdxOSlYuJPz8j8g==",
+          "requires": {
+            "caniuse-lite": "^1.0.30001093",
+            "postcss": "^7.0.32"
+          }
+        }
+      }
+    },
+    "csstype": {
+      "version": "2.6.16",
+      "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.16.tgz",
+      "integrity": "sha512-61FBWoDHp/gRtsoDkq/B1nWrCUG/ok1E3tUrcNbZjsE9Cxd9yzUirjS3+nAATB8U4cTtaQmAHbNndoFz5L6C9Q=="
+    },
+    "currently-unhandled": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
+      "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
+      "dev": true,
+      "requires": {
+        "array-find-index": "^1.0.1"
+      }
+    },
+    "cyclist": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz",
+      "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk="
+    },
+    "d": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
+      "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==",
+      "requires": {
+        "es5-ext": "^0.10.50",
+        "type": "^1.0.1"
+      }
+    },
+    "d3": {
+      "version": "3.5.17",
+      "resolved": "https://registry.npmjs.org/d3/-/d3-3.5.17.tgz",
+      "integrity": "sha1-vEZ0gAQ3iyGjYMn8fPUjF5B2L7g="
+    },
+    "dash-ast": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/dash-ast/-/dash-ast-1.0.0.tgz",
+      "integrity": "sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA=="
+    },
+    "dashdash": {
+      "version": "1.14.1",
+      "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
+      "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
+      "dev": true,
+      "requires": {
+        "assert-plus": "^1.0.0"
+      }
+    },
+    "data-uri-to-buffer": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.0.tgz",
+      "integrity": "sha512-MJ6mFTZ+nPQO+39ua/ltwNePXrfdF3Ww0wP1Od7EePySXN1cP9XNqRQOG3FxTfipp8jx898LUCgBCEP11Qw/ZQ==",
+      "requires": {
+        "buffer-from": "^1.1.1"
+      }
+    },
+    "datatables.net": {
+      "version": "1.10.24",
+      "resolved": "https://registry.npmjs.org/datatables.net/-/datatables.net-1.10.24.tgz",
+      "integrity": "sha512-CwXixvOdinvBCLXvcTloDinWiEM7Geaz+GwyjPrZL+MXIGPcLv4Op1bbWn8ErsI1JWMIWC8Cuf1rnDU2RrFV5w==",
+      "requires": {
+        "jquery": ">=1.7"
+      }
+    },
+    "datatables.net-bs": {
+      "version": "1.10.24",
+      "resolved": "https://registry.npmjs.org/datatables.net-bs/-/datatables.net-bs-1.10.24.tgz",
+      "integrity": "sha512-tV8MAZtUw8DJJhplDaIp0cBa9r6jjZ1wcJx3aMJ0m4Mbyqx3g71UL4mY2NqTOuoDYHvh0lhKF5ZGA3Ol8c86uQ==",
+      "requires": {
+        "datatables.net": "1.10.24",
+        "jquery": ">=1.7"
+      }
+    },
+    "datatables.net-bs4": {
+      "version": "1.10.24",
+      "resolved": "https://registry.npmjs.org/datatables.net-bs4/-/datatables.net-bs4-1.10.24.tgz",
+      "integrity": "sha512-NgjQMqCo5pg49c5TWsc78UYhcvWPAFkZ7qH4yKAb1e0eLNCAo+TLeaIsDiAPpcWwP7xpjdAmZIIbXDpspNTCkg==",
+      "requires": {
+        "datatables.net": "1.10.24",
+        "jquery": ">=1.7"
+      }
+    },
+    "datatables.net-buttons": {
+      "version": "1.7.0",
+      "resolved": "https://registry.npmjs.org/datatables.net-buttons/-/datatables.net-buttons-1.7.0.tgz",
+      "integrity": "sha512-3bWeKBO+lR+aA/KTlJErWIYMrDD54eGbtd7todgLlRoMezQFZVpCyXzOsMaC611D+E4uvOgPnNrLuh3GlmMcRg==",
+      "requires": {
+        "datatables.net": "^1.10.15",
+        "jquery": ">=1.7"
+      }
+    },
+    "datatables.net-buttons-bs": {
+      "version": "1.7.0",
+      "resolved": "https://registry.npmjs.org/datatables.net-buttons-bs/-/datatables.net-buttons-bs-1.7.0.tgz",
+      "integrity": "sha512-06ayRXtJBfhZ/Q4+TUsdWK5EKuiyBao+N52wyuwm41LjUOoX8PiOZpDIPrkDrH6yIP/C/cmPcZR/mJimiHqXJQ==",
+      "requires": {
+        "datatables.net-bs": "^1.10.15",
+        "datatables.net-buttons": "1.7.0",
+        "jquery": ">=1.7"
+      }
+    },
+    "datatables.net-keytable": {
+      "version": "2.6.1",
+      "resolved": "https://registry.npmjs.org/datatables.net-keytable/-/datatables.net-keytable-2.6.1.tgz",
+      "integrity": "sha512-0gA3amosZcWr+AsDd0a8zLmO90Vmlo4SwN2SHQDZuCEYgcMyvLJM40DxJPDVh2qEajExaKJQ3ctoQClf+UoctQ==",
+      "requires": {
+        "datatables.net": "^1.10.15",
+        "jquery": ">=1.7"
+      }
+    },
+    "datatables.net-keytable-bs": {
+      "version": "2.6.1",
+      "resolved": "https://registry.npmjs.org/datatables.net-keytable-bs/-/datatables.net-keytable-bs-2.6.1.tgz",
+      "integrity": "sha512-Uc9Db0YaxfY191Zez1BeeivbVfJlY/e0aKVtd8WyysrXQrEcyfFa3VCyMpNMkU0fW65eUungWIzuBVbJm+YTrw==",
+      "requires": {
+        "datatables.net-bs": "^1.10.15",
+        "datatables.net-keytable": "2.6.1",
+        "jquery": ">=1.7"
+      }
+    },
+    "datatables.net-responsive": {
+      "version": "2.2.7",
+      "resolved": "https://registry.npmjs.org/datatables.net-responsive/-/datatables.net-responsive-2.2.7.tgz",
+      "integrity": "sha512-pjZcR+AHa0GE++giRhMBSxFLKrfjP+X7etj7oZMMfMTi1gcdYdM8YP3gmpEyfLjDEg6uPJb9PRH4mQHcc8OYyA==",
+      "requires": {
+        "datatables.net": "^1.10.15",
+        "jquery": ">=1.7"
+      }
+    },
+    "datatables.net-responsive-bs": {
+      "version": "2.2.7",
+      "resolved": "https://registry.npmjs.org/datatables.net-responsive-bs/-/datatables.net-responsive-bs-2.2.7.tgz",
+      "integrity": "sha512-hy+ItFI4/JvBW15WrQib9FPQC7RkurVu07406YaQZfXQB08FfJYzUeT42xUvhLFfIRTk4jUlDQWsc2Rbp8yHQQ==",
+      "requires": {
+        "datatables.net-bs": "^1.10.15",
+        "datatables.net-responsive": "2.2.7",
+        "jquery": ">=1.7"
+      }
+    },
+    "debug": {
+      "version": "2.6.9",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+      "requires": {
+        "ms": "2.0.0"
+      }
+    },
+    "decamelize": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+      "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
+      "dev": true
+    },
+    "decode-uri-component": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
+      "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU="
+    },
+    "decompress-response": {
+      "version": "4.2.1",
+      "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz",
+      "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==",
+      "requires": {
+        "mimic-response": "^2.0.0"
+      }
+    },
+    "deep-equal": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz",
+      "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==",
+      "requires": {
+        "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": {
+      "version": "0.6.0",
+      "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
+      "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA=="
+    },
+    "deep-is": {
+      "version": "0.1.3",
+      "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
+      "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ="
+    },
+    "define-properties": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
+      "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
+      "requires": {
+        "object-keys": "^1.0.12"
+      }
+    },
+    "define-property": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
+      "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+      "requires": {
+        "is-descriptor": "^1.0.2",
+        "isobject": "^3.0.1"
+      },
+      "dependencies": {
+        "is-accessor-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-data-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-descriptor": {
+          "version": "1.0.2",
+          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+          "requires": {
+            "is-accessor-descriptor": "^1.0.0",
+            "is-data-descriptor": "^1.0.0",
+            "kind-of": "^6.0.2"
+          }
+        }
+      }
+    },
+    "delayed-stream": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+      "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
+      "dev": true
+    },
+    "delegates": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
+      "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o="
+    },
+    "depd": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+      "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
+    },
+    "dequal": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.2.tgz",
+      "integrity": "sha512-q9K8BlJVxK7hQYqa6XISGmBZbtQQWVXSrRrWreHC94rMt1QL/Impruc+7p2CYSYuVIUr+YCt6hjrs1kkdJRTug=="
+    },
+    "des.js": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz",
+      "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==",
+      "requires": {
+        "inherits": "^2.0.1",
+        "minimalistic-assert": "^1.0.0"
+      }
+    },
+    "destroy": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
+      "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
+    },
+    "detect-libc": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
+      "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups="
+    },
+    "dfa": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/dfa/-/dfa-1.2.0.tgz",
+      "integrity": "sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q=="
+    },
+    "diffie-hellman": {
+      "version": "5.0.3",
+      "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
+      "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
+      "requires": {
+        "bn.js": "^4.1.0",
+        "miller-rabin": "^4.0.0",
+        "randombytes": "^2.0.0"
+      },
+      "dependencies": {
+        "bn.js": {
+          "version": "4.12.0",
+          "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
+          "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
+        }
+      }
+    },
+    "dnd-core": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/dnd-core/-/dnd-core-6.0.0.tgz",
+      "integrity": "sha512-WnnFSbnC3grP/XJ+xfxgM8DyIsts3Q/rfgE6WGRWs6tCQcwILputNNm/Kw+WPS2N1e46hRy5iPl2pYwkP9kK9Q==",
+      "requires": {
+        "asap": "^2.0.6",
+        "invariant": "^2.2.4",
+        "lodash": "^4.17.11",
+        "redux": "^4.0.1"
+      }
+    },
+    "dom-align": {
+      "version": "1.12.0",
+      "resolved": "https://registry.npmjs.org/dom-align/-/dom-align-1.12.0.tgz",
+      "integrity": "sha512-YkoezQuhp3SLFGdOlr5xkqZ640iXrnHAwVYcDg8ZKRUtO7mSzSC2BA5V0VuyAwPSJA4CLIc6EDDJh4bEsD2+zA=="
+    },
+    "dom-helpers": {
+      "version": "3.4.0",
+      "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz",
+      "integrity": "sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==",
+      "requires": {
+        "@babel/runtime": "^7.1.2"
+      }
+    },
+    "dom-serializer": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.0.1.tgz",
+      "integrity": "sha512-1Aj1Qy3YLbdslkI75QEOfdp9TkQ3o8LRISAzxOibjBs/xWwr1WxZFOQphFkZuepHFGo+kB8e5FVJSS0faAJ4Rw==",
+      "requires": {
+        "domelementtype": "^2.0.1",
+        "domhandler": "^3.0.0",
+        "entities": "^2.0.0"
+      }
+    },
+    "domain-browser": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz",
+      "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA=="
+    },
+    "domelementtype": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz",
+      "integrity": "sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w=="
+    },
+    "domhandler": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-3.0.0.tgz",
+      "integrity": "sha512-eKLdI5v9m67kbXQbJSNn1zjh0SDzvzWVWtX+qEI3eMjZw8daH9k8rlj1FZY9memPwjiskQFbe7vHVVJIAqoEhw==",
+      "requires": {
+        "domelementtype": "^2.0.1"
+      }
+    },
+    "domutils": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.1.0.tgz",
+      "integrity": "sha512-CD9M0Dm1iaHfQ1R/TI+z3/JWp/pgub0j4jIQKH89ARR4ATAV2nbaOQS5XxU9maJP5jHaPdDDQSEHuE2UmpUTKg==",
+      "requires": {
+        "dom-serializer": "^0.2.1",
+        "domelementtype": "^2.0.1",
+        "domhandler": "^3.0.0"
+      },
+      "dependencies": {
+        "dom-serializer": {
+          "version": "0.2.2",
+          "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz",
+          "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==",
+          "requires": {
+            "domelementtype": "^2.0.1",
+            "entities": "^2.0.0"
+          }
+        }
+      }
+    },
+    "draft-js": {
+      "version": "0.11.7",
+      "resolved": "https://registry.npmjs.org/draft-js/-/draft-js-0.11.7.tgz",
+      "integrity": "sha512-ne7yFfN4sEL82QPQEn80xnADR8/Q6ALVworbC5UOSzOvjffmYfFsr3xSZtxbIirti14R7Y33EZC5rivpLgIbsg==",
+      "requires": {
+        "fbjs": "^2.0.0",
+        "immutable": "~3.7.4",
+        "object-assign": "^4.1.1"
+      }
+    },
+    "draftjs-utils": {
+      "version": "0.10.2",
+      "resolved": "https://registry.npmjs.org/draftjs-utils/-/draftjs-utils-0.10.2.tgz",
+      "integrity": "sha512-EstHqr3R3JVcilJrBaO/A+01GvwwKmC7e4TCjC7S94ZeMh4IVmf60OuQXtHHpwItK8C2JCi3iljgN5KHkJboUg=="
+    },
+    "duplexer2": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
+      "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=",
+      "requires": {
+        "readable-stream": "^2.0.2"
+      }
+    },
+    "duplexify": {
+      "version": "3.7.1",
+      "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
+      "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==",
+      "requires": {
+        "end-of-stream": "^1.0.0",
+        "inherits": "^2.0.1",
+        "readable-stream": "^2.0.0",
+        "stream-shift": "^1.0.0"
+      }
+    },
+    "easy-pie-chart": {
+      "version": "2.1.7",
+      "resolved": "https://registry.npmjs.org/easy-pie-chart/-/easy-pie-chart-2.1.7.tgz",
+      "integrity": "sha1-NeSft9r5qU5SuClPUWJpGbyu58w="
+    },
+    "ecc-jsbn": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
+      "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
+      "dev": true,
+      "requires": {
+        "jsbn": "~0.1.0",
+        "safer-buffer": "^2.1.0"
+      }
+    },
+    "ee-first": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+      "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
+    },
+    "electron-to-chromium": {
+      "version": "1.3.695",
+      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.695.tgz",
+      "integrity": "sha512-lz66RliUqLHU1Ojxx1A4QUxKydjiQ79Y4dZyPobs2Dmxj5aVL2TM3KoQ2Gs7HS703Bfny+ukI3KOxwAB0xceHQ=="
+    },
+    "elliptic": {
+      "version": "6.5.4",
+      "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz",
+      "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==",
+      "requires": {
+        "bn.js": "^4.11.9",
+        "brorand": "^1.1.0",
+        "hash.js": "^1.0.0",
+        "hmac-drbg": "^1.0.1",
+        "inherits": "^2.0.4",
+        "minimalistic-assert": "^1.0.1",
+        "minimalistic-crypto-utils": "^1.0.1"
+      },
+      "dependencies": {
+        "bn.js": {
+          "version": "4.12.0",
+          "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
+          "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
+        },
+        "inherits": {
+          "version": "2.0.4",
+          "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+          "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+        }
+      }
+    },
+    "emoji-regex": {
+      "version": "7.0.3",
+      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+      "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+      "dev": true
+    },
+    "emojis-list": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
+      "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q=="
+    },
+    "encodeurl": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+      "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
+    },
+    "encoding": {
+      "version": "0.1.13",
+      "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz",
+      "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==",
+      "requires": {
+        "iconv-lite": "^0.6.2"
+      },
+      "dependencies": {
+        "iconv-lite": {
+          "version": "0.6.2",
+          "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz",
+          "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==",
+          "requires": {
+            "safer-buffer": ">= 2.1.2 < 3.0.0"
+          }
+        }
+      }
+    },
+    "end-of-stream": {
+      "version": "1.4.4",
+      "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
+      "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
+      "requires": {
+        "once": "^1.4.0"
+      }
+    },
+    "enhanced-resolve": {
+      "version": "4.5.0",
+      "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz",
+      "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==",
+      "requires": {
+        "graceful-fs": "^4.1.2",
+        "memory-fs": "^0.5.0",
+        "tapable": "^1.0.0"
+      },
+      "dependencies": {
+        "memory-fs": {
+          "version": "0.5.0",
+          "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz",
+          "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==",
+          "requires": {
+            "errno": "^0.1.3",
+            "readable-stream": "^2.0.1"
+          }
+        }
+      }
+    },
+    "entities": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
+      "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A=="
+    },
+    "errno": {
+      "version": "0.1.8",
+      "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz",
+      "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==",
+      "requires": {
+        "prr": "~1.0.1"
+      }
+    },
+    "error-ex": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+      "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+      "requires": {
+        "is-arrayish": "^0.2.1"
+      }
+    },
+    "es-abstract": {
+      "version": "1.18.6",
+      "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.6.tgz",
+      "integrity": "sha512-kAeIT4cku5eNLNuUKhlmtuk1/TRZvQoYccn6TO0cSVdf1kzB0T7+dYuVK9MWM7l+/53W2Q8M7N2c6MQvhXFcUQ==",
+      "requires": {
+        "call-bind": "^1.0.2",
+        "es-to-primitive": "^1.2.1",
+        "function-bind": "^1.1.1",
+        "get-intrinsic": "^1.1.1",
+        "get-symbol-description": "^1.0.0",
+        "has": "^1.0.3",
+        "has-symbols": "^1.0.2",
+        "internal-slot": "^1.0.3",
+        "is-callable": "^1.2.4",
+        "is-negative-zero": "^2.0.1",
+        "is-regex": "^1.1.4",
+        "is-string": "^1.0.7",
+        "object-inspect": "^1.11.0",
+        "object-keys": "^1.1.1",
+        "object.assign": "^4.1.2",
+        "string.prototype.trimend": "^1.0.4",
+        "string.prototype.trimstart": "^1.0.4",
+        "unbox-primitive": "^1.0.1"
+      },
+      "dependencies": {
+        "is-regex": {
+          "version": "1.1.4",
+          "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
+          "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
+          "requires": {
+            "call-bind": "^1.0.2",
+            "has-tostringtag": "^1.0.0"
+          }
+        },
+        "object-inspect": {
+          "version": "1.11.0",
+          "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz",
+          "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg=="
+        }
+      }
+    },
+    "es-to-primitive": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
+      "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
+      "requires": {
+        "is-callable": "^1.1.4",
+        "is-date-object": "^1.0.1",
+        "is-symbol": "^1.0.2"
+      }
+    },
+    "es5-ext": {
+      "version": "0.10.53",
+      "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz",
+      "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==",
+      "requires": {
+        "es6-iterator": "~2.0.3",
+        "es6-symbol": "~3.1.3",
+        "next-tick": "~1.0.0"
+      }
+    },
+    "es6-iterator": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
+      "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=",
+      "requires": {
+        "d": "1",
+        "es5-ext": "^0.10.35",
+        "es6-symbol": "^3.1.1"
+      }
+    },
+    "es6-map": {
+      "version": "0.1.5",
+      "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz",
+      "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=",
+      "requires": {
+        "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-object-assign": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz",
+      "integrity": "sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw="
+    },
+    "es6-set": {
+      "version": "0.1.5",
+      "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz",
+      "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=",
+      "requires": {
+        "d": "1",
+        "es5-ext": "~0.10.14",
+        "es6-iterator": "~2.0.1",
+        "es6-symbol": "3.1.1",
+        "event-emitter": "~0.3.5"
+      },
+      "dependencies": {
+        "es6-symbol": {
+          "version": "3.1.1",
+          "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz",
+          "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=",
+          "requires": {
+            "d": "1",
+            "es5-ext": "~0.10.14"
+          }
+        }
+      }
+    },
+    "es6-symbol": {
+      "version": "3.1.3",
+      "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz",
+      "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==",
+      "requires": {
+        "d": "^1.0.1",
+        "ext": "^1.1.2"
+      }
+    },
+    "escalade": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
+      "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw=="
+    },
+    "escape-html": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+      "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
+    },
+    "escape-string-regexp": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+      "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
+    },
+    "escodegen": {
+      "version": "1.14.3",
+      "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz",
+      "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==",
+      "requires": {
+        "esprima": "^4.0.1",
+        "estraverse": "^4.2.0",
+        "esutils": "^2.0.2",
+        "optionator": "^0.8.1",
+        "source-map": "~0.6.1"
+      }
+    },
+    "eslint-scope": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz",
+      "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==",
+      "requires": {
+        "esrecurse": "^4.1.0",
+        "estraverse": "^4.1.1"
+      }
+    },
+    "esprima": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+      "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
+    },
+    "esrecurse": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+      "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+      "requires": {
+        "estraverse": "^5.2.0"
+      },
+      "dependencies": {
+        "estraverse": {
+          "version": "5.2.0",
+          "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
+          "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ=="
+        }
+      }
+    },
+    "estraverse": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+      "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw=="
+    },
+    "estree-is-function": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/estree-is-function/-/estree-is-function-1.0.0.tgz",
+      "integrity": "sha512-nSCWn1jkSq2QAtkaVLJZY2ezwcFO161HVc174zL1KPW3RJ+O6C3eJb8Nx7OXzvhoEv+nLgSR1g71oWUHUDTrJA=="
+    },
+    "esutils": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+      "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="
+    },
+    "etag": {
+      "version": "1.8.1",
+      "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+      "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
+    },
+    "eve-raphael": {
+      "version": "0.5.0",
+      "resolved": "https://registry.npmjs.org/eve-raphael/-/eve-raphael-0.5.0.tgz",
+      "integrity": "sha1-F8dUt5K+7z+maE15z1pHxjxM2jA="
+    },
+    "event-emitter": {
+      "version": "0.3.5",
+      "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
+      "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=",
+      "requires": {
+        "d": "1",
+        "es5-ext": "~0.10.14"
+      }
+    },
+    "event-target-shim": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
+      "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ=="
+    },
+    "events": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
+      "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q=="
+    },
+    "evp_bytestokey": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
+      "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
+      "requires": {
+        "md5.js": "^1.3.4",
+        "safe-buffer": "^5.1.1"
+      }
+    },
+    "expand-brackets": {
+      "version": "2.1.4",
+      "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
+      "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+      "requires": {
+        "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"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "0.2.5",
+          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+          "requires": {
+            "is-descriptor": "^0.1.0"
+          }
+        },
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        }
+      }
+    },
+    "express": {
+      "version": "4.17.1",
+      "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
+      "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
+      "requires": {
+        "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": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz",
+      "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==",
+      "requires": {
+        "type": "^2.0.0"
+      },
+      "dependencies": {
+        "type": {
+          "version": "2.5.0",
+          "resolved": "https://registry.npmjs.org/type/-/type-2.5.0.tgz",
+          "integrity": "sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw=="
+        }
+      }
+    },
+    "extend": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+      "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
+      "dev": true
+    },
+    "extend-shallow": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+      "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+      "requires": {
+        "assign-symbols": "^1.0.0",
+        "is-extendable": "^1.0.1"
+      },
+      "dependencies": {
+        "is-extendable": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+          "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+          "requires": {
+            "is-plain-object": "^2.0.4"
+          }
+        }
+      }
+    },
+    "extglob": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
+      "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+      "requires": {
+        "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"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+          "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+          "requires": {
+            "is-descriptor": "^1.0.0"
+          }
+        },
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        },
+        "is-accessor-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-data-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-descriptor": {
+          "version": "1.0.2",
+          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+          "requires": {
+            "is-accessor-descriptor": "^1.0.0",
+            "is-data-descriptor": "^1.0.0",
+            "kind-of": "^6.0.2"
+          }
+        }
+      }
+    },
+    "extracted-loader": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/extracted-loader/-/extracted-loader-1.0.4.tgz",
+      "integrity": "sha512-G8A0hT/WCWIjesZm7BwbWdST5dQ08GNnCpTrJT/k/FYzuiJwlV1gyWjnuoizOzAR4jpEYXG2J++JyEKN/EB26Q==",
+      "dev": true
+    },
+    "extsprintf": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
+      "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
+      "dev": true
+    },
+    "fast-deep-equal": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
+      "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk="
+    },
+    "fast-json-stable-stringify": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+      "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
+    },
+    "fast-levenshtein": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+      "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc="
+    },
+    "fastparse": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz",
+      "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==",
+      "dev": true
+    },
+    "fbjs": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-2.0.0.tgz",
+      "integrity": "sha512-8XA8ny9ifxrAWlyhAbexXcs3rRMtxWcs3M0lctLfB49jRDHiaxj+Mo0XxbwE7nKZYzgCFoq64FS+WFd4IycPPQ==",
+      "requires": {
+        "core-js": "^3.6.4",
+        "cross-fetch": "^3.0.4",
+        "fbjs-css-vars": "^1.0.0",
+        "loose-envify": "^1.0.0",
+        "object-assign": "^4.1.0",
+        "promise": "^7.1.1",
+        "setimmediate": "^1.0.5",
+        "ua-parser-js": "^0.7.18"
+      },
+      "dependencies": {
+        "core-js": {
+          "version": "3.9.1",
+          "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.9.1.tgz",
+          "integrity": "sha512-gSjRvzkxQc1zjM/5paAmL4idJBFzuJoo+jDjF1tStYFMV2ERfD02HhahhCGXUyHxQRG4yFKVSdO6g62eoRMcDg=="
+        }
+      }
+    },
+    "fbjs-css-vars": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz",
+      "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ=="
+    },
+    "figgy-pudding": {
+      "version": "3.5.2",
+      "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz",
+      "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw=="
+    },
+    "file-loader": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-3.0.1.tgz",
+      "integrity": "sha512-4sNIOXgtH/9WZq4NvlfU3Opn5ynUsqBwSLyM+I7UOwdGigTBYfVVQEwe/msZNX/j4pCJTIM14Fsw66Svo1oVrw==",
+      "dev": true,
+      "requires": {
+        "loader-utils": "^1.0.2",
+        "schema-utils": "^1.0.0"
+      },
+      "dependencies": {
+        "json5": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
+          "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+          "dev": true,
+          "requires": {
+            "minimist": "^1.2.0"
+          }
+        },
+        "loader-utils": {
+          "version": "1.4.0",
+          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz",
+          "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
+          "dev": true,
+          "requires": {
+            "big.js": "^5.2.2",
+            "emojis-list": "^3.0.0",
+            "json5": "^1.0.1"
+          }
+        },
+        "schema-utils": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
+          "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+          "dev": true,
+          "requires": {
+            "ajv": "^6.1.0",
+            "ajv-errors": "^1.0.0",
+            "ajv-keywords": "^3.1.0"
+          }
+        }
+      }
+    },
+    "file-selector": {
+      "version": "0.1.19",
+      "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-0.1.19.tgz",
+      "integrity": "sha512-kCWw3+Aai8Uox+5tHCNgMFaUdgidxvMnLWO6fM5sZ0hA2wlHP5/DHGF0ECe84BiB95qdJbKNEJhWKVDvMN+JDQ==",
+      "requires": {
+        "tslib": "^2.0.1"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz",
+          "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A=="
+        }
+      }
+    },
+    "file-uri-to-path": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
+      "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
+      "optional": true
+    },
+    "fill-range": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+      "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+      "requires": {
+        "extend-shallow": "^2.0.1",
+        "is-number": "^3.0.0",
+        "repeat-string": "^1.6.1",
+        "to-regex-range": "^2.1.0"
+      },
+      "dependencies": {
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        }
+      }
+    },
+    "finalhandler": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
+      "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
+      "requires": {
+        "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": {
+      "version": "3.3.1",
+      "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz",
+      "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==",
+      "requires": {
+        "commondir": "^1.0.1",
+        "make-dir": "^3.0.2",
+        "pkg-dir": "^4.1.0"
+      }
+    },
+    "find-root": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz",
+      "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng=="
+    },
+    "find-up": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+      "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+      "requires": {
+        "locate-path": "^5.0.0",
+        "path-exists": "^4.0.0"
+      }
+    },
+    "flot": {
+      "version": "github:themicon/flot#8f88c56111ee77824d89ec63afd9606fefd450d4",
+      "from": "github:themicon/flot"
+    },
+    "flush-write-stream": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz",
+      "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==",
+      "requires": {
+        "inherits": "^2.0.3",
+        "readable-stream": "^2.3.6"
+      }
+    },
+    "fontkit": {
+      "version": "1.8.1",
+      "resolved": "https://registry.npmjs.org/fontkit/-/fontkit-1.8.1.tgz",
+      "integrity": "sha512-BsNCjDoYRxmNWFdAuK1y9bQt+igIxGtTC9u/jSFjR9MKhmI00rP1fwSvERt+5ddE82544l0XH5mzXozQVUy2Tw==",
+      "requires": {
+        "babel-runtime": "^6.26.0",
+        "brfs": "^2.0.0",
+        "brotli": "^1.2.0",
+        "browserify-optional": "^1.0.1",
+        "clone": "^1.0.4",
+        "deep-equal": "^1.0.0",
+        "dfa": "^1.2.0",
+        "restructure": "^0.5.3",
+        "tiny-inflate": "^1.0.2",
+        "unicode-properties": "^1.2.2",
+        "unicode-trie": "^0.3.0"
+      },
+      "dependencies": {
+        "pako": {
+          "version": "0.2.9",
+          "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz",
+          "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU="
+        },
+        "unicode-trie": {
+          "version": "0.3.1",
+          "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-0.3.1.tgz",
+          "integrity": "sha1-1nHd3YkQGgi6w3tqUWEBBgIFIIU=",
+          "requires": {
+            "pako": "^0.2.5",
+            "tiny-inflate": "^1.0.0"
+          }
+        }
+      }
+    },
+    "for-in": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
+      "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA="
+    },
+    "for-own": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz",
+      "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=",
+      "dev": true,
+      "requires": {
+        "for-in": "^1.0.1"
+      }
+    },
+    "forever-agent": {
+      "version": "0.6.1",
+      "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
+      "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
+      "dev": true
+    },
+    "form-data": {
+      "version": "2.3.3",
+      "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
+      "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
+      "dev": true,
+      "requires": {
+        "asynckit": "^0.4.0",
+        "combined-stream": "^1.0.6",
+        "mime-types": "^2.1.12"
+      }
+    },
+    "forwarded": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
+      "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ="
+    },
+    "fragment-cache": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
+      "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
+      "requires": {
+        "map-cache": "^0.2.2"
+      }
+    },
+    "fresh": {
+      "version": "0.5.2",
+      "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+      "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
+    },
+    "from2": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
+      "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=",
+      "requires": {
+        "inherits": "^2.0.1",
+        "readable-stream": "^2.0.0"
+      }
+    },
+    "fs-minipass": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
+      "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
+      "requires": {
+        "minipass": "^3.0.0"
+      }
+    },
+    "fs-write-stream-atomic": {
+      "version": "1.0.10",
+      "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz",
+      "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=",
+      "requires": {
+        "graceful-fs": "^4.1.2",
+        "iferr": "^0.1.5",
+        "imurmurhash": "^0.1.4",
+        "readable-stream": "1 || 2"
+      }
+    },
+    "fs.realpath": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+      "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
+    },
+    "fsevents": {
+      "version": "1.2.13",
+      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
+      "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
+      "optional": true,
+      "requires": {
+        "bindings": "^1.5.0",
+        "nan": "^2.12.1"
+      }
+    },
+    "fstream": {
+      "version": "1.0.12",
+      "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz",
+      "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==",
+      "dev": true,
+      "requires": {
+        "graceful-fs": "^4.1.2",
+        "inherits": "~2.0.0",
+        "mkdirp": ">=0.5 0",
+        "rimraf": "2"
+      },
+      "dependencies": {
+        "rimraf": {
+          "version": "2.7.1",
+          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+          "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+          "dev": true,
+          "requires": {
+            "glob": "^7.1.3"
+          }
+        }
+      }
+    },
+    "function-bind": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+      "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
+    },
+    "gauge": {
+      "version": "2.7.4",
+      "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
+      "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
+      "requires": {
+        "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"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+          "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
+        },
+        "strip-ansi": {
+          "version": "3.0.1",
+          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+          "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+          "requires": {
+            "ansi-regex": "^2.0.0"
+          }
+        }
+      }
+    },
+    "gaze": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz",
+      "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==",
+      "dev": true,
+      "requires": {
+        "globule": "^1.0.0"
+      }
+    },
+    "get-assigned-identifiers": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz",
+      "integrity": "sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ=="
+    },
+    "get-caller-file": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+      "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+      "dev": true
+    },
+    "get-intrinsic": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
+      "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
+      "requires": {
+        "function-bind": "^1.1.1",
+        "has": "^1.0.3",
+        "has-symbols": "^1.0.1"
+      }
+    },
+    "get-size": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/get-size/-/get-size-2.0.3.tgz",
+      "integrity": "sha512-lXNzT/h/dTjTxRbm9BXb+SGxxzkm97h/PCIKtlN/CBCxxmkkIVV21udumMS93MuVTDX583gqc94v3RjuHmI+2Q=="
+    },
+    "get-stdin": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
+      "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
+      "dev": true
+    },
+    "get-symbol-description": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
+      "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
+      "requires": {
+        "call-bind": "^1.0.2",
+        "get-intrinsic": "^1.1.1"
+      }
+    },
+    "get-value": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
+      "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg="
+    },
+    "getpass": {
+      "version": "0.1.7",
+      "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
+      "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
+      "dev": true,
+      "requires": {
+        "assert-plus": "^1.0.0"
+      }
+    },
+    "glob": {
+      "version": "7.1.6",
+      "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
+      "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
+      "requires": {
+        "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"
+      }
+    },
+    "glob-parent": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
+      "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+      "requires": {
+        "is-glob": "^3.1.0",
+        "path-dirname": "^1.0.0"
+      },
+      "dependencies": {
+        "is-glob": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+          "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+          "requires": {
+            "is-extglob": "^2.1.0"
+          }
+        }
+      }
+    },
+    "glob-to-regexp": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
+      "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw=="
+    },
+    "globals": {
+      "version": "11.12.0",
+      "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+      "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA=="
+    },
+    "globule": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.2.tgz",
+      "integrity": "sha512-7IDTQTIu2xzXkT+6mlluidnWo+BypnbSoEVVQCGfzqnl5Ik8d3e1d4wycb8Rj9tWW+Z39uPWsdlquqiqPCd/pA==",
+      "dev": true,
+      "requires": {
+        "glob": "~7.1.1",
+        "lodash": "~4.17.10",
+        "minimatch": "~3.0.2"
+      }
+    },
+    "graceful-fs": {
+      "version": "4.2.6",
+      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz",
+      "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ=="
+    },
+    "gud": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/gud/-/gud-1.0.0.tgz",
+      "integrity": "sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw=="
+    },
+    "har-schema": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
+      "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
+      "dev": true
+    },
+    "har-validator": {
+      "version": "5.1.5",
+      "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz",
+      "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
+      "dev": true,
+      "requires": {
+        "ajv": "^6.12.3",
+        "har-schema": "^2.0.0"
+      }
+    },
+    "has": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+      "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+      "requires": {
+        "function-bind": "^1.1.1"
+      }
+    },
+    "has-ansi": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
+      "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
+      "dev": true,
+      "requires": {
+        "ansi-regex": "^2.0.0"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+          "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+          "dev": true
+        }
+      }
+    },
+    "has-bigints": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz",
+      "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA=="
+    },
+    "has-flag": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+      "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
+    },
+    "has-symbols": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz",
+      "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw=="
+    },
+    "has-tostringtag": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
+      "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
+      "requires": {
+        "has-symbols": "^1.0.2"
+      }
+    },
+    "has-unicode": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
+      "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk="
+    },
+    "has-value": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
+      "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
+      "requires": {
+        "get-value": "^2.0.6",
+        "has-values": "^1.0.0",
+        "isobject": "^3.0.0"
+      }
+    },
+    "has-values": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
+      "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
+      "requires": {
+        "is-number": "^3.0.0",
+        "kind-of": "^4.0.0"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
+          "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "hash-base": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz",
+      "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==",
+      "requires": {
+        "inherits": "^2.0.4",
+        "readable-stream": "^3.6.0",
+        "safe-buffer": "^5.2.0"
+      },
+      "dependencies": {
+        "inherits": {
+          "version": "2.0.4",
+          "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+          "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+        },
+        "readable-stream": {
+          "version": "3.6.0",
+          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
+          "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
+          "requires": {
+            "inherits": "^2.0.3",
+            "string_decoder": "^1.1.1",
+            "util-deprecate": "^1.0.1"
+          }
+        },
+        "safe-buffer": {
+          "version": "5.2.1",
+          "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+          "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
+        }
+      }
+    },
+    "hash.js": {
+      "version": "1.1.7",
+      "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz",
+      "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
+      "requires": {
+        "inherits": "^2.0.3",
+        "minimalistic-assert": "^1.0.1"
+      }
+    },
+    "he": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
+      "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw=="
+    },
+    "history": {
+      "version": "4.10.1",
+      "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz",
+      "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==",
+      "requires": {
+        "@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": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
+      "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
+      "requires": {
+        "hash.js": "^1.0.3",
+        "minimalistic-assert": "^1.0.0",
+        "minimalistic-crypto-utils": "^1.0.1"
+      }
+    },
+    "hoist-non-react-statics": {
+      "version": "3.3.2",
+      "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
+      "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
+      "requires": {
+        "react-is": "^16.7.0"
+      }
+    },
+    "hosted-git-info": {
+      "version": "2.8.8",
+      "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz",
+      "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==",
+      "dev": true
+    },
+    "html-to-draftjs": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/html-to-draftjs/-/html-to-draftjs-1.5.0.tgz",
+      "integrity": "sha512-kggLXBNciKDwKf+KYsuE+V5gw4dZ7nHyGMX9m0wy7urzWjKGWyNFetmArRLvRV0VrxKN70WylFsJvMTJx02OBQ=="
+    },
+    "html5sortable": {
+      "version": "0.11.1",
+      "resolved": "https://registry.npmjs.org/html5sortable/-/html5sortable-0.11.1.tgz",
+      "integrity": "sha512-Kpac/RjNzMJL5Ww6W82J+PKzhcOepS6JYN0k7dRQul6n5oLUgaxkPtxq4JShlp6oLlM1IVaO528oHf3OKlTlmg=="
+    },
+    "htmlparser2": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-4.1.0.tgz",
+      "integrity": "sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q==",
+      "requires": {
+        "domelementtype": "^2.0.1",
+        "domhandler": "^3.0.0",
+        "domutils": "^2.0.0",
+        "entities": "^2.0.0"
+      }
+    },
+    "http-errors": {
+      "version": "1.7.2",
+      "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
+      "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
+      "requires": {
+        "depd": "~1.1.2",
+        "inherits": "2.0.3",
+        "setprototypeof": "1.1.1",
+        "statuses": ">= 1.5.0 < 2",
+        "toidentifier": "1.0.0"
+      }
+    },
+    "http-signature": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
+      "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
+      "dev": true,
+      "requires": {
+        "assert-plus": "^1.0.0",
+        "jsprim": "^1.2.2",
+        "sshpk": "^1.7.0"
+      }
+    },
+    "https-browserify": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
+      "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM="
+    },
+    "https-proxy-agent": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz",
+      "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==",
+      "requires": {
+        "agent-base": "6",
+        "debug": "4"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "4.3.1",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
+          "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
+          "requires": {
+            "ms": "2.1.2"
+          }
+        },
+        "ms": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+        }
+      }
+    },
+    "iconv-lite": {
+      "version": "0.4.24",
+      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+      "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+      "requires": {
+        "safer-buffer": ">= 2.1.2 < 3"
+      }
+    },
+    "icss-replace-symbols": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz",
+      "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=",
+      "dev": true
+    },
+    "icss-utils": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz",
+      "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==",
+      "requires": {
+        "postcss": "^7.0.14"
+      }
+    },
+    "ieee754": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
+      "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="
+    },
+    "iferr": {
+      "version": "0.1.5",
+      "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz",
+      "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE="
+    },
+    "ignore-loader": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/ignore-loader/-/ignore-loader-0.1.2.tgz",
+      "integrity": "sha1-2B8kA3bQuk8Nd4lyw60lh0EXpGM=",
+      "dev": true
+    },
+    "ignore-walk": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz",
+      "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==",
+      "requires": {
+        "minimatch": "^3.0.4"
+      }
+    },
+    "ika.jvectormap": {
+      "version": "github:themicon/ika.jvectormap#f4534f2950a9c0b1216de1c23304ee3f81610871",
+      "from": "github:themicon/ika.jvectormap"
+    },
+    "image-size": {
+      "version": "0.5.5",
+      "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz",
+      "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=",
+      "optional": true
+    },
+    "immediate": {
+      "version": "3.0.6",
+      "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
+      "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps="
+    },
+    "immutable": {
+      "version": "3.7.6",
+      "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.7.6.tgz",
+      "integrity": "sha1-E7TTyxK++hVIKib+Gy665kAHHks="
+    },
+    "import-cwd": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz",
+      "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=",
+      "dev": true,
+      "requires": {
+        "import-from": "^2.1.0"
+      }
+    },
+    "import-fresh": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
+      "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+      "requires": {
+        "parent-module": "^1.0.0",
+        "resolve-from": "^4.0.0"
+      }
+    },
+    "import-from": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz",
+      "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=",
+      "dev": true,
+      "requires": {
+        "resolve-from": "^3.0.0"
+      },
+      "dependencies": {
+        "resolve-from": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
+          "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
+          "dev": true
+        }
+      }
+    },
+    "imports-loader": {
+      "version": "0.8.0",
+      "resolved": "https://registry.npmjs.org/imports-loader/-/imports-loader-0.8.0.tgz",
+      "integrity": "sha512-kXWL7Scp8KQ4552ZcdVTeaQCZSLW+e6nJfp3cwUMB673T7Hr98Xjx5JK+ql7ADlJUvj1JS5O01RLbKoutN5QDQ==",
+      "dev": true,
+      "requires": {
+        "loader-utils": "^1.0.2",
+        "source-map": "^0.6.1"
+      },
+      "dependencies": {
+        "json5": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
+          "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+          "dev": true,
+          "requires": {
+            "minimist": "^1.2.0"
+          }
+        },
+        "loader-utils": {
+          "version": "1.4.0",
+          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz",
+          "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
+          "dev": true,
+          "requires": {
+            "big.js": "^5.2.2",
+            "emojis-list": "^3.0.0",
+            "json5": "^1.0.1"
+          }
+        }
+      }
+    },
+    "imurmurhash": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+      "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o="
+    },
+    "in-publish": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.1.tgz",
+      "integrity": "sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ==",
+      "dev": true
+    },
+    "indent-string": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
+      "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg=="
+    },
+    "indexes-of": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz",
+      "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc="
+    },
+    "infer-owner": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz",
+      "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A=="
+    },
+    "inflight": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+      "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+      "requires": {
+        "once": "^1.3.0",
+        "wrappy": "1"
+      }
+    },
+    "inherits": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+      "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
+    },
+    "ini": {
+      "version": "1.3.8",
+      "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
+      "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="
+    },
+    "inputmask-core": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/inputmask-core/-/inputmask-core-2.2.0.tgz",
+      "integrity": "sha1-eadffzpNMxKulf0rVaI2anyR37o="
+    },
+    "internal-slot": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz",
+      "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==",
+      "requires": {
+        "get-intrinsic": "^1.1.0",
+        "has": "^1.0.3",
+        "side-channel": "^1.0.4"
+      }
+    },
+    "invariant": {
+      "version": "2.2.4",
+      "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
+      "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
+      "requires": {
+        "loose-envify": "^1.0.0"
+      }
+    },
+    "ipaddr.js": {
+      "version": "1.9.1",
+      "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
+      "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
+    },
+    "iron-store": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/iron-store/-/iron-store-1.3.0.tgz",
+      "integrity": "sha512-Ics0Xy/1TTjOhZFLkarOpWfXp4TJ7foiKBFC/aXJH1bKwafNKrEhrHNeHyA/Jqx57tlhpIbGoNC3RUB+rRIz8Q==",
+      "requires": {
+        "@hapi/iron": "^6.0.0",
+        "clone": "^2.1.2"
+      },
+      "dependencies": {
+        "clone": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
+          "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18="
+        }
+      }
+    },
+    "is-accessor-descriptor": {
+      "version": "0.1.6",
+      "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+      "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+      "requires": {
+        "kind-of": "^3.0.2"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "is-arguments": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz",
+      "integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==",
+      "requires": {
+        "call-bind": "^1.0.0"
+      }
+    },
+    "is-arrayish": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+      "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0="
+    },
+    "is-bigint": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
+      "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
+      "requires": {
+        "has-bigints": "^1.0.1"
+      }
+    },
+    "is-binary-path": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
+      "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+      "requires": {
+        "binary-extensions": "^1.0.0"
+      }
+    },
+    "is-boolean-object": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
+      "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
+      "requires": {
+        "call-bind": "^1.0.2",
+        "has-tostringtag": "^1.0.0"
+      }
+    },
+    "is-buffer": {
+      "version": "1.1.6",
+      "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+      "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
+    },
+    "is-callable": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz",
+      "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w=="
+    },
+    "is-core-module": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz",
+      "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==",
+      "requires": {
+        "has": "^1.0.3"
+      }
+    },
+    "is-data-descriptor": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+      "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+      "requires": {
+        "kind-of": "^3.0.2"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "is-date-object": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz",
+      "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g=="
+    },
+    "is-descriptor": {
+      "version": "0.1.6",
+      "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+      "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+      "requires": {
+        "is-accessor-descriptor": "^0.1.6",
+        "is-data-descriptor": "^0.1.4",
+        "kind-of": "^5.0.0"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "5.1.0",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+          "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw=="
+        }
+      }
+    },
+    "is-directory": {
+      "version": "0.3.1",
+      "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz",
+      "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=",
+      "dev": true
+    },
+    "is-extendable": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+      "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik="
+    },
+    "is-extglob": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+      "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI="
+    },
+    "is-finite": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz",
+      "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==",
+      "dev": true
+    },
+    "is-fullwidth-code-point": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+      "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+      "requires": {
+        "number-is-nan": "^1.0.0"
+      }
+    },
+    "is-glob": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
+      "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
+      "requires": {
+        "is-extglob": "^2.1.1"
+      }
+    },
+    "is-negative-zero": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz",
+      "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w=="
+    },
+    "is-number": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+      "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+      "requires": {
+        "kind-of": "^3.0.2"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "is-number-object": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz",
+      "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==",
+      "requires": {
+        "has-tostringtag": "^1.0.0"
+      }
+    },
+    "is-plain-object": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+      "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+      "requires": {
+        "isobject": "^3.0.1"
+      }
+    },
+    "is-regex": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz",
+      "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==",
+      "requires": {
+        "call-bind": "^1.0.2",
+        "has-symbols": "^1.0.1"
+      }
+    },
+    "is-stream": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+      "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ="
+    },
+    "is-string": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
+      "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
+      "requires": {
+        "has-tostringtag": "^1.0.0"
+      }
+    },
+    "is-symbol": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
+      "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
+      "requires": {
+        "has-symbols": "^1.0.2"
+      }
+    },
+    "is-typedarray": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+      "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
+      "dev": true
+    },
+    "is-utf8": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
+      "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
+      "dev": true
+    },
+    "is-what": {
+      "version": "3.14.1",
+      "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz",
+      "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA=="
+    },
+    "is-windows": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
+      "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA=="
+    },
+    "is-wsl": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
+      "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0="
+    },
+    "isarray": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+      "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+    },
+    "isexe": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+      "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+      "dev": true
+    },
+    "isobject": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+      "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
+    },
+    "isomorphic-fetch": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz",
+      "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=",
+      "requires": {
+        "node-fetch": "^1.0.1",
+        "whatwg-fetch": ">=0.10.0"
+      },
+      "dependencies": {
+        "node-fetch": {
+          "version": "1.7.3",
+          "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz",
+          "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==",
+          "requires": {
+            "encoding": "^0.1.11",
+            "is-stream": "^1.0.1"
+          }
+        }
+      }
+    },
+    "isstream": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
+      "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
+      "dev": true
+    },
+    "jest-worker": {
+      "version": "24.9.0",
+      "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz",
+      "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==",
+      "requires": {
+        "merge-stream": "^2.0.0",
+        "supports-color": "^6.1.0"
+      }
+    },
+    "jqcloud2": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/jqcloud2/-/jqcloud2-2.0.3.tgz",
+      "integrity": "sha1-mxaR+FUT0pAqXsY+rUkxi4WgxHg=",
+      "requires": {
+        "jquery": ">= 1.9.0"
+      }
+    },
+    "jquery": {
+      "version": "3.6.0",
+      "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz",
+      "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw=="
+    },
+    "jquery-knob": {
+      "version": "1.2.11",
+      "resolved": "https://registry.npmjs.org/jquery-knob/-/jquery-knob-1.2.11.tgz",
+      "integrity": "sha1-83w528HHpqbBLNsu1Pa/+2g/ENY="
+    },
+    "jquery-sparkline": {
+      "version": "2.4.0",
+      "resolved": "https://registry.npmjs.org/jquery-sparkline/-/jquery-sparkline-2.4.0.tgz",
+      "integrity": "sha1-G+i3twTdOFcVJwiu+x1KSzpp+zM="
+    },
+    "jquery.easing": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/jquery.easing/-/jquery.easing-1.4.1.tgz",
+      "integrity": "sha1-R5gsWDa9dY/UhJSSPEoQHvbpPjs="
+    },
+    "jquery.flot.spline": {
+      "version": "github:themicon/jquery.flot.spline#4140e65c66eb614e2e65c0cbda37eb8f7560225b",
+      "from": "github:themicon/jquery.flot.spline"
+    },
+    "jquery.flot.tooltip": {
+      "version": "github:krzysu/flot.tooltip#a4ae1ae23e3ac3379c8c506295ea193d8139b2f5",
+      "from": "github:krzysu/flot.tooltip"
+    },
+    "js-base64": {
+      "version": "2.6.4",
+      "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz",
+      "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==",
+      "dev": true
+    },
+    "js-tokens": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+      "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
+    },
+    "js-yaml": {
+      "version": "3.14.1",
+      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+      "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+      "dev": true,
+      "requires": {
+        "argparse": "^1.0.7",
+        "esprima": "^4.0.0"
+      }
+    },
+    "jsbn": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
+      "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
+      "dev": true
+    },
+    "jsesc": {
+      "version": "2.5.2",
+      "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+      "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA=="
+    },
+    "json-parse-better-errors": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
+      "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw=="
+    },
+    "json-parse-even-better-errors": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+      "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="
+    },
+    "json-schema": {
+      "version": "0.2.3",
+      "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
+      "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
+      "dev": true
+    },
+    "json-schema-traverse": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+      "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
+    },
+    "json-stringify-safe": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+      "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
+      "dev": true
+    },
+    "json5": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz",
+      "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==",
+      "requires": {
+        "minimist": "^1.2.5"
+      }
+    },
+    "jsprim": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
+      "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
+      "dev": true,
+      "requires": {
+        "assert-plus": "1.0.0",
+        "extsprintf": "1.3.0",
+        "json-schema": "0.2.3",
+        "verror": "1.10.0"
+      }
+    },
+    "jszip": {
+      "version": "3.6.0",
+      "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.6.0.tgz",
+      "integrity": "sha512-jgnQoG9LKnWO3mnVNBnfhkh0QknICd1FGSrXcgrl67zioyJ4wgx25o9ZqwNtrROSflGBCGYnJfjrIyRIby1OoQ==",
+      "requires": {
+        "lie": "~3.3.0",
+        "pako": "~1.0.2",
+        "readable-stream": "~2.3.6",
+        "set-immediate-shim": "~1.0.1"
+      }
+    },
+    "kind-of": {
+      "version": "6.0.3",
+      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+      "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw=="
+    },
+    "klona": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.4.tgz",
+      "integrity": "sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA=="
+    },
+    "lazy-cache": {
+      "version": "0.2.7",
+      "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz",
+      "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=",
+      "dev": true
+    },
+    "less": {
+      "version": "3.13.1",
+      "resolved": "https://registry.npmjs.org/less/-/less-3.13.1.tgz",
+      "integrity": "sha512-SwA1aQXGUvp+P5XdZslUOhhLnClSLIjWvJhmd+Vgib5BFIr9lMNlQwmwUNOjXThF/A0x+MCYYPeWEfeWiLRnTw==",
+      "requires": {
+        "copy-anything": "^2.0.1",
+        "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",
+        "tslib": "^1.10.0"
+      },
+      "dependencies": {
+        "make-dir": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
+          "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
+          "optional": true,
+          "requires": {
+            "pify": "^4.0.1",
+            "semver": "^5.6.0"
+          }
+        }
+      }
+    },
+    "leven": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
+      "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A=="
+    },
+    "levenary": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz",
+      "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==",
+      "requires": {
+        "leven": "^3.1.0"
+      }
+    },
+    "levn": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
+      "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
+      "requires": {
+        "prelude-ls": "~1.1.2",
+        "type-check": "~0.3.2"
+      }
+    },
+    "lie": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz",
+      "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==",
+      "requires": {
+        "immediate": "~3.0.5"
+      }
+    },
+    "linebreak": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/linebreak/-/linebreak-1.0.2.tgz",
+      "integrity": "sha512-bJwSRsJeAmaZYnkcwl5sCQNfSDAhBuXxb6L27tb+qkBRtUQSSTUa5bcgCPD6hFEkRNlpWHfK7nFMmcANU7ZP1w==",
+      "requires": {
+        "base64-js": "0.0.8",
+        "brfs": "^2.0.2",
+        "unicode-trie": "^1.0.0"
+      },
+      "dependencies": {
+        "base64-js": {
+          "version": "0.0.8",
+          "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz",
+          "integrity": "sha1-EQHpVE9KdrG8OybUUsqW16NeeXg="
+        }
+      }
+    },
+    "lines-and-columns": {
+      "version": "1.1.6",
+      "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz",
+      "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA="
+    },
+    "linkify-it": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz",
+      "integrity": "sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==",
+      "requires": {
+        "uc.micro": "^1.0.1"
+      }
+    },
+    "load-json-file": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
+      "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
+      "dev": true,
+      "requires": {
+        "graceful-fs": "^4.1.2",
+        "parse-json": "^2.2.0",
+        "pify": "^2.0.0",
+        "pinkie-promise": "^2.0.0",
+        "strip-bom": "^2.0.0"
+      },
+      "dependencies": {
+        "parse-json": {
+          "version": "2.2.0",
+          "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
+          "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
+          "dev": true,
+          "requires": {
+            "error-ex": "^1.2.0"
+          }
+        },
+        "pify": {
+          "version": "2.3.0",
+          "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+          "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+          "dev": true
+        }
+      }
+    },
+    "loader-runner": {
+      "version": "2.4.0",
+      "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz",
+      "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw=="
+    },
+    "loader-utils": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz",
+      "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==",
+      "requires": {
+        "big.js": "^5.2.2",
+        "emojis-list": "^3.0.0",
+        "json5": "^2.1.2"
+      }
+    },
+    "loaders.css": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/loaders.css/-/loaders.css-0.1.2.tgz",
+      "integrity": "sha1-Op+0NybHMzSjgUKvnQYpAZtlh0M="
+    },
+    "locate-path": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+      "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+      "requires": {
+        "p-locate": "^4.1.0"
+      }
+    },
+    "lodash": {
+      "version": "4.17.21",
+      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
+    },
+    "lodash-es": {
+      "version": "4.17.21",
+      "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz",
+      "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="
+    },
+    "lodash.camelcase": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
+      "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=",
+      "dev": true
+    },
+    "lodash.isfunction": {
+      "version": "3.0.9",
+      "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz",
+      "integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw=="
+    },
+    "lodash.isobject": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-3.0.2.tgz",
+      "integrity": "sha1-PI+41bW/S/kK4G4U8qUwpO2TXh0="
+    },
+    "lodash.sortby": {
+      "version": "4.7.0",
+      "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
+      "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg="
+    },
+    "lodash.tail": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/lodash.tail/-/lodash.tail-4.1.1.tgz",
+      "integrity": "sha1-0jM6NtnncXyK0vfKyv7HwytERmQ=",
+      "dev": true
+    },
+    "lodash.tonumber": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/lodash.tonumber/-/lodash.tonumber-4.0.3.tgz",
+      "integrity": "sha1-C5azGzVnJ5Prf1pj7nkfG56QJdk="
+    },
+    "loose-envify": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+      "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+      "requires": {
+        "js-tokens": "^3.0.0 || ^4.0.0"
+      }
+    },
+    "loud-rejection": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
+      "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
+      "dev": true,
+      "requires": {
+        "currently-unhandled": "^0.4.1",
+        "signal-exit": "^3.0.0"
+      }
+    },
+    "lru-cache": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+      "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+      "requires": {
+        "yallist": "^4.0.0"
+      }
+    },
+    "magic-string": {
+      "version": "0.25.1",
+      "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.1.tgz",
+      "integrity": "sha512-sCuTz6pYom8Rlt4ISPFn6wuFodbKMIHUMv4Qko9P17dpxb7s52KJTmRuZZqHdGmLCK9AOcDare039nRIcfdkEg==",
+      "requires": {
+        "sourcemap-codec": "^1.4.1"
+      }
+    },
+    "make-dir": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
+      "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+      "requires": {
+        "semver": "^6.0.0"
+      },
+      "dependencies": {
+        "semver": {
+          "version": "6.3.0",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
+        }
+      }
+    },
+    "map-cache": {
+      "version": "0.2.2",
+      "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
+      "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8="
+    },
+    "map-obj": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
+      "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
+      "dev": true
+    },
+    "map-visit": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
+      "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
+      "requires": {
+        "object-visit": "^1.0.0"
+      }
+    },
+    "matchmedia": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/matchmedia/-/matchmedia-0.1.2.tgz",
+      "integrity": "sha1-z9R/K/aPvH9eob06PPFxXsujwb0=",
+      "requires": {
+        "css-mediaquery": "^0.1.2"
+      }
+    },
+    "material-colors": {
+      "version": "1.2.6",
+      "resolved": "https://registry.npmjs.org/material-colors/-/material-colors-1.2.6.tgz",
+      "integrity": "sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg=="
+    },
+    "md5.js": {
+      "version": "1.3.5",
+      "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
+      "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==",
+      "requires": {
+        "hash-base": "^3.0.0",
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.1.2"
+      }
+    },
+    "media-typer": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+      "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
+    },
+    "memoize-one": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.1.1.tgz",
+      "integrity": "sha512-HKeeBpWvqiVJD57ZUAsJNm71eHTykffzcLZVYWiVfQeI1rJtuEaS7hQiEpWfVVk18donPwJEcFKIkCmPJNOhHA=="
+    },
+    "memory-fs": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
+      "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=",
+      "requires": {
+        "errno": "^0.1.3",
+        "readable-stream": "^2.0.1"
+      }
+    },
+    "meow": {
+      "version": "3.7.0",
+      "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
+      "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
+      "dev": true,
+      "requires": {
+        "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": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
+      "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
+    },
+    "merge-source-map": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz",
+      "integrity": "sha1-pd5GU42uhNQRTMXqArR3KmNGcB8=",
+      "requires": {
+        "source-map": "^0.5.6"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.5.7",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+          "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
+        }
+      }
+    },
+    "merge-stream": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+      "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="
+    },
+    "methods": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
+      "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
+    },
+    "micromatch": {
+      "version": "3.1.10",
+      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+      "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+      "requires": {
+        "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": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
+      "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
+      "requires": {
+        "bn.js": "^4.0.0",
+        "brorand": "^1.0.1"
+      },
+      "dependencies": {
+        "bn.js": {
+          "version": "4.12.0",
+          "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
+          "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
+        }
+      }
+    },
+    "mime": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+      "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
+    },
+    "mime-db": {
+      "version": "1.46.0",
+      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.46.0.tgz",
+      "integrity": "sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ=="
+    },
+    "mime-types": {
+      "version": "2.1.29",
+      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.29.tgz",
+      "integrity": "sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ==",
+      "requires": {
+        "mime-db": "1.46.0"
+      }
+    },
+    "mimic-response": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz",
+      "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA=="
+    },
+    "mini-css-extract-plugin": {
+      "version": "0.4.3",
+      "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.3.tgz",
+      "integrity": "sha512-Mxs0nxzF1kxPv4TRi2NimewgXlJqh0rGE30vviCU2WHrpbta6wklnUV9dr9FUtoAHmB3p3LeXEC+ZjgHvB0Dzg==",
+      "dev": true,
+      "requires": {
+        "loader-utils": "^1.1.0",
+        "schema-utils": "^1.0.0",
+        "webpack-sources": "^1.1.0"
+      },
+      "dependencies": {
+        "json5": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
+          "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+          "dev": true,
+          "requires": {
+            "minimist": "^1.2.0"
+          }
+        },
+        "loader-utils": {
+          "version": "1.4.0",
+          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz",
+          "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
+          "dev": true,
+          "requires": {
+            "big.js": "^5.2.2",
+            "emojis-list": "^3.0.0",
+            "json5": "^1.0.1"
+          }
+        },
+        "schema-utils": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
+          "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+          "dev": true,
+          "requires": {
+            "ajv": "^6.1.0",
+            "ajv-errors": "^1.0.0",
+            "ajv-keywords": "^3.1.0"
+          }
+        }
+      }
+    },
+    "minimalistic-assert": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
+      "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A=="
+    },
+    "minimalistic-crypto-utils": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
+      "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo="
+    },
+    "minimatch": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+      "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+      "requires": {
+        "brace-expansion": "^1.1.7"
+      }
+    },
+    "minimist": {
+      "version": "1.2.5",
+      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
+      "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
+    },
+    "minipass": {
+      "version": "3.1.3",
+      "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz",
+      "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==",
+      "requires": {
+        "yallist": "^4.0.0"
+      }
+    },
+    "minipass-collect": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz",
+      "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==",
+      "requires": {
+        "minipass": "^3.0.0"
+      }
+    },
+    "minipass-flush": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz",
+      "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==",
+      "requires": {
+        "minipass": "^3.0.0"
+      }
+    },
+    "minipass-pipeline": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz",
+      "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==",
+      "requires": {
+        "minipass": "^3.0.0"
+      }
+    },
+    "minizlib": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
+      "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
+      "requires": {
+        "minipass": "^3.0.0",
+        "yallist": "^4.0.0"
+      }
+    },
+    "mississippi": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz",
+      "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==",
+      "requires": {
+        "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": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
+      "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
+      "requires": {
+        "for-in": "^1.0.2",
+        "is-extendable": "^1.0.1"
+      },
+      "dependencies": {
+        "is-extendable": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+          "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+          "requires": {
+            "is-plain-object": "^2.0.4"
+          }
+        }
+      }
+    },
+    "mixin-object": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz",
+      "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=",
+      "dev": true,
+      "requires": {
+        "for-in": "^0.1.3",
+        "is-extendable": "^0.1.1"
+      },
+      "dependencies": {
+        "for-in": {
+          "version": "0.1.8",
+          "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz",
+          "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=",
+          "dev": true
+        }
+      }
+    },
+    "mkdirp": {
+      "version": "0.5.3",
+      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.3.tgz",
+      "integrity": "sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg==",
+      "requires": {
+        "minimist": "^1.2.5"
+      }
+    },
+    "moment": {
+      "version": "2.29.1",
+      "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz",
+      "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ=="
+    },
+    "morris.js.so": {
+      "version": "0.5.1",
+      "resolved": "https://registry.npmjs.org/morris.js.so/-/morris.js.so-0.5.1.tgz",
+      "integrity": "sha1-kAm3OyUY0YR8PyC+ja/1sl+QtoA="
+    },
+    "move-concurrently": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz",
+      "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=",
+      "requires": {
+        "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"
+      },
+      "dependencies": {
+        "rimraf": {
+          "version": "2.7.1",
+          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+          "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+          "requires": {
+            "glob": "^7.1.3"
+          }
+        }
+      }
+    },
+    "ms": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+    },
+    "nan": {
+      "version": "2.14.2",
+      "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz",
+      "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ=="
+    },
+    "nanomatch": {
+      "version": "1.2.13",
+      "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
+      "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
+      "requires": {
+        "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": {
+      "version": "1.0.8",
+      "resolved": "https://registry.npmjs.org/native-request/-/native-request-1.0.8.tgz",
+      "integrity": "sha512-vU2JojJVelUGp6jRcLwToPoWGxSx23z/0iX+I77J3Ht17rf2INGjrhOoQnjVo60nQd8wVsgzKkPfRXBiVdD2ag==",
+      "optional": true
+    },
+    "native-url": {
+      "version": "0.3.4",
+      "resolved": "https://registry.npmjs.org/native-url/-/native-url-0.3.4.tgz",
+      "integrity": "sha512-6iM8R99ze45ivyH8vybJ7X0yekIcPf5GgLV5K0ENCbmRcaRIDoj37BC8iLEmaaBfqqb8enuZ5p0uhY+lVAbAcA==",
+      "requires": {
+        "querystring": "^0.2.0"
+      }
+    },
+    "needle": {
+      "version": "2.6.0",
+      "resolved": "https://registry.npmjs.org/needle/-/needle-2.6.0.tgz",
+      "integrity": "sha512-KKYdza4heMsEfSWD7VPUIz3zX2XDwOyX2d+geb4vrERZMT5RMU6ujjaD+I5Yr54uZxQ2w6XRTAhHBbSCyovZBg==",
+      "requires": {
+        "debug": "^3.2.6",
+        "iconv-lite": "^0.4.4",
+        "sax": "^1.2.4"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "3.2.7",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+          "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        },
+        "ms": {
+          "version": "2.1.3",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+          "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
+        }
+      }
+    },
+    "negotiator": {
+      "version": "0.6.2",
+      "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
+      "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
+    },
+    "neo-async": {
+      "version": "2.6.1",
+      "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz",
+      "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw=="
+    },
+    "nestable": {
+      "version": "github:themicon/nestable#d7363dd35673304d98fc9676005c9527862a24d1",
+      "from": "github:themicon/nestable"
+    },
+    "next": {
+      "version": "9.5.5",
+      "resolved": "https://registry.npmjs.org/next/-/next-9.5.5.tgz",
+      "integrity": "sha512-KF4MIdTYeI6YIGODNw27w9HGzCll4CXbUpkP6MNvyoHlpsunx8ybkQHm/hYa7lWMozmsn58LwaXJOhe4bSrI0g==",
+      "requires": {
+        "@ampproject/toolbox-optimizer": "2.6.0",
+        "@babel/code-frame": "7.10.4",
+        "@babel/core": "7.7.7",
+        "@babel/plugin-proposal-class-properties": "7.10.4",
+        "@babel/plugin-proposal-export-namespace-from": "7.10.4",
+        "@babel/plugin-proposal-numeric-separator": "7.10.4",
+        "@babel/plugin-proposal-object-rest-spread": "7.11.0",
+        "@babel/plugin-syntax-bigint": "7.8.3",
+        "@babel/plugin-syntax-dynamic-import": "7.8.3",
+        "@babel/plugin-syntax-jsx": "7.10.4",
+        "@babel/plugin-transform-modules-commonjs": "7.10.4",
+        "@babel/plugin-transform-runtime": "7.11.5",
+        "@babel/preset-env": "7.11.5",
+        "@babel/preset-modules": "0.1.4",
+        "@babel/preset-react": "7.10.4",
+        "@babel/preset-typescript": "7.10.4",
+        "@babel/runtime": "7.11.2",
+        "@babel/types": "7.11.5",
+        "@hapi/accept": "5.0.1",
+        "@next/env": "9.5.5",
+        "@next/polyfill-module": "9.5.5",
+        "@next/react-dev-overlay": "9.5.5",
+        "@next/react-refresh-utils": "9.5.5",
+        "ast-types": "0.13.2",
+        "babel-plugin-transform-define": "2.0.0",
+        "babel-plugin-transform-react-remove-prop-types": "0.4.24",
+        "browserslist": "4.13.0",
+        "buffer": "5.6.0",
+        "cacache": "15.0.5",
+        "caniuse-lite": "^1.0.30001113",
+        "chokidar": "2.1.8",
+        "crypto-browserify": "3.12.0",
+        "css-loader": "4.3.0",
+        "cssnano-simple": "1.2.0",
+        "find-cache-dir": "3.3.1",
+        "jest-worker": "24.9.0",
+        "loader-utils": "2.0.0",
+        "mkdirp": "0.5.3",
+        "native-url": "0.3.4",
+        "neo-async": "2.6.1",
+        "node-html-parser": "^1.2.19",
+        "path-browserify": "1.0.1",
+        "pnp-webpack-plugin": "1.6.4",
+        "postcss": "7.0.32",
+        "process": "0.11.10",
+        "prop-types": "15.7.2",
+        "react-is": "16.13.1",
+        "react-refresh": "0.8.3",
+        "resolve-url-loader": "3.1.1",
+        "sass-loader": "10.0.2",
+        "schema-utils": "2.7.1",
+        "stream-browserify": "3.0.0",
+        "style-loader": "1.2.1",
+        "styled-jsx": "3.3.0",
+        "use-subscription": "1.4.1",
+        "vm-browserify": "1.1.2",
+        "watchpack": "2.0.0-beta.13",
+        "web-vitals": "0.2.4",
+        "webpack": "4.44.1",
+        "webpack-sources": "1.4.3"
+      },
+      "dependencies": {
+        "@babel/runtime": {
+          "version": "7.11.2",
+          "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.11.2.tgz",
+          "integrity": "sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==",
+          "requires": {
+            "regenerator-runtime": "^0.13.4"
+          }
+        },
+        "regenerator-runtime": {
+          "version": "0.13.7",
+          "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz",
+          "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew=="
+        }
+      }
+    },
+    "next-iron-session": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/next-iron-session/-/next-iron-session-4.2.0.tgz",
+      "integrity": "sha512-RzdbAmB77HJYXPdWrOjsPPE/b6yiSDAwhXEnX5z6mSYUMh22vR1iJD/CeBjs3FWxL39qO78CsLtIjpcojFz4DA==",
+      "requires": {
+        "@types/cookie": "^0.4.0",
+        "array.prototype.flat": "^1.2.4",
+        "clone": "^2.1.2",
+        "cookie": "^0.4.1",
+        "debug": "^4.3.1",
+        "iron-store": "^1.3.0"
+      },
+      "dependencies": {
+        "clone": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
+          "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18="
+        },
+        "cookie": {
+          "version": "0.4.1",
+          "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz",
+          "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA=="
+        },
+        "debug": {
+          "version": "4.3.2",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
+          "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
+          "requires": {
+            "ms": "2.1.2"
+          }
+        },
+        "ms": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+        }
+      }
+    },
+    "next-tick": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz",
+      "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw="
+    },
+    "nice-try": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
+      "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
+      "dev": true
+    },
+    "node-fetch": {
+      "version": "2.6.1",
+      "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
+      "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw=="
+    },
+    "node-gyp": {
+      "version": "3.8.0",
+      "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz",
+      "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==",
+      "dev": true,
+      "requires": {
+        "fstream": "^1.0.0",
+        "glob": "^7.0.3",
+        "graceful-fs": "^4.1.2",
+        "mkdirp": "^0.5.0",
+        "nopt": "2 || 3",
+        "npmlog": "0 || 1 || 2 || 3 || 4",
+        "osenv": "0",
+        "request": "^2.87.0",
+        "rimraf": "2",
+        "semver": "~5.3.0",
+        "tar": "^2.0.0",
+        "which": "1"
+      },
+      "dependencies": {
+        "nopt": {
+          "version": "3.0.6",
+          "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
+          "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
+          "dev": true,
+          "requires": {
+            "abbrev": "1"
+          }
+        },
+        "rimraf": {
+          "version": "2.7.1",
+          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+          "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+          "dev": true,
+          "requires": {
+            "glob": "^7.1.3"
+          }
+        },
+        "semver": {
+          "version": "5.3.0",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
+          "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=",
+          "dev": true
+        },
+        "tar": {
+          "version": "2.2.2",
+          "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz",
+          "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==",
+          "dev": true,
+          "requires": {
+            "block-stream": "*",
+            "fstream": "^1.0.12",
+            "inherits": "2"
+          }
+        }
+      }
+    },
+    "node-html-parser": {
+      "version": "1.4.9",
+      "resolved": "https://registry.npmjs.org/node-html-parser/-/node-html-parser-1.4.9.tgz",
+      "integrity": "sha512-UVcirFD1Bn0O+TSmloHeHqZZCxHjvtIeGdVdGMhyZ8/PWlEiZaZ5iJzR189yKZr8p0FXN58BUeC7RHRkf/KYGw==",
+      "requires": {
+        "he": "1.2.0"
+      }
+    },
+    "node-libs-browser": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz",
+      "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==",
+      "requires": {
+        "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"
+      },
+      "dependencies": {
+        "buffer": {
+          "version": "4.9.2",
+          "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz",
+          "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==",
+          "requires": {
+            "base64-js": "^1.0.2",
+            "ieee754": "^1.1.4",
+            "isarray": "^1.0.0"
+          }
+        },
+        "path-browserify": {
+          "version": "0.0.1",
+          "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz",
+          "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ=="
+        },
+        "punycode": {
+          "version": "1.4.1",
+          "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+          "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
+        },
+        "stream-browserify": {
+          "version": "2.0.2",
+          "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz",
+          "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==",
+          "requires": {
+            "inherits": "~2.0.1",
+            "readable-stream": "^2.0.2"
+          }
+        },
+        "util": {
+          "version": "0.11.1",
+          "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz",
+          "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==",
+          "requires": {
+            "inherits": "2.0.3"
+          }
+        }
+      }
+    },
+    "node-pre-gyp": {
+      "version": "0.15.0",
+      "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.15.0.tgz",
+      "integrity": "sha512-7QcZa8/fpaU/BKenjcaeFF9hLz2+7S9AqyXFhlH/rilsQ/hPZKK32RtR5EQHJElgu+q5RfbJ34KriI79UWaorA==",
+      "requires": {
+        "detect-libc": "^1.0.2",
+        "mkdirp": "^0.5.3",
+        "needle": "^2.5.0",
+        "nopt": "^4.0.1",
+        "npm-packlist": "^1.1.6",
+        "npmlog": "^4.0.2",
+        "rc": "^1.2.7",
+        "rimraf": "^2.6.1",
+        "semver": "^5.3.0",
+        "tar": "^4.4.2"
+      },
+      "dependencies": {
+        "chownr": {
+          "version": "1.1.4",
+          "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
+          "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg=="
+        },
+        "fs-minipass": {
+          "version": "1.2.7",
+          "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz",
+          "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==",
+          "requires": {
+            "minipass": "^2.6.0"
+          }
+        },
+        "minipass": {
+          "version": "2.9.0",
+          "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz",
+          "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==",
+          "requires": {
+            "safe-buffer": "^5.1.2",
+            "yallist": "^3.0.0"
+          }
+        },
+        "minizlib": {
+          "version": "1.3.3",
+          "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz",
+          "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==",
+          "requires": {
+            "minipass": "^2.9.0"
+          }
+        },
+        "rimraf": {
+          "version": "2.7.1",
+          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+          "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+          "requires": {
+            "glob": "^7.1.3"
+          }
+        },
+        "tar": {
+          "version": "4.4.13",
+          "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz",
+          "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==",
+          "requires": {
+            "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"
+          }
+        },
+        "yallist": {
+          "version": "3.1.1",
+          "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+          "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
+        }
+      }
+    },
+    "node-releases": {
+      "version": "1.1.71",
+      "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz",
+      "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg=="
+    },
+    "node-sass": {
+      "version": "4.14.1",
+      "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.14.1.tgz",
+      "integrity": "sha512-sjCuOlvGyCJS40R8BscF5vhVlQjNN069NtQ1gSxyK1u9iqvn6tf7O1R4GNowVZfiZUCRt5MmMs1xd+4V/7Yr0g==",
+      "dev": true,
+      "requires": {
+        "async-foreach": "^0.1.3",
+        "chalk": "^1.1.1",
+        "cross-spawn": "^3.0.0",
+        "gaze": "^1.0.0",
+        "get-stdin": "^4.0.1",
+        "glob": "^7.0.3",
+        "in-publish": "^2.0.0",
+        "lodash": "^4.17.15",
+        "meow": "^3.7.0",
+        "mkdirp": "^0.5.1",
+        "nan": "^2.13.2",
+        "node-gyp": "^3.8.0",
+        "npmlog": "^4.0.0",
+        "request": "^2.88.0",
+        "sass-graph": "2.2.5",
+        "stdout-stream": "^1.4.0",
+        "true-case-path": "^1.0.2"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+          "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+          "dev": true
+        },
+        "ansi-styles": {
+          "version": "2.2.1",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+          "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+          "dev": true
+        },
+        "chalk": {
+          "version": "1.1.3",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+          "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+          "dev": true,
+          "requires": {
+            "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"
+          }
+        },
+        "cross-spawn": {
+          "version": "3.0.1",
+          "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz",
+          "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=",
+          "dev": true,
+          "requires": {
+            "lru-cache": "^4.0.1",
+            "which": "^1.2.9"
+          }
+        },
+        "lru-cache": {
+          "version": "4.1.5",
+          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
+          "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
+          "dev": true,
+          "requires": {
+            "pseudomap": "^1.0.2",
+            "yallist": "^2.1.2"
+          }
+        },
+        "strip-ansi": {
+          "version": "3.0.1",
+          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+          "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^2.0.0"
+          }
+        },
+        "supports-color": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+          "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+          "dev": true
+        },
+        "yallist": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
+          "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
+          "dev": true
+        }
+      }
+    },
+    "nopt": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz",
+      "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==",
+      "requires": {
+        "abbrev": "1",
+        "osenv": "^0.1.4"
+      }
+    },
+    "normalize-html-whitespace": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/normalize-html-whitespace/-/normalize-html-whitespace-1.0.0.tgz",
+      "integrity": "sha512-9ui7CGtOOlehQu0t/OhhlmDyc71mKVlv+4vF+me4iZLPrNtRL2xoquEdfZxasC/bdQi/Hr3iTrpyRKIG+ocabA=="
+    },
+    "normalize-package-data": {
+      "version": "2.5.0",
+      "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
+      "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
+      "dev": true,
+      "requires": {
+        "hosted-git-info": "^2.1.4",
+        "resolve": "^1.10.0",
+        "semver": "2 || 3 || 4 || 5",
+        "validate-npm-package-license": "^3.0.1"
+      }
+    },
+    "normalize-path": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+      "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="
+    },
+    "npm-bundled": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz",
+      "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==",
+      "requires": {
+        "npm-normalize-package-bin": "^1.0.1"
+      }
+    },
+    "npm-normalize-package-bin": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz",
+      "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA=="
+    },
+    "npm-packlist": {
+      "version": "1.4.8",
+      "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz",
+      "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==",
+      "requires": {
+        "ignore-walk": "^3.0.1",
+        "npm-bundled": "^1.0.1",
+        "npm-normalize-package-bin": "^1.0.1"
+      }
+    },
+    "npmlog": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
+      "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
+      "requires": {
+        "are-we-there-yet": "~1.1.2",
+        "console-control-strings": "~1.1.0",
+        "gauge": "~2.7.3",
+        "set-blocking": "~2.0.0"
+      }
+    },
+    "number-is-nan": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
+      "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
+    },
+    "oauth-sign": {
+      "version": "0.9.0",
+      "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
+      "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
+      "dev": true
+    },
+    "object-assign": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+      "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
+    },
+    "object-copy": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
+      "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
+      "requires": {
+        "copy-descriptor": "^0.1.0",
+        "define-property": "^0.2.5",
+        "kind-of": "^3.0.3"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "0.2.5",
+          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+          "requires": {
+            "is-descriptor": "^0.1.0"
+          }
+        },
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "object-inspect": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz",
+      "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw=="
+    },
+    "object-is": {
+      "version": "1.1.5",
+      "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz",
+      "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==",
+      "requires": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3"
+      }
+    },
+    "object-keys": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+      "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="
+    },
+    "object-path": {
+      "version": "0.11.4",
+      "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.4.tgz",
+      "integrity": "sha1-NwrnUvvzfePqcKhhwju6iRVpGUk="
+    },
+    "object-visit": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
+      "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
+      "requires": {
+        "isobject": "^3.0.0"
+      }
+    },
+    "object.assign": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz",
+      "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==",
+      "requires": {
+        "call-bind": "^1.0.0",
+        "define-properties": "^1.1.3",
+        "has-symbols": "^1.0.1",
+        "object-keys": "^1.1.1"
+      }
+    },
+    "object.pick": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
+      "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
+      "requires": {
+        "isobject": "^3.0.1"
+      }
+    },
+    "on-finished": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
+      "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
+      "requires": {
+        "ee-first": "1.1.1"
+      }
+    },
+    "once": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+      "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+      "requires": {
+        "wrappy": "1"
+      }
+    },
+    "optionator": {
+      "version": "0.8.3",
+      "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
+      "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
+      "requires": {
+        "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"
+      }
+    },
+    "os-browserify": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
+      "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc="
+    },
+    "os-homedir": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
+      "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M="
+    },
+    "os-tmpdir": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+      "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ="
+    },
+    "osenv": {
+      "version": "0.1.5",
+      "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
+      "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
+      "requires": {
+        "os-homedir": "^1.0.0",
+        "os-tmpdir": "^1.0.0"
+      }
+    },
+    "p-limit": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+      "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+      "requires": {
+        "p-try": "^2.0.0"
+      }
+    },
+    "p-locate": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+      "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+      "requires": {
+        "p-limit": "^2.2.0"
+      }
+    },
+    "p-map": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
+      "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
+      "requires": {
+        "aggregate-error": "^3.0.0"
+      }
+    },
+    "p-try": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+      "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
+    },
+    "pako": {
+      "version": "1.0.11",
+      "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
+      "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="
+    },
+    "parallel-transform": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz",
+      "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==",
+      "requires": {
+        "cyclist": "^1.0.1",
+        "inherits": "^2.0.3",
+        "readable-stream": "^2.1.5"
+      }
+    },
+    "parent-module": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+      "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+      "requires": {
+        "callsites": "^3.0.0"
+      }
+    },
+    "parse-asn1": {
+      "version": "5.1.6",
+      "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz",
+      "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==",
+      "requires": {
+        "asn1.js": "^5.2.0",
+        "browserify-aes": "^1.0.0",
+        "evp_bytestokey": "^1.0.0",
+        "pbkdf2": "^3.0.3",
+        "safe-buffer": "^5.1.1"
+      }
+    },
+    "parse-json": {
+      "version": "5.2.0",
+      "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
+      "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+      "requires": {
+        "@babel/code-frame": "^7.0.0",
+        "error-ex": "^1.3.1",
+        "json-parse-even-better-errors": "^2.3.0",
+        "lines-and-columns": "^1.1.6"
+      }
+    },
+    "parseurl": {
+      "version": "1.3.3",
+      "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+      "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
+    },
+    "pascalcase": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
+      "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ="
+    },
+    "path-browserify": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz",
+      "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g=="
+    },
+    "path-dirname": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
+      "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA="
+    },
+    "path-exists": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+      "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
+    },
+    "path-is-absolute": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+      "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
+    },
+    "path-key": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+      "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
+      "dev": true
+    },
+    "path-parse": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
+      "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw=="
+    },
+    "path-to-regexp": {
+      "version": "0.1.7",
+      "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
+      "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
+    },
+    "path-type": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
+      "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw=="
+    },
+    "pbkdf2": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz",
+      "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==",
+      "requires": {
+        "create-hash": "^1.1.2",
+        "create-hmac": "^1.1.4",
+        "ripemd160": "^2.0.1",
+        "safe-buffer": "^5.0.1",
+        "sha.js": "^2.4.8"
+      }
+    },
+    "pdfkit": {
+      "version": "0.11.0",
+      "resolved": "https://registry.npmjs.org/pdfkit/-/pdfkit-0.11.0.tgz",
+      "integrity": "sha512-1s9gaumXkYxcVF1iRtSmLiISF2r4nHtsTgpwXiK8Swe+xwk/1pm8FJjYqN7L3x13NsWnGyUFntWcO8vfqq+wwA==",
+      "requires": {
+        "crypto-js": "^3.1.9-1",
+        "fontkit": "^1.8.0",
+        "linebreak": "^1.0.2",
+        "png-js": "^1.0.0"
+      }
+    },
+    "pdfmake": {
+      "version": "0.1.70",
+      "resolved": "https://registry.npmjs.org/pdfmake/-/pdfmake-0.1.70.tgz",
+      "integrity": "sha512-xPhkblaQ71U97qhRTPj/1HknAHHFZ3cPRmRdrqEWD2xXBcEjEM3Yw0MIjML8DRy9Dt9n6QRjHVf662f0eLtd7Q==",
+      "requires": {
+        "iconv-lite": "^0.6.2",
+        "linebreak": "^1.0.2",
+        "pdfkit": "^0.11.0",
+        "svg-to-pdfkit": "^0.1.8",
+        "xmldoc": "^1.1.2"
+      },
+      "dependencies": {
+        "iconv-lite": {
+          "version": "0.6.2",
+          "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz",
+          "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==",
+          "requires": {
+            "safer-buffer": ">= 2.1.2 < 3.0.0"
+          }
+        }
+      }
+    },
+    "perfect-scrollbar": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/perfect-scrollbar/-/perfect-scrollbar-1.5.0.tgz",
+      "integrity": "sha512-NrNHJn5mUGupSiheBTy6x+6SXCFbLlm8fVZh9moIzw/LgqElN5q4ncR4pbCBCYuCJ8Kcl9mYM0NgDxvW+b4LxA=="
+    },
+    "performance-now": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
+      "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
+    },
+    "picomatch": {
+      "version": "2.2.2",
+      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",
+      "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==",
+      "optional": true
+    },
+    "pify": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+      "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g=="
+    },
+    "pinkie": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+      "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+      "dev": true
+    },
+    "pinkie-promise": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+      "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+      "dev": true,
+      "requires": {
+        "pinkie": "^2.0.0"
+      }
+    },
+    "pkg-dir": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
+      "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
+      "requires": {
+        "find-up": "^4.0.0"
+      }
+    },
+    "platform": {
+      "version": "1.3.3",
+      "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.3.tgz",
+      "integrity": "sha1-ZGx3ARiZhwtqCQPnXpl+jlHadGE="
+    },
+    "png-js": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/png-js/-/png-js-1.0.0.tgz",
+      "integrity": "sha512-k+YsbhpA9e+EFfKjTCH3VW6aoKlyNYI6NYdTfDL4CIvFnvsuO84ttonmZE7rc+v23SLTH8XX+5w/Ak9v0xGY4g=="
+    },
+    "pnp-webpack-plugin": {
+      "version": "1.6.4",
+      "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz",
+      "integrity": "sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg==",
+      "requires": {
+        "ts-pnp": "^1.1.6"
+      }
+    },
+    "popper.js": {
+      "version": "1.16.1",
+      "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz",
+      "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ=="
+    },
+    "posix-character-classes": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
+      "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs="
+    },
+    "postcss": {
+      "version": "7.0.32",
+      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz",
+      "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==",
+      "requires": {
+        "chalk": "^2.4.2",
+        "source-map": "^0.6.1",
+        "supports-color": "^6.1.0"
+      }
+    },
+    "postcss-load-config": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.2.tgz",
+      "integrity": "sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==",
+      "dev": true,
+      "requires": {
+        "cosmiconfig": "^5.0.0",
+        "import-cwd": "^2.0.0"
+      },
+      "dependencies": {
+        "cosmiconfig": {
+          "version": "5.2.1",
+          "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz",
+          "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==",
+          "dev": true,
+          "requires": {
+            "import-fresh": "^2.0.0",
+            "is-directory": "^0.3.1",
+            "js-yaml": "^3.13.1",
+            "parse-json": "^4.0.0"
+          }
+        },
+        "import-fresh": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz",
+          "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=",
+          "dev": true,
+          "requires": {
+            "caller-path": "^2.0.0",
+            "resolve-from": "^3.0.0"
+          }
+        },
+        "parse-json": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
+          "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
+          "dev": true,
+          "requires": {
+            "error-ex": "^1.3.1",
+            "json-parse-better-errors": "^1.0.1"
+          }
+        },
+        "resolve-from": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
+          "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
+          "dev": true
+        }
+      }
+    },
+    "postcss-loader": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz",
+      "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==",
+      "dev": true,
+      "requires": {
+        "loader-utils": "^1.1.0",
+        "postcss": "^7.0.0",
+        "postcss-load-config": "^2.0.0",
+        "schema-utils": "^1.0.0"
+      },
+      "dependencies": {
+        "json5": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
+          "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+          "dev": true,
+          "requires": {
+            "minimist": "^1.2.0"
+          }
+        },
+        "loader-utils": {
+          "version": "1.4.0",
+          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz",
+          "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
+          "dev": true,
+          "requires": {
+            "big.js": "^5.2.2",
+            "emojis-list": "^3.0.0",
+            "json5": "^1.0.1"
+          }
+        },
+        "schema-utils": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
+          "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+          "dev": true,
+          "requires": {
+            "ajv": "^6.1.0",
+            "ajv-errors": "^1.0.0",
+            "ajv-keywords": "^3.1.0"
+          }
+        }
+      }
+    },
+    "postcss-modules-extract-imports": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz",
+      "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==",
+      "requires": {
+        "postcss": "^7.0.5"
+      }
+    },
+    "postcss-modules-local-by-default": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz",
+      "integrity": "sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==",
+      "requires": {
+        "icss-utils": "^4.1.1",
+        "postcss": "^7.0.32",
+        "postcss-selector-parser": "^6.0.2",
+        "postcss-value-parser": "^4.1.0"
+      }
+    },
+    "postcss-modules-scope": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz",
+      "integrity": "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==",
+      "requires": {
+        "postcss": "^7.0.6",
+        "postcss-selector-parser": "^6.0.0"
+      }
+    },
+    "postcss-modules-values": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz",
+      "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==",
+      "requires": {
+        "icss-utils": "^4.0.0",
+        "postcss": "^7.0.6"
+      }
+    },
+    "postcss-safe-parser": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz",
+      "integrity": "sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==",
+      "requires": {
+        "postcss": "^7.0.26"
+      }
+    },
+    "postcss-selector-parser": {
+      "version": "6.0.4",
+      "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz",
+      "integrity": "sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw==",
+      "requires": {
+        "cssesc": "^3.0.0",
+        "indexes-of": "^1.0.1",
+        "uniq": "^1.0.1",
+        "util-deprecate": "^1.0.2"
+      }
+    },
+    "postcss-value-parser": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz",
+      "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ=="
+    },
+    "prelude-ls": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
+      "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ="
+    },
+    "process": {
+      "version": "0.11.10",
+      "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
+      "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI="
+    },
+    "process-nextick-args": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+      "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
+    },
+    "promise": {
+      "version": "7.3.1",
+      "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
+      "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
+      "requires": {
+        "asap": "~2.0.3"
+      }
+    },
+    "promise-inflight": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
+      "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM="
+    },
+    "promise-polyfill": {
+      "version": "6.1.0",
+      "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-6.1.0.tgz",
+      "integrity": "sha1-36lpQ+qcEh/KTem1hoyznTRy4Fc="
+    },
+    "prop-types": {
+      "version": "15.7.2",
+      "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz",
+      "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==",
+      "requires": {
+        "loose-envify": "^1.4.0",
+        "object-assign": "^4.1.1",
+        "react-is": "^16.8.1"
+      }
+    },
+    "proxy-addr": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz",
+      "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==",
+      "requires": {
+        "forwarded": "~0.1.2",
+        "ipaddr.js": "1.9.1"
+      }
+    },
+    "prr": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
+      "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY="
+    },
+    "pseudomap": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
+      "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
+      "dev": true
+    },
+    "psl": {
+      "version": "1.8.0",
+      "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
+      "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==",
+      "dev": true
+    },
+    "public-encrypt": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz",
+      "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==",
+      "requires": {
+        "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"
+      },
+      "dependencies": {
+        "bn.js": {
+          "version": "4.12.0",
+          "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
+          "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
+        }
+      }
+    },
+    "pump": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+      "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+      "requires": {
+        "end-of-stream": "^1.1.0",
+        "once": "^1.3.1"
+      }
+    },
+    "pumpify": {
+      "version": "1.5.1",
+      "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz",
+      "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==",
+      "requires": {
+        "duplexify": "^3.6.0",
+        "inherits": "^2.0.3",
+        "pump": "^2.0.0"
+      },
+      "dependencies": {
+        "pump": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
+          "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
+          "requires": {
+            "end-of-stream": "^1.1.0",
+            "once": "^1.3.1"
+          }
+        }
+      }
+    },
+    "punycode": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
+      "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
+    },
+    "qs": {
+      "version": "6.7.0",
+      "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
+      "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ=="
+    },
+    "querystring": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz",
+      "integrity": "sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg=="
+    },
+    "querystring-es3": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
+      "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM="
+    },
+    "quote-stream": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/quote-stream/-/quote-stream-1.0.2.tgz",
+      "integrity": "sha1-hJY/jJwmuULhU/7rU6rnRlK34LI=",
+      "requires": {
+        "buffer-equal": "0.0.1",
+        "minimist": "^1.1.3",
+        "through2": "^2.0.0"
+      }
+    },
+    "raf": {
+      "version": "3.4.1",
+      "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz",
+      "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==",
+      "requires": {
+        "performance-now": "^2.1.0"
+      }
+    },
+    "randombytes": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
+      "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
+      "requires": {
+        "safe-buffer": "^5.1.0"
+      }
+    },
+    "randomfill": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
+      "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
+      "requires": {
+        "randombytes": "^2.0.5",
+        "safe-buffer": "^5.1.0"
+      }
+    },
+    "range-parser": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+      "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
+    },
+    "raphael": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/raphael/-/raphael-2.3.0.tgz",
+      "integrity": "sha512-w2yIenZAQnp257XUWGni4bLMVxpUpcIl7qgxEgDIXtmSypYtlNxfXWpOBxs7LBTps5sDwhRnrToJrMUrivqNTQ==",
+      "requires": {
+        "eve-raphael": "0.5.0"
+      }
+    },
+    "raw-body": {
+      "version": "2.4.0",
+      "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
+      "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==",
+      "requires": {
+        "bytes": "3.1.0",
+        "http-errors": "1.7.2",
+        "iconv-lite": "0.4.24",
+        "unpipe": "1.0.0"
+      }
+    },
+    "rc": {
+      "version": "1.2.8",
+      "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
+      "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
+      "requires": {
+        "deep-extend": "^0.6.0",
+        "ini": "~1.3.0",
+        "minimist": "^1.2.0",
+        "strip-json-comments": "~2.0.1"
+      }
+    },
+    "rc-align": {
+      "version": "2.4.5",
+      "resolved": "https://registry.npmjs.org/rc-align/-/rc-align-2.4.5.tgz",
+      "integrity": "sha512-nv9wYUYdfyfK+qskThf4BQUSIadeI/dCsfaMZfNEoxm9HwOIioQ+LyqmMK6jWHAZQgOzMLaqawhuBXlF63vgjw==",
+      "requires": {
+        "babel-runtime": "^6.26.0",
+        "dom-align": "^1.7.0",
+        "prop-types": "^15.5.8",
+        "rc-util": "^4.0.4"
+      }
+    },
+    "rc-animate": {
+      "version": "2.11.1",
+      "resolved": "https://registry.npmjs.org/rc-animate/-/rc-animate-2.11.1.tgz",
+      "integrity": "sha512-1NyuCGFJG/0Y+9RKh5y/i/AalUCA51opyyS/jO2seELpgymZm2u9QV3xwODwEuzkmeQ1BDPxMLmYLcTJedPlkQ==",
+      "requires": {
+        "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-slider": {
+      "version": "8.7.1",
+      "resolved": "https://registry.npmjs.org/rc-slider/-/rc-slider-8.7.1.tgz",
+      "integrity": "sha512-WMT5mRFUEcrLWwTxsyS8jYmlaMsTVCZIGENLikHsNv+tE8ThU2lCoPfi/xFNUfJFNFSBFP3MwPez9ZsJmNp13g==",
+      "requires": {
+        "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-tooltip": {
+      "version": "3.7.3",
+      "resolved": "https://registry.npmjs.org/rc-tooltip/-/rc-tooltip-3.7.3.tgz",
+      "integrity": "sha512-dE2ibukxxkrde7wH9W8ozHKUO4aQnPZ6qBHtrTH9LoO836PjDdiaWO73fgPB05VfJs9FbZdmGPVEbXCeOP99Ww==",
+      "requires": {
+        "babel-runtime": "6.x",
+        "prop-types": "^15.5.8",
+        "rc-trigger": "^2.2.2"
+      }
+    },
+    "rc-trigger": {
+      "version": "2.6.5",
+      "resolved": "https://registry.npmjs.org/rc-trigger/-/rc-trigger-2.6.5.tgz",
+      "integrity": "sha512-m6Cts9hLeZWsTvWnuMm7oElhf+03GOjOLfTuU0QmdB9ZrW7jR2IpI5rpNM7i9MvAAlMAmTx5Zr7g3uu/aMvZAw==",
+      "requires": {
+        "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-util": {
+      "version": "4.21.1",
+      "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-4.21.1.tgz",
+      "integrity": "sha512-Z+vlkSQVc1l8O2UjR3WQ+XdWlhj5q9BMQNLk2iOBch75CqPfrJyGtcWMcnhRlNuDu0Ndtt4kLVO8JI8BrABobg==",
+      "requires": {
+        "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"
+      }
+    },
+    "react": {
+      "version": "17.0.1",
+      "resolved": "https://registry.npmjs.org/react/-/react-17.0.1.tgz",
+      "integrity": "sha512-lG9c9UuMHdcAexXtigOZLX8exLWkW0Ku29qPRU8uhF2R9BN96dLCt0psvzPLlHc5OWkgymP3qwTRgbnw5BKx3w==",
+      "requires": {
+        "loose-envify": "^1.1.0",
+        "object-assign": "^4.1.1"
+      }
+    },
+    "react-chartist": {
+      "version": "0.14.4",
+      "resolved": "https://registry.npmjs.org/react-chartist/-/react-chartist-0.14.4.tgz",
+      "integrity": "sha512-1riwO5CjT5IdrilCM788waUYpIdl8Y4vsIc6Y5bbR3PIX46NYYtcq5bcaBEkIZfKEThuoJDEV6FU1rDmfbogsg==",
+      "requires": {
+        "prop-types": "^15.5.8"
+      }
+    },
+    "react-chartjs-2": {
+      "version": "2.11.1",
+      "resolved": "https://registry.npmjs.org/react-chartjs-2/-/react-chartjs-2-2.11.1.tgz",
+      "integrity": "sha512-G7cNq/n2Bkh/v4vcI+GKx7Q1xwZexKYhOSj2HmrFXlvNeaURWXun6KlOUpEQwi1cv9Tgs4H3kGywDWMrX2kxfA==",
+      "requires": {
+        "lodash": "^4.17.19",
+        "prop-types": "^15.7.2"
+      }
+    },
+    "react-color": {
+      "version": "2.19.3",
+      "resolved": "https://registry.npmjs.org/react-color/-/react-color-2.19.3.tgz",
+      "integrity": "sha512-LEeGE/ZzNLIsFWa1TMe8y5VYqr7bibneWmvJwm1pCn/eNmrabWDh659JSPn9BuaMpEfU83WTOJfnCcjDZwNQTA==",
+      "requires": {
+        "@icons/material": "^0.2.4",
+        "lodash": "^4.17.15",
+        "lodash-es": "^4.17.15",
+        "material-colors": "^1.2.1",
+        "prop-types": "^15.5.10",
+        "reactcss": "^1.2.0",
+        "tinycolor2": "^1.4.1"
+      }
+    },
+    "react-data-grid": {
+      "version": "6.1.0",
+      "resolved": "https://registry.npmjs.org/react-data-grid/-/react-data-grid-6.1.0.tgz",
+      "integrity": "sha512-N1UtiHvsowEPzhx0VPqQKvGgSza/YNljczbisFDGMjawiGApS2taMv7h+EDXDx49CdaA6ur4eYS0z10x63IUpw==",
+      "requires": {
+        "object-assign": "^4.1.1",
+        "react-is-deprecated": "^0.1.2",
+        "shallowequal": "^1.1.0"
+      }
+    },
+    "react-datetime": {
+      "version": "2.16.3",
+      "resolved": "https://registry.npmjs.org/react-datetime/-/react-datetime-2.16.3.tgz",
+      "integrity": "sha512-amWfb5iGEiyqjLmqCLlPpu2oN415jK8wX1qoTq7qn6EYiU7qQgbNHglww014PT4O/3G5eo/3kbJu/M/IxxTyGw==",
+      "requires": {
+        "create-react-class": "^15.5.2",
+        "object-assign": "^3.0.0",
+        "prop-types": "^15.5.7",
+        "react-onclickoutside": "^6.5.0"
+      },
+      "dependencies": {
+        "object-assign": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz",
+          "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I="
+        }
+      }
+    },
+    "react-dnd": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/react-dnd/-/react-dnd-6.0.0.tgz",
+      "integrity": "sha512-XI14rxF5eeGk8045xh/6KbjfLSzgkfNdQCqwkR5qAvBf0QYvkGAUz1AQfLrQudFs/DVw7WiCoCohRzJR1Kyn9Q==",
+      "requires": {
+        "dnd-core": "^6.0.0",
+        "hoist-non-react-statics": "^3.1.0",
+        "invariant": "^2.1.0",
+        "lodash": "^4.17.11",
+        "recompose": "^0.30.0",
+        "shallowequal": "^1.1.0"
+      }
+    },
+    "react-dnd-html5-backend": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/react-dnd-html5-backend/-/react-dnd-html5-backend-6.0.0.tgz",
+      "integrity": "sha512-NRaApaf3IBrE/LgOCoTqbsI1MT5HKIBDkyMF1zoJUy+slW/RLjLuxMC2gYU1Y89Ra/e7CQ5Hw/gJY7oIXLK32g==",
+      "requires": {
+        "dnd-core": "^6.0.0",
+        "lodash": "^4.17.11"
+      }
+    },
+    "react-dom": {
+      "version": "17.0.1",
+      "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.1.tgz",
+      "integrity": "sha512-6eV150oJZ9U2t9svnsspTMrWNyHc6chX0KzDeAOXftRa8bNeOKTTfCJ7KorIwenkHd2xqVTBTCZd79yk/lx/Ug==",
+      "requires": {
+        "loose-envify": "^1.1.0",
+        "object-assign": "^4.1.1",
+        "scheduler": "^0.20.1"
+      }
+    },
+    "react-draft-wysiwyg": {
+      "version": "1.14.5",
+      "resolved": "https://registry.npmjs.org/react-draft-wysiwyg/-/react-draft-wysiwyg-1.14.5.tgz",
+      "integrity": "sha512-utbJEs91757QXYoBwKRb/4kB3JdswLlj0heUiAeXs/OxZAUISJXxLMFLBIixRlIcUnNkwxOsMikRshDMtWIS3g==",
+      "requires": {
+        "classnames": "^2.2.6",
+        "draftjs-utils": "^0.10.2",
+        "html-to-draftjs": "^1.5.0",
+        "linkify-it": "^2.2.0",
+        "prop-types": "^15.7.2"
+      }
+    },
+    "react-dropzone": {
+      "version": "10.2.2",
+      "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-10.2.2.tgz",
+      "integrity": "sha512-U5EKckXVt6IrEyhMMsgmHQiWTGLudhajPPG77KFSvgsMqNEHSyGpqWvOMc5+DhEah/vH4E1n+J5weBNLd5VtyA==",
+      "requires": {
+        "attr-accept": "^2.0.0",
+        "file-selector": "^0.1.12",
+        "prop-types": "^15.7.2"
+      }
+    },
+    "react-flot": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/react-flot/-/react-flot-1.3.0.tgz",
+      "integrity": "sha1-Q9LeNvY5RZnS/vt+jWsD1MViDno=",
+      "requires": {
+        "@types/react": "^15.0.38",
+        "deep-equal": "^1.0.1",
+        "jquery": "^3.1.1"
+      }
+    },
+    "react-input-autosize": {
+      "version": "2.2.2",
+      "resolved": "https://registry.npmjs.org/react-input-autosize/-/react-input-autosize-2.2.2.tgz",
+      "integrity": "sha512-jQJgYCA3S0j+cuOwzuCd1OjmBmnZLdqQdiLKRYrsMMzbjUrVDS5RvJUDwJqA7sKuksDuzFtm6hZGKFu7Mjk5aw==",
+      "requires": {
+        "prop-types": "^15.5.8"
+      }
+    },
+    "react-is": {
+      "version": "16.13.1",
+      "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
+      "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
+    },
+    "react-is-deprecated": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/react-is-deprecated/-/react-is-deprecated-0.1.2.tgz",
+      "integrity": "sha1-MBFI+G6kKP6OZz7KejchYLdXnb0="
+    },
+    "react-lifecycles-compat": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz",
+      "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA=="
+    },
+    "react-maskedinput": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/react-maskedinput/-/react-maskedinput-4.0.1.tgz",
+      "integrity": "sha512-wWIGtJOYmFJFJl7ojJgE2oB7MKLE3QkXtB54UoXyYtvGL3Jni51a1LKAK39U/6Gh5OR3VAgFMdiPApbFw2ALrg==",
+      "requires": {
+        "inputmask-core": "^2.1.1",
+        "prop-types": "^15.5.7"
+      }
+    },
+    "react-onclickoutside": {
+      "version": "6.10.0",
+      "resolved": "https://registry.npmjs.org/react-onclickoutside/-/react-onclickoutside-6.10.0.tgz",
+      "integrity": "sha512-7i2L3ef+0ILXpL6P+Hg304eCQswh4jl3ynwR71BSlMU49PE2uk31k8B2GkP6yE9s2D4jTGKnzuSpzWxu4YxfQQ=="
+    },
+    "react-perfect-scrollbar": {
+      "version": "1.5.8",
+      "resolved": "https://registry.npmjs.org/react-perfect-scrollbar/-/react-perfect-scrollbar-1.5.8.tgz",
+      "integrity": "sha512-bQ46m70gp/HJtiBOF3gRzBISSZn8FFGNxznTdmTG8AAwpxG1bJCyn7shrgjEvGSQ5FJEafVEiosY+ccER11OSA==",
+      "requires": {
+        "perfect-scrollbar": "^1.5.0",
+        "prop-types": "^15.6.1"
+      }
+    },
+    "react-popper": {
+      "version": "1.3.11",
+      "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-1.3.11.tgz",
+      "integrity": "sha512-VSA/bS+pSndSF2fiasHK/PTEEAyOpX60+H5EPAjoArr8JGm+oihu4UbrqcEBpQibJxBVCpYyjAX7abJ+7DoYVg==",
+      "requires": {
+        "@babel/runtime": "^7.1.2",
+        "@hypnosphi/create-react-context": "^0.3.1",
+        "deep-equal": "^1.1.1",
+        "popper.js": "^1.14.4",
+        "prop-types": "^15.6.1",
+        "typed-styles": "^0.0.7",
+        "warning": "^4.0.2"
+      }
+    },
+    "react-redux": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-6.0.1.tgz",
+      "integrity": "sha512-T52I52Kxhbqy/6TEfBv85rQSDz6+Y28V/pf52vDWs1YRXG19mcFOGfHnY2HsNFHyhP+ST34Aih98fvt6tqwVcQ==",
+      "requires": {
+        "@babel/runtime": "^7.3.1",
+        "hoist-non-react-statics": "^3.3.0",
+        "invariant": "^2.2.4",
+        "loose-envify": "^1.4.0",
+        "prop-types": "^15.7.2",
+        "react-is": "^16.8.2"
+      }
+    },
+    "react-refresh": {
+      "version": "0.8.3",
+      "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.8.3.tgz",
+      "integrity": "sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg=="
+    },
+    "react-select": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/react-select/-/react-select-3.0.4.tgz",
+      "integrity": "sha512-fbVISKa/lSUlLsltuatfUiKcWCNvdLXxFFyrzVQCBUsjxJZH/m7UMPdw/ywmRixAmwXAP++MdbNNZypOsiDEfA==",
+      "requires": {
+        "@babel/runtime": "^7.4.4",
+        "@emotion/cache": "^10.0.9",
+        "@emotion/core": "^10.0.9",
+        "@emotion/css": "^10.0.9",
+        "classnames": "^2.2.5",
+        "memoize-one": "^5.0.0",
+        "prop-types": "^15.6.0",
+        "raf": "^3.4.0",
+        "react-input-autosize": "^2.2.1",
+        "react-transition-group": "^2.2.1"
+      },
+      "dependencies": {
+        "react-transition-group": {
+          "version": "2.9.0",
+          "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.9.0.tgz",
+          "integrity": "sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg==",
+          "requires": {
+            "dom-helpers": "^3.4.0",
+            "loose-envify": "^1.4.0",
+            "prop-types": "^15.6.2",
+            "react-lifecycles-compat": "^3.0.4"
+          }
+        }
+      }
+    },
+    "react-toastify": {
+      "version": "4.5.2",
+      "resolved": "https://registry.npmjs.org/react-toastify/-/react-toastify-4.5.2.tgz",
+      "integrity": "sha512-KymDDhkcX5EvFht17nO0MCsegM/Kdhyfxhi+WQl2tE3IxJrueOhY6TUnALTfvz7eDRUjPYBGb+ywWqWrGyvBnw==",
+      "requires": {
+        "classnames": "^2.2.6",
+        "prop-types": "^15.6.0",
+        "react-transition-group": "^2.4.0"
+      },
+      "dependencies": {
+        "react-transition-group": {
+          "version": "2.9.0",
+          "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.9.0.tgz",
+          "integrity": "sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg==",
+          "requires": {
+            "dom-helpers": "^3.4.0",
+            "loose-envify": "^1.4.0",
+            "prop-types": "^15.6.2",
+            "react-lifecycles-compat": "^3.0.4"
+          }
+        }
+      }
+    },
+    "react-transition-group": {
+      "version": "4.2.2",
+      "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.2.2.tgz",
+      "integrity": "sha512-uP0tjqewtvjb7kGZFpZYPoD/NlVZmIgts9eTt1w35pAaEApPxQGv94lD3VkqyXf2aMqrSGwhs6EV/DLaoKbLSw==",
+      "requires": {
+        "@babel/runtime": "^7.4.5",
+        "dom-helpers": "^3.4.0",
+        "loose-envify": "^1.4.0",
+        "prop-types": "^15.6.2"
+      }
+    },
+    "reactcss": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npmjs.org/reactcss/-/reactcss-1.2.3.tgz",
+      "integrity": "sha512-KiwVUcFu1RErkI97ywr8nvx8dNOpT03rbnma0SSalTYjkrPYaEajR4a/MRt6DZ46K6arDRbWMNHF+xH7G7n/8A==",
+      "requires": {
+        "lodash": "^4.0.1"
+      }
+    },
+    "reactstrap": {
+      "version": "8.0.1",
+      "resolved": "https://registry.npmjs.org/reactstrap/-/reactstrap-8.0.1.tgz",
+      "integrity": "sha512-GvUWEL+a2+3npK1OxTXcNBMHXX4x6uc1KQRzK7yAOl+8sAHTRWqjunvMUfny3oDh8yKVzgqpqQlWWvs1B2HR9A==",
+      "requires": {
+        "@babel/runtime": "^7.2.0",
+        "classnames": "^2.2.3",
+        "lodash.isfunction": "^3.0.9",
+        "lodash.isobject": "^3.0.2",
+        "lodash.tonumber": "^4.0.3",
+        "prop-types": "^15.5.8",
+        "react-lifecycles-compat": "^3.0.4",
+        "react-popper": "^1.3.3",
+        "react-transition-group": "^2.3.1"
+      },
+      "dependencies": {
+        "react-transition-group": {
+          "version": "2.9.0",
+          "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.9.0.tgz",
+          "integrity": "sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg==",
+          "requires": {
+            "dom-helpers": "^3.4.0",
+            "loose-envify": "^1.4.0",
+            "prop-types": "^15.6.2",
+            "react-lifecycles-compat": "^3.0.4"
+          }
+        }
+      }
+    },
+    "read-pkg": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
+      "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
+      "dev": true,
+      "requires": {
+        "load-json-file": "^1.0.0",
+        "normalize-package-data": "^2.3.2",
+        "path-type": "^1.0.0"
+      },
+      "dependencies": {
+        "path-type": {
+          "version": "1.1.0",
+          "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
+          "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
+          "dev": true,
+          "requires": {
+            "graceful-fs": "^4.1.2",
+            "pify": "^2.0.0",
+            "pinkie-promise": "^2.0.0"
+          }
+        },
+        "pify": {
+          "version": "2.3.0",
+          "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+          "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+          "dev": true
+        }
+      }
+    },
+    "read-pkg-up": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
+      "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
+      "dev": true,
+      "requires": {
+        "find-up": "^1.0.0",
+        "read-pkg": "^1.0.0"
+      },
+      "dependencies": {
+        "find-up": {
+          "version": "1.1.2",
+          "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
+          "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
+          "dev": true,
+          "requires": {
+            "path-exists": "^2.0.0",
+            "pinkie-promise": "^2.0.0"
+          }
+        },
+        "path-exists": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
+          "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
+          "dev": true,
+          "requires": {
+            "pinkie-promise": "^2.0.0"
+          }
+        }
+      }
+    },
+    "readable-stream": {
+      "version": "2.3.7",
+      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+      "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+      "requires": {
+        "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"
+      }
+    },
+    "readdirp": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
+      "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
+      "requires": {
+        "graceful-fs": "^4.1.11",
+        "micromatch": "^3.1.10",
+        "readable-stream": "^2.0.2"
+      }
+    },
+    "recompose": {
+      "version": "0.30.0",
+      "resolved": "https://registry.npmjs.org/recompose/-/recompose-0.30.0.tgz",
+      "integrity": "sha512-ZTrzzUDa9AqUIhRk4KmVFihH0rapdCSMFXjhHbNrjAWxBuUD/guYlyysMnuHjlZC/KRiOKRtB4jf96yYSkKE8w==",
+      "requires": {
+        "@babel/runtime": "^7.0.0",
+        "change-emitter": "^0.1.2",
+        "fbjs": "^0.8.1",
+        "hoist-non-react-statics": "^2.3.1",
+        "react-lifecycles-compat": "^3.0.2",
+        "symbol-observable": "^1.0.4"
+      },
+      "dependencies": {
+        "core-js": {
+          "version": "1.2.7",
+          "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz",
+          "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY="
+        },
+        "fbjs": {
+          "version": "0.8.17",
+          "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz",
+          "integrity": "sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=",
+          "requires": {
+            "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"
+          }
+        },
+        "hoist-non-react-statics": {
+          "version": "2.5.5",
+          "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz",
+          "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw=="
+        }
+      }
+    },
+    "redent": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
+      "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
+      "dev": true,
+      "requires": {
+        "indent-string": "^2.1.0",
+        "strip-indent": "^1.0.1"
+      },
+      "dependencies": {
+        "indent-string": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
+          "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
+          "dev": true,
+          "requires": {
+            "repeating": "^2.0.0"
+          }
+        }
+      }
+    },
+    "redux": {
+      "version": "4.0.5",
+      "resolved": "https://registry.npmjs.org/redux/-/redux-4.0.5.tgz",
+      "integrity": "sha512-VSz1uMAH24DM6MF72vcojpYPtrTUu3ByVWfPL1nPfVRb5mZVTve5GnNCUV53QM/BZ66xfWrm0CTWoM+Xlz8V1w==",
+      "requires": {
+        "loose-envify": "^1.4.0",
+        "symbol-observable": "^1.2.0"
+      }
+    },
+    "redux-devtools-extension": {
+      "version": "2.13.9",
+      "resolved": "https://registry.npmjs.org/redux-devtools-extension/-/redux-devtools-extension-2.13.9.tgz",
+      "integrity": "sha512-cNJ8Q/EtjhQaZ71c8I9+BPySIBVEKssbPpskBfsXqb8HJ002A3KRVHfeRzwRo6mGPqsm7XuHTqNSNeS1Khig0A=="
+    },
+    "regenerate": {
+      "version": "1.4.2",
+      "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
+      "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A=="
+    },
+    "regenerate-unicode-properties": {
+      "version": "8.2.0",
+      "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz",
+      "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==",
+      "requires": {
+        "regenerate": "^1.4.0"
+      }
+    },
+    "regenerator-runtime": {
+      "version": "0.12.1",
+      "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz",
+      "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg=="
+    },
+    "regenerator-transform": {
+      "version": "0.14.5",
+      "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz",
+      "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==",
+      "requires": {
+        "@babel/runtime": "^7.8.4"
+      }
+    },
+    "regex-not": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
+      "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
+      "requires": {
+        "extend-shallow": "^3.0.2",
+        "safe-regex": "^1.1.0"
+      }
+    },
+    "regex-parser": {
+      "version": "2.2.10",
+      "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.10.tgz",
+      "integrity": "sha512-8t6074A68gHfU8Neftl0Le6KTDwfGAj7IyjPIMSfikI2wJUTHDMaIq42bUsfVnj8mhx0R+45rdUXHGpN164avA=="
+    },
+    "regexp.prototype.flags": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz",
+      "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==",
+      "requires": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3"
+      }
+    },
+    "regexpu-core": {
+      "version": "4.7.1",
+      "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz",
+      "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==",
+      "requires": {
+        "regenerate": "^1.4.0",
+        "regenerate-unicode-properties": "^8.2.0",
+        "regjsgen": "^0.5.1",
+        "regjsparser": "^0.6.4",
+        "unicode-match-property-ecmascript": "^1.0.4",
+        "unicode-match-property-value-ecmascript": "^1.2.0"
+      }
+    },
+    "regjsgen": {
+      "version": "0.5.2",
+      "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz",
+      "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A=="
+    },
+    "regjsparser": {
+      "version": "0.6.8",
+      "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.8.tgz",
+      "integrity": "sha512-3weFrFQREJhJ2PW+iCGaG6TenyzNSZgsBKZ/oEf6Trme31COSeIWhHw9O6FPkuXktfx+b6Hf/5e6dKPHaROq2g==",
+      "requires": {
+        "jsesc": "~0.5.0"
+      },
+      "dependencies": {
+        "jsesc": {
+          "version": "0.5.0",
+          "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
+          "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0="
+        }
+      }
+    },
+    "remove-trailing-separator": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
+      "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8="
+    },
+    "repeat-element": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
+      "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g=="
+    },
+    "repeat-string": {
+      "version": "1.6.1",
+      "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
+      "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc="
+    },
+    "repeating": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
+      "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
+      "dev": true,
+      "requires": {
+        "is-finite": "^1.0.0"
+      }
+    },
+    "request": {
+      "version": "2.88.2",
+      "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
+      "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
+      "dev": true,
+      "requires": {
+        "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"
+      },
+      "dependencies": {
+        "qs": {
+          "version": "6.5.2",
+          "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
+          "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
+          "dev": true
+        }
+      }
+    },
+    "require-directory": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+      "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
+      "dev": true
+    },
+    "require-main-filename": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
+      "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
+      "dev": true
+    },
+    "resolve": {
+      "version": "1.20.0",
+      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
+      "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==",
+      "requires": {
+        "is-core-module": "^2.2.0",
+        "path-parse": "^1.0.6"
+      }
+    },
+    "resolve-from": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+      "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="
+    },
+    "resolve-pathname": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz",
+      "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng=="
+    },
+    "resolve-url": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
+      "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo="
+    },
+    "resolve-url-loader": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-3.1.1.tgz",
+      "integrity": "sha512-K1N5xUjj7v0l2j/3Sgs5b8CjrrgtC70SmdCuZiJ8tSyb5J+uk3FoeZ4b7yTnH6j7ngI+Bc5bldHJIa8hYdu2gQ==",
+      "requires": {
+        "adjust-sourcemap-loader": "2.0.0",
+        "camelcase": "5.3.1",
+        "compose-function": "3.0.3",
+        "convert-source-map": "1.7.0",
+        "es6-iterator": "2.0.3",
+        "loader-utils": "1.2.3",
+        "postcss": "7.0.21",
+        "rework": "1.0.1",
+        "rework-visit": "1.0.0",
+        "source-map": "0.6.1"
+      },
+      "dependencies": {
+        "camelcase": {
+          "version": "5.3.1",
+          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+          "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
+        },
+        "emojis-list": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz",
+          "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k="
+        },
+        "json5": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
+          "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+          "requires": {
+            "minimist": "^1.2.0"
+          }
+        },
+        "loader-utils": {
+          "version": "1.2.3",
+          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz",
+          "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==",
+          "requires": {
+            "big.js": "^5.2.2",
+            "emojis-list": "^2.0.0",
+            "json5": "^1.0.1"
+          }
+        },
+        "postcss": {
+          "version": "7.0.21",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.21.tgz",
+          "integrity": "sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ==",
+          "requires": {
+            "chalk": "^2.4.2",
+            "source-map": "^0.6.1",
+            "supports-color": "^6.1.0"
+          }
+        }
+      }
+    },
+    "restructure": {
+      "version": "0.5.4",
+      "resolved": "https://registry.npmjs.org/restructure/-/restructure-0.5.4.tgz",
+      "integrity": "sha1-9U591WNZD7NP1r9Vh2EJrsyyjeg=",
+      "requires": {
+        "browserify-optional": "^1.0.0"
+      }
+    },
+    "ret": {
+      "version": "0.1.15",
+      "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
+      "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg=="
+    },
+    "rework": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/rework/-/rework-1.0.1.tgz",
+      "integrity": "sha1-MIBqhBNCtUUQqkEQhQzUhTQUSqc=",
+      "requires": {
+        "convert-source-map": "^0.3.3",
+        "css": "^2.0.0"
+      },
+      "dependencies": {
+        "convert-source-map": {
+          "version": "0.3.5",
+          "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-0.3.5.tgz",
+          "integrity": "sha1-8dgClQr33SYxof6+BZZVDIarMZA="
+        }
+      }
+    },
+    "rework-visit": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/rework-visit/-/rework-visit-1.0.0.tgz",
+      "integrity": "sha1-mUWygD8hni96ygCtuLyfZA+ELJo="
+    },
+    "rimraf": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+      "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+      "requires": {
+        "glob": "^7.1.3"
+      }
+    },
+    "ripemd160": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz",
+      "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
+      "requires": {
+        "hash-base": "^3.0.0",
+        "inherits": "^2.0.1"
+      }
+    },
+    "rtlcss": {
+      "version": "2.6.2",
+      "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-2.6.2.tgz",
+      "integrity": "sha512-06LFAr+GAPo+BvaynsXRfoYTJvSaWRyOhURCQ7aeI1MKph9meM222F+Zkt3bDamyHHJuGi3VPtiRkpyswmQbGA==",
+      "requires": {
+        "@choojs/findup": "^0.2.1",
+        "chalk": "^2.4.2",
+        "mkdirp": "^0.5.1",
+        "postcss": "^6.0.23",
+        "strip-json-comments": "^2.0.0"
+      },
+      "dependencies": {
+        "postcss": {
+          "version": "6.0.23",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
+          "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
+          "requires": {
+            "chalk": "^2.4.1",
+            "source-map": "^0.6.1",
+            "supports-color": "^5.4.0"
+          }
+        },
+        "supports-color": {
+          "version": "5.5.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+          "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+          "requires": {
+            "has-flag": "^3.0.0"
+          }
+        }
+      }
+    },
+    "run-queue": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz",
+      "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=",
+      "requires": {
+        "aproba": "^1.1.1"
+      }
+    },
+    "safe-buffer": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+    },
+    "safe-regex": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
+      "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
+      "requires": {
+        "ret": "~0.1.10"
+      }
+    },
+    "safer-buffer": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+    },
+    "sass-graph": {
+      "version": "2.2.5",
+      "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.5.tgz",
+      "integrity": "sha512-VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag==",
+      "dev": true,
+      "requires": {
+        "glob": "^7.0.0",
+        "lodash": "^4.0.0",
+        "scss-tokenizer": "^0.2.3",
+        "yargs": "^13.3.2"
+      }
+    },
+    "sass-loader": {
+      "version": "10.0.2",
+      "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-10.0.2.tgz",
+      "integrity": "sha512-wV6NDUVB8/iEYMalV/+139+vl2LaRFlZGEd5/xmdcdzQcgmis+npyco6NsDTVOlNA3y2NV9Gcz+vHyFMIT+ffg==",
+      "requires": {
+        "klona": "^2.0.3",
+        "loader-utils": "^2.0.0",
+        "neo-async": "^2.6.2",
+        "schema-utils": "^2.7.1",
+        "semver": "^7.3.2"
+      },
+      "dependencies": {
+        "neo-async": {
+          "version": "2.6.2",
+          "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
+          "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="
+        },
+        "semver": {
+          "version": "7.3.5",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
+          "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
+          "requires": {
+            "lru-cache": "^6.0.0"
+          }
+        }
+      }
+    },
+    "sax": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
+      "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
+    },
+    "scheduler": {
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz",
+      "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==",
+      "requires": {
+        "loose-envify": "^1.1.0",
+        "object-assign": "^4.1.1"
+      }
+    },
+    "schema-utils": {
+      "version": "2.7.1",
+      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz",
+      "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==",
+      "requires": {
+        "@types/json-schema": "^7.0.5",
+        "ajv": "^6.12.4",
+        "ajv-keywords": "^3.5.2"
+      }
+    },
+    "scope-analyzer": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/scope-analyzer/-/scope-analyzer-2.1.1.tgz",
+      "integrity": "sha512-azEAihtQ9mEyZGhfgTJy3IbOWEzeOrYbg7NcYEshPKnKd+LZmC3TNd5dmDxbLBsTG/JVWmCp+vDJ03vJjeXMHg==",
+      "requires": {
+        "array-from": "^2.1.1",
+        "dash-ast": "^1.0.0",
+        "es6-map": "^0.1.5",
+        "es6-set": "^0.1.5",
+        "es6-symbol": "^3.1.1",
+        "estree-is-function": "^1.0.0",
+        "get-assigned-identifiers": "^1.1.0"
+      }
+    },
+    "screenfull": {
+      "version": "3.3.3",
+      "resolved": "https://registry.npmjs.org/screenfull/-/screenfull-3.3.3.tgz",
+      "integrity": "sha512-DzYUuXr+OV2BDvYXaYzlYgJd4WXZZ2CW5NFC7Kw6TUCpzXJAx4MwlVD6CH+Mu6fi8rfAQIQfqdFZ4jtDsEkWig=="
+    },
+    "scss-tokenizer": {
+      "version": "0.2.3",
+      "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz",
+      "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=",
+      "dev": true,
+      "requires": {
+        "js-base64": "^2.1.8",
+        "source-map": "^0.4.2"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.4.4",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
+          "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
+          "dev": true,
+          "requires": {
+            "amdefine": ">=0.0.4"
+          }
+        }
+      }
+    },
+    "semver": {
+      "version": "5.7.1",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+      "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+    },
+    "send": {
+      "version": "0.17.1",
+      "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
+      "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
+      "requires": {
+        "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"
+      },
+      "dependencies": {
+        "ms": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
+          "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
+        }
+      }
+    },
+    "serialize-javascript": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
+      "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
+      "requires": {
+        "randombytes": "^2.1.0"
+      }
+    },
+    "serve-static": {
+      "version": "1.14.1",
+      "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
+      "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
+      "requires": {
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "parseurl": "~1.3.3",
+        "send": "0.17.1"
+      }
+    },
+    "set-blocking": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+      "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
+    },
+    "set-immediate-shim": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz",
+      "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E="
+    },
+    "set-value": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
+      "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
+      "requires": {
+        "extend-shallow": "^2.0.1",
+        "is-extendable": "^0.1.1",
+        "is-plain-object": "^2.0.3",
+        "split-string": "^3.0.1"
+      },
+      "dependencies": {
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        }
+      }
+    },
+    "setimmediate": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
+      "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU="
+    },
+    "setprototypeof": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
+      "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
+    },
+    "sha.js": {
+      "version": "2.4.11",
+      "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
+      "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
+      "requires": {
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "shallow-clone": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-0.1.2.tgz",
+      "integrity": "sha1-WQnodLp3EG1zrEFM/sH/yofZcGA=",
+      "dev": true,
+      "requires": {
+        "is-extendable": "^0.1.1",
+        "kind-of": "^2.0.1",
+        "lazy-cache": "^0.2.3",
+        "mixin-object": "^2.0.1"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz",
+          "integrity": "sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.0.2"
+          }
+        }
+      }
+    },
+    "shallow-copy": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz",
+      "integrity": "sha1-QV9CcC1z2BAzApLMXuhurhoRoXA="
+    },
+    "shallowequal": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz",
+      "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ=="
+    },
+    "shebang-command": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+      "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+      "dev": true,
+      "requires": {
+        "shebang-regex": "^1.0.0"
+      }
+    },
+    "shebang-regex": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+      "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
+      "dev": true
+    },
+    "shell-quote": {
+      "version": "1.7.2",
+      "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz",
+      "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg=="
+    },
+    "side-channel": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
+      "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+      "requires": {
+        "call-bind": "^1.0.0",
+        "get-intrinsic": "^1.0.2",
+        "object-inspect": "^1.9.0"
+      }
+    },
+    "signal-exit": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
+      "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA=="
+    },
+    "simple-concat": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
+      "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q=="
+    },
+    "simple-get": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.0.tgz",
+      "integrity": "sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA==",
+      "requires": {
+        "decompress-response": "^4.2.0",
+        "once": "^1.3.1",
+        "simple-concat": "^1.0.0"
+      }
+    },
+    "simple-line-icons": {
+      "version": "2.5.5",
+      "resolved": "https://registry.npmjs.org/simple-line-icons/-/simple-line-icons-2.5.5.tgz",
+      "integrity": "sha512-v52iGG/qFZTSD/70yOfA1lYoN6zmjEfDjzFT6U6jNSCsh/aeVjy+8sYyTXWz1w7tLIkN2XeMmG+cLJp/0zYK4Q==",
+      "requires": {
+        "less": "^3.12.2"
+      }
+    },
+    "snapdragon": {
+      "version": "0.8.2",
+      "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
+      "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
+      "requires": {
+        "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"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "0.2.5",
+          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+          "requires": {
+            "is-descriptor": "^0.1.0"
+          }
+        },
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        },
+        "source-map": {
+          "version": "0.5.7",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+          "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
+        }
+      }
+    },
+    "snapdragon-node": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
+      "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
+      "requires": {
+        "define-property": "^1.0.0",
+        "isobject": "^3.0.0",
+        "snapdragon-util": "^3.0.1"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+          "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+          "requires": {
+            "is-descriptor": "^1.0.0"
+          }
+        },
+        "is-accessor-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-data-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-descriptor": {
+          "version": "1.0.2",
+          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+          "requires": {
+            "is-accessor-descriptor": "^1.0.0",
+            "is-data-descriptor": "^1.0.0",
+            "kind-of": "^6.0.2"
+          }
+        }
+      }
+    },
+    "snapdragon-util": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
+      "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
+      "requires": {
+        "kind-of": "^3.2.0"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "source-list-map": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz",
+      "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw=="
+    },
+    "source-map": {
+      "version": "0.6.1",
+      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+    },
+    "source-map-resolve": {
+      "version": "0.5.3",
+      "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz",
+      "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==",
+      "requires": {
+        "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": {
+      "version": "0.5.19",
+      "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz",
+      "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==",
+      "requires": {
+        "buffer-from": "^1.0.0",
+        "source-map": "^0.6.0"
+      }
+    },
+    "source-map-url": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz",
+      "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw=="
+    },
+    "sourcemap-codec": {
+      "version": "1.4.8",
+      "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
+      "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA=="
+    },
+    "spdx-correct": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
+      "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
+      "dev": true,
+      "requires": {
+        "spdx-expression-parse": "^3.0.0",
+        "spdx-license-ids": "^3.0.0"
+      }
+    },
+    "spdx-exceptions": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
+      "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
+      "dev": true
+    },
+    "spdx-expression-parse": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
+      "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
+      "dev": true,
+      "requires": {
+        "spdx-exceptions": "^2.1.0",
+        "spdx-license-ids": "^3.0.0"
+      }
+    },
+    "spdx-license-ids": {
+      "version": "3.0.7",
+      "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz",
+      "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==",
+      "dev": true
+    },
+    "spinkit": {
+      "version": "1.2.5",
+      "resolved": "https://registry.npmjs.org/spinkit/-/spinkit-1.2.5.tgz",
+      "integrity": "sha1-kPn0ZqIOjjnvJNqVnB5hHCow3VQ="
+    },
+    "split-string": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
+      "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
+      "requires": {
+        "extend-shallow": "^3.0.0"
+      }
+    },
+    "sprintf-js": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+      "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+      "dev": true
+    },
+    "sshpk": {
+      "version": "1.16.1",
+      "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
+      "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
+      "dev": true,
+      "requires": {
+        "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": {
+      "version": "8.0.1",
+      "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz",
+      "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==",
+      "requires": {
+        "minipass": "^3.1.1"
+      }
+    },
+    "stacktrace-parser": {
+      "version": "0.1.10",
+      "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz",
+      "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==",
+      "requires": {
+        "type-fest": "^0.7.1"
+      }
+    },
+    "static-eval": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.1.0.tgz",
+      "integrity": "sha512-agtxZ/kWSsCkI5E4QifRwsaPs0P0JmZV6dkLz6ILYfFYQGn+5plctanRN+IC8dJRiFkyXHrwEE3W9Wmx67uDbw==",
+      "requires": {
+        "escodegen": "^1.11.1"
+      }
+    },
+    "static-extend": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
+      "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
+      "requires": {
+        "define-property": "^0.2.5",
+        "object-copy": "^0.1.0"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "0.2.5",
+          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+          "requires": {
+            "is-descriptor": "^0.1.0"
+          }
+        }
+      }
+    },
+    "static-module": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/static-module/-/static-module-3.0.4.tgz",
+      "integrity": "sha512-gb0v0rrgpBkifXCa3yZXxqVmXDVE+ETXj6YlC/jt5VzOnGXR2C15+++eXuMDUYsePnbhf+lwW0pE1UXyOLtGCw==",
+      "requires": {
+        "acorn-node": "^1.3.0",
+        "concat-stream": "~1.6.0",
+        "convert-source-map": "^1.5.1",
+        "duplexer2": "~0.1.4",
+        "escodegen": "^1.11.1",
+        "has": "^1.0.1",
+        "magic-string": "0.25.1",
+        "merge-source-map": "1.0.4",
+        "object-inspect": "^1.6.0",
+        "readable-stream": "~2.3.3",
+        "scope-analyzer": "^2.0.1",
+        "shallow-copy": "~0.0.1",
+        "static-eval": "^2.0.5",
+        "through2": "~2.0.3"
+      }
+    },
+    "statuses": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+      "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
+    },
+    "stdout-stream": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz",
+      "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==",
+      "dev": true,
+      "requires": {
+        "readable-stream": "^2.0.1"
+      }
+    },
+    "stream-browserify": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz",
+      "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==",
+      "requires": {
+        "inherits": "~2.0.4",
+        "readable-stream": "^3.5.0"
+      },
+      "dependencies": {
+        "inherits": {
+          "version": "2.0.4",
+          "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+          "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+        },
+        "readable-stream": {
+          "version": "3.6.0",
+          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
+          "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
+          "requires": {
+            "inherits": "^2.0.3",
+            "string_decoder": "^1.1.1",
+            "util-deprecate": "^1.0.1"
+          }
+        }
+      }
+    },
+    "stream-each": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz",
+      "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==",
+      "requires": {
+        "end-of-stream": "^1.1.0",
+        "stream-shift": "^1.0.0"
+      }
+    },
+    "stream-http": {
+      "version": "2.8.3",
+      "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz",
+      "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==",
+      "requires": {
+        "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-shift": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz",
+      "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ=="
+    },
+    "string-hash": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz",
+      "integrity": "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs="
+    },
+    "string-width": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+      "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+      "requires": {
+        "code-point-at": "^1.0.0",
+        "is-fullwidth-code-point": "^1.0.0",
+        "strip-ansi": "^3.0.0"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+          "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
+        },
+        "strip-ansi": {
+          "version": "3.0.1",
+          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+          "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+          "requires": {
+            "ansi-regex": "^2.0.0"
+          }
+        }
+      }
+    },
+    "string.prototype.trimend": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz",
+      "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==",
+      "requires": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3"
+      }
+    },
+    "string.prototype.trimstart": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz",
+      "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==",
+      "requires": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3"
+      }
+    },
+    "string_decoder": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+      "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+      "requires": {
+        "safe-buffer": "~5.1.0"
+      }
+    },
+    "strip-ansi": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
+      "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
+      "requires": {
+        "ansi-regex": "^5.0.0"
+      }
+    },
+    "strip-bom": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
+      "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
+      "dev": true,
+      "requires": {
+        "is-utf8": "^0.2.0"
+      }
+    },
+    "strip-indent": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
+      "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
+      "dev": true,
+      "requires": {
+        "get-stdin": "^4.0.1"
+      }
+    },
+    "strip-json-comments": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+      "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo="
+    },
+    "style-loader": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.2.1.tgz",
+      "integrity": "sha512-ByHSTQvHLkWE9Ir5+lGbVOXhxX10fbprhLvdg96wedFZb4NDekDPxVKv5Fwmio+QcMlkkNfuK+5W1peQ5CUhZg==",
+      "requires": {
+        "loader-utils": "^2.0.0",
+        "schema-utils": "^2.6.6"
+      }
+    },
+    "styled-jsx": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-3.3.0.tgz",
+      "integrity": "sha512-sh8BI5eGKyJlwL4kNXHjb27/a/GJV8wP4ElRIkRXrGW3sHKOsY9Pa1VZRNxyvf3+lisdPwizD9JDkzVO9uGwZw==",
+      "requires": {
+        "@babel/types": "7.8.3",
+        "babel-plugin-syntax-jsx": "6.18.0",
+        "convert-source-map": "1.7.0",
+        "loader-utils": "1.2.3",
+        "source-map": "0.7.3",
+        "string-hash": "1.1.3",
+        "stylis": "3.5.4",
+        "stylis-rule-sheet": "0.0.10"
+      },
+      "dependencies": {
+        "@babel/types": {
+          "version": "7.8.3",
+          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz",
+          "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==",
+          "requires": {
+            "esutils": "^2.0.2",
+            "lodash": "^4.17.13",
+            "to-fast-properties": "^2.0.0"
+          }
+        },
+        "emojis-list": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz",
+          "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k="
+        },
+        "json5": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
+          "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+          "requires": {
+            "minimist": "^1.2.0"
+          }
+        },
+        "loader-utils": {
+          "version": "1.2.3",
+          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz",
+          "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==",
+          "requires": {
+            "big.js": "^5.2.2",
+            "emojis-list": "^2.0.0",
+            "json5": "^1.0.1"
+          }
+        },
+        "source-map": {
+          "version": "0.7.3",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
+          "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ=="
+        }
+      }
+    },
+    "stylis": {
+      "version": "3.5.4",
+      "resolved": "https://registry.npmjs.org/stylis/-/stylis-3.5.4.tgz",
+      "integrity": "sha512-8/3pSmthWM7lsPBKv7NXkzn2Uc9W7NotcwGNpJaa3k7WMM1XDCA4MgT5k/8BIexd5ydZdboXtU90XH9Ec4Bv/Q=="
+    },
+    "stylis-rule-sheet": {
+      "version": "0.0.10",
+      "resolved": "https://registry.npmjs.org/stylis-rule-sheet/-/stylis-rule-sheet-0.0.10.tgz",
+      "integrity": "sha512-nTbZoaqoBnmK+ptANthb10ZRZOGC+EmTLLUxeYIuHNkEKcmKgXX1XWKkUBT2Ac4es3NybooPe0SmvKdhKJZAuw=="
+    },
+    "supports-color": {
+      "version": "6.1.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
+      "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+      "requires": {
+        "has-flag": "^3.0.0"
+      }
+    },
+    "svg-to-pdfkit": {
+      "version": "0.1.8",
+      "resolved": "https://registry.npmjs.org/svg-to-pdfkit/-/svg-to-pdfkit-0.1.8.tgz",
+      "integrity": "sha512-QItiGZBy5TstGy+q8mjQTMGRlDDOARXLxH+sgVm1n/LYeo0zFcQlcCh8m4zi8QxctrxB9Kue/lStc/RD5iLadQ==",
+      "requires": {
+        "pdfkit": ">=0.8.1"
+      }
+    },
+    "sweetalert": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/sweetalert/-/sweetalert-2.1.2.tgz",
+      "integrity": "sha512-iWx7X4anRBNDa/a+AdTmvAzQtkN1+s4j/JJRWlHpYE8Qimkohs8/XnFcWeYHH2lMA8LRCa5tj2d244If3S/hzA==",
+      "requires": {
+        "es6-object-assign": "^1.1.0",
+        "promise-polyfill": "^6.0.2"
+      }
+    },
+    "swr": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/swr/-/swr-1.0.1.tgz",
+      "integrity": "sha512-EPQAxSjoD4IaM49rpRHK0q+/NzcwoT8c0/Ylu/u3/6mFj/CWnQVjNJ0MV2Iuw/U+EJSd2TX5czdAwKPYZIG0YA==",
+      "requires": {
+        "dequal": "2.0.2"
+      }
+    },
+    "symbol-observable": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz",
+      "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ=="
+    },
+    "tapable": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz",
+      "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA=="
+    },
+    "tar": {
+      "version": "6.1.0",
+      "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz",
+      "integrity": "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==",
+      "requires": {
+        "chownr": "^2.0.0",
+        "fs-minipass": "^2.0.0",
+        "minipass": "^3.0.0",
+        "minizlib": "^2.1.1",
+        "mkdirp": "^1.0.3",
+        "yallist": "^4.0.0"
+      },
+      "dependencies": {
+        "mkdirp": {
+          "version": "1.0.4",
+          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+          "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw=="
+        }
+      }
+    },
+    "terser": {
+      "version": "4.8.0",
+      "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz",
+      "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==",
+      "requires": {
+        "commander": "^2.20.0",
+        "source-map": "~0.6.1",
+        "source-map-support": "~0.5.12"
+      }
+    },
+    "terser-webpack-plugin": {
+      "version": "1.4.5",
+      "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz",
+      "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==",
+      "requires": {
+        "cacache": "^12.0.2",
+        "find-cache-dir": "^2.1.0",
+        "is-wsl": "^1.1.0",
+        "schema-utils": "^1.0.0",
+        "serialize-javascript": "^4.0.0",
+        "source-map": "^0.6.1",
+        "terser": "^4.1.2",
+        "webpack-sources": "^1.4.0",
+        "worker-farm": "^1.7.0"
+      },
+      "dependencies": {
+        "cacache": {
+          "version": "12.0.4",
+          "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz",
+          "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==",
+          "requires": {
+            "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"
+          }
+        },
+        "chownr": {
+          "version": "1.1.4",
+          "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
+          "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg=="
+        },
+        "find-cache-dir": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
+          "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==",
+          "requires": {
+            "commondir": "^1.0.1",
+            "make-dir": "^2.0.0",
+            "pkg-dir": "^3.0.0"
+          }
+        },
+        "find-up": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+          "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+          "requires": {
+            "locate-path": "^3.0.0"
+          }
+        },
+        "locate-path": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+          "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+          "requires": {
+            "p-locate": "^3.0.0",
+            "path-exists": "^3.0.0"
+          }
+        },
+        "lru-cache": {
+          "version": "5.1.1",
+          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+          "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+          "requires": {
+            "yallist": "^3.0.2"
+          }
+        },
+        "make-dir": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
+          "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
+          "requires": {
+            "pify": "^4.0.1",
+            "semver": "^5.6.0"
+          }
+        },
+        "p-locate": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+          "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+          "requires": {
+            "p-limit": "^2.0.0"
+          }
+        },
+        "path-exists": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+          "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU="
+        },
+        "pkg-dir": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
+          "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
+          "requires": {
+            "find-up": "^3.0.0"
+          }
+        },
+        "rimraf": {
+          "version": "2.7.1",
+          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+          "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+          "requires": {
+            "glob": "^7.1.3"
+          }
+        },
+        "schema-utils": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
+          "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+          "requires": {
+            "ajv": "^6.1.0",
+            "ajv-errors": "^1.0.0",
+            "ajv-keywords": "^3.1.0"
+          }
+        },
+        "ssri": {
+          "version": "6.0.1",
+          "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz",
+          "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==",
+          "requires": {
+            "figgy-pudding": "^3.5.1"
+          }
+        },
+        "yallist": {
+          "version": "3.1.1",
+          "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+          "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
+        }
+      }
+    },
+    "through": {
+      "version": "2.3.8",
+      "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+      "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU="
+    },
+    "through2": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
+      "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
+      "requires": {
+        "readable-stream": "~2.3.6",
+        "xtend": "~4.0.1"
+      }
+    },
+    "timers-browserify": {
+      "version": "2.0.12",
+      "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz",
+      "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==",
+      "requires": {
+        "setimmediate": "^1.0.4"
+      }
+    },
+    "tiny-inflate": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz",
+      "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw=="
+    },
+    "tiny-invariant": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.1.0.tgz",
+      "integrity": "sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw=="
+    },
+    "tiny-warning": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz",
+      "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA=="
+    },
+    "tinycolor2": {
+      "version": "1.4.2",
+      "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.2.tgz",
+      "integrity": "sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA=="
+    },
+    "to-arraybuffer": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
+      "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M="
+    },
+    "to-fast-properties": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+      "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4="
+    },
+    "to-object-path": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
+      "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
+      "requires": {
+        "kind-of": "^3.0.2"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "to-regex": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
+      "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
+      "requires": {
+        "define-property": "^2.0.2",
+        "extend-shallow": "^3.0.2",
+        "regex-not": "^1.0.2",
+        "safe-regex": "^1.1.0"
+      }
+    },
+    "to-regex-range": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
+      "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+      "requires": {
+        "is-number": "^3.0.0",
+        "repeat-string": "^1.6.1"
+      }
+    },
+    "toidentifier": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
+      "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw=="
+    },
+    "tough-cookie": {
+      "version": "2.5.0",
+      "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
+      "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
+      "dev": true,
+      "requires": {
+        "psl": "^1.1.28",
+        "punycode": "^2.1.1"
+      }
+    },
+    "tr46": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz",
+      "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=",
+      "requires": {
+        "punycode": "^2.1.0"
+      }
+    },
+    "traverse": {
+      "version": "0.6.6",
+      "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz",
+      "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc="
+    },
+    "trim-newlines": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
+      "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
+      "dev": true
+    },
+    "true-case-path": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz",
+      "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==",
+      "dev": true,
+      "requires": {
+        "glob": "^7.1.2"
+      }
+    },
+    "ts-pnp": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz",
+      "integrity": "sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw=="
+    },
+    "tslib": {
+      "version": "1.14.1",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+      "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+    },
+    "tty-browserify": {
+      "version": "0.0.0",
+      "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz",
+      "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY="
+    },
+    "tunnel-agent": {
+      "version": "0.6.0",
+      "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
+      "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
+      "dev": true,
+      "requires": {
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "tweetnacl": {
+      "version": "0.14.5",
+      "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
+      "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
+      "dev": true
+    },
+    "type": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz",
+      "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg=="
+    },
+    "type-check": {
+      "version": "0.3.2",
+      "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
+      "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
+      "requires": {
+        "prelude-ls": "~1.1.2"
+      }
+    },
+    "type-fest": {
+      "version": "0.7.1",
+      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz",
+      "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg=="
+    },
+    "type-is": {
+      "version": "1.6.18",
+      "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
+      "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+      "requires": {
+        "media-typer": "0.3.0",
+        "mime-types": "~2.1.24"
+      }
+    },
+    "typed-styles": {
+      "version": "0.0.7",
+      "resolved": "https://registry.npmjs.org/typed-styles/-/typed-styles-0.0.7.tgz",
+      "integrity": "sha512-pzP0PWoZUhsECYjABgCGQlRGL1n7tOHsgwYv3oIiEpJwGhFTuty/YNeduxQYzXXa3Ge5BdT6sHYIQYpl4uJ+5Q=="
+    },
+    "typedarray": {
+      "version": "0.0.6",
+      "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+      "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c="
+    },
+    "ua-parser-js": {
+      "version": "0.7.24",
+      "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.24.tgz",
+      "integrity": "sha512-yo+miGzQx5gakzVK3QFfN0/L9uVhosXBBO7qmnk7c2iw1IhL212wfA3zbnI54B0obGwC/5NWub/iT9sReMx+Fw=="
+    },
+    "uc.micro": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz",
+      "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA=="
+    },
+    "unbox-primitive": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz",
+      "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==",
+      "requires": {
+        "function-bind": "^1.1.1",
+        "has-bigints": "^1.0.1",
+        "has-symbols": "^1.0.2",
+        "which-boxed-primitive": "^1.0.2"
+      }
+    },
+    "unicode-canonical-property-names-ecmascript": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz",
+      "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ=="
+    },
+    "unicode-match-property-ecmascript": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz",
+      "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==",
+      "requires": {
+        "unicode-canonical-property-names-ecmascript": "^1.0.4",
+        "unicode-property-aliases-ecmascript": "^1.0.4"
+      }
+    },
+    "unicode-match-property-value-ecmascript": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz",
+      "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ=="
+    },
+    "unicode-properties": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/unicode-properties/-/unicode-properties-1.3.1.tgz",
+      "integrity": "sha512-nIV3Tf3LcUEZttY/2g4ZJtGXhWwSkuLL+rCu0DIAMbjyVPj+8j5gNVz4T/sVbnQybIsd5SFGkPKg/756OY6jlA==",
+      "requires": {
+        "base64-js": "^1.3.0",
+        "unicode-trie": "^2.0.0"
+      },
+      "dependencies": {
+        "pako": {
+          "version": "0.2.9",
+          "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz",
+          "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU="
+        },
+        "unicode-trie": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-2.0.0.tgz",
+          "integrity": "sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==",
+          "requires": {
+            "pako": "^0.2.5",
+            "tiny-inflate": "^1.0.0"
+          }
+        }
+      }
+    },
+    "unicode-property-aliases-ecmascript": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz",
+      "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg=="
+    },
+    "unicode-trie": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-1.0.0.tgz",
+      "integrity": "sha512-v5raLKsobbFbWLMoX9+bChts/VhPPj3XpkNr/HbqkirXR1DPk8eo9IYKyvk0MQZFkaoRsFj2Rmaqgi2rfAZYtA==",
+      "requires": {
+        "pako": "^0.2.5",
+        "tiny-inflate": "^1.0.0"
+      },
+      "dependencies": {
+        "pako": {
+          "version": "0.2.9",
+          "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz",
+          "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU="
+        }
+      }
+    },
+    "union-value": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
+      "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
+      "requires": {
+        "arr-union": "^3.1.0",
+        "get-value": "^2.0.6",
+        "is-extendable": "^0.1.1",
+        "set-value": "^2.0.1"
+      }
+    },
+    "uniq": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz",
+      "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8="
+    },
+    "unique-filename": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz",
+      "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==",
+      "requires": {
+        "unique-slug": "^2.0.0"
+      }
+    },
+    "unique-slug": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz",
+      "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==",
+      "requires": {
+        "imurmurhash": "^0.1.4"
+      }
+    },
+    "unpipe": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+      "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
+    },
+    "unset-value": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
+      "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
+      "requires": {
+        "has-value": "^0.3.1",
+        "isobject": "^3.0.0"
+      },
+      "dependencies": {
+        "has-value": {
+          "version": "0.3.1",
+          "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
+          "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
+          "requires": {
+            "get-value": "^2.0.3",
+            "has-values": "^0.1.4",
+            "isobject": "^2.0.0"
+          },
+          "dependencies": {
+            "isobject": {
+              "version": "2.1.0",
+              "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
+              "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+              "requires": {
+                "isarray": "1.0.0"
+              }
+            }
+          }
+        },
+        "has-values": {
+          "version": "0.1.4",
+          "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
+          "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E="
+        }
+      }
+    },
+    "upath": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz",
+      "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg=="
+    },
+    "uri-js": {
+      "version": "4.4.1",
+      "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+      "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+      "requires": {
+        "punycode": "^2.1.0"
+      }
+    },
+    "urix": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
+      "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI="
+    },
+    "url": {
+      "version": "0.11.0",
+      "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
+      "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
+      "requires": {
+        "punycode": "1.3.2",
+        "querystring": "0.2.0"
+      },
+      "dependencies": {
+        "punycode": {
+          "version": "1.3.2",
+          "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
+          "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0="
+        },
+        "querystring": {
+          "version": "0.2.0",
+          "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
+          "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA="
+        }
+      }
+    },
+    "url-loader": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-1.1.2.tgz",
+      "integrity": "sha512-dXHkKmw8FhPqu8asTc1puBfe3TehOCo2+RmOOev5suNCIYBcT626kxiWg1NBVkwc4rO8BGa7gP70W7VXuqHrjg==",
+      "dev": true,
+      "requires": {
+        "loader-utils": "^1.1.0",
+        "mime": "^2.0.3",
+        "schema-utils": "^1.0.0"
+      },
+      "dependencies": {
+        "json5": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
+          "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+          "dev": true,
+          "requires": {
+            "minimist": "^1.2.0"
+          }
+        },
+        "loader-utils": {
+          "version": "1.4.0",
+          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz",
+          "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
+          "dev": true,
+          "requires": {
+            "big.js": "^5.2.2",
+            "emojis-list": "^3.0.0",
+            "json5": "^1.0.1"
+          }
+        },
+        "mime": {
+          "version": "2.5.2",
+          "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz",
+          "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==",
+          "dev": true
+        },
+        "schema-utils": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
+          "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+          "dev": true,
+          "requires": {
+            "ajv": "^6.1.0",
+            "ajv-errors": "^1.0.0",
+            "ajv-keywords": "^3.1.0"
+          }
+        }
+      }
+    },
+    "use": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
+      "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ=="
+    },
+    "use-subscription": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/use-subscription/-/use-subscription-1.4.1.tgz",
+      "integrity": "sha512-7+IIwDG/4JICrWHL/Q/ZPK5yozEnvRm6vHImu0LKwQlmWGKeiF7mbAenLlK/cTNXrTtXHU/SFASQHzB6+oSJMQ==",
+      "requires": {
+        "object-assign": "^4.1.1"
+      }
+    },
+    "util": {
+      "version": "0.10.3",
+      "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
+      "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
+      "requires": {
+        "inherits": "2.0.1"
+      },
+      "dependencies": {
+        "inherits": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
+          "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE="
+        }
+      }
+    },
+    "util-deprecate": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
+    },
+    "utils-merge": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+      "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
+    },
+    "uuid": {
+      "version": "3.4.0",
+      "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
+      "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
+      "dev": true
+    },
+    "validate-npm-package-license": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
+      "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
+      "dev": true,
+      "requires": {
+        "spdx-correct": "^3.0.0",
+        "spdx-expression-parse": "^3.0.0"
+      }
+    },
+    "validator": {
+      "version": "10.11.0",
+      "resolved": "https://registry.npmjs.org/validator/-/validator-10.11.0.tgz",
+      "integrity": "sha512-X/p3UZerAIsbBfN/IwahhYaBbY68EN/UQBWHtsbXGT5bfrH/p4NQzUCG1kF/rtKaNpnJ7jAu6NGTdSNtyNIXMw=="
+    },
+    "value-equal": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz",
+      "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw=="
+    },
+    "vary": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+      "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
+    },
+    "verror": {
+      "version": "1.10.0",
+      "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
+      "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
+      "dev": true,
+      "requires": {
+        "assert-plus": "^1.0.0",
+        "core-util-is": "1.0.2",
+        "extsprintf": "^1.2.0"
+      }
+    },
+    "vm-browserify": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz",
+      "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ=="
+    },
+    "warning": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz",
+      "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==",
+      "requires": {
+        "loose-envify": "^1.0.0"
+      }
+    },
+    "watchpack": {
+      "version": "2.0.0-beta.13",
+      "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.0.0-beta.13.tgz",
+      "integrity": "sha512-ZEFq2mx/k5qgQwgi6NOm+2ImICb8ngAkA/rZ6oyXZ7SgPn3pncf+nfhYTCrs3lmHwOxnPtGLTOuFLfpSMh1VMA==",
+      "requires": {
+        "glob-to-regexp": "^0.4.1",
+        "graceful-fs": "^4.1.2"
+      }
+    },
+    "watchpack-chokidar2": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz",
+      "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==",
+      "optional": true,
+      "requires": {
+        "chokidar": "^2.1.8"
+      }
+    },
+    "weather-icons": {
+      "version": "github:erikflowers/weather-icons#c78b6af3853239d36e0dd7fa056d484b42ddd461",
+      "from": "github:erikflowers/weather-icons"
+    },
+    "web-vitals": {
+      "version": "0.2.4",
+      "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-0.2.4.tgz",
+      "integrity": "sha512-6BjspCO9VriYy12z356nL6JBS0GYeEcA457YyRzD+dD6XYCQ75NKhcOHUMHentOE7OcVCIXXDvOm0jKFfQG2Gg=="
+    },
+    "webidl-conversions": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
+      "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg=="
+    },
+    "webpack": {
+      "version": "4.44.1",
+      "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.44.1.tgz",
+      "integrity": "sha512-4UOGAohv/VGUNQJstzEywwNxqX417FnjZgZJpJQegddzPmTvph37eBIRbRTfdySXzVtJXLJfbMN3mMYhM6GdmQ==",
+      "requires": {
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/helper-module-context": "1.9.0",
+        "@webassemblyjs/wasm-edit": "1.9.0",
+        "@webassemblyjs/wasm-parser": "1.9.0",
+        "acorn": "^6.4.1",
+        "ajv": "^6.10.2",
+        "ajv-keywords": "^3.4.1",
+        "chrome-trace-event": "^1.0.2",
+        "enhanced-resolve": "^4.3.0",
+        "eslint-scope": "^4.0.3",
+        "json-parse-better-errors": "^1.0.2",
+        "loader-runner": "^2.4.0",
+        "loader-utils": "^1.2.3",
+        "memory-fs": "^0.4.1",
+        "micromatch": "^3.1.10",
+        "mkdirp": "^0.5.3",
+        "neo-async": "^2.6.1",
+        "node-libs-browser": "^2.2.1",
+        "schema-utils": "^1.0.0",
+        "tapable": "^1.1.3",
+        "terser-webpack-plugin": "^1.4.3",
+        "watchpack": "^1.7.4",
+        "webpack-sources": "^1.4.1"
+      },
+      "dependencies": {
+        "anymatch": {
+          "version": "3.1.1",
+          "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz",
+          "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==",
+          "optional": true,
+          "requires": {
+            "normalize-path": "^3.0.0",
+            "picomatch": "^2.0.4"
+          }
+        },
+        "binary-extensions": {
+          "version": "2.2.0",
+          "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
+          "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
+          "optional": true
+        },
+        "braces": {
+          "version": "3.0.2",
+          "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+          "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+          "optional": true,
+          "requires": {
+            "fill-range": "^7.0.1"
+          }
+        },
+        "chokidar": {
+          "version": "3.5.1",
+          "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz",
+          "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==",
+          "optional": true,
+          "requires": {
+            "anymatch": "~3.1.1",
+            "braces": "~3.0.2",
+            "fsevents": "~2.3.1",
+            "glob-parent": "~5.1.0",
+            "is-binary-path": "~2.1.0",
+            "is-glob": "~4.0.1",
+            "normalize-path": "~3.0.0",
+            "readdirp": "~3.5.0"
+          }
+        },
+        "fill-range": {
+          "version": "7.0.1",
+          "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+          "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+          "optional": true,
+          "requires": {
+            "to-regex-range": "^5.0.1"
+          }
+        },
+        "fsevents": {
+          "version": "2.3.2",
+          "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
+          "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+          "optional": true
+        },
+        "glob-parent": {
+          "version": "5.1.2",
+          "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+          "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+          "optional": true,
+          "requires": {
+            "is-glob": "^4.0.1"
+          }
+        },
+        "is-binary-path": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+          "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+          "optional": true,
+          "requires": {
+            "binary-extensions": "^2.0.0"
+          }
+        },
+        "is-number": {
+          "version": "7.0.0",
+          "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+          "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+          "optional": true
+        },
+        "json5": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
+          "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+          "requires": {
+            "minimist": "^1.2.0"
+          }
+        },
+        "loader-utils": {
+          "version": "1.4.0",
+          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz",
+          "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
+          "requires": {
+            "big.js": "^5.2.2",
+            "emojis-list": "^3.0.0",
+            "json5": "^1.0.1"
+          }
+        },
+        "readdirp": {
+          "version": "3.5.0",
+          "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz",
+          "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==",
+          "optional": true,
+          "requires": {
+            "picomatch": "^2.2.1"
+          }
+        },
+        "schema-utils": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
+          "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+          "requires": {
+            "ajv": "^6.1.0",
+            "ajv-errors": "^1.0.0",
+            "ajv-keywords": "^3.1.0"
+          }
+        },
+        "to-regex-range": {
+          "version": "5.0.1",
+          "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+          "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+          "optional": true,
+          "requires": {
+            "is-number": "^7.0.0"
+          }
+        },
+        "watchpack": {
+          "version": "1.7.5",
+          "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz",
+          "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==",
+          "requires": {
+            "chokidar": "^3.4.1",
+            "graceful-fs": "^4.1.2",
+            "neo-async": "^2.5.0",
+            "watchpack-chokidar2": "^2.0.1"
+          }
+        }
+      }
+    },
+    "webpack-sources": {
+      "version": "1.4.3",
+      "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz",
+      "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==",
+      "requires": {
+        "source-list-map": "^2.0.0",
+        "source-map": "~0.6.1"
+      }
+    },
+    "whatwg-fetch": {
+      "version": "3.6.2",
+      "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz",
+      "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA=="
+    },
+    "whatwg-url": {
+      "version": "7.1.0",
+      "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz",
+      "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==",
+      "requires": {
+        "lodash.sortby": "^4.7.0",
+        "tr46": "^1.0.1",
+        "webidl-conversions": "^4.0.2"
+      }
+    },
+    "which": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+      "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+      "dev": true,
+      "requires": {
+        "isexe": "^2.0.0"
+      }
+    },
+    "which-boxed-primitive": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
+      "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
+      "requires": {
+        "is-bigint": "^1.0.1",
+        "is-boolean-object": "^1.1.0",
+        "is-number-object": "^1.0.4",
+        "is-string": "^1.0.5",
+        "is-symbol": "^1.0.3"
+      }
+    },
+    "which-module": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
+      "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
+      "dev": true
+    },
+    "whirl": {
+      "version": "github:themicon/whirl#dd1415204d2584126ab75c61d7b4098d7fffd6f2",
+      "from": "github:themicon/whirl"
+    },
+    "wide-align": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
+      "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
+      "requires": {
+        "string-width": "^1.0.2 || 2"
+      }
+    },
+    "word-wrap": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
+      "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ=="
+    },
+    "worker-farm": {
+      "version": "1.7.0",
+      "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz",
+      "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==",
+      "requires": {
+        "errno": "~0.1.7"
+      }
+    },
+    "wrap-ansi": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
+      "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
+      "dev": true,
+      "requires": {
+        "ansi-styles": "^3.2.0",
+        "string-width": "^3.0.0",
+        "strip-ansi": "^5.0.0"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "4.1.0",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+          "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+          "dev": true
+        },
+        "is-fullwidth-code-point": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+          "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+          "dev": true
+        },
+        "string-width": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+          "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+          "dev": true,
+          "requires": {
+            "emoji-regex": "^7.0.1",
+            "is-fullwidth-code-point": "^2.0.0",
+            "strip-ansi": "^5.1.0"
+          }
+        },
+        "strip-ansi": {
+          "version": "5.2.0",
+          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+          "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^4.1.0"
+          }
+        }
+      }
+    },
+    "wrappy": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+      "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
+    },
+    "xmldoc": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/xmldoc/-/xmldoc-1.1.2.tgz",
+      "integrity": "sha512-ruPC/fyPNck2BD1dpz0AZZyrEwMOrWTO5lDdIXS91rs3wtm4j+T8Rp2o+zoOYkkAxJTZRPOSnOGei1egoRmKMQ==",
+      "requires": {
+        "sax": "^1.2.1"
+      }
+    },
+    "xtend": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+      "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
+    },
+    "y18n": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz",
+      "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ=="
+    },
+    "yallist": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+      "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+    },
+    "yaml": {
+      "version": "1.10.2",
+      "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
+      "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg=="
+    },
+    "yargs": {
+      "version": "13.3.2",
+      "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
+      "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
+      "dev": true,
+      "requires": {
+        "cliui": "^5.0.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": "^13.1.2"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "4.1.0",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+          "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+          "dev": true
+        },
+        "find-up": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+          "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+          "dev": true,
+          "requires": {
+            "locate-path": "^3.0.0"
+          }
+        },
+        "is-fullwidth-code-point": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+          "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+          "dev": true
+        },
+        "locate-path": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+          "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+          "dev": true,
+          "requires": {
+            "p-locate": "^3.0.0",
+            "path-exists": "^3.0.0"
+          }
+        },
+        "p-locate": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+          "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+          "dev": true,
+          "requires": {
+            "p-limit": "^2.0.0"
+          }
+        },
+        "path-exists": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+          "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+          "dev": true
+        },
+        "string-width": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+          "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+          "dev": true,
+          "requires": {
+            "emoji-regex": "^7.0.1",
+            "is-fullwidth-code-point": "^2.0.0",
+            "strip-ansi": "^5.1.0"
+          }
+        },
+        "strip-ansi": {
+          "version": "5.2.0",
+          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+          "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^4.1.0"
+          }
+        }
+      }
+    },
+    "yargs-parser": {
+      "version": "13.1.2",
+      "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
+      "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
+      "dev": true,
+      "requires": {
+        "camelcase": "^5.0.0",
+        "decamelize": "^1.2.0"
+      },
+      "dependencies": {
+        "camelcase": {
+          "version": "5.3.1",
+          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+          "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+          "dev": true
+        }
+      }
+    }
+  }
+}

+ 112 - 0
package.json

@@ -0,0 +1,112 @@
+{
+    "name": "angle",
+    "version": "0.0.0",
+    "description": "Angle - Bootstrap Admin Template",
+    "author": "@themicon_co",
+    "license": "https://wrapbootstrap.com/help/licenses",
+    "private": true,
+    "scripts": {
+        "dev": "(if exist .next rd /s /q .next 2>nul) && next",
+        "dev-server": "node server.js",
+        "build": "next build",
+        "start": "next start",
+        "preview": "npm run build && npm run start",
+        "now-build": "next build"
+    },
+    "dependencies": {
+        "@babel/polyfill": "7.2.5",
+        "@fortawesome/fontawesome-free": "5.15.3",
+        "@fullcalendar/bootstrap": "4.4.2",
+        "@fullcalendar/core": "4.4.2",
+        "@fullcalendar/daygrid": "4.4.2",
+        "@fullcalendar/interaction": "4.4.2",
+        "@fullcalendar/list": "4.4.2",
+        "@fullcalendar/react": "4.4.2",
+        "@fullcalendar/timegrid": "4.4.2",
+        "@react-google-maps/api": "1.13.0",
+        "animate.css": "3.7.2",
+        "bootstrap": "4.6.0",
+        "canvas": "^2.7.0",
+        "chart.js": "2.9.4",
+        "chartist": "0.11.4",
+        "core-js": "2.5.7",
+        "cropper": "4.1.0",
+        "d3": "3.5.17",
+        "datatables.net": "1.10.24",
+        "datatables.net-bs": "1.10.24",
+        "datatables.net-bs4": "1.10.24",
+        "datatables.net-buttons": "1.7.0",
+        "datatables.net-buttons-bs": "1.7.0",
+        "datatables.net-keytable": "2.6.1",
+        "datatables.net-keytable-bs": "2.6.1",
+        "datatables.net-responsive": "2.2.7",
+        "datatables.net-responsive-bs": "2.2.7",
+        "deep-equal": "1.1.1",
+        "draft-js": "0.11.7",
+        "easy-pie-chart": "2.1.7",
+        "express": "4.17.1",
+        "flot": "themicon/flot",
+        "get-size": "2.0.3",
+        "history": "4.10.1",
+        "html5sortable": "0.11.1",
+        "ika.jvectormap": "themicon/ika.jvectormap",
+        "jqcloud2": "2.0.3",
+        "jquery": "3.6.0",
+        "jquery-knob": "1.2.11",
+        "jquery-sparkline": "2.4.0",
+        "jquery.easing": "1.4.1",
+        "jquery.flot.spline": "themicon/jquery.flot.spline",
+        "jquery.flot.tooltip": "krzysu/flot.tooltip",
+        "jszip": "3.6.0",
+        "loaders.css": "0.1.2",
+        "matchmedia": "0.1.2",
+        "moment": "^2.29.1",
+        "morris.js.so": "0.5.1",
+        "nestable": "themicon/nestable",
+        "next": "9.5.5",
+        "next-iron-session": "^4.2.0",
+        "pdfmake": "0.1.70",
+        "raf": "3.4.1",
+        "raphael": "2.3.0",
+        "rc-slider": "8.7.1",
+        "react": "17.0.1",
+        "react-chartist": "0.14.4",
+        "react-chartjs-2": "2.11.1",
+        "react-color": "2.19.3",
+        "react-data-grid": "6.1.0",
+        "react-datetime": "2.16.3",
+        "react-dnd": "6.0.0",
+        "react-dnd-html5-backend": "6.0.0",
+        "react-dom": "17.0.1",
+        "react-draft-wysiwyg": "1.14.5",
+        "react-dropzone": "10.2.2",
+        "react-flot": "1.3.0",
+        "react-maskedinput": "4.0.1",
+        "react-perfect-scrollbar": "1.5.8",
+        "react-redux": "6.0.1",
+        "react-select": "3.0.4",
+        "react-toastify": "4.5.2",
+        "react-transition-group": "4.2.2",
+        "reactstrap": "^8.0.1",
+        "redux-devtools-extension": "^2.13.9",
+        "rtlcss": "2.6.2",
+        "screenfull": "3.3.3",
+        "simple-line-icons": "2.5.5",
+        "spinkit": "1.2.5",
+        "sweetalert": "2.1.2",
+        "swr": "^1.0.1",
+        "validator": "10.11.0",
+        "weather-icons": "erikflowers/weather-icons",
+        "whirl": "themicon/whirl"
+    },
+    "devDependencies": {
+        "@types/reactstrap": "^8.7.2",
+        "@zeit/next-css": "1.0.1",
+        "@zeit/next-sass": "1.0.1",
+        "cross-env": "5.2.1",
+        "file-loader": "3.0.1",
+        "imports-loader": "0.8.0",
+        "node-sass": "4.14.1",
+        "url-loader": "1.1.2"
+    }
+}

+ 84 - 0
pages/_app.js

@@ -0,0 +1,84 @@
+/*!
+ *
+ * Angle - Bootstrap Admin Template
+ *
+ * Version: 4.8
+ * Author: @themicon_co
+ * Website: http://themicon.co
+ * License: https://wrapbootstrap.com/help/licenses
+ *
+ */
+
+// Polyfills
+// ======================
+import '../polyfills.js';
+
+// App
+// ======================
+import App from 'next/app';
+import React from 'react';
+// Redux support
+import { Provider } from 'react-redux';
+import withReduxStore from '../store/with-redux-store';
+// Translation support
+import * as Translate from '@/components/Common/Translate';
+// Base Layout
+import Base from '@/components/Layout/Base';
+// import BaseHorizontal from '@/components/Layout/BaseHorizontal';
+
+// Global Vendor
+// ======================
+// Whirl
+import 'whirl/dist/whirl.css';
+// Font Awesome
+import '@fortawesome/fontawesome-free/css/brands.css';
+import '@fortawesome/fontawesome-free/css/regular.css';
+import '@fortawesome/fontawesome-free/css/solid.css';
+import '@fortawesome/fontawesome-free/css/fontawesome.css';
+// Animate.CSS
+import 'animate.css/animate.min.css';
+// Simple line icons
+import 'simple-line-icons/css/simple-line-icons.css';
+// Weather Icons
+import 'weather-icons/css/weather-icons.min.css';
+import 'weather-icons/css/weather-icons-wind.min.css';
+
+// App Styes
+// ======================
+import '../styles/bootstrap.scss';
+import '../styles/app.scss';
+
+// https://nextjs.org/docs/#custom-app
+class MyApp extends App {
+    static async getInitialProps({ Component, ctx }) {
+        let pageProps = {};
+
+        if (Component.getInitialProps) {
+            pageProps = await Component.getInitialProps(ctx);
+        }
+
+        // Require the initial dictionary.
+        // Use require to avoid 'fs' module
+        Translate.setDict('en', require('@/public/static/locales/en/translations.json'));
+        // The store has been updated in previous call,
+        // pass it down as initial prop so client can use it.
+        return { pageProps, store: Translate.store };
+    }
+
+    render() {
+        const { Component, pageProps, reduxStore, store } = this.props;
+        const Layout = Component.Layout ? Component.Layout : Base;
+        const ComponentWithTranslation = Translate.withTranslation(Component);
+        return (
+            <Provider store={reduxStore}>
+                <Translate.Provider store={store}>
+                    <Layout>
+                        <ComponentWithTranslation {...pageProps} />
+                    </Layout>
+                </Translate.Provider>
+            </Provider>
+        );
+    }
+}
+
+export default withReduxStore(MyApp);

+ 25 - 0
pages/_error.js

@@ -0,0 +1,25 @@
+import React from 'react';
+import ContentWrapper from '@/components/Layout/ContentWrapper';
+
+// https://nextjs.org/docs/#custom-error-handling
+class Error extends React.Component {
+    static getInitialProps({ res, err }) {
+        const statusCode = res ? res.statusCode : err ? err.statusCode : null;
+        return {
+            namespacesRequired: ['translations'],
+            statusCode
+        };
+    }
+
+    render() {
+        return (
+            <ContentWrapper>
+                {this.props.statusCode
+                    ? `An error ${this.props.statusCode} occurred on server`
+                    : 'An error occurred on client'}
+            </ContentWrapper>
+        );
+    }
+}
+
+export default Error;

+ 3 - 0
pages/api/profile.js

@@ -0,0 +1,3 @@
+export default function handler(req, res) {
+    res.status(200).json({ text: 'Hello' })
+  }

+ 57 - 0
pages/app/PT-ID.json

@@ -0,0 +1,57 @@
+[
+    {
+        "id": "0BCE4DB7-B207-445D-8D03-0C54B7688252",
+        "kode": "031031",
+        "kode_satker": null,
+        "nama": "Universitas Satyagama",
+        "nama_singkat": "USG",
+        "sk_pendirian": "0742/O/1990",
+        "tgl_sk_pendirian": "1990-12-22",
+        "sk_operasional": null,
+        "tgl_sk_operasional": null,
+        "status": "A",
+        "alamat": {
+            "jalan": "Jalan Kamal Raya No 2-A Cengkareng",
+            "rt": null,
+            "rw": null,
+            "dusun": null,
+            "kelurahan": "-",
+            "kode_pos": "11730",
+            "kab_kota": {
+                "id": "016200",
+                "nama": "Kota Jakarta Barat"
+            }
+        },
+        "propinsi": {
+            "id": "010000",
+            "nama": "Prov. D.K.I. Jakarta"
+        },
+        "telepon": "(021) 5452377-78",
+        "faksimile": "(021) 54391325",
+        "website": "www.satyagama.ac.id",
+        "email": "info@satyagama.ac.id",
+        "status_milik": {
+            "id": "3",
+            "nama": "Yayasan"
+        },
+        "pembina": {
+            "id": "728989DD-251E-4516-BE2C-BA17A93A5C51",
+            "nama": "LLDIKTI III"
+        },
+        "bentuk_pendidikan": {
+            "id": "23",
+            "nama": "Universitas"
+        },
+        "last_update": "2021-12-08",
+        "negara": {
+            "id": "ID",
+            "nama": "Indonesia"
+        },
+        "pimpinan": {
+            "id": "D3D20B3D-0FBE-4706-8A70-67C4C09C8FBE",
+            "nama": "DEWI SULISTYANI",
+            "tmt_sk_pengangkatan": "2021-03-17",
+            "tst_sk_pengangkatan": "2025-03-17"
+        }
+    }
+]

+ 9 - 0
pages/app/calendar.js

@@ -0,0 +1,9 @@
+import React from 'react';
+import dynamic from 'next/dynamic';
+
+// https://github.com/fullcalendar/fullcalendar-react/issues/17
+const DynamicCalendar = dynamic(() => import('../../components/Extras/calendar.view.js'), {
+    ssr: false
+});
+
+export default () => <DynamicCalendar />;

+ 411 - 0
pages/app/faq.js

@@ -0,0 +1,411 @@
+import React, { Component } from 'react';
+import ContentWrapper from '@/components/Layout/ContentWrapper';
+import { Row, Col, Card, CardHeader, CardBody, CardTitle, Collapse } from 'reactstrap';
+
+class Faq extends Component {
+
+    state = {
+        oneAtATime: true,
+        accordionState: [
+            false, false, false, false, false, false,
+            false, false, false, false, false, false,
+            false, false, false, false, false, false
+        ]
+    }
+
+    /* id is the index in the accordionState array */
+    toggleAccordion = id => {
+        let accordionState = this.state.accordionState.map((val,i) => {
+            return id === i ? !val : (this.state.oneAtATime ? false : val)
+        })
+        this.setState({
+            accordionState
+        })
+    }
+
+    render() {
+        return (
+            <ContentWrapper>
+                <div className="container container-md">
+                    <Row className="mb-3">
+                        <Col lg="8">
+                            <div className="h1 text-bold">FAQs</div>
+                            <p className="text-muted">Praesent id mauris urna, et tristique lectus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>
+                        </Col>
+                        <Col lg="4">
+                            <Card>
+                                <CardBody className="text-center">
+                                    <p className="mb-3">Sed semper diam vitae purus tristique at scelerisque massa ultricies.</p>
+                                    <button className="btn btn-info" type="button">Contact support</button>
+                                </CardBody>
+                            </Card>
+                        </Col>
+                    </Row>
+                    <h4 className="my-3 py-4 text-dark">Some presale Questions</h4>
+                    <div>
+                        <Card className="b0 mb-2">
+                            <CardHeader onClick={() => this.toggleAccordion(0)}>
+                                <CardTitle tag="h4">
+                                    <a className="text-inherit">
+                                        <small>
+                                            <em className="fa fa-plus text-primary mr-2"></em>
+                                        </small>
+                                        <span>How can I change the color?</span>
+                                    </a>
+                                </CardTitle>
+                            </CardHeader>
+                            <Collapse isOpen={this.state.accordionState[0]}>
+                                <CardBody>
+                                    <p>Donec congue sagittis mi sit amet tincidunt. Quisque sollicitudin massa vel erat tincidunt blandit. Curabitur quis leo nulla. Phasellus faucibus placerat luctus. Integer fermentum molestie massa at congue. Quisque quis quam dictum diam volutpat adipiscing.</p>
+                                    <p>Proin ut urna enim.</p>
+                                    <div className="text-right">
+                                        <small className="text-muted mr-2">Was this information useful?</small>
+                                        <button className="btn btn-secondary btn-xs" type="button">
+                                            <em className="fa fa-thumbs-up text-muted"></em>
+                                        </button>
+                                        <button className="btn btn-secondary btn-xs" type="button">
+                                            <em className="fa fa-thumbs-down text-muted"></em>
+                                        </button>
+                                    </div>
+                                </CardBody>
+                            </Collapse>
+                        </Card>
+                        <Card className="b0 mb-2">
+                            <CardHeader onClick={() => this.toggleAccordion(1)}>
+                                <CardTitle tag="h4">
+                                    <a className="text-inherit">
+                                        <small>
+                                            <em className="fa fa-plus text-primary mr-2"></em>
+                                        </small>
+                                        <span>How can I change the color?</span>
+                                    </a>
+                                </CardTitle>
+                            </CardHeader>
+                            <Collapse isOpen={this.state.accordionState[1]}>
+                                <CardBody>
+                                    <p>Donec congue sagittis mi sit amet tincidunt. Quisque sollicitudin massa vel erat tincidunt blandit. Curabitur quis leo nulla. Phasellus faucibus placerat luctus. Integer fermentum molestie massa at congue. Quisque quis quam dictum diam volutpat adipiscing.</p>
+                                    <p>Proin ut urna enim.</p>
+                                    <div className="text-right">
+                                        <small className="text-muted mr-2">Was this information useful?</small>
+                                        <button className="btn btn-secondary btn-xs" type="button">
+                                            <em className="fa fa-thumbs-up text-muted"></em>
+                                        </button>
+                                        <button className="btn btn-secondary btn-xs" type="button">
+                                            <em className="fa fa-thumbs-down text-muted"></em>
+                                        </button>
+                                    </div>
+                                </CardBody>
+                            </Collapse>
+                        </Card>
+                        <Card className="b0 mb-2">
+                            <CardHeader onClick={() => this.toggleAccordion(2)}>
+                                <CardTitle tag="h4">
+                                    <a className="text-inherit">
+                                        <small>
+                                            <em className="fa fa-plus text-primary mr-2"></em>
+                                        </small>
+                                        <span>How can I change the color?</span>
+                                    </a>
+                                </CardTitle>
+                            </CardHeader>
+                            <Collapse isOpen={this.state.accordionState[2]}>
+                                <CardBody>
+                                    <p>Donec congue sagittis mi sit amet tincidunt. Quisque sollicitudin massa vel erat tincidunt blandit. Curabitur quis leo nulla. Phasellus faucibus placerat luctus. Integer fermentum molestie massa at congue. Quisque quis quam dictum diam volutpat adipiscing.</p>
+                                    <p>Proin ut urna enim.</p>
+                                    <div className="text-right">
+                                        <small className="text-muted mr-2">Was this information useful?</small>
+                                        <button className="btn btn-secondary btn-xs" type="button">
+                                            <em className="fa fa-thumbs-up text-muted"></em>
+                                        </button>
+                                        <button className="btn btn-secondary btn-xs" type="button">
+                                            <em className="fa fa-thumbs-down text-muted"></em>
+                                        </button>
+                                    </div>
+                                </CardBody>
+                            </Collapse>
+                        </Card>
+                        <Card className="b0 mb-2">
+                            <CardHeader onClick={() => this.toggleAccordion(3)}>
+                                <CardTitle tag="h4">
+                                    <a className="text-inherit">
+                                        <small>
+                                            <em className="fa fa-plus text-primary mr-2"></em>
+                                        </small>
+                                        <span>How can I change the color?</span>
+                                    </a>
+                                </CardTitle>
+                            </CardHeader>
+                            <Collapse isOpen={this.state.accordionState[3]}>
+                                <CardBody>
+                                    <p>Donec congue sagittis mi sit amet tincidunt. Quisque sollicitudin massa vel erat tincidunt blandit. Curabitur quis leo nulla. Phasellus faucibus placerat luctus. Integer fermentum molestie massa at congue. Quisque quis quam dictum diam volutpat adipiscing.</p>
+                                    <p>Proin ut urna enim.</p>
+                                    <div className="text-right">
+                                        <small className="text-muted mr-2">Was this information useful?</small>
+                                        <button className="btn btn-secondary btn-xs" type="button">
+                                            <em className="fa fa-thumbs-up text-muted"></em>
+                                        </button>
+                                        <button className="btn btn-secondary btn-xs" type="button">
+                                            <em className="fa fa-thumbs-down text-muted"></em>
+                                        </button>
+                                    </div>
+                                </CardBody>
+                            </Collapse>
+                        </Card>
+                        <Card className="b0 mb-2">
+                            <CardHeader onClick={() => this.toggleAccordion(4)}>
+                                <CardTitle tag="h4">
+                                    <a className="text-inherit">
+                                        <small>
+                                            <em className="fa fa-plus text-primary mr-2"></em>
+                                        </small>
+                                        <span>How can I change the color?</span>
+                                    </a>
+                                </CardTitle>
+                            </CardHeader>
+                            <Collapse isOpen={this.state.accordionState[4]}>
+                                <CardBody>
+                                    <p>Donec congue sagittis mi sit amet tincidunt. Quisque sollicitudin massa vel erat tincidunt blandit. Curabitur quis leo nulla. Phasellus faucibus placerat luctus. Integer fermentum molestie massa at congue. Quisque quis quam dictum diam volutpat adipiscing.</p>
+                                    <p>Proin ut urna enim.</p>
+                                    <div className="text-right">
+                                        <small className="text-muted mr-2">Was this information useful?</small>
+                                        <button className="btn btn-secondary btn-xs" type="button">
+                                            <em className="fa fa-thumbs-up text-muted"></em>
+                                        </button>
+                                        <button className="btn btn-secondary btn-xs" type="button">
+                                            <em className="fa fa-thumbs-down text-muted"></em>
+                                        </button>
+                                    </div>
+                                </CardBody>
+                            </Collapse>
+                        </Card>
+                    </div>
+                    <h4 className="my-3 py-4 text-dark">Buyer Questions</h4>
+                    <div>
+                        <Card className="b0 mb-2">
+                            <CardHeader onClick={() => this.toggleAccordion(5)}>
+                                <CardTitle tag="h4">
+                                    <a className="text-inherit">
+                                        <small>
+                                            <em className="fa fa-plus text-primary mr-2"></em>
+                                        </small>
+                                        <span>How can I change the color?</span>
+                                    </a>
+                                </CardTitle>
+                            </CardHeader>
+                            <Collapse isOpen={this.state.accordionState[5]}>
+                                <CardBody>
+                                    <p>Donec congue sagittis mi sit amet tincidunt. Quisque sollicitudin massa vel erat tincidunt blandit. Curabitur quis leo nulla. Phasellus faucibus placerat luctus. Integer fermentum molestie massa at congue. Quisque quis quam dictum diam volutpat adipiscing.</p>
+                                    <p>Proin ut urna enim.</p>
+                                    <div className="text-right">
+                                        <small className="text-muted mr-2">Was this information useful?</small>
+                                        <button className="btn btn-secondary btn-xs" type="button">
+                                            <em className="fa fa-thumbs-up text-muted"></em>
+                                        </button>
+                                        <button className="btn btn-secondary btn-xs" type="button">
+                                            <em className="fa fa-thumbs-down text-muted"></em>
+                                        </button>
+                                    </div>
+                                </CardBody>
+                            </Collapse>
+                        </Card>
+                        <Card className="b0 mb-2">
+                            <CardHeader onClick={() => this.toggleAccordion(6)}>
+                                <CardTitle tag="h4">
+                                    <a className="text-inherit">
+                                        <small>
+                                            <em className="fa fa-plus text-primary mr-2"></em>
+                                        </small>
+                                        <span>How can I change the color?</span>
+                                    </a>
+                                </CardTitle>
+                            </CardHeader>
+                            <Collapse isOpen={this.state.accordionState[6]}>
+                                <CardBody>
+                                    <p>Donec congue sagittis mi sit amet tincidunt. Quisque sollicitudin massa vel erat tincidunt blandit. Curabitur quis leo nulla. Phasellus faucibus placerat luctus. Integer fermentum molestie massa at congue. Quisque quis quam dictum diam volutpat adipiscing.</p>
+                                    <p>Proin ut urna enim.</p>
+                                    <div className="text-right">
+                                        <small className="text-muted mr-2">Was this information useful?</small>
+                                        <button className="btn btn-secondary btn-xs" type="button">
+                                            <em className="fa fa-thumbs-up text-muted"></em>
+                                        </button>
+                                        <button className="btn btn-secondary btn-xs" type="button">
+                                            <em className="fa fa-thumbs-down text-muted"></em>
+                                        </button>
+                                    </div>
+                                </CardBody>
+                            </Collapse>
+                        </Card>
+                        <Card className="b0 mb-2">
+                            <CardHeader onClick={() => this.toggleAccordion(7)}>
+                                <CardTitle tag="h4">
+                                    <a className="text-inherit">
+                                        <small>
+                                            <em className="fa fa-plus text-primary mr-2"></em>
+                                        </small>
+                                        <span>How can I change the color?</span>
+                                    </a>
+                                </CardTitle>
+                            </CardHeader>
+                            <Collapse isOpen={this.state.accordionState[7]}>
+                                <CardBody>
+                                    <p>Donec congue sagittis mi sit amet tincidunt. Quisque sollicitudin massa vel erat tincidunt blandit. Curabitur quis leo nulla. Phasellus faucibus placerat luctus. Integer fermentum molestie massa at congue. Quisque quis quam dictum diam volutpat adipiscing.</p>
+                                    <p>Proin ut urna enim.</p>
+                                    <div className="text-right">
+                                        <small className="text-muted mr-2">Was this information useful?</small>
+                                        <button className="btn btn-secondary btn-xs" type="button">
+                                            <em className="fa fa-thumbs-up text-muted"></em>
+                                        </button>
+                                        <button className="btn btn-secondary btn-xs" type="button">
+                                            <em className="fa fa-thumbs-down text-muted"></em>
+                                        </button>
+                                    </div>
+                                </CardBody>
+                            </Collapse>
+                        </Card>
+                        <Card className="b0 mb-2">
+                            <CardHeader onClick={() => this.toggleAccordion(8)}>
+                                <CardTitle tag="h4">
+                                    <a className="text-inherit">
+                                        <small>
+                                            <em className="fa fa-plus text-primary mr-2"></em>
+                                        </small>
+                                        <span>How can I change the color?</span>
+                                    </a>
+                                </CardTitle>
+                            </CardHeader>
+                            <Collapse isOpen={this.state.accordionState[8]}>
+                                <CardBody>
+                                    <p>Donec congue sagittis mi sit amet tincidunt. Quisque sollicitudin massa vel erat tincidunt blandit. Curabitur quis leo nulla. Phasellus faucibus placerat luctus. Integer fermentum molestie massa at congue. Quisque quis quam dictum diam volutpat adipiscing.</p>
+                                    <p>Proin ut urna enim.</p>
+                                    <div className="text-right">
+                                        <small className="text-muted mr-2">Was this information useful?</small>
+                                        <button className="btn btn-secondary btn-xs" type="button">
+                                            <em className="fa fa-thumbs-up text-muted"></em>
+                                        </button>
+                                        <button className="btn btn-secondary btn-xs" type="button">
+                                            <em className="fa fa-thumbs-down text-muted"></em>
+                                        </button>
+                                    </div>
+                                </CardBody>
+                            </Collapse>
+                        </Card>
+                    </div>
+                    <h4 className="my-3 py-4 text-dark">Seller Questions</h4>
+                    <div>
+                        <Card className="b0 mb-2">
+                            <CardHeader onClick={() => this.toggleAccordion(9)}>
+                                <CardTitle tag="h4">
+                                    <a className="text-inherit">
+                                        <small>
+                                            <em className="fa fa-plus text-primary mr-2"></em>
+                                        </small>
+                                        <span>How can I change the color?</span>
+                                    </a>
+                                </CardTitle>
+                            </CardHeader>
+                            <Collapse isOpen={this.state.accordionState[9]}>
+                                <CardBody>
+                                    <p>Donec congue sagittis mi sit amet tincidunt. Quisque sollicitudin massa vel erat tincidunt blandit. Curabitur quis leo nulla. Phasellus faucibus placerat luctus. Integer fermentum molestie massa at congue. Quisque quis quam dictum diam volutpat adipiscing.</p>
+                                    <p>Proin ut urna enim.</p>
+                                    <div className="text-right">
+                                        <small className="text-muted mr-2">Was this information useful?</small>
+                                        <button className="btn btn-secondary btn-xs" type="button">
+                                            <em className="fa fa-thumbs-up text-muted"></em>
+                                        </button>
+                                        <button className="btn btn-secondary btn-xs" type="button">
+                                            <em className="fa fa-thumbs-down text-muted"></em>
+                                        </button>
+                                    </div>
+                                </CardBody>
+                            </Collapse>
+                        </Card>
+                        <Card className="b0 mb-2">
+                            <CardHeader onClick={() => this.toggleAccordion(10)}>
+                                <CardTitle tag="h4">
+                                    <a className="text-inherit">
+                                        <small>
+                                            <em className="fa fa-plus text-primary mr-2"></em>
+                                        </small>
+                                        <span>How can I change the color?</span>
+                                    </a>
+                                </CardTitle>
+                            </CardHeader>
+                            <Collapse isOpen={this.state.accordionState[10]}>
+                                <CardBody>
+                                    <p>Donec congue sagittis mi sit amet tincidunt. Quisque sollicitudin massa vel erat tincidunt blandit. Curabitur quis leo nulla. Phasellus faucibus placerat luctus. Integer fermentum molestie massa at congue. Quisque quis quam dictum diam volutpat adipiscing.</p>
+                                    <p>Proin ut urna enim.</p>
+                                    <div className="text-right">
+                                        <small className="text-muted mr-2">Was this information useful?</small>
+                                        <button className="btn btn-secondary btn-xs" type="button">
+                                            <em className="fa fa-thumbs-up text-muted"></em>
+                                        </button>
+                                        <button className="btn btn-secondary btn-xs" type="button">
+                                            <em className="fa fa-thumbs-down text-muted"></em>
+                                        </button>
+                                    </div>
+                                </CardBody>
+                            </Collapse>
+                        </Card>
+                        <Card className="b0 mb-2">
+                            <CardHeader onClick={() => this.toggleAccordion(11)}>
+                                <CardTitle tag="h4">
+                                    <a className="text-inherit">
+                                        <small>
+                                            <em className="fa fa-plus text-primary mr-2"></em>
+                                        </small>
+                                        <span>How can I change the color?</span>
+                                    </a>
+                                </CardTitle>
+                            </CardHeader>
+                            <Collapse isOpen={this.state.accordionState[11]}>
+                                <CardBody>
+                                    <p>Donec congue sagittis mi sit amet tincidunt. Quisque sollicitudin massa vel erat tincidunt blandit. Curabitur quis leo nulla. Phasellus faucibus placerat luctus. Integer fermentum molestie massa at congue. Quisque quis quam dictum diam volutpat adipiscing.</p>
+                                    <p>Proin ut urna enim.</p>
+                                    <div className="text-right">
+                                        <small className="text-muted mr-2">Was this information useful?</small>
+                                        <button className="btn btn-secondary btn-xs" type="button">
+                                            <em className="fa fa-thumbs-up text-muted"></em>
+                                        </button>
+                                        <button className="btn btn-secondary btn-xs" type="button">
+                                            <em className="fa fa-thumbs-down text-muted"></em>
+                                        </button>
+                                    </div>
+                                </CardBody>
+                            </Collapse>
+                        </Card>
+                        <Card className="b0 mb-2">
+                            <CardHeader onClick={() => this.toggleAccordion(12)}>
+                                <CardTitle tag="h4">
+                                    <a className="text-inherit">
+                                        <small>
+                                            <em className="fa fa-plus text-primary mr-2"></em>
+                                        </small>
+                                        <span>How can I change the color?</span>
+                                    </a>
+                                </CardTitle>
+                            </CardHeader>
+                            <Collapse isOpen={this.state.accordionState[12]}>
+                                <CardBody>
+                                    <p>Donec congue sagittis mi sit amet tincidunt. Quisque sollicitudin massa vel erat tincidunt blandit. Curabitur quis leo nulla. Phasellus faucibus placerat luctus. Integer fermentum molestie massa at congue. Quisque quis quam dictum diam volutpat adipiscing.</p>
+                                    <p>Proin ut urna enim.</p>
+                                    <div className="text-right">
+                                        <small className="text-muted mr-2">Was this information useful?</small>
+                                        <button className="btn btn-secondary btn-xs" type="button">
+                                            <em className="fa fa-thumbs-up text-muted"></em>
+                                        </button>
+                                        <button className="btn btn-secondary btn-xs" type="button">
+                                            <em className="fa fa-thumbs-down text-muted"></em>
+                                        </button>
+                                    </div>
+                                </CardBody>
+                            </Collapse>
+                        </Card>
+                    </div>
+                </div>
+            </ContentWrapper>
+            );
+    }
+
+}
+
+export default Faq;

+ 907 - 0
pages/app/pelaporan.js

@@ -0,0 +1,907 @@
+import React, { Component } from "react";
+import Router from "next/router";
+import ContentWrapper from "@/components/Layout/ContentWrapper";
+import { Row, Col, Progress, Button } from "reactstrap";
+
+import Sparkline from "@/components/Common/Sparklines";
+import Scrollable from "@/components/Common/Scrollable";
+import Datatable from "@/components/Tables/Datatable";
+import moment from "moment";
+
+class BugTracker extends Component {
+	newReportClick = (e, PT_ID) => {
+		//router = useRouter();
+		//const query = { ptId: PT_ID };
+		//    '/app/profile'
+		e.preventDefault();
+		Router.push({
+			pathname: "/app/pelaporan.search",
+		});
+	};
+
+	render() {
+		return (
+			<ContentWrapper>
+				<div className="content-heading">Pelaporan</div>
+				<Row>
+					<Col lg="4">
+						{/* Aside card */}
+						<div className="card b">
+							<div className="card-body bb">
+								<p>Overvall progress</p>
+								<div className="d-flex align-items-center mb-2">
+									<div className="w-100">
+										<Progress className="progress-xs m0" color="info" value={20} />
+									</div>
+									<div className="ml-auto">
+										<div className="col wd-xxs text-right">
+											<div className="text-bold text-muted">20%</div>
+										</div>
+									</div>
+								</div>
+							</div>
+							<div className="card-body">
+								<p>Metrics</p>
+								<div className="row text-center">
+									<div className="col-6 col-lg-6 col-xl-6">
+										<Sparkline
+											values={[20, 80]}
+											options={{
+												type: "pie",
+												height: "50",
+												sliceColors: ["#edf1f2", "#23b7e5"],
+											}}
+											className="sparkline"
+										/>
+										<p className="mt-3">Open Case</p>
+									</div>
+									<div className="col-6 col-lg-6 col-xl-6">
+										<Sparkline
+											values={[80, 20]}
+											options={{
+												type: "pie",
+												height: "50",
+												sliceColors: ["#edf1f2", "#27c24c"],
+											}}
+											className="sparkline"
+										/>
+										<p className="mt-3">Close Case</p>
+									</div>
+									{/* <div className="col-3 col-lg-6 col-xl-3">
+                                     <Sparkline values={[20,80]}
+
+                                        options={{
+                                            type:"pie",
+                                            height:"50",
+                                            sliceColors:["#edf1f2", "#ff902b"]
+                                        }}
+                                        className="sparkline"/>
+                                        <p className="mt-3">Hours</p>
+                                    </div>
+                                    <div className="col-3 col-lg-6 col-xl-3">
+                                     <Sparkline values={[30,70]}
+
+                                        options={{
+                                            type:"pie",
+                                            height:"50",
+                                            sliceColors:["#edf1f2", "#f05050"]
+                                        }}
+                                        className="sparkline"/>
+                                        <p className="mt-3">Assigned</p>
+                                    </div> */}
+								</div>
+							</div>
+							<table className="table bb">
+								<tbody>
+									{/* <tr>
+                                        <td>
+                                            <strong>Assigned Hours</strong>
+                                        </td>
+                                        <td>68 hs</td>
+                                    </tr>
+                                    <tr>
+                                        <td>
+                                            <strong>Time Consumed</strong>
+                                        </td>
+                                        <td>32 hs</td>
+                                    </tr> */}
+									<tr>
+										<td>
+											<strong>Open Case</strong>
+										</td>
+										<td>80</td>
+									</tr>
+									<tr>
+										<td>
+											<strong>Close Case</strong>
+										</td>
+										<td>20</td>
+									</tr>
+									<tr>
+										<td>
+											<strong>Performance</strong>
+										</td>
+										<td>
+											<em className="far fa-smile fa-lg text-warning"></em>
+										</td>
+									</tr>
+									{/* <tr>
+                                        <td>
+                                            <strong>Commits</strong>
+                                        </td>
+                                        <td>140</td>
+                                    </tr> */}
+									{/* <tr>
+                                        <td>
+                                            <strong>Last Case Closed</strong>
+                                        </td>
+                                        <td>
+                                            <Scrollable height="120px" className="list-group">
+                                                <table className="table table-bordered bg-transparent">
+                                                    <tbody>
+                                                        <tr>
+                                                            <td>
+                                                                <a className="text-muted" href="">BI:54678</a>
+                                                            </td>
+                                                        </tr>
+                                                        <tr>
+                                                            <td>
+                                                                <a className="text-muted" href="">BI:55778</a>
+                                                            </td>
+                                                        </tr>
+                                                        <tr>
+                                                            <td>
+                                                                <a className="text-muted" href="">BI:56878</a>
+                                                            </td>
+                                                        </tr>
+                                                        <tr>
+                                                            <td>
+                                                                <a className="text-muted" href="">BI:57978</a>
+                                                            </td>
+                                                        </tr>
+                                                        <tr>
+                                                            <td>
+                                                                <a className="text-muted" href="">BI:1107</a>
+                                                            </td>
+                                                        </tr>
+                                                    </tbody>
+                                                </table>
+                                            </Scrollable>
+                                        </td>
+                                    </tr> */}
+									<tr>
+										<td>
+											<strong>Last Case Closed</strong>
+										</td>
+										<td>BI:1107 - 12/01/2016</td>
+									</tr>
+								</tbody>
+							</table>
+						</div>
+						{/* end Aside card */}
+					</Col>
+					<Col lg="8">
+						<div className="mb-3 d-flex">
+							<div>
+								<button className="btn btn-sm btn-info" type="button" onClick={(e) => this.newReportClick(e)}>
+									Laporan Baru
+								</button>
+							</div>
+						</div>
+						<div className="card b">
+							<div className="card-body">
+								<Datatable options={{ responsive: true }}>
+									<table className="table w-100">
+										<thead>
+											<tr>
+												{/* <th>Type</th> */}
+												<th>#ID</th>
+												<th>Description</th>
+												<th>Created</th>
+												{/* <th>Priority</th>
+                                                <th>Asigned</th> */}
+												<th>Status</th>
+												{/* <th>Action</th> */}
+											</tr>
+										</thead>
+										<tbody>
+											<tr>
+												{/* <td>
+                                                    <div className="badge bg-gray-lighter">bug</div>
+                                                </td> */}
+												<td>BI:54678</td>
+												<td className="text-nowrap">
+													<div className="media align-items-center">
+														<a className="mr-3" href="">
+															<img className="img-fluid rounded thumb64" src="/static/img/dummy-search.png" alt="Dummy" />
+														</a>
+														<div className="media-body d-flex">
+															<div>
+																<h4 className="m-0">Universitas Satyagama</h4>
+																<small className="text-muted">0742/O/1990 - www.satyagama.ac.id - info@satyagama.ac.id</small>
+																<p>Jalan Kamal Raya No 2-A Cengkareng</p>
+																<p> </p>
+															</div>
+															{/* <div className="ml-auto">
+                                                                <Button color="info" size="sm" onClick={(e) => this.handleClick(e, pt.id)}>Proses Sangsi</Button>
+                                                            </div> */}
+														</div>
+													</div>
+
+													{/* <small>Maecenas mollis egestas convallis.</small> */}
+												</td>
+												<td>{moment("2020-04-04 11:45:26.123").fromNow()}</td>
+												{/* <td>
+                                                    <div className="circle circle-lg bg-warning" data-title="normal"></div>
+                                                </td> */}
+												{/* <td>
+                                                    <a href="">Sylvia Daniels</a>
+                                                </td> */}
+												<td>
+													<div className="inline wd-xxs badge badge-success">open</div>
+												</td>
+												{/* <td>
+                                                    <div className="ml-auto">
+                                                        <button class="btn-oval btn btn-primary" size="sm" onClick={(e) => this.newProcessClick(e)}>Proses Sanksi</button>
+                                                    </div>
+                                                </td> */}
+											</tr>
+											{/* <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">bug</div>
+                                                </td>
+                                                <td>BI:55778</td>
+                                                <td className="text-nowrap">
+                                                    <small>Aliquam felis nibh, ultrices non elementum</small>
+                                                </td>
+                                                <td>01/05/2016</td>
+                                                <td>
+                                                    <div className="circle circle-lg" data-title="low"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Sherry Carroll</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-success">open</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">issue</div>
+                                                </td>
+                                                <td>BI:56878</td>
+                                                <td className="text-nowrap">
+                                                    <small>Aliquam condimentum enim a risus cursus blandit.</small>
+                                                </td>
+                                                <td>05/01/2016</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-warning" data-title="normal"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Mitchell Jones</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-warning">pending</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">issue</div>
+                                                </td>
+                                                <td>BI:57978</td>
+                                                <td className="text-nowrap">
+                                                    <small>Sed at libero augue, in euismod tellus.</small>
+                                                </td>
+                                                <td>01/11/2016</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-warning" data-title="normal"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Tracey Parker</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-warning">pending</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">bug</div>
+                                                </td>
+                                                <td>BI:1107</td>
+                                                <td className="text-nowrap">
+                                                    <small>Praesent lacinia ultricies neque.</small>
+                                                </td>
+                                                <td>01/01/2015</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-danger" data-title="high"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Warren Gray</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-danger">closed</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">issue</div>
+                                                </td>
+                                                <td>BI:1117</td>
+                                                <td className="text-nowrap">
+                                                    <small>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</small>
+                                                </td>
+                                                <td>11/05/2013</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-warning" data-title="normal"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Jackson Ramos</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-success">open</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">bug</div>
+                                                </td>
+                                                <td>BI:10127</td>
+                                                <td className="text-nowrap">
+                                                    <small>Pellentesque habitant morbi tristique</small>
+                                                </td>
+                                                <td>05/02/2014</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-warning" data-title="normal"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Ernest Berry</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-danger">closed</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">bug</div>
+                                                </td>
+                                                <td>BI:54678</td>
+                                                <td className="text-nowrap">
+                                                    <small>Integer venenatis ultrices vulputate.</small>
+                                                </td>
+                                                <td>01/01/2016</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-warning" data-title="normal"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Sylvia Daniels</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-success">open</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">issue</div>
+                                                </td>
+                                                <td>BI:55778</td>
+                                                <td className="text-nowrap">
+                                                    <small>Maecenas mollis egestas convallis.</small>
+                                                </td>
+                                                <td>01/05/2016</td>
+                                                <td>
+                                                    <div className="circle circle-lg" data-title="low"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Sherry Carroll</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-success">open</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">bug</div>
+                                                </td>
+                                                <td>BI:56878</td>
+                                                <td className="text-nowrap">
+                                                    <small>Maecenas mollis egestas convallis.</small>
+                                                </td>
+                                                <td>05/01/2016</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-warning" data-title="normal"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Mitchell Jones</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-warning">pending</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">issue</div>
+                                                </td>
+                                                <td>BI:57978</td>
+                                                <td className="text-nowrap">
+                                                    <small>Maecenas mollis egestas convallis.</small>
+                                                </td>
+                                                <td>01/11/2016</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-warning" data-title="normal"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Tracey Parker</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-warning">pending</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">bug</div>
+                                                </td>
+                                                <td>BI:1107</td>
+                                                <td className="text-nowrap">
+                                                    <small>Maecenas mollis egestas convallis.</small>
+                                                </td>
+                                                <td>01/01/2015</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-danger" data-title="high"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Warren Gray</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-danger">closed</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">issue</div>
+                                                </td>
+                                                <td>BI:1117</td>
+                                                <td className="text-nowrap">
+                                                    <small>Maecenas mollis egestas convallis.</small>
+                                                </td>
+                                                <td>11/05/2013</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-warning" data-title="normal"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Jackson Ramos</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-success">open</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">issue</div>
+                                                </td>
+                                                <td>BI:10127</td>
+                                                <td className="text-nowrap">
+                                                    <small>Maecenas mollis egestas convallis.</small>
+                                                </td>
+                                                <td>05/02/2014</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-warning" data-title="normal"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Ernest Berry</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-danger">closed</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">bug</div>
+                                                </td>
+                                                <td>BI:54678</td>
+                                                <td className="text-nowrap">
+                                                    <small>Maecenas mollis egestas convallis.</small>
+                                                </td>
+                                                <td>01/01/2016</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-warning" data-title="normal"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Sylvia Daniels</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-success">open</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">bug</div>
+                                                </td>
+                                                <td>BI:55778</td>
+                                                <td className="text-nowrap">
+                                                    <small>Maecenas mollis egestas convallis.</small>
+                                                </td>
+                                                <td>01/05/2016</td>
+                                                <td>
+                                                    <div className="circle circle-lg" data-title="low"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Sherry Carroll</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-success">open</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">bug</div>
+                                                </td>
+                                                <td>BI:56878</td>
+                                                <td className="text-nowrap">
+                                                    <small>Maecenas mollis egestas convallis.</small>
+                                                </td>
+                                                <td>05/01/2016</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-warning" data-title="normal"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Mitchell Jones</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-warning">pending</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">bug</div>
+                                                </td>
+                                                <td>BI:57978</td>
+                                                <td className="text-nowrap">
+                                                    <small>Maecenas mollis egestas convallis.</small>
+                                                </td>
+                                                <td>01/11/2016</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-warning" data-title="normal"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Tracey Parker</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-warning">pending</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">bug</div>
+                                                </td>
+                                                <td>BI:1107</td>
+                                                <td className="text-nowrap">
+                                                    <small>Maecenas mollis egestas convallis.</small>
+                                                </td>
+                                                <td>01/01/2015</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-danger" data-title="high"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Warren Gray</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-danger">closed</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">bug</div>
+                                                </td>
+                                                <td>BI:1117</td>
+                                                <td className="text-nowrap">
+                                                    <small>Maecenas mollis egestas convallis.</small>
+                                                </td>
+                                                <td>11/05/2013</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-warning" data-title="normal"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Jackson Ramos</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-success">open</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">issue</div>
+                                                </td>
+                                                <td>BI:10127</td>
+                                                <td className="text-nowrap">
+                                                    <small>Maecenas mollis egestas convallis.</small>
+                                                </td>
+                                                <td>05/02/2014</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-warning" data-title="normal"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Ernest Berry</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-danger">closed</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">issue</div>
+                                                </td>
+                                                <td>BI:54678</td>
+                                                <td className="text-nowrap">
+                                                    <small>Maecenas mollis egestas convallis.</small>
+                                                </td>
+                                                <td>01/01/2016</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-warning" data-title="normal"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Sylvia Daniels</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-success">open</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">issue</div>
+                                                </td>
+                                                <td>BI:55778</td>
+                                                <td className="text-nowrap">
+                                                    <small>Maecenas mollis egestas convallis.</small>
+                                                </td>
+                                                <td>01/05/2016</td>
+                                                <td>
+                                                    <div className="circle circle-lg" data-title="low"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Sherry Carroll</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-success">open</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">bug</div>
+                                                </td>
+                                                <td>BI:56878</td>
+                                                <td className="text-nowrap">
+                                                    <small>Maecenas mollis egestas convallis.</small>
+                                                </td>
+                                                <td>05/01/2016</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-warning" data-title="normal"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Mitchell Jones</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-warning">pending</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">bug</div>
+                                                </td>
+                                                <td>BI:57978</td>
+                                                <td className="text-nowrap">
+                                                    <small>Maecenas mollis egestas convallis.</small>
+                                                </td>
+                                                <td>01/11/2016</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-warning" data-title="normal"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Tracey Parker</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-warning">pending</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">bug</div>
+                                                </td>
+                                                <td>BI:1107</td>
+                                                <td className="text-nowrap">
+                                                    <small>Maecenas mollis egestas convallis.</small>
+                                                </td>
+                                                <td>01/01/2015</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-danger" data-title="high"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Warren Gray</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-danger">closed</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">issue</div>
+                                                </td>
+                                                <td>BI:1117</td>
+                                                <td className="text-nowrap">
+                                                    <small>Maecenas mollis egestas convallis.</small>
+                                                </td>
+                                                <td>11/05/2013</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-warning" data-title="normal"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Jackson Ramos</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-success">open</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">issue</div>
+                                                </td>
+                                                <td>BI:10127</td>
+                                                <td className="text-nowrap">
+                                                    <small>Maecenas mollis egestas convallis.</small>
+                                                </td>
+                                                <td>05/02/2014</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-warning" data-title="normal"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Ernest Berry</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-danger">closed</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">bug</div>
+                                                </td>
+                                                <td>BI:54678</td>
+                                                <td className="text-nowrap">
+                                                    <small>Maecenas mollis egestas convallis.</small>
+                                                </td>
+                                                <td>01/01/2016</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-warning" data-title="normal"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Sylvia Daniels</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-success">open</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">issue</div>
+                                                </td>
+                                                <td>BI:55778</td>
+                                                <td className="text-nowrap">
+                                                    <small>Maecenas mollis egestas convallis.</small>
+                                                </td>
+                                                <td>01/05/2016</td>
+                                                <td>
+                                                    <div className="circle circle-lg" data-title="low"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Sherry Carroll</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-success">open</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">issue</div>
+                                                </td>
+                                                <td>BI:56878</td>
+                                                <td className="text-nowrap">
+                                                    <small>Maecenas mollis egestas convallis.</small>
+                                                </td>
+                                                <td>05/01/2016</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-warning" data-title="normal"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Mitchell Jones</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-warning">pending</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">issue</div>
+                                                </td>
+                                                <td>BI:57978</td>
+                                                <td className="text-nowrap">
+                                                    <small>Maecenas mollis egestas convallis.</small>
+                                                </td>
+                                                <td>01/11/2016</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-warning" data-title="normal"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Tracey Parker</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-warning">pending</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">bug</div>
+                                                </td>
+                                                <td>BI:1107</td>
+                                                <td className="text-nowrap">
+                                                    <small>Maecenas mollis egestas convallis.</small>
+                                                </td>
+                                                <td>01/01/2015</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-danger" data-title="high"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Warren Gray</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-danger">closed</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">bug</div>
+                                                </td>
+                                                <td>BI:1117</td>
+                                                <td className="text-nowrap">
+                                                    <small>Maecenas mollis egestas convallis.</small>
+                                                </td>
+                                                <td>11/05/2013</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-warning" data-title="normal"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Jackson Ramos</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-success">open</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">issue</div>
+                                                </td>
+                                                <td>BI:10127</td>
+                                                <td className="text-nowrap">
+                                                    <small>Maecenas mollis egestas convallis.</small>
+                                                </td>
+                                                <td>05/02/2014</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-warning" data-title="normal"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Ernest Berry</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-danger">closed</div>
+                                                </td>
+                                            </tr> */}
+										</tbody>
+									</table>
+								</Datatable>
+							</div>
+						</div>
+					</Col>
+				</Row>
+			</ContentWrapper>
+		);
+	}
+}
+
+export default BugTracker;

+ 146 - 0
pages/app/pelaporan.new.js

@@ -0,0 +1,146 @@
+import React, { Component } from 'react';
+import ContentWrapper from '@/components/Layout/ContentWrapper';
+import {
+    Row,
+    Col,
+    Card,
+    CardHeader,
+    CardBody,
+    FormGroup,
+    FormFeedback,
+    FormText,
+    Label,
+    InputGroup,
+    InputGroupAddon,
+    InputGroupButtonDropdown,
+    InputGroupText,
+    Input,
+    Button,
+    DropdownToggle,
+    DropdownMenu,
+    CustomInput,
+    DropdownItem } from 'reactstrap';
+
+const styleHeaderText = {
+    color: 'brown'
+}
+class FormStandard extends Component {
+
+    state = {
+        dropdownOpen: false,
+        splitButtonOpen: false
+    }
+
+    toggleDropDown = () => {
+        this.setState({
+            dropdownOpen: !this.state.dropdownOpen
+        });
+    }
+
+    toggleSplit = () => {
+        this.setState({
+            splitButtonOpen: !this.state.splitButtonOpen
+        });
+    }
+
+    onSubmit = e => {
+        
+        e.preventDefault();
+    }
+
+    render() {
+
+        return (
+            <ContentWrapper unwrap>
+                <div className="bg-cover" style={{backgroundImage: 'url(/static/img/profile-bg.png)'}}>
+                    <div className="p-4 text-center" style={styleHeaderText} >
+                        <img className="img-thumbnail rounded-circle thumb128" src="/static/img/univ-avatar.png" alt="Avatar"/>
+                        <h3 className="m-0">Universitas Satyagama</h3>
+                        <p>0742/O/1990</p>
+                        <p>Jalan Kamal Raya No 2-A Cengkareng</p>
+                    </div>
+                </div>
+                <div className="p-3">
+                    <div className="content-heading">
+                        <div>Pelaporan Baru
+                            <small>Form pembuatan laporan baru v.0.1</small>
+                        </div>
+                    </div>
+                    <Row>
+                        <Col xl="9">
+                            {/* START card */}
+                            <Card className="card-default">
+                                <CardHeader>
+                                    <label>Informasi Laporan</label>    
+                                </CardHeader>
+                                <CardBody>
+                                    <form className="form-horizontal" method="get" action="/" onSubmit={this.onSubmit}>
+                                        {/* <fieldset> */}
+                                        <FormGroup row>
+                                            <label className="col-md-2 col-form-label">Nomor Pelaporan</label>
+                                            <div className="col-md-10">
+                                                <Input type="text"/>
+                                                <span className="form-text">Nomor pelaporan akan digenerate otomatis dari sistem</span>
+                                            </div>
+                                        </FormGroup>
+                                        {/* </fieldset> */}
+                                        <FormGroup row>
+                                            <label className="col-md-2 col-form-label">Keterangan Laporan</label>
+                                            <div className="col-md-10">
+                                                <Input type="textarea"/>
+                                                {/* <textarea class="form-control" id="inputContact6" row="3">Some nice Street, 1234</textarea> */}
+                                                <span className="form-text">Deskripsi pelaporan minimum karakter 50 maksimum 200 karakter</span>
+                                            </div>
+                                        </FormGroup>
+                                        <FormGroup row>
+                                            <label className="col-md-2 col-form-label">Upload File Pendukung</label>
+                                            <div className="col-md-10">
+                                                {/* <input type="file" multiple name="customFile" class="custom-file-input"></input> */}
+                                                <CustomInput
+                                                    type="file" multiple
+                                                    id="exampleCustomFileBrowser"
+                                                    name="customFile"
+                                                />
+                                                <span className="form-text">Multiple files upload</span>
+                                            </div>
+                                        </FormGroup>
+                                        <FormGroup row>
+                                            <div className="col-xl-10">
+                                                <button className="btn btn-sm btn-primary" type="submit">Submit Laporan</button>
+                                            </div>
+                                        </FormGroup>
+                                    </form>
+                                </CardBody>
+                            </Card>
+                            {/* END card */}
+                        </Col>
+                        <Col xl="3">
+                            <div className="card card-default">
+                                <div className="card-body">
+                                    <div className="text-center">
+                                        <h3 className="mt-0">Universitas Satyagama</h3>
+                                        <p>0742/O/1990</p>
+                                    </div>
+                                    <hr/>
+                                    <ul className="list-unstyled px-4">
+                                        <li>
+                                            <em className="fa fa-globe fa-fw mr-3"></em>www.satyagama.ac.id
+                                        </li>
+                                        <li>
+                                            <em className="fa fa-graduation-cap fa-fw mr-3"></em>Status Pelanggaran : Tidak Ada
+                                        </li>
+                                        
+                                    </ul>
+                                </div>
+                            </div>
+                        </Col>
+                    </Row>
+
+                </div>
+            </ContentWrapper>
+            );
+    }
+
+}
+
+export default FormStandard;

+ 321 - 0
pages/app/pelaporan.search.js

@@ -0,0 +1,321 @@
+import React, { Component } from 'react';
+import Router from 'next/router'
+import ContentWrapper from '@/components/Layout/ContentWrapper';
+import { Row, Col, Button, Table, Pagination, PaginationItem, PaginationLink } from 'reactstrap';
+// React Slider
+import Slider from 'rc-slider';
+import 'rc-slider/assets/index.css';
+// React Select
+import Select from 'react-select';
+// DateTimePicker
+import Datetime from 'react-datetime';
+import 'react-datetime/css/react-datetime.css';
+
+
+import https from 'https';
+
+
+
+import CardTool from '@/components/Common/CardTool'
+
+import dummyData from './PT-ID.json';
+
+var pembina = [];
+
+
+class Search extends Component {
+
+    
+
+    static async getInitialProps(ctx) {
+
+        pembina = [];
+        const httpsAgent = new https.Agent({
+            rejectUnauthorized: false,
+          });
+        
+        //API down 
+        //  const res = await fetch('https://api.kemdikbud.go.id:8243/pddikti/1.2/lembaga-non-sp', { 
+        //     method: 'get', 
+        //     headers: new Headers({
+        //       'Authorization': 'Bearer 5b62f743-eef2-3370-8c66-6951b2e9c2c5', 
+        //       'Accept': 'application/json'
+        //     }),
+        //     agent: httpsAgent
+        //   }
+        //  )
+
+        //API down 
+        //const jsonPembina = await res.json();
+          const jsonPembina = [
+              
+                { id: 'ABEAE958-4F20-40EF-B145-B8014EC98D8F', nama: 'Badan Intelijen Negara', singkatan: 'BIN' }
+
+            ]
+
+        //jsonPembina = JSON.parse(jsonPembina);
+        // id: "ABEAE958-4F20-40EF-B145-B8014EC98D8F",nama: "Badan Intelijen Negara",singkatan: "BIN"
+        // { value: 'australian-capital-territory', label: 'Australian Capital Territory', className: 'State-ACT' },
+
+
+
+        var numrows = jsonPembina.length;
+
+        for (var i = 0; i < numrows; i++) {
+            pembina.push({value:jsonPembina[i].id, label:jsonPembina[i].nama, className: 'State-'+jsonPembina[i].singkatan});
+        }
+
+        console.log('pembina : ', pembina);
+
+        
+        //return { data: json }
+      }
+
+    state = {
+        selectedOptionMulti: [],
+        data: []
+    }
+
+
+    handleChangeSelectMulti = (selectedOptionMulti) => {
+        this.setState({ selectedOptionMulti });
+    }
+
+    renderInputGroup = props => {
+        return (
+            <div className="input-group date">
+                <input className="form-control" {...props} />
+                <span className="input-group-append input-group-addon">
+                    <span className="input-group-text fas fa-calendar-alt"></span>
+                </span>
+            </div>
+        )
+    }
+
+    
+    
+
+
+    handleClick = (e, PT_ID) => {
+        //router = useRouter();
+        const query = { ptId: PT_ID };
+        //    '/app/profile'
+        e.preventDefault();
+        Router.push(
+            {
+                pathname: '/app/pelaporan.new',
+                query: { ptId: PT_ID }
+            }
+        );
+    }
+
+    fetchData = async () => {
+        var qPembina = "";
+        //console.log('this.state.selectedOptionMulti.value : ', this.state.selectedOptionMulti.value);
+        if (this.state.selectedOptionMulti.value !== undefined ){
+            qPembina = '&pembina='+this.state.selectedOptionMulti.value;
+        }
+
+        //console.log('qpembina : ', qPembina);
+        const searchValue = 'q='+document.getElementById('searchInput').value;
+
+        const httpsAgent = new https.Agent({
+            rejectUnauthorized: false,
+          });
+        
+          //console.log('post agent : ');
+
+
+         //const res = await fetch('https://api.kemdikbud.go.id:8243/pddikti/1.2/pt/707C3895-B546-4DA5-A6A7-EFE7461A7C7E', { 
+
+        //API Down
+        //  const res = await fetch('https://api.kemdikbud.go.id:8243/pddikti/1.2/pt?'+searchValue+qPembina, { 
+        //     method: 'get', 
+        //     headers: new Headers({
+        //       'Authorization': 'Bearer 5b62f743-eef2-3370-8c66-6951b2e9c2c5', 
+        //       'Accept': 'application/json'
+        //     }),
+        //     agent: httpsAgent
+        //   }
+        //  )
+         
+        //API Down
+        //const jsonData = await res.json();
+        const jsonData = dummyData;
+
+
+        this.setState({ data: jsonData });
+        console.log('jsonData : ', jsonData);
+        //Get unique for filter by pembina
+        // const uniquePembina = [
+        //     new Set(jsonData.map(
+        //         item => item.pembina.nama
+        //     ))
+        // ]
+
+
+    };
+
+
+    handleApplyClick = () => {
+        console.log('selectedOptionMulti : ',this.state.selectedOptionMulti);
+        //const dataTables = this.fetchData().jsonData;
+        this.fetchData();
+        //console.log('this.state.data :', this.state.data);
+        if (this.state.data.length > 0){
+            this.renderTableData();
+        }
+    }
+
+    handleSearchClick = () => {
+
+        //const dataTables = this.fetchData().jsonData;
+        this.fetchData();
+        //console.log('this.state.data :', this.state.data);
+        if (this.state.data.length > 0){
+            this.renderTableData();
+        }
+    }
+
+    renderTableData() {
+        //const dataTable = this.props.data;
+        //if (dataTable === true ) {
+
+
+            return this.state.data.map((pt,index) => {
+            return (
+                    <tr>
+                        <td>
+                            <label>{index+1}</label>
+                        </td>
+                        <td>
+                            <div className="media align-items-center">
+                                <a className="mr-3" href="">
+                                    <img className="img-fluid rounded thumb64" src="/static/img/dummy-search.png" alt="Dummy"/>
+                                </a>
+                                <div className="media-body d-flex">
+                                    <div>
+                                        <h4 className="m-0">{pt.nama}</h4>
+                                        <small className="text-muted">{pt.sk_pendirian} - {pt.website} - {pt.email}</small>
+                                        <p>{pt.alamat.jalan}</p>
+                                    </div>
+                                    <div className="ml-auto">
+                                        <Button color="info" size="sm" onClick={(e) => this.handleClick(e, pt.id)}>Buat Laporan</Button>
+                                    </div>
+                                </div>
+                            </div>
+                        </td>
+                    </tr>
+            )
+            })
+        //}
+     }
+
+    render() {
+        // used for react select
+        const { selectedOptionMulti } = this.state;
+
+        
+
+        return (
+            <ContentWrapper>
+                <div className="content-heading">
+                    <div>Pelaporan
+                        <small>Pilih Perguruan Tinggi</small>
+                    </div>
+                </div>
+                <Row>
+                    <Col lg="9">
+                        <div className="form-group mb-4">
+                            <input className="form-control mb-2" type="text" id='searchInput' placeholder="Pencarian Nama Perguruan Tinggi"/>
+                            <div className="d-flex">
+                                <button className="btn btn-secondary" type="button" onClick={(e) => this.handleSearchClick()}>Search</button>
+                                <div className="ml-auto">
+                                    {/* <label className="c-checkbox">
+                                        <input id="inlineCheckbox10" type="checkbox" defaultValue="option1"/>
+                                        <span className="fa fa-check"></span>Nama Perguruan Tinggi</label> */}
+                                    {/* <label className="c-checkbox">
+                                        <input id="inlineCheckbox20" type="checkbox" defaultValue="option2"/>
+                                        <span className="fa fa-check"></span>Pembina</label> */}
+                                    {/* <label className="c-checkbox">
+                                        <input id="inlineCheckbox30" type="checkbox" defaultValue="option3"/>
+                                        <span className="fa fa-check"></span>Apps</label> */}
+                                </div>
+                            </div>
+                        </div>
+                        {/* START card */}
+                        <div className="card card-default">
+                            <div className="card-header">
+                                {/* <CardTool refresh onRefresh={(_,done) => setTimeout(done,2000)}/> */}
+                                Search Results
+                            </div>
+                            {/* START table-responsive */}
+                            <Table striped bordered hover>
+                                <thead>
+                                    <tr>
+                                        {/* <th data-check-all="" className="wd-xxs">
+                                            <div className="checkbox c-checkbox">
+                                                <label className="m-0">
+                                                    <input type="checkbox"/>
+                                                    <span className="fa fa-check"></span>
+                                                </label>
+                                            </div>
+                                        </th> */}
+                                        <th>No. </th>
+                                        <th>Description</th>
+                                    </tr>
+                                </thead>
+                                <tbody>
+                                    {this.renderTableData()}
+
+                                </tbody>
+                            </Table>
+                            {/* END table-responsive */}
+                            <div className="card-footer">
+                                <div className="d-flex">
+                                    {/* <button className="btn btn-sm btn-secondary">Clear</button> */}
+                                    {/* <nav className="ml-auto">
+                                        <Pagination size="sm">
+                                            <PaginationItem active>
+                                                <PaginationLink>1</PaginationLink>
+                                            </PaginationItem>
+                                            <PaginationItem>
+                                                <PaginationLink>2</PaginationLink>
+                                            </PaginationItem>
+                                            <PaginationItem>
+                                                <PaginationLink>3</PaginationLink>
+                                            </PaginationItem>
+                                            <PaginationItem>
+                                                <PaginationLink next>»</PaginationLink>
+                                            </PaginationItem>
+                                        </Pagination>
+                                    </nav> */}
+                                </div>
+                            </div>
+                        </div>
+                        {/* END card */}
+                    </Col>
+                    <Col lg="3">
+                        <h3 className="m-0 pb-3">Filters</h3>
+                        <div className="form-group mb-4">
+                            <label className="col-form-label mb-2">by Pembina</label>
+                            <br/>
+                            <Select
+                                name="multi-select-name"
+                                multi
+                                simpleValue
+                                value={selectedOptionMulti}
+                                onChange={this.handleChangeSelectMulti}
+                                options={pembina}
+                            />
+                        </div>
+                        <Button color="secondary" size="lg" onClick={(e) => this.handleApplyClick()}>Apply</Button>
+                    </Col>
+                </Row>
+            </ContentWrapper>
+            );
+    }
+
+}
+
+export default Search;

+ 902 - 0
pages/app/pelaporan_bak.js

@@ -0,0 +1,902 @@
+import React, { Component } from 'react';
+import Router from 'next/router'
+import ContentWrapper from '@/components/Layout/ContentWrapper';
+import { Row, Col, Progress } from 'reactstrap';
+
+import Sparkline from '@/components/Common/Sparklines';
+import Scrollable from '@/components/Common/Scrollable'
+import Datatable from '@/components/Tables/Datatable';
+
+class BugTracker extends Component {
+
+    newReportClick = (e, PT_ID) => {
+        //router = useRouter();
+        //const query = { ptId: PT_ID };
+        //    '/app/profile'
+        e.preventDefault();
+        Router.push(
+            {
+               
+                pathname: '/app/pelaporan.search'
+            }
+        );
+    }
+
+    render() {
+        return (
+            <ContentWrapper>
+                <div className="content-heading">Pelaporan</div>
+                <Row>
+                    <Col lg="4">
+                        {/* Aside card */}
+                        <div className="card b">
+                            <div className="card-body bb">
+                                <p>Overvall progress</p>
+                                <div className="d-flex align-items-center mb-2">
+                                    <div className="w-100">
+                                        <Progress className="progress-xs m0" color="info" value={ 48 } />
+                                    </div>
+                                    <div className="ml-auto">
+                                        <div className="col wd-xxs text-right">
+                                            <div className="text-bold text-muted">48%</div>
+                                        </div>
+                                    </div>
+                                </div>
+                            </div>
+                            <div className="card-body">
+                                <p>Metrics</p>
+                                <div className="row text-center">
+                                    <div className="col-3 col-lg-6 col-xl-3">
+                                     <Sparkline values={[20,80]}
+
+                                        options={{
+                                            type:"pie",
+                                            height:"50",
+                                            sliceColors:["#edf1f2", "#23b7e5"]
+                                        }}
+                                        className="sparkline"/>
+                                        <p className="mt-3">Issues</p>
+                                    </div>
+                                    <div className="col-3 col-lg-6 col-xl-3">
+                                     <Sparkline values={[60,40]}
+
+                                        options={{
+                                            type:"pie",
+                                            height:"50",
+                                            sliceColors:["#edf1f2", "#27c24c"]
+                                        }}
+                                        className="sparkline"/>
+                                        <p className="mt-3">Bugs</p>
+                                    </div>
+                                    <div className="col-3 col-lg-6 col-xl-3">
+                                     <Sparkline values={[20,80]}
+
+                                        options={{
+                                            type:"pie",
+                                            height:"50",
+                                            sliceColors:["#edf1f2", "#ff902b"]
+                                        }}
+                                        className="sparkline"/>
+                                        <p className="mt-3">Hours</p>
+                                    </div>
+                                    <div className="col-3 col-lg-6 col-xl-3">
+                                     <Sparkline values={[30,70]}
+
+                                        options={{
+                                            type:"pie",
+                                            height:"50",
+                                            sliceColors:["#edf1f2", "#f05050"]
+                                        }}
+                                        className="sparkline"/>
+                                        <p className="mt-3">Assigned</p>
+                                    </div>
+                                </div>
+                            </div>
+                            <table className="table bb">
+                                <tbody>
+                                    <tr>
+                                        <td>
+                                            <strong>Assigned Hours</strong>
+                                        </td>
+                                        <td>68 hs</td>
+                                    </tr>
+                                    <tr>
+                                        <td>
+                                            <strong>Time Consumed</strong>
+                                        </td>
+                                        <td>32 hs</td>
+                                    </tr>
+                                    <tr>
+                                        <td>
+                                            <strong>Issues</strong>
+                                        </td>
+                                        <td>19</td>
+                                    </tr>
+                                    <tr>
+                                        <td>
+                                            <strong>Bugs</strong>
+                                        </td>
+                                        <td>16</td>
+                                    </tr>
+                                    <tr>
+                                        <td>
+                                            <strong>Health</strong>
+                                        </td>
+                                        <td>
+                                            <em className="far fa-smile fa-lg text-warning"></em>
+                                        </td>
+                                    </tr>
+                                    <tr>
+                                        <td>
+                                            <strong>Commits</strong>
+                                        </td>
+                                        <td>140</td>
+                                    </tr>
+                                    <tr>
+                                        <td>
+                                            <strong>Recently closed</strong>
+                                        </td>
+                                        <td>
+                                            <Scrollable height="120px" className="list-group">
+                                                <table className="table table-bordered bg-transparent">
+                                                    <tbody>
+                                                        <tr>
+                                                            <td>
+                                                                <a className="text-muted" href="">BI:54678</a>
+                                                            </td>
+                                                        </tr>
+                                                        <tr>
+                                                            <td>
+                                                                <a className="text-muted" href="">BI:55778</a>
+                                                            </td>
+                                                        </tr>
+                                                        <tr>
+                                                            <td>
+                                                                <a className="text-muted" href="">BI:56878</a>
+                                                            </td>
+                                                        </tr>
+                                                        <tr>
+                                                            <td>
+                                                                <a className="text-muted" href="">BI:57978</a>
+                                                            </td>
+                                                        </tr>
+                                                        <tr>
+                                                            <td>
+                                                                <a className="text-muted" href="">BI:1107</a>
+                                                            </td>
+                                                        </tr>
+                                                    </tbody>
+                                                </table>
+                                            </Scrollable>
+                                        </td>
+                                    </tr>
+                                    <tr>
+                                        <td>
+                                            <strong>Last closed on</strong>
+                                        </td>
+                                        <td>12/01/2016</td>
+                                    </tr>
+                                </tbody>
+                            </table>
+                        </div>
+                        {/* end Aside card */}
+                    </Col>
+                    <Col lg="8">
+                        <div className="mb-3 d-flex">
+                            <div>
+                                <button className="btn btn-sm btn-info" type="button" onClick={(e) => this.newReportClick(e)}>Laporan Baru</button>
+                                {/* <Button color="info" size="sm" onClick={(e) => this.handleClick(e, pt.id)}>View</Button> */}
+                                {/* <button className="btn btn-sm btn-secondary" type="button">
+                                    <em className="fa fa-user-plus"></em>
+                                </button>
+                                <button className="btn btn-sm btn-secondary" type="button">
+                                    <em className="fas fa-pencil-alt"></em>
+                                </button>
+                                <button className="btn btn-sm btn-secondary" type="button">
+                                    <em className="fas fa-share"></em>
+                                </button>
+                                <button className="btn btn-sm btn-secondary" type="button">
+                                    <em className="fa fa-print"></em>
+                                </button> */}
+                            </div>
+                            {/* <div className="ml-auto">
+                                <p className="mb-0 mt-1">19 bugs / 16 issues</p>
+                            </div> */}
+                        </div>
+                        <div className="card b">
+                            <div className="card-body">
+                                <Datatable options={{responsive: true}}>
+                                    <table className="table w-100">
+                                        <thead>
+                                            <tr>
+                                                <th>Type</th>
+                                                <th>#ID</th>
+                                                <th>Description</th>
+                                                <th>Created</th>
+                                                <th>Priority</th>
+                                                <th>Asigned</th>
+                                                <th>Status</th>
+                                            </tr>
+                                        </thead>
+                                        <tbody>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">bug</div>
+                                                </td>
+                                                <td>BI:54678</td>
+                                                <td className="text-nowrap">
+                                                    <small>Maecenas mollis egestas convallis.</small>
+                                                </td>
+                                                <td>01/01/2016</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-warning" data-title="normal"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Sylvia Daniels</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-success">open</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">bug</div>
+                                                </td>
+                                                <td>BI:55778</td>
+                                                <td className="text-nowrap">
+                                                    <small>Aliquam felis nibh, ultrices non elementum</small>
+                                                </td>
+                                                <td>01/05/2016</td>
+                                                <td>
+                                                    <div className="circle circle-lg" data-title="low"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Sherry Carroll</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-success">open</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">issue</div>
+                                                </td>
+                                                <td>BI:56878</td>
+                                                <td className="text-nowrap">
+                                                    <small>Aliquam condimentum enim a risus cursus blandit.</small>
+                                                </td>
+                                                <td>05/01/2016</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-warning" data-title="normal"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Mitchell Jones</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-warning">pending</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">issue</div>
+                                                </td>
+                                                <td>BI:57978</td>
+                                                <td className="text-nowrap">
+                                                    <small>Sed at libero augue, in euismod tellus.</small>
+                                                </td>
+                                                <td>01/11/2016</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-warning" data-title="normal"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Tracey Parker</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-warning">pending</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">bug</div>
+                                                </td>
+                                                <td>BI:1107</td>
+                                                <td className="text-nowrap">
+                                                    <small>Praesent lacinia ultricies neque.</small>
+                                                </td>
+                                                <td>01/01/2015</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-danger" data-title="high"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Warren Gray</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-danger">closed</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">issue</div>
+                                                </td>
+                                                <td>BI:1117</td>
+                                                <td className="text-nowrap">
+                                                    <small>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</small>
+                                                </td>
+                                                <td>11/05/2013</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-warning" data-title="normal"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Jackson Ramos</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-success">open</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">bug</div>
+                                                </td>
+                                                <td>BI:10127</td>
+                                                <td className="text-nowrap">
+                                                    <small>Pellentesque habitant morbi tristique</small>
+                                                </td>
+                                                <td>05/02/2014</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-warning" data-title="normal"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Ernest Berry</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-danger">closed</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">bug</div>
+                                                </td>
+                                                <td>BI:54678</td>
+                                                <td className="text-nowrap">
+                                                    <small>Integer venenatis ultrices vulputate.</small>
+                                                </td>
+                                                <td>01/01/2016</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-warning" data-title="normal"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Sylvia Daniels</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-success">open</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">issue</div>
+                                                </td>
+                                                <td>BI:55778</td>
+                                                <td className="text-nowrap">
+                                                    <small>Maecenas mollis egestas convallis.</small>
+                                                </td>
+                                                <td>01/05/2016</td>
+                                                <td>
+                                                    <div className="circle circle-lg" data-title="low"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Sherry Carroll</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-success">open</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">bug</div>
+                                                </td>
+                                                <td>BI:56878</td>
+                                                <td className="text-nowrap">
+                                                    <small>Maecenas mollis egestas convallis.</small>
+                                                </td>
+                                                <td>05/01/2016</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-warning" data-title="normal"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Mitchell Jones</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-warning">pending</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">issue</div>
+                                                </td>
+                                                <td>BI:57978</td>
+                                                <td className="text-nowrap">
+                                                    <small>Maecenas mollis egestas convallis.</small>
+                                                </td>
+                                                <td>01/11/2016</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-warning" data-title="normal"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Tracey Parker</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-warning">pending</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">bug</div>
+                                                </td>
+                                                <td>BI:1107</td>
+                                                <td className="text-nowrap">
+                                                    <small>Maecenas mollis egestas convallis.</small>
+                                                </td>
+                                                <td>01/01/2015</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-danger" data-title="high"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Warren Gray</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-danger">closed</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">issue</div>
+                                                </td>
+                                                <td>BI:1117</td>
+                                                <td className="text-nowrap">
+                                                    <small>Maecenas mollis egestas convallis.</small>
+                                                </td>
+                                                <td>11/05/2013</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-warning" data-title="normal"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Jackson Ramos</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-success">open</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">issue</div>
+                                                </td>
+                                                <td>BI:10127</td>
+                                                <td className="text-nowrap">
+                                                    <small>Maecenas mollis egestas convallis.</small>
+                                                </td>
+                                                <td>05/02/2014</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-warning" data-title="normal"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Ernest Berry</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-danger">closed</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">bug</div>
+                                                </td>
+                                                <td>BI:54678</td>
+                                                <td className="text-nowrap">
+                                                    <small>Maecenas mollis egestas convallis.</small>
+                                                </td>
+                                                <td>01/01/2016</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-warning" data-title="normal"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Sylvia Daniels</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-success">open</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">bug</div>
+                                                </td>
+                                                <td>BI:55778</td>
+                                                <td className="text-nowrap">
+                                                    <small>Maecenas mollis egestas convallis.</small>
+                                                </td>
+                                                <td>01/05/2016</td>
+                                                <td>
+                                                    <div className="circle circle-lg" data-title="low"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Sherry Carroll</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-success">open</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">bug</div>
+                                                </td>
+                                                <td>BI:56878</td>
+                                                <td className="text-nowrap">
+                                                    <small>Maecenas mollis egestas convallis.</small>
+                                                </td>
+                                                <td>05/01/2016</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-warning" data-title="normal"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Mitchell Jones</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-warning">pending</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">bug</div>
+                                                </td>
+                                                <td>BI:57978</td>
+                                                <td className="text-nowrap">
+                                                    <small>Maecenas mollis egestas convallis.</small>
+                                                </td>
+                                                <td>01/11/2016</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-warning" data-title="normal"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Tracey Parker</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-warning">pending</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">bug</div>
+                                                </td>
+                                                <td>BI:1107</td>
+                                                <td className="text-nowrap">
+                                                    <small>Maecenas mollis egestas convallis.</small>
+                                                </td>
+                                                <td>01/01/2015</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-danger" data-title="high"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Warren Gray</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-danger">closed</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">bug</div>
+                                                </td>
+                                                <td>BI:1117</td>
+                                                <td className="text-nowrap">
+                                                    <small>Maecenas mollis egestas convallis.</small>
+                                                </td>
+                                                <td>11/05/2013</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-warning" data-title="normal"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Jackson Ramos</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-success">open</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">issue</div>
+                                                </td>
+                                                <td>BI:10127</td>
+                                                <td className="text-nowrap">
+                                                    <small>Maecenas mollis egestas convallis.</small>
+                                                </td>
+                                                <td>05/02/2014</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-warning" data-title="normal"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Ernest Berry</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-danger">closed</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">issue</div>
+                                                </td>
+                                                <td>BI:54678</td>
+                                                <td className="text-nowrap">
+                                                    <small>Maecenas mollis egestas convallis.</small>
+                                                </td>
+                                                <td>01/01/2016</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-warning" data-title="normal"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Sylvia Daniels</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-success">open</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">issue</div>
+                                                </td>
+                                                <td>BI:55778</td>
+                                                <td className="text-nowrap">
+                                                    <small>Maecenas mollis egestas convallis.</small>
+                                                </td>
+                                                <td>01/05/2016</td>
+                                                <td>
+                                                    <div className="circle circle-lg" data-title="low"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Sherry Carroll</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-success">open</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">bug</div>
+                                                </td>
+                                                <td>BI:56878</td>
+                                                <td className="text-nowrap">
+                                                    <small>Maecenas mollis egestas convallis.</small>
+                                                </td>
+                                                <td>05/01/2016</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-warning" data-title="normal"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Mitchell Jones</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-warning">pending</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">bug</div>
+                                                </td>
+                                                <td>BI:57978</td>
+                                                <td className="text-nowrap">
+                                                    <small>Maecenas mollis egestas convallis.</small>
+                                                </td>
+                                                <td>01/11/2016</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-warning" data-title="normal"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Tracey Parker</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-warning">pending</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">bug</div>
+                                                </td>
+                                                <td>BI:1107</td>
+                                                <td className="text-nowrap">
+                                                    <small>Maecenas mollis egestas convallis.</small>
+                                                </td>
+                                                <td>01/01/2015</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-danger" data-title="high"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Warren Gray</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-danger">closed</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">issue</div>
+                                                </td>
+                                                <td>BI:1117</td>
+                                                <td className="text-nowrap">
+                                                    <small>Maecenas mollis egestas convallis.</small>
+                                                </td>
+                                                <td>11/05/2013</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-warning" data-title="normal"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Jackson Ramos</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-success">open</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">issue</div>
+                                                </td>
+                                                <td>BI:10127</td>
+                                                <td className="text-nowrap">
+                                                    <small>Maecenas mollis egestas convallis.</small>
+                                                </td>
+                                                <td>05/02/2014</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-warning" data-title="normal"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Ernest Berry</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-danger">closed</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">bug</div>
+                                                </td>
+                                                <td>BI:54678</td>
+                                                <td className="text-nowrap">
+                                                    <small>Maecenas mollis egestas convallis.</small>
+                                                </td>
+                                                <td>01/01/2016</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-warning" data-title="normal"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Sylvia Daniels</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-success">open</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">issue</div>
+                                                </td>
+                                                <td>BI:55778</td>
+                                                <td className="text-nowrap">
+                                                    <small>Maecenas mollis egestas convallis.</small>
+                                                </td>
+                                                <td>01/05/2016</td>
+                                                <td>
+                                                    <div className="circle circle-lg" data-title="low"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Sherry Carroll</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-success">open</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">issue</div>
+                                                </td>
+                                                <td>BI:56878</td>
+                                                <td className="text-nowrap">
+                                                    <small>Maecenas mollis egestas convallis.</small>
+                                                </td>
+                                                <td>05/01/2016</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-warning" data-title="normal"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Mitchell Jones</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-warning">pending</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">issue</div>
+                                                </td>
+                                                <td>BI:57978</td>
+                                                <td className="text-nowrap">
+                                                    <small>Maecenas mollis egestas convallis.</small>
+                                                </td>
+                                                <td>01/11/2016</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-warning" data-title="normal"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Tracey Parker</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-warning">pending</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">bug</div>
+                                                </td>
+                                                <td>BI:1107</td>
+                                                <td className="text-nowrap">
+                                                    <small>Maecenas mollis egestas convallis.</small>
+                                                </td>
+                                                <td>01/01/2015</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-danger" data-title="high"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Warren Gray</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-danger">closed</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">bug</div>
+                                                </td>
+                                                <td>BI:1117</td>
+                                                <td className="text-nowrap">
+                                                    <small>Maecenas mollis egestas convallis.</small>
+                                                </td>
+                                                <td>11/05/2013</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-warning" data-title="normal"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Jackson Ramos</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-success">open</div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>
+                                                    <div className="badge bg-gray-lighter">issue</div>
+                                                </td>
+                                                <td>BI:10127</td>
+                                                <td className="text-nowrap">
+                                                    <small>Maecenas mollis egestas convallis.</small>
+                                                </td>
+                                                <td>05/02/2014</td>
+                                                <td>
+                                                    <div className="circle circle-lg bg-warning" data-title="normal"></div>
+                                                </td>
+                                                <td>
+                                                    <a href="">Ernest Berry</a>
+                                                </td>
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-danger">closed</div>
+                                                </td>
+                                            </tr>
+                                        </tbody>
+                                    </table>
+                                </Datatable>
+                            </div>
+                        </div>
+                    </Col>
+                </Row>
+            </ContentWrapper>
+            );
+    }
+
+}
+
+export default BugTracker;
+
+

+ 264 - 0
pages/app/pemeriksaan.js

@@ -0,0 +1,264 @@
+import React, { Component } from 'react';
+import Router from 'next/router'
+import ContentWrapper from '@/components/Layout/ContentWrapper';
+import { Row, Col, Progress, Button } from 'reactstrap';
+
+import Sparkline from '@/components/Common/Sparklines';
+import Scrollable from '@/components/Common/Scrollable'
+import Datatable from '@/components/Tables/Datatable';
+import moment from 'moment';
+
+class BugTracker extends Component {
+
+    newProcessClick = (e, PT_ID) => {
+        //router = useRouter();
+        //const query = { ptId: PT_ID };
+        //    '/app/profile'
+        e.preventDefault();
+        Router.push(
+            {
+                pathname: '/app/pemeriksaan.new'
+            }
+        );
+    }
+
+    render() {
+        return (
+            <ContentWrapper>
+                <div className="content-heading">Evaluasi</div>
+                <Row>
+                    <Col lg="4">
+                        {/* Aside card */}
+                        <div className="card b">
+                            <div className="card-body bb">
+                                <p>Overvall progress</p>
+                                <div className="d-flex align-items-center mb-2">
+                                    <div className="w-100">
+                                        <Progress className="progress-xs m0" color="info" value={ 20 } />
+                                    </div>
+                                    <div className="ml-auto">
+                                        <div className="col wd-xxs text-right">
+                                            <div className="text-bold text-muted">20%</div>
+                                        </div>
+                                    </div>
+                                </div>
+                            </div>
+                            <div className="card-body">
+                                <p>Metrics</p>
+                                <div className="row text-center">
+                                    <div className="col-6 col-lg-6 col-xl-6">
+                                     <Sparkline values={[20,80]}
+
+                                        options={{
+                                            type:"pie",
+                                            height:"50",
+                                            sliceColors:["#edf1f2", "#23b7e5"]
+                                        }}
+                                        className="sparkline"/>
+                                        <p className="mt-3">Open Case</p>
+                                    </div>
+                                    <div className="col-6 col-lg-6 col-xl-6">
+                                     <Sparkline values={[80,20]}
+
+                                        options={{
+                                            type:"pie",
+                                            height:"50",
+                                            sliceColors:["#edf1f2", "#27c24c"]
+                                        }}
+                                        className="sparkline"/>
+                                        <p className="mt-3">Close Case</p>
+                                    </div>
+                                    {/* <div className="col-3 col-lg-6 col-xl-3">
+                                     <Sparkline values={[20,80]}
+
+                                        options={{
+                                            type:"pie",
+                                            height:"50",
+                                            sliceColors:["#edf1f2", "#ff902b"]
+                                        }}
+                                        className="sparkline"/>
+                                        <p className="mt-3">Hours</p>
+                                    </div>
+                                    <div className="col-3 col-lg-6 col-xl-3">
+                                     <Sparkline values={[30,70]}
+
+                                        options={{
+                                            type:"pie",
+                                            height:"50",
+                                            sliceColors:["#edf1f2", "#f05050"]
+                                        }}
+                                        className="sparkline"/>
+                                        <p className="mt-3">Assigned</p>
+                                    </div> */}
+                                </div>
+                            </div>
+                            <table className="table bb">
+                                <tbody>
+                                    {/* <tr>
+                                        <td>
+                                            <strong>Assigned Hours</strong>
+                                        </td>
+                                        <td>68 hs</td>
+                                    </tr>
+                                    <tr>
+                                        <td>
+                                            <strong>Time Consumed</strong>
+                                        </td>
+                                        <td>32 hs</td>
+                                    </tr> */}
+                                    <tr>
+                                        <td>
+                                            <strong>Open Case</strong>
+                                        </td>
+                                        <td>80</td>
+                                    </tr>
+                                    <tr>
+                                        <td>
+                                            <strong>Close Case</strong>
+                                        </td>
+                                        <td>20</td>
+                                    </tr>
+                                    <tr>
+                                        <td>
+                                            <strong>Performance</strong>
+                                        </td>
+                                        <td>
+                                            <em className="far fa-smile fa-lg text-warning"></em>
+                                        </td>
+                                    </tr>
+                                    {/* <tr>
+                                        <td>
+                                            <strong>Commits</strong>
+                                        </td>
+                                        <td>140</td>
+                                    </tr> */}
+                                    {/* <tr>
+                                        <td>
+                                            <strong>Last Case Closed</strong>
+                                        </td>
+                                        <td>
+                                            <Scrollable height="120px" className="list-group">
+                                                <table className="table table-bordered bg-transparent">
+                                                    <tbody>
+                                                        <tr>
+                                                            <td>
+                                                                <a className="text-muted" href="">BI:54678</a>
+                                                            </td>
+                                                        </tr>
+                                                        <tr>
+                                                            <td>
+                                                                <a className="text-muted" href="">BI:55778</a>
+                                                            </td>
+                                                        </tr>
+                                                        <tr>
+                                                            <td>
+                                                                <a className="text-muted" href="">BI:56878</a>
+                                                            </td>
+                                                        </tr>
+                                                        <tr>
+                                                            <td>
+                                                                <a className="text-muted" href="">BI:57978</a>
+                                                            </td>
+                                                        </tr>
+                                                        <tr>
+                                                            <td>
+                                                                <a className="text-muted" href="">BI:1107</a>
+                                                            </td>
+                                                        </tr>
+                                                    </tbody>
+                                                </table>
+                                            </Scrollable>
+                                        </td>
+                                    </tr> */}
+                                    <tr>
+                                        <td>
+                                            <strong>Last Case Closed</strong>
+                                        </td>
+                                        <td>BI:1107 - 12/01/2016</td>
+                                    </tr>
+                                </tbody>
+                            </table>
+                        </div>
+                        {/* end Aside card */}
+                    </Col>
+                    <Col lg="8">
+                        {/* <div className="mb-3 d-flex"> */}
+                            {/* <div> */}
+                                {/* <button className="btn btn-sm btn-info" type="button" onClick={(e) => this.newReportClick(e)}>Laporan Baru</button> */}
+                                {/* <Button color="info" size="sm" onClick={(e) => this.handleClick(e, pt.id)}>View</Button> */}
+                                {/* <button className="btn btn-sm btn-secondary" type="button">
+                                    <em className="fa fa-user-plus"></em>
+                                </button>
+                                <button className="btn btn-sm btn-secondary" type="button">
+                                    <em className="fas fa-pencil-alt"></em>
+                                </button>
+                                <button className="btn btn-sm btn-secondary" type="button">
+                                    <em className="fas fa-share"></em>
+                                </button>
+                                <button className="btn btn-sm btn-secondary" type="button">
+                                    <em className="fa fa-print"></em>
+                                </button> */}
+                            {/* </div> */}
+                            {/* <div className="ml-auto">
+                                <p className="mb-0 mt-1">19 bugs / 16 issues</p>
+                            </div> */}
+                        {/* </div> */}
+                        <div className="card b">
+                            <div className="card-body">
+                            <Datatable options={{responsive: true}}>
+                                    <table className="table w-100">
+                                        <thead>
+                                            <tr>
+                                                {/* <th>Type</th> */}
+                                                <th>#ID</th>
+                                                <th>Description</th>
+                                                <th>Created</th>
+                                                {/* <th>Priority</th>
+                                                <th>Asigned</th> */}
+                                                <th>Status</th>
+                                                {/* <th>Action</th> */}
+                                            </tr>
+                                        </thead>
+                                        <tbody>
+                                            <tr>
+                                                <td>BI:54678</td>
+                                                <td className="text-nowrap">
+                                                    <div className="media align-items-center">
+                                                        <a className="mr-3" href="">
+                                                            <img className="img-fluid rounded thumb64" src="/static/img/dummy-search.png" alt="Dummy"/>
+                                                        </a>
+                                                        <div className="media-body d-flex">
+                                                            <div>
+                                                                <h4 className="m-0">Universitas Satyagama</h4>
+                                                                <small className="text-muted">0742/O/1990 - www.satyagama.ac.id - info@satyagama.ac.id</small>
+                                                                <p>Jalan Kamal Raya No 2-A Cengkareng</p>
+                                                                <p> </p>
+                                                            </div>
+
+                                                        </div>
+                                                    </div>
+                                                </td>
+                                                <td>{moment("2020-04-04 11:45:26.123").fromNow()}</td>
+                                                <td>
+                                                    <div className="ml-auto">
+                                                        <button class="btn-oval btn btn-primary" size="sm" onClick={(e) => this.newProcessClick(e)}>Update Data</button>
+                                                    </div>
+                                                </td>
+                                            </tr>
+                                            
+                                        </tbody>
+                                    </table>
+                                </Datatable>
+                            </div>
+                        </div>
+                    </Col>
+                </Row>
+            </ContentWrapper>
+            );
+    }
+
+}
+
+export default BugTracker;
+
+

+ 146 - 0
pages/app/pemeriksaan.new.js

@@ -0,0 +1,146 @@
+import React, { Component } from 'react';
+import ContentWrapper from '@/components/Layout/ContentWrapper';
+import {
+    Row,
+    Col,
+    Card,
+    CardHeader,
+    CardBody,
+    FormGroup,
+    FormFeedback,
+    FormText,
+    Label,
+    InputGroup,
+    InputGroupAddon,
+    InputGroupButtonDropdown,
+    InputGroupText,
+    Input,
+    Button,
+    DropdownToggle,
+    DropdownMenu,
+    CustomInput,
+    DropdownItem } from 'reactstrap';
+
+const styleHeaderText = {
+    color: 'brown'
+}
+class FormStandard extends Component {
+
+    state = {
+        dropdownOpen: false,
+        splitButtonOpen: false
+    }
+
+    toggleDropDown = () => {
+        this.setState({
+            dropdownOpen: !this.state.dropdownOpen
+        });
+    }
+
+    toggleSplit = () => {
+        this.setState({
+            splitButtonOpen: !this.state.splitButtonOpen
+        });
+    }
+
+    onSubmit = e => {
+        console.log('Form submitted..');
+        e.preventDefault();
+    }
+
+    render() {
+
+        return (
+            <ContentWrapper unwrap>
+                <div className="bg-cover" style={{backgroundImage: 'url(/static/img/profile-bg.png)'}}>
+                    <div className="p-4 text-center" style={styleHeaderText} >
+                        <img className="img-thumbnail rounded-circle thumb128" src="/static/img/univ-avatar.png" alt="Avatar"/>
+                        <h3 className="m-0">Universitas Satyagama</h3>
+                        <p>0742/O/1990</p>
+                        <p>Jalan Kamal Raya No 2-A Cengkareng</p>
+                    </div>
+                </div>
+                <div className="p-3">
+                    <div className="content-heading">
+                        <div>Evaluasi Data
+                            <small>Form update data evaluasi v.0.1</small>
+                        </div>
+                    </div>
+                    <Row>
+                        <Col xl="9">
+                            {/* START card */}
+                            <Card className="card-default">
+                                <CardHeader>
+                                    <label>Informasi Laporan</label>    
+                                </CardHeader>
+                                <CardBody>
+                                    <form className="form-horizontal" method="get" action="/" onSubmit={this.onSubmit}>
+                                        {/* <fieldset> */}
+                                        <FormGroup row>
+                                            <label className="col-md-2 col-form-label">Nomor Pelaporan</label>
+                                            <div className="col-md-10">
+                                                <Input type="text"/>
+                                                <span className="form-text">Nomor pelaporan akan digenerate otomatis dari sistem</span>
+                                            </div>
+                                        </FormGroup>
+                                        {/* </fieldset> */}
+                                        <FormGroup row>
+                                            <label className="col-md-2 col-form-label">Keterangan Laporan</label>
+                                            <div className="col-md-10">
+                                                <Input type="textarea"/>
+                                                {/* <textarea class="form-control" id="inputContact6" row="3">Some nice Street, 1234</textarea> */}
+                                                <span className="form-text">Deskripsi pelaporan minimum karakter 50 maksimum 200 karakter</span>
+                                            </div>
+                                        </FormGroup>
+                                        <FormGroup row>
+                                            <label className="col-md-2 col-form-label">Upload File Pendukung</label>
+                                            <div className="col-md-10">
+                                                {/* <input type="file" multiple name="customFile" class="custom-file-input"></input> */}
+                                                <CustomInput
+                                                    type="file" multiple
+                                                    id="exampleCustomFileBrowser"
+                                                    name="customFile"
+                                                />
+                                                <span className="form-text">Multiple files upload</span>
+                                            </div>
+                                        </FormGroup>
+                                        <FormGroup row>
+                                            <div className="col-xl-10">
+                                                <button className="btn btn-sm btn-primary" type="submit">Submit Evaluasi</button>
+                                            </div>
+                                        </FormGroup>
+                                    </form>
+                                </CardBody>
+                            </Card>
+                            {/* END card */}
+                        </Col>
+                        <Col xl="3">
+                            <div className="card card-default">
+                                <div className="card-body">
+                                    <div className="text-center">
+                                        <h3 className="mt-0">Universitas Satyagama</h3>
+                                        <p>0742/O/1990</p>
+                                    </div>
+                                    <hr/>
+                                    <ul className="list-unstyled px-4">
+                                        <li>
+                                            <em className="fa fa-globe fa-fw mr-3"></em>www.satyagama.ac.id
+                                        </li>
+                                        <li>
+                                            <em className="fa fa-graduation-cap fa-fw mr-3"></em>Status Pelanggaran : Tidak Ada
+                                        </li>
+                                        
+                                    </ul>
+                                </div>
+                            </div>
+                        </Col>
+                    </Row>
+
+                </div>
+            </ContentWrapper>
+            );
+    }
+
+}
+
+export default FormStandard;

+ 264 - 0
pages/app/penjadwalan.js

@@ -0,0 +1,264 @@
+import React, { Component } from 'react';
+import Router from 'next/router'
+import ContentWrapper from '@/components/Layout/ContentWrapper';
+import { Row, Col, Progress, Button } from 'reactstrap';
+
+import Sparkline from '@/components/Common/Sparklines';
+import Scrollable from '@/components/Common/Scrollable'
+import Datatable from '@/components/Tables/Datatable';
+import moment from 'moment';
+
+class BugTracker extends Component {
+
+    newProcessClick = (e, PT_ID) => {
+        //router = useRouter();
+        //const query = { ptId: PT_ID };
+        //    '/app/profile'
+        e.preventDefault();
+        Router.push(
+            {
+                pathname: '/app/penjadwalan.todo'
+            }
+        );
+    }
+
+    render() {
+        return (
+            <ContentWrapper>
+                <div className="content-heading">Pemeriksaan</div>
+                <Row>
+                    <Col lg="4">
+                        {/* Aside card */}
+                        <div className="card b">
+                            <div className="card-body bb">
+                                <p>Overvall progress</p>
+                                <div className="d-flex align-items-center mb-2">
+                                    <div className="w-100">
+                                        <Progress className="progress-xs m0" color="info" value={ 20 } />
+                                    </div>
+                                    <div className="ml-auto">
+                                        <div className="col wd-xxs text-right">
+                                            <div className="text-bold text-muted">20%</div>
+                                        </div>
+                                    </div>
+                                </div>
+                            </div>
+                            <div className="card-body">
+                                <p>Metrics</p>
+                                <div className="row text-center">
+                                    <div className="col-6 col-lg-6 col-xl-6">
+                                     <Sparkline values={[20,80]}
+
+                                        options={{
+                                            type:"pie",
+                                            height:"50",
+                                            sliceColors:["#edf1f2", "#23b7e5"]
+                                        }}
+                                        className="sparkline"/>
+                                        <p className="mt-3">Open Case</p>
+                                    </div>
+                                    <div className="col-6 col-lg-6 col-xl-6">
+                                     <Sparkline values={[80,20]}
+
+                                        options={{
+                                            type:"pie",
+                                            height:"50",
+                                            sliceColors:["#edf1f2", "#27c24c"]
+                                        }}
+                                        className="sparkline"/>
+                                        <p className="mt-3">Close Case</p>
+                                    </div>
+                                    {/* <div className="col-3 col-lg-6 col-xl-3">
+                                     <Sparkline values={[20,80]}
+
+                                        options={{
+                                            type:"pie",
+                                            height:"50",
+                                            sliceColors:["#edf1f2", "#ff902b"]
+                                        }}
+                                        className="sparkline"/>
+                                        <p className="mt-3">Hours</p>
+                                    </div>
+                                    <div className="col-3 col-lg-6 col-xl-3">
+                                     <Sparkline values={[30,70]}
+
+                                        options={{
+                                            type:"pie",
+                                            height:"50",
+                                            sliceColors:["#edf1f2", "#f05050"]
+                                        }}
+                                        className="sparkline"/>
+                                        <p className="mt-3">Assigned</p>
+                                    </div> */}
+                                </div>
+                            </div>
+                            <table className="table bb">
+                                <tbody>
+                                    {/* <tr>
+                                        <td>
+                                            <strong>Assigned Hours</strong>
+                                        </td>
+                                        <td>68 hs</td>
+                                    </tr>
+                                    <tr>
+                                        <td>
+                                            <strong>Time Consumed</strong>
+                                        </td>
+                                        <td>32 hs</td>
+                                    </tr> */}
+                                    <tr>
+                                        <td>
+                                            <strong>Open Case</strong>
+                                        </td>
+                                        <td>80</td>
+                                    </tr>
+                                    <tr>
+                                        <td>
+                                            <strong>Close Case</strong>
+                                        </td>
+                                        <td>20</td>
+                                    </tr>
+                                    <tr>
+                                        <td>
+                                            <strong>Performance</strong>
+                                        </td>
+                                        <td>
+                                            <em className="far fa-smile fa-lg text-warning"></em>
+                                        </td>
+                                    </tr>
+                                    {/* <tr>
+                                        <td>
+                                            <strong>Commits</strong>
+                                        </td>
+                                        <td>140</td>
+                                    </tr> */}
+                                    {/* <tr>
+                                        <td>
+                                            <strong>Last Case Closed</strong>
+                                        </td>
+                                        <td>
+                                            <Scrollable height="120px" className="list-group">
+                                                <table className="table table-bordered bg-transparent">
+                                                    <tbody>
+                                                        <tr>
+                                                            <td>
+                                                                <a className="text-muted" href="">BI:54678</a>
+                                                            </td>
+                                                        </tr>
+                                                        <tr>
+                                                            <td>
+                                                                <a className="text-muted" href="">BI:55778</a>
+                                                            </td>
+                                                        </tr>
+                                                        <tr>
+                                                            <td>
+                                                                <a className="text-muted" href="">BI:56878</a>
+                                                            </td>
+                                                        </tr>
+                                                        <tr>
+                                                            <td>
+                                                                <a className="text-muted" href="">BI:57978</a>
+                                                            </td>
+                                                        </tr>
+                                                        <tr>
+                                                            <td>
+                                                                <a className="text-muted" href="">BI:1107</a>
+                                                            </td>
+                                                        </tr>
+                                                    </tbody>
+                                                </table>
+                                            </Scrollable>
+                                        </td>
+                                    </tr> */}
+                                    <tr>
+                                        <td>
+                                            <strong>Last Case Closed</strong>
+                                        </td>
+                                        <td>BI:1107 - 12/01/2016</td>
+                                    </tr>
+                                </tbody>
+                            </table>
+                        </div>
+                        {/* end Aside card */}
+                    </Col>
+                    <Col lg="8">
+                        {/* <div className="mb-3 d-flex"> */}
+                            {/* <div> */}
+                                {/* <button className="btn btn-sm btn-info" type="button" onClick={(e) => this.newReportClick(e)}>Laporan Baru</button> */}
+                                {/* <Button color="info" size="sm" onClick={(e) => this.handleClick(e, pt.id)}>View</Button> */}
+                                {/* <button className="btn btn-sm btn-secondary" type="button">
+                                    <em className="fa fa-user-plus"></em>
+                                </button>
+                                <button className="btn btn-sm btn-secondary" type="button">
+                                    <em className="fas fa-pencil-alt"></em>
+                                </button>
+                                <button className="btn btn-sm btn-secondary" type="button">
+                                    <em className="fas fa-share"></em>
+                                </button>
+                                <button className="btn btn-sm btn-secondary" type="button">
+                                    <em className="fa fa-print"></em>
+                                </button> */}
+                            {/* </div> */}
+                            {/* <div className="ml-auto">
+                                <p className="mb-0 mt-1">19 bugs / 16 issues</p>
+                            </div> */}
+                        {/* </div> */}
+                        <div className="card b">
+                            <div className="card-body">
+                                <Datatable options={{responsive: true}}>
+                                    <table className="table w-100">
+                                        <thead>
+                                            <tr>
+                                                {/* <th>Type</th> */}
+                                                <th>#ID</th>
+                                                <th>Description</th>
+                                                <th>Created</th>
+                                                {/* <th>Priority</th>
+                                                <th>Asigned</th> */}
+                                                <th>Status</th>
+                                                {/* <th>Action</th> */}
+                                            </tr>
+                                        </thead>
+                                        <tbody>
+                                            <tr>
+                                                <td>BI:54678</td>
+                                                <td className="text-nowrap">
+                                                    <div className="media align-items-center">
+                                                        <a className="mr-3" href="">
+                                                            <img className="img-fluid rounded thumb64" src="/static/img/dummy-search.png" alt="Dummy"/>
+                                                        </a>
+                                                        <div className="media-body d-flex">
+                                                            <div>
+                                                                <h4 className="m-0">Universitas Satyagama</h4>
+                                                                <small className="text-muted">0742/O/1990 - www.satyagama.ac.id - info@satyagama.ac.id</small>
+                                                                <p>Jalan Kamal Raya No 2-A Cengkareng</p>
+                                                                <p> </p>
+                                                            </div>
+
+                                                        </div>
+                                                    </div>
+                                                </td>
+                                                <td>{moment("2020-04-04 11:45:26.123").fromNow()}</td>
+                                                <td>
+                                                    <div className="ml-auto">
+                                                        <button class="btn-oval btn btn-primary" size="sm" onClick={(e) => this.newProcessClick(e)}>Proses</button>
+                                                    </div>
+                                                </td>
+                                            </tr>
+                                            
+                                        </tbody>
+                                    </table>
+                                </Datatable>
+                            </div>
+                        </div>
+                    </Col>
+                </Row>
+            </ContentWrapper>
+            );
+    }
+
+}
+
+export default BugTracker;
+
+

+ 9 - 0
pages/app/penjadwalan.todo.js

@@ -0,0 +1,9 @@
+import React from 'react';
+import dynamic from 'next/dynamic';
+
+// https://github.com/fullcalendar/fullcalendar-react/issues/17
+const DynamicCalendar = dynamic(() => import('../../components/Extras/calendar.view.js'), {
+    ssr: false
+});
+
+export default () => <DynamicCalendar />;

+ 1070 - 0
pages/app/profile-pt.js

@@ -0,0 +1,1070 @@
+import React, { Component } from 'react';
+//import { withRouter } from 'next/router'
+import ContentWrapper from '@/components/Layout/ContentWrapper';
+import { Row, Col, Card, Button, CardHeader, CardFooter, Table, Nav, NavItem, NavLink, TabContent, TabPane, Pagination, PaginationItem, PaginationLink, ListGroup, ListGroupItem, Dropdown, DropdownMenu, DropdownToggle, DropdownItem } from 'reactstrap';
+//import { Row, Col, Card, CardHeader, CardFooter, Table, Pagination, PaginationItem, PaginationLink } from 'reactstrap';
+
+// import { Row, Col, Dropdown, DropdownMenu, DropdownToggle, DropdownItem } from 'reactstrap';
+import Select from 'react-select';
+import { GoogleMap, LoadScript, Marker } from '@react-google-maps/api';
+
+import { GetServerSideProps, NextPage } from 'next';
+import ErrorPage from 'next/error';
+import fetch from 'node-fetch';
+
+import https from 'https';
+
+const containerStyle = {
+    width: '100%',
+    height: '155px'
+};
+
+import FormWizardVertical from './pt.wizard.vertical.js';
+
+var jenisPelanggaran = [];
+
+//const qpt_id = {};
+
+//http://localhost:3000/app/profile?ptId=0BCE4DB7-B207-445D-8D03-0C54B7688252
+
+// Demo with custom style
+const DemoMapCustomStyle = props => (
+        <GoogleMap mapContainerStyle={containerStyle} zoom={14} center={props.location} options={{ styles: props.mapStyles }}>
+        <Marker position={props.location} />
+        </GoogleMap>
+)
+
+const styleHeaderText = {
+    color: 'brown'
+}
+
+class Profile extends Component {
+
+    toggleTab = tab => {
+        if (this.state.activeTab !== tab) {
+            this.setState({
+                activeTab: tab
+            });
+        }
+    }
+
+    
+    static async getInitialProps({ query }) {
+
+        
+
+        const httpsAgent = new https.Agent({
+            rejectUnauthorized: false,
+          });
+        
+          //console.log('post agent : ');
+
+          
+         //const res = await fetch('https://api.kemdikbud.go.id:8243/pddikti/1.2/pt/707C3895-B546-4DA5-A6A7-EFE7461A7C7E', { 
+         //const res = await fetch('https://api.kemdikbud.go.id:8243/pddikti/1.2/pt/'+query.ptId, { 
+        //     method: 'get', 
+        //     headers: new Headers({
+        //       'Authorization': 'Bearer 5b62f743-eef2-3370-8c66-6951b2e9c2c5', 
+        //       'Accept': 'application/json'
+        //     }),
+        //     agent: httpsAgent
+        //   }
+        //  )
+
+        //console.log('res : ', res);
+         
+        //const json = await res.json();
+        const json = [
+            {
+                "id": "0BCE4DB7-B207-445D-8D03-0C54B7688252",
+                "kode": "031031",
+                "kode_satker": null,
+                "nama": "Universitas Satyagama",
+                "nama_singkat": "USG",
+                "sk_pendirian": "0742/O/1990",
+                "tgl_sk_pendirian": "1990-12-22",
+                "sk_operasional": null,
+                "tgl_sk_operasional": null,
+                "status": "A",
+                "alamat": {
+                    "jalan": "Jalan Kamal Raya No 2-A Cengkareng",
+                    "rt": null,
+                    "rw": null,
+                    "dusun": null,
+                    "kelurahan": "-",
+                    "kode_pos": "11730",
+                    "kab_kota": {
+                        "id": "016200",
+                        "nama": "Kota Jakarta Barat"
+                    }
+                },
+                "propinsi": {
+                    "id": "010000",
+                    "nama": "Prov. D.K.I. Jakarta"
+                },
+                "telepon": "(021) 5452377-78",
+                "faksimile": "(021) 54391325",
+                "website": "www.satyagama.ac.id",
+                "email": "info@satyagama.ac.id",
+                "status_milik": {
+                    "id": "3",
+                    "nama": "Yayasan"
+                },
+                "pembina": {
+                    "id": "728989DD-251E-4516-BE2C-BA17A93A5C51",
+                    "nama": "LLDIKTI III"
+                },
+                "bentuk_pendidikan": {
+                    "id": "23",
+                    "nama": "Universitas"
+                },
+                "last_update": "2021-12-08",
+                "negara": {
+                    "id": "ID",
+                    "nama": "Indonesia"
+                },
+                "pimpinan": {
+                    "id": "D3D20B3D-0FBE-4706-8A70-67C4C09C8FBE",
+                    "nama": "DEWI SULISTYANI",
+                    "tmt_sk_pengangkatan": "2021-03-17",
+                    "tst_sk_pengangkatan": "2025-03-17"
+                }
+            }
+        ];
+        console.log('json : ', json);
+        // const json = 
+        //                 {
+        //                     "id": "0BCE4DB7-B207-445D-8D03-0C54B7688252",
+        //                     "kode": "031031",
+        //                     "kode_satker": null,
+        //                     "nama": "Universitas Satyagama",
+        //                     "nama_singkat": "USG",
+        //                     "sk_pendirian": "0742/O/1990",
+        //                     "tgl_sk_pendirian": "1990-12-22",
+        //                     "sk_operasional": null,
+        //                     "tgl_sk_operasional": null,
+        //                     "status": "N",
+        //                     "alamat": {
+        //                     "jalan": "Jalan Kamal Raya No 2-A Cengkareng",
+        //                     "rt": null,
+        //                     "rw": null,
+        //                     "dusun": null,
+        //                     "kelurahan": "-",
+        //                     "kode_pos": "11730",
+        //                     "kab_kota": {
+        //                         "id": "016200",
+        //                         "nama": "Kota Jakarta Barat"
+        //                     }
+        //                     },
+        //                     "propinsi": {
+        //                     "id": "010000",
+        //                     "nama": "Prov. D.K.I. Jakarta"
+        //                     },
+        //                     "telepon": "(021) 5452377-78",
+        //                     "faksimile": "(021) 54391325",
+        //                     "website": "www.satyagama.ac.id",
+        //                     "email": "info@satyagama.ac.id",
+        //                     "status_milik": {
+        //                     "id": "3",
+        //                     "nama": "Yayasan"
+        //                     },
+        //                     "pembina": {
+        //                     "id": "728989DD-251E-4516-BE2C-BA17A93A5C51",
+        //                     "nama": "LLDIKTI III"
+        //                     },
+        //                     "bentuk_pendidikan": {
+        //                     "id": "23",
+        //                     "nama": "Universitas"
+        //                     },
+        //                     "last_update": "2021-08-22",
+        //                     "negara": {
+        //                     "id": "ID",
+        //                     "nama": "Indonesia"
+        //                     }
+        //             }
+
+
+
+        return { data: json[0] }
+      }
+
+    state = {
+        dropdownOpen: false,
+        dropdownOpenUpload: false,
+        timelineAlt: false,
+        location: { lat: 33.7906731, lng: -117.8357194 },
+        customStyle: [{featureType:'water',stylers:[{visibility:'on'},{color:'#bdd1f9'}]},{featureType:'all',elementType:'labels.text.fill',stylers:[{color:'#334165'}]},{featureType:'landscape',stylers:[{color:'#e9ebf1'}]},{featureType:'road.highway',elementType:'geometry',stylers:[{color:'#c5c6c6'}]},{featureType:'road.arterial',elementType:'geometry',stylers:[{color:'#fff'}]},{featureType:'road.local',elementType:'geometry',stylers:[{color:'#fff'}]},{featureType:'transit',elementType:'geometry',stylers:[{color:'#d8dbe0'}]},{featureType:'poi',elementType:'geometry',stylers:[{color:'#cfd5e0'}]},{featureType:'administrative',stylers:[{visibility:'on'},{lightness:33}]},{featureType:'poi.park',elementType:'labels',stylers:[{visibility:'on'},{lightness:20}]},{featureType:'road',stylers:[{color:'#d8dbe0',lightness:20}]}],
+        listA: [],
+        //isChecked:true,
+        selectedOptionMulti: [],
+        activeTab: 'tasks'
+        // hisJenisPelanggaran:[],
+        // tbljenisPelanggaran:[
+        //     {
+        //         "idPelanggaran": 0,
+        //         "Pelanggaran":"Tidak Ada",
+        //         "Sangsi":"Tanpa Sangsi",
+        //         "KeteranganSangsi":"-",
+        //         "LevelSangsi":0,
+        //         "LabelSangsi":"Tidak ada",
+        //         "checked":false,
+        //         "TMTBulan":0
+        //     },
+        //     {
+        //         "idPelanggaran": 1,
+        //         "Pelanggaran":"Pemimpin perguruan tinggi tidak melindungi dan memfasilitasi pelaksanaan kebebasan akademik,kebebasan mimbar akademik, dan otonomi keilmuan di perguruan tinggi",
+        //         "Sangsi":"Peringatan Tertulis",
+        //         "KeteranganSangsi":"-",
+        //         "LevelSangsi":1,
+        //         "LabelSangsi":"Ringan",
+        //         "checked":false,
+        //          "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 2,
+        //         "Pelanggaran":"Perguruan tinggi tidak memuat mata kuliah agama,Pancasila, kewarganegaraan, dan bahasa Indonesia dalam kurikulumnya",
+        //         "Sangsi":"Peringatan Tertulis",
+        //         "KeteranganSangsi":"-",
+        //         "LevelSangsi":1,
+        //         "LabelSangsi":"Ringan",
+        //         "checked":false,
+        //          "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 3,
+        //         "Pelanggaran":"Perguruan tinggi tidak menggunakan bahasa Indonesia sebagai bahasa pengantar utama",
+        //         "Sangsi":"Peringatan Tertulis",
+        //         "KeteranganSangsi":"-",
+        //         "LevelSangsi":1,
+        //         "LabelSangsi":"Ringan",
+        //         "checked":false,
+        //          "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 4,
+        //         "Pelanggaran":"Perguruan tinggi tidak menyebarluaskan hasil penelitian dengan cara diseminarkan, dipublikasikan, dan/atau dipatenkan, kecuali hasil penelitian yang bersifat rahasia, mengganggu, dan/atau membahayakan kepentingan umum",
+        //         "Sangsi":"Peringatan Tertulis",
+        //         "KeteranganSangsi":"",
+        //         "LevelSangsi":1,
+        //         "LabelSangsi":"Ringan",
+        //         "checked":false,
+        //          "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 5,
+        //         "Pelanggaran":"PTN tidak menerima calon Mahasiswa yang telah memenuhi persyaratan akademik dan lolos seleksi penerimaan Mahasiswa secara nasional",
+        //         "Sangsi":"Peringatan Tertulis",
+        //         "KeteranganSangsi":"",
+        //         "LevelSangsi":1,
+        //         "LabelSangsi":"Ringan",
+        //          "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 6,
+        //         "Pelanggaran":"PTN tidak mencari dan menjaring calon Mahasiswa yang memiliki potensi akademik tinggi, tetapi kurang mampu secara ekonomi dan calon Mahasiswa dari daerah terdepan, terluar, dan tertinggal untuk diterima paling sedikit 20% (dua puluh persen) dari seluruh Mahasiswa baru yang diterima dan tersebar pada semua Program Studi",
+        //         "Sangsi":"Peringatan Tertulis",
+        //         "KeteranganSangsi":"",
+        //         "LevelSangsi":1,
+        //         "LabelSangsi":"Ringan",
+        //         "checked":false,
+        //          "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 7,
+        //         "Pelanggaran":"Perguruan tinggi tidak memenuhi hak Mahasiswa yang kurang mampu secara ekonomi untuk dapat menyelesaikan studinya sesuai dengan peraturan akademik",
+        //         "Sangsi":"Peringatan Tertulis",
+        //         "KeteranganSangsi":"",
+        //         "LevelSangsi":1,
+        //         "LabelSangsi":"Ringan",
+        //         "checked":false,
+        //          "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 8,
+        //         "Pelanggaran":"Perguruan tinggi memberi gelar yang tidak menggunakan bahasa Indonesia",
+        //         "Sangsi":"Peringatan Tertulis",
+        //         "KeteranganSangsi":"",
+        //         "LevelSangsi":1,
+        //         "LabelSangsi":"Ringan",
+        //         "checked":false,
+        //          "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 9,
+        //         "Pelanggaran":"Pemimpin perguruan tinggi tidak melindungi dan memfasilitasi pengelolaan di bidang non akademik",
+        //         "Sangsi":"Peringatan Tertulis",
+        //         "KeteranganSangsi":"",
+        //         "LevelSangsi":1,
+        //         "LabelSangsi":"Ringan",
+        //         "checked":false,
+        //          "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 10,
+        //         "Pelanggaran":"Perguruan tinggi tidak mengumumkan ringkasan laporan tahunan kepada masyarakat",
+        //         "Sangsi":"Peringatan Tertulis",
+        //         "KeteranganSangsi":"",
+        //         "LevelSangsi":1,
+        //         "LabelSangsi":"Ringan",
+        //         "checked":false,
+        //          "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 11,
+        //         "Pelanggaran":"Perguruan tinggi memiliki Dosen tetap kurang dari 5 (lima) orang untuk setiap Program Studi",
+        //         "Sangsi":"Peringatan Tertulis",
+        //         "KeteranganSangsi":"",
+        //         "LevelSangsi":1,
+        //         "LabelSangsi":"Ringan",
+        //         "checked":false,
+        //          "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 12,
+        //         "Pelanggaran":"Perguruan tinggi tidak memenuh  nisbah Dosen dan Mahasiswa sesuai dengan ketentuan peraturan perundang-undangan",
+        //         "Sangsi":"Peringatan Tertulis",
+        //         "KeteranganSangsi":"",
+        //         "LevelSangsi":1,
+        //         "LabelSangsi":"Ringan",
+        //         "checked":false,
+        //          "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 13,
+        //         "Pelanggaran":"Perguruan tinggi tidak melakukan pelaporan secara berkala ke pangkalan data Pendidikan Tinggi",
+        //         "Sangsi":"Peringatan Tertulis",
+        //         "KeteranganSangsi":"",
+        //         "LevelSangsi":1,
+        //         "LabelSangsi":"Ringan",
+        //         "checked":false,
+        //          "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 14,
+        //         "Pelanggaran":"Program sarjana memiliki Dosen yang tidak berkualifikasi akademik minimum lulusan program magister atau sederajat",
+        //         "Sangsi":"Penghentian sementara bantuan biaya pendidikan dari pemerintahan pusat",
+        //         "KeteranganSangsi":"Berupa penundaan pemberian bantuan keuangan, hibah, dan/atau bentuk bantuan lain bagi perguruan tinggi",
+        //         "LevelSangsi":2,
+        //         "LabelSangsi":"Sedang",
+        //         "checked":false,
+        //          "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 15,
+        //         "Pelanggaran":"Program magister memiliki Dosen yang tidak berkualifikasi akademik lulusan program doktor atau sederajat",
+        //         "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+        //         "KeteranganSangsi":"Penghentian sementara penerimaan Mahasiswa baru",
+        //         "LevelSangsi":2,
+        //         "LabelSangsi":"Sedang",
+        //         "checked":false,
+        //          "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 16,
+        //         "Pelanggaran":"Program doktor memiliki Dosen yang tidak berkualifikasi akademik lulusan program doktor atau sederajat",
+        //         "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+        //         "KeteranganSangsi":"Penundaan proses usul pembukaan Program Studi baru",
+        //         "LevelSangsi":2,
+        //         "LabelSangsi":"Sedang",
+        //         "checked":false,
+        //          "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 17,
+        //         "Pelanggaran":"Program diploma memiliki Dosen yang tidak berkualifikasi akademik minimum lulusan program magister atau sederajat",
+        //         "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+        //         "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+        //         "LevelSangsi":2,
+        //         "LabelSangsi":"Sedang",
+        //         "checked":false,
+        //         "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 18,
+        //         "Pelanggaran":"Program magister terapan memiliki Dosen yang tidak berkualifikasi akademik lulusan program doktor atau sederajat",
+        //         "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+        //         "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+        //         "LevelSangsi":2,
+        //         "LabelSangsi":"Sedang",
+        //         "checked":false,
+        //         "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 19,
+        //         "Pelanggaran":"Program doktor terapan memiliki Dosen yang tidak berkualifikasi akademik lulusan program doktor atau sederajat",
+        //         "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+        //         "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+        //         "LevelSangsi":2,
+        //         "LabelSangsi":"Sedang",
+        //         "checked":false,
+        //         "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 20,
+        //         "Pelanggaran":"Program profesi memiliki Dosen yang tidak berkualifikasi akademik minimum lulusan profesi dan/atau lulusan program magister atau sederajat dengan pengalaman kerja paling singkat 2 (dua) tahun",
+        //         "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+        //         "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+        //         "LevelSangsi":2,
+        //         "LabelSangsi":"Sedang",
+        //         "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 21,
+        //         "Pelanggaran":"Program spesialis memiliki Dosen yang tidak berkualifikasi akademik minimum lulusan program spesialis dan/atau lulusan program doktor atau sederajat dengan pengalaman kerja paling singkat 2 (dua) tahun",
+        //         "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+        //         "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+        //         "LevelSangsi":2,
+        //         "LabelSangsi":"Sedang",
+        //         "checked":false,
+        //         "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 22,
+        //         "Pelanggaran":"Perguruan tinggi tidak mencabut gelar akademik, gelar vokasi, atau gelar profesi apabila karya ilmiah yang digunakan untuk memperoleh gelar akademik, gelar vokasi, atau gelar profesi terbukti merupakan hasil plagiat",
+        //         "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+        //         "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+        //         "LevelSangsi":2,
+        //         "LabelSangsi":"Sedang",
+        //         "checked":false,
+        //         "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 23,
+        //         "Pelanggaran":"Perguruan tinggi tidak menyediakan, memfasilitasi, memiliki Sumber Belajar sesuai dengan Program Studi yang dikembangkan",
+        //         "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+        //         "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+        //         "LevelSangsi":2,
+        //         "LabelSangsi":"Sedang",
+        //         "checked":false,
+        //         "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 24,
+        //         "Pelanggaran":"Perguruan tinggi tidak memiliki statuta",
+        //         "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+        //         "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+        //         "LevelSangsi":2,
+        //         "LabelSangsi":"Sedang",
+        //         "checked":false,
+        //         "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 25,
+        //         "Pelanggaran":"Perguruan tinggi tidak memiliki panduan/prosedur peralihan dan perolehan satuan kredit semester serta rekognisi pembelajaran lampau",
+        //         "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+        //         "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+        //         "LevelSangsi":2,
+        //         "LabelSangsi":"Sedang",
+        //         "checked":false,
+        //         "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 26,
+        //         "Pelanggaran":"Perguruan tinggi melaporkan data yang tidak valid ke PDDIKTI",
+        //         "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+        //         "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+        //         "LevelSangsi":2,
+        //         "LabelSangsi":"Sedang",
+        //         "checked":false,
+        //         "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 27,
+        //         "Pelanggaran":"Perguruan tinggi yang menyelenggarakan kegiatan akademik yang tidak sesuai dengan seluruh Standar Nasional Pendidikan Tinggi",
+        //         "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+        //         "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+        //         "LevelSangsi":2,
+        //         "LabelSangsi":"Sedang",
+        //         "checked":false,
+        //         "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 28,
+        //         "Pelanggaran":"Badan Penyelenggara tidak memberikan gaji pokok serta tunjangan kepada Dosen dan tenaga kependidikan sesuai dengan ketentuan peraturan perundang-undangan",
+        //         "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+        //         "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+        //         "LevelSangsi":2,
+        //         "LabelSangsi":"Sedang",
+        //         "checked":false,
+        //         "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 29,
+        //         "Pelanggaran":"Perguruan tinggi dan/atau Program Studi yang tidak terakreditasi mengeluarkan gelar akademik, gelar vokasi, dan/atau gelar profesi",
+        //         "Sangsi":"Penghentian pembinaan",
+        //         "KeteranganSangsi":"Penghentian bantuan keuangan, hibah, dan/atau bentuk bantuan lain yang diperuntukkan bagi perguruan tinggi",
+        //         "LevelSangsi":3,
+        //         "LabelSangsi":"Berat",
+        //         "checked":false,
+        //         "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 30,
+        //         "Pelanggaran":"Perguruan tinggi dan/atau Program Studi memberikan ijazah, gelar akademik, gelar vokasi, dan/atau gelar profesi kepada orang yang tidak berhak",
+        //         "Sangsi":"Penghentian pembinaan",
+        //         "KeteranganSangsi":"Penghentian layanan Pemerintah Pusat bagi perguruan tinggi",
+        //         "LevelSangsi":3,
+        //         "LabelSangsi":"Berat",
+        //         "checked":false,
+        //         "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 31,
+        //         "Pelanggaran":"Perguruan tinggi tidak mengusulkan akreditasi ulang Program Studi sebagaimana ditentukan dalam peraturan perundang-undangan",
+        //         "Sangsi":"Penghentian pembinaan",
+        //         "KeteranganSangsi":"Penghentian penerimaan Mahasiswa baru",
+        //         "LevelSangsi":3,
+        //         "LabelSangsi":"Berat",
+        //         "checked":false,
+        //         "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 32,
+        //         "Pelanggaran":"Perguruan tinggi lembaga negara lain yang menyelenggarakan pendidikan di wilayah Negara Kesatuan Republik Indonesia yang tidak sesuai dengan ketentuan peraturan perundang-undangan",
+        //         "Sangsi":"Penghentian pembinaan",
+        //         "KeteranganSangsi":"Larangan melakukan wisuda",
+        //         "LevelSangsi":3,
+        //         "LabelSangsi":"Berat",
+        //         "checked":false,
+        //         "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 33,
+        //         "Pelanggaran":"Perguruan tinggi melakukan penerimaan Mahasiswa baru dengan tujuan komersial",
+        //         "Sangsi":"Penghentian pembinaan",
+        //         "KeteranganSangsi":"Penghentian proses usul pembukaan Program Studi baru",
+        //         "LevelSangsi":3,
+        //         "LabelSangsi":"Berat",
+        //         "checked":false,
+        //         "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 34,
+        //         "Pelanggaran":"Pengelolaan perguruan tinggi tidak berprinsip nirlaba",
+        //         "Sangsi":"Penghentian pembinaan",
+        //         "KeteranganSangsi":"Penarikan Dosen Pegawai Negeri Sipil yang dipekerjakan",
+        //         "LevelSangsi":3,
+        //         "LabelSangsi":"Berat",
+        //         "checked":false,
+        //         "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 35,
+        //         "Pelanggaran":"Perguruan tinggi dan/atau Badan Penyelenggara melakukan perubahan nama perguruan tinggi, nama dan/atau bentuk Badan Penyelenggara, dan/atau lokasi Kampus Utama PTS tanpa izin dari Menteri",
+        //         "Sangsi":"Pencabutan izin Program Studi",
+        //         "KeteranganSangsi":"",
+        //         "LevelSangsi":3,
+        //         "LabelSangsi":"Berat",
+        //         "checked":false,
+        //         "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 36,
+        //         "Pelanggaran":"Perguruan tinggi menyelenggarakan Program Studi tanpa izin dari Menteri",
+        //         "Sangsi":"Pembubaran PTN atau pencabutan izin PTS",
+        //         "KeteranganSangsi":"",
+        //         "LevelSangsi":3,
+        //         "LabelSangsi":"Berat",
+        //         "checked":false,
+        //         "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 37,
+        //         "Pelanggaran":"Perguruan tinggi menyelenggarakan PJJ tanpa izin dari Menteri",
+        //         "Sangsi":"Pembubaran PTN atau pencabutan izin PTS",
+        //         "KeteranganSangsi":"",
+        //         "LevelSangsi":3,
+        //         "LabelSangsi":"Berat",
+        //         "checked":false,
+        //         "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 38,
+        //         "Pelanggaran":"Perguruan tinggi dan/atau Program Studi tidak lagi memenuhi syarat pendirian perguruan tinggi dan/atau pembukaan Program Studi",
+        //         "Sangsi":"Pembubaran PTN atau pencabutan izin PTS",
+        //         "KeteranganSangsi":"",
+        //         "LevelSangsi":3,
+        //         "LabelSangsi":"Berat",
+        //         "checked":false,
+        //         "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 39,
+        //         "Pelanggaran":"Terjadi sengketa",
+        //         "Sangsi":"Pembubaran PTN atau pencabutan izin PTS",
+        //         "KeteranganSangsi":"",
+        //         "LevelSangsi":3,
+        //         "LabelSangsi":"Berat",
+        //         "checked":false,
+        //         "TMTBulan":6
+        //     }
+        // ]
+    }
+
+    toggleDD = () => this.setState({
+        dropdownOpen: !this.state.dropdownOpen
+    })
+
+    toggleDDUpload = () => this.setState({
+        dropdownOpenUpload: !this.state.dropdownOpenUpload
+    })
+
+    toggleTimeline = e => {
+        this.setState({
+            timelineAlt: e.target.checked
+        })
+    }
+
+    // // handle particular changes on each checkbox
+    // onHandleChange(listName,index) {
+      
+    //     //set state to checkbox and data in promise mode
+    //     this.setState({
+    //         [listName]: this.state[listName].map(
+    //                     (item, i) => (
+                            
+    //                             index !== i ? 
+    //                             item : {...item, checked: !this.state[listName][index].checked}
+    //                         ) 
+    //                 )
+    //     });
+
+
+
+    // }
+
+
+    // state = {
+    //     location: { lat: 33.7906731, lng: -117.8357194 },
+    //     customStyle: [{featureType:'water',stylers:[{visibility:'on'},{color:'#bdd1f9'}]},{featureType:'all',elementType:'labels.text.fill',stylers:[{color:'#334165'}]},{featureType:'landscape',stylers:[{color:'#e9ebf1'}]},{featureType:'road.highway',elementType:'geometry',stylers:[{color:'#c5c6c6'}]},{featureType:'road.arterial',elementType:'geometry',stylers:[{color:'#fff'}]},{featureType:'road.local',elementType:'geometry',stylers:[{color:'#fff'}]},{featureType:'transit',elementType:'geometry',stylers:[{color:'#d8dbe0'}]},{featureType:'poi',elementType:'geometry',stylers:[{color:'#cfd5e0'}]},{featureType:'administrative',stylers:[{visibility:'on'},{lightness:33}]},{featureType:'poi.park',elementType:'labels',stylers:[{visibility:'on'},{lightness:20}]},{featureType:'road',stylers:[{color:'#d8dbe0',lightness:20}]}]
+    // }
+
+    
+    // renderTableData() {
+    //     //const dataTable = this.props.data;
+    //     //if (dataTable === true ) {
+
+
+    //         return this.state.tbljenisPelanggaran.map((jp,index) => {
+            
+    //         return (
+    //                 // <tr>
+    //                 //     <td>
+    //                 //         <label>{index+1}</label>
+    //                 //     </td>
+    //                 //     <td>
+    //                 //         <div className="media align-items-center">
+    //                 //             <a className="mr-3" href="">
+    //                 //                 <img className="img-fluid rounded thumb64" src="/static/img/dummy-search.png" alt="Dummy"/>
+    //                 //             </a>
+    //                 //             <div className="media-body d-flex">
+    //                 //                 <div>
+    //                 //                     <h4 className="m-0">{pt.nama}</h4>
+    //                 //                     <small className="text-muted">{pt.sk_pendirian} - {pt.website} - {pt.email}</small>
+    //                 //                     <p>{pt.alamat.jalan}</p>
+    //                 //                 </div>
+    //                 //                 <div className="ml-auto">
+    //                 //                     <Button color="info" size="sm" onClick={(e) => this.handleClick(e, pt.id)}>View</Button>
+    //                 //                 </div>
+    //                 //             </div>
+    //                 //         </div>
+    //                 //     </td>
+    //                 // </tr>
+    //             <tr>
+    //                 <td><label>{index+1}</label></td>
+    //                 <td>
+    //                     <div className="media align-items-center">
+    //                         <div className="media-body d-flex">
+    //                             <div>
+                                    
+    //                                 <p>{jp.Pelanggaran}</p>
+    //                                 <p>TMT : {jp.TMTBulan} Bulan</p>
+    //                                 <p>Level Pelanggaran : {jp.LabelSangsi}</p>
+                                    
+    //                             </div>
+    //                         </div>
+    //                     </div>
+    //                 </td>
+    //                 <td>
+    //                     <div className="media align-items-center">
+    //                         <div className="media-body d-flex">
+    //                             <div>
+    //                                 <p>{jp.Sangsi}</p>
+    //                                 <p>Keterangan : {jp.KeteranganSangsi}</p>
+    //                             </div>
+    //                         </div>
+    //                     </div>
+    //                 </td>
+    //                 <td>
+    //                     <div className="checkbox c-checkbox">
+    //                         <label>
+    //                             {/* <input type="checkbox" checked={this.state.listA[index].checked} onChange={e => this.handleChange('listA', index)}/> */}
+    //                             <input 
+    //                                     //name="cb"{jp.idPelanggaran}
+    //                                     type="checkbox"
+    //                                     // checked={
+    //                                     //     jp.checked=true
+    //                                     // } 
+    //                                     checked={this.state.tbljenisPelanggaran[jp.idPelanggaran].checked}
+    //                                     //{this.state.listA[0].checked}
+    //                                     onChange={
+    //                                         e => this.onHandleChange('tbljenisPelanggaran',jp.idPelanggaran)
+    //                                     }
+    //                             />
+    //                             <span className="fa fa-check"></span>
+    //                         </label>
+    //                     </div>
+    //                 </td>
+    //              </tr>
+    //         )
+    //         })
+    //     //}
+    //  }
+
+/*     handleApplyClick = () => {
+
+        const _noSangsi = document.getElementById('noSangsi').value
+        
+        const _hisJP=[];
+        //Get data for filter by checked
+        this.state.tbljenisPelanggaran.filter(
+            _jp => _jp.checked == true
+        ).map(selectedPelanggaran => (
+            _hisJP.push(selectedPelanggaran)
+        ));
+        
+
+        this.state.hisJenisPelanggaran.push(
+            {
+                "noSangsi":_noSangsi,
+                "pelanggaran":_hisJP
+            }
+        )
+
+        console.log("Result hisJenisPelanggaran : ", this.state.hisJenisPelanggaran)
+    } */
+
+    render() {
+
+        const { selectedOptionMulti } = this.state;
+
+        return (
+            <ContentWrapper unwrap>
+                <div className="bg-cover" style={{backgroundImage: 'url(/static/img/profile-bg.png)'}}>
+                    <div className="p-4 text-center" style={styleHeaderText} >
+                        <img className="img-thumbnail rounded-circle thumb128" src="/static/img/univ-avatar.png" alt="Avatar"/>
+                        <h3 className="m-0">{this.props.data.nama}</h3>
+                        <p>{this.props.data.sk_pendirian}</p>
+                        <p>{this.props.data.alamat.jalan}</p>
+                    </div>
+                </div>
+                {/* <div className="text-center bg-gray-dark p-3 mb-4">
+                    <Row>
+                        <Col xs="4" className="br">
+                            <h3 className="m-0">400</h3>
+                            <p className="m-0">
+                                <span className="d-none d-md-inline">Profile</span>
+                                <span>Views</span>
+                            </p>
+                        </Col>
+                        <Col xs="4" className="br">
+                            <h3 className="m-0">2000</h3>
+                            <p className="m-0">Likes</p>
+                        </Col>
+                        <Col xs="4">
+                            <h3 className="m-0">100</h3>
+                            <p className="m-0">Following</p>
+                        </Col>
+                    </Row>
+                </div> */}
+                {/* START card */}
+                <div className="p-3">
+                    {/* <Card className="card-default">
+                        <CardHeader> */}
+                                            {/* START panel tab */}
+                {/* <div className="card card-transparent"> */}
+                    <Nav tabs justified>
+                        <NavItem>
+                            <NavLink className={ this.state.activeTab === 'tasks' ? 'active':'' }
+                                onClick={() => { this.toggleTab('tasks'); }}
+                            >
+                                <em className="far fa-clock fa-fw"></em> History Jenis Pelanggaran
+                            </NavLink>
+                        </NavItem>
+                        {/* <NavItem>
+                            <NavLink className={ this.state.activeTab === 'trans' ? 'active':'' }
+                                onClick={() => { this.toggleTab('trans'); }}
+                            >
+                                <em className="fas fa-info-circle"></em> Action Jenis Pelanggaran
+                            </NavLink>
+                        </NavItem> */}
+                        <NavItem>
+                            <NavLink className={ this.state.activeTab === 'wizard' ? 'active':'' }
+                                onClick={() => { this.toggleTab('wizard'); }}
+                            >
+                                <em className="fas fa-info-circle"></em> Action Jenis Pelanggaran
+                            </NavLink>
+                        </NavItem>
+                    </Nav>
+
+                    
+                    <TabContent activeTab={this.state.activeTab} className="bg-white p-0">
+                        <TabPane tabId="tasks">
+                            <div className="p-3">
+                                {/* START card */}
+                                <Card className="card-default">
+                                    <CardHeader>Daftar Pelanggaran</CardHeader>
+                                    {/* START table-responsive */}
+                                    <Table striped bordered hover responsive>
+                                        <thead>
+                                            <tr>
+                                                <th>ID Laporan</th>
+                                                <th>UUID Pelanggaran</th>
+                                                <th>Progres</th>
+                                                <th>Aktivitas Terakhir</th>
+                                                <th></th>
+                                            </tr>
+                                        </thead>
+                                        <tbody>
+                                            <tr>
+                                                <td>
+                                                    {/* <div className="ml-auto">ABCDEFGH012345</div> */}
+                                                    <div className="d-flex align-items-center mb-3">BI:54678</div>
+                                                </td>
+                                                <td>
+                                                    {/* <div className="ml-auto">ABCDEFGH012345</div> */}
+                                                    <div className="d-flex align-items-center mb-3">ABCDEFGH012345</div>
+                                                </td>
+                                                <td>
+                                                    <div className="progress progress-sm">
+                                                        <div className="progress-bar progress-bar-striped bg-success" role="progressbar" style={{width: '10%'}}>
+                                                            {/* <span className="sr-only">80% Complete</span> */}
+                                                            {/* <div className="radial-bar radial-bar-50 radial-bar-xs" data-label="50%"></div> */}
+                                                        </div>
+                                                    </div>
+                                                </td>
+                                                <td>
+                                                    <div className="d-flex align-items-center mb-3">05/05/2021</div>
+                                                    {/* <div className="ml-auto">05/05/2021</div> */}
+                                                </td>
+                                                <td>
+                                                    <div className="d-flex align-items-center mb-3">
+                                                        <Button color="info" size="sm" onClick={(e) => this.handleClick(e, pt.id)}>Lanjutkan</Button>
+                                                    </div>
+                                                </td>
+
+                                            </tr>
+                                           
+                                        </tbody>
+                                    </Table>
+                                    {/* END table-responsive */}
+                                </Card>
+                                {/* END card */}
+                                                            
+                            </div>
+                        </TabPane>
+                        
+                        <TabPane tabId="wizard" className="p-3">
+                            <FormWizardVertical />
+                        </TabPane>
+                    </TabContent>
+                {/* </div> */}
+                {/* END panel tab */}
+                    {/* </CardHeader>
+                </Card> */}
+                </div>
+                {/* START card */}
+                <div className="p-3">
+                    <Row>
+                        <Col xl="9">
+                            <ul className="timeline">
+                                <li className="timeline-separator" data-datetime="Today"></li>
+                                <li className="timeline-inverted">
+                                    <div className="timeline-badge info">
+                                        <em className="far fa-file"></em>
+                                    </div>
+                                    <div className="timeline-card">
+                                        <div className="popover right">
+                                            <div className="arrow"></div>
+                                            <div className="popover-body">
+                                                <div className="d-flex align-items-center mb-3">
+                                                    <img className="mr-3 rounded-circle thumb48" src="/static/img/user/admin.png" alt="Avatar"/>
+                                                    <p className="m-0">
+                                                        {/* <a className="text-muted" href=""> */}
+                                                            <strong>Admin</strong>
+                                                        {/* </a> */}
+                                                        <br/>Upload Bukti Perbaikan 
+                                                        {/* <em className="fa fa-paperclip"></em> */}
+                                                        <Dropdown isOpen={this.state.dropdownOpenUpload} toggle={this.toggleDDUpload}>
+                                                            {/* <em className="fa fa-graduation-cap fa-fw mr-3"></em>Status */}
+                                                                {/* <p className="m-0"><br/> Upload Bukti Perbaikan </p> */}
+                                                                <DropdownToggle caret color="link">
+                                                                    <em className="fa fa-paperclip"></em>
+                                                                </DropdownToggle>
+                                                                <DropdownMenu className="animated fadeInUpShort">
+                                                                    <DropdownItem>
+                                                                        <em className="fa fa-lock mr-2"></em>Upload
+                                                                    </DropdownItem>
+                                                                </DropdownMenu>
+                                                            </Dropdown>
+                                                        </p> 
+                                                        {/* <li> */}
+
+
+                                                        {/* </li> */}
+                                                </div>
+                                                {/* <a href="">
+                                                    <img className="img-fluid img-thumbnail" src="/static/img/mockup.png" alt="Img"/>
+                                                </a> */}
+                                                <p className="text-muted my-2">3 Logs</p>
+                                                <div className="media bb p-2">
+                                                    <img className="mr-2 rounded-circle thumb32" src="/static/img/user/user.png" alt="Avatar"/>
+                                                    <div className="media-body">
+                                                        <p className="m-0">
+                                                            <a href="">
+                                                                <strong>Universitas Username</strong>
+                                                            </a>
+                                                        </p>
+                                                        <div className="text-sm text-muted">Uploaded Document File BBB.pdf</div>
+                                                    </div>
+                                                    <small className="ml-auto text-muted">12m ago</small>
+                                                </div>
+                                                <div className="media bb p-2">
+                                                    <img className="mr-2 rounded-circle thumb32" src="/static/img/user/user.png" alt="Avatar"/>
+                                                    <div className="media-body">
+                                                        <p className="m-0">
+                                                            <a href="">
+                                                                <strong>Universitas Username</strong>
+                                                            </a>
+                                                        </p>
+                                                        <div className="text-sm text-muted">Uploaded Document File CCC.pdf</div>
+                                                    </div>
+                                                    <small className="ml-auto text-muted">30m ago</small>
+                                                </div>
+                                                <div className="media bb p-2">
+                                                    <img className="mr-2 rounded-circle thumb32" src="/static/img/user/user.png" alt="Avatar"/>
+                                                    <div className="media-body">
+                                                        <p className="m-0">
+                                                            <a href="">
+                                                                <strong>Universitas Username</strong>
+                                                            </a>
+                                                        </p>
+                                                        <div className="text-sm text-muted">Uploaded Document File AAA.pdf</div>
+                                                    </div>
+                                                    <small className="ml-auto text-muted">30m ago</small>
+                                                </div>
+                                                {/* <form className="mt-2" method="post" action="#">
+                                                    <textarea className="form-control no-resize" placeholder="Comment..." rows="1"></textarea>
+                                                </form> */}
+                                            </div>
+                                        </div>
+                                    </div>
+                                </li>
+                                <li>
+                                    <div className="timeline-badge danger">
+                                        <em className="fas fa-ticket-alt"></em>
+                                    </div>
+                                    <div className="timeline-card">
+                                        <div className="popover left">
+                                            <div className="arrow"></div>
+                                            <div className="popover-body">
+                                                <div className="d-flex align-items-center mb-3">
+                                                    <img className="mr-3 rounded-circle thumb48" src="/static/img/user/admin.png" alt="Avatar"/>
+                                                    <p className="m-0">
+                                                        {/* <a className="text-muted" href=""> */}
+                                                            <strong>Admin</strong>
+                                                        {/* </a> */}
+                                                        <br/>opened project
+                                                        <a className="ml-2" href="">#548795</a>
+                                                    </p>
+                                                </div>
+                                                <p>
+                                                    <em>&mdash; Project description sample</em>
+                                                </p>
+                                            </div>
+                                        </div>
+                                    </div>
+                                </li>
+                                <li className="timeline-end">
+                                    <a className="timeline-badge">
+                                        <em className="fa fa-plus"></em>
+                                    </a>
+                                </li>
+                            </ul>
+                        </Col>
+                        <Col xl="3">
+                            <div className="card card-default">
+                                <div className="card-body">
+                                    <div className="text-center">
+                                        <h3 className="mt-0">{this.props.data.nama}</h3>
+                                        <p>{this.props.data.sk_pendirian}</p>
+                                    </div>
+                                    <hr/>
+                                    <ul className="list-unstyled px-4">
+                                        <li>
+                                            <em className="fa fa-globe fa-fw mr-3"></em>{this.props.data.website}
+                                        </li>
+                                        <li>
+                                            <em className="fa fa-graduation-cap fa-fw mr-3"></em>Status Pelanggaran : Tidak Ada
+                                        </li>
+                                        {/* <li>
+                                            <Dropdown isOpen={this.state.dropdownOpen} toggle={this.toggleDD}>
+                                            <em className="fa fa-graduation-cap fa-fw mr-3"></em>Status
+                                            
+                                                <DropdownToggle caret color="link">
+                                                </DropdownToggle>
+                                                <DropdownMenu className="animated fadeInUpShort">
+                                                    <DropdownItem>
+                                                        <em className="fa fa-lock mr-2"></em>Status Sample 1
+                                                    </DropdownItem>
+                                                    <DropdownItem>
+                                                        <em className="fa fa-lock-open mr-2"></em>Status Sample 2
+                                                    </DropdownItem>
+                                                    <DropdownItem>
+                                                        <em className="fa fa-low-vision mr-2"></em>Status Sample 3
+                                                    </DropdownItem>
+                                                </DropdownMenu>
+                                            </Dropdown>
+                                        </li> */}
+                                        {/* <li>
+                                            <em className="fa fa-graduation-cap fa-fw mr-3"></em>
+                                            <div class="dropdown">
+                                                <button type="button" aria-haspopup="true" aria-expanded="false" class="btn btn-secondary">Status
+                                                </button>
+                                                <div tabindex="-1" role="menu" aria-hidden="true" class="animated bounceInDown dropdown-menu"><button type="button" tabindex="0" class="dropdown-item">Action</button><button type="button" tabindex="0" class="dropdown-item">Another action</button><button type="button" tabindex="0" class="dropdown-item active">Active Item</button><div tabindex="-1" class="dropdown-divider"></div><button type="button" tabindex="0" class="dropdown-item">Separated link</button></div>
+                                            </div>
+                                        </li> */}
+                                       {/* <li> */}
+                                        {/* <em className="fa fa-graduation-cap fa-fw mr-3"></em> */}
+                                                {/* <Dropdown isOpen={this.state.dropdownOpen} toggle={this.toggleDD}>
+                                                <DropdownToggle caret color="link">
+                                                    <em className="fa fa-paperclip">Status</em>
+                                                </DropdownToggle>
+                                                <DropdownMenu className="animated fadeInUpShort">
+                                                    <DropdownItem>
+                                                        <em className="fa fa-download mr-2"></em>Download
+                                                    </DropdownItem>
+                                                    <DropdownItem>
+                                                        <em className="fa fa-share mr-2"></em>Send to
+                                                    </DropdownItem>
+                                                    <DropdownItem>
+                                                        <em className="fa fa-times mr-2"></em>Delete
+                                                    </DropdownItem>
+                                                </DropdownMenu>
+                                            </Dropdown> */}
+                                        {/* </li> */}
+                                    </ul>
+                                </div>
+                            </div>
+                            
+                        </Col>
+                    </Row>
+                </div>
+            </ContentWrapper>
+            );
+    }
+
+}
+
+export default Profile;
+

+ 636 - 0
pages/app/profile.wizard.vertical copy.js

@@ -0,0 +1,636 @@
+import React, { Component } from 'react';
+import {
+    Card,
+    CardHeader,
+    CardFooter,
+    CardBody,
+    TabContent,
+    FormGroup,
+    TabPane,
+    Input,
+    Nav,
+    NavItem,
+    NavLink,
+    Button,
+    Row,
+    Col,
+    Table,
+    CustomInput
+} from 'reactstrap';
+import classnames from 'classnames';
+
+const stepNavitemStyle = {
+    backgroundColor: '#fcfcfc'
+};
+
+class FormWizardVertical extends Component {
+    state = {
+        activeStep: '1',
+        hisJenisPelanggaran:[],
+        tbljenisPelanggaran:[
+            {
+                "idPelanggaran": 0,
+                "Pelanggaran":"Tidak Ada",
+                "Sangsi":"Tanpa Sangsi",
+                "KeteranganSangsi":"-",
+                "LevelSangsi":0,
+                "LabelSangsi":"Tidak ada",
+                "checked":false,
+                "TMTBulan":0
+            },
+            {
+                "idPelanggaran": 1,
+                "Pelanggaran":"Pemimpin perguruan tinggi tidak melindungi dan memfasilitasi pelaksanaan kebebasan akademik,kebebasan mimbar akademik, dan otonomi keilmuan di perguruan tinggi",
+                "Sangsi":"Peringatan Tertulis",
+                "KeteranganSangsi":"-",
+                "LevelSangsi":1,
+                "LabelSangsi":"Ringan",
+                "checked":false,
+                 "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 2,
+                "Pelanggaran":"Perguruan tinggi tidak memuat mata kuliah agama,Pancasila, kewarganegaraan, dan bahasa Indonesia dalam kurikulumnya",
+                "Sangsi":"Peringatan Tertulis",
+                "KeteranganSangsi":"-",
+                "LevelSangsi":1,
+                "LabelSangsi":"Ringan",
+                "checked":false,
+                 "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 3,
+                "Pelanggaran":"Perguruan tinggi tidak menggunakan bahasa Indonesia sebagai bahasa pengantar utama",
+                "Sangsi":"Peringatan Tertulis",
+                "KeteranganSangsi":"-",
+                "LevelSangsi":1,
+                "LabelSangsi":"Ringan",
+                "checked":false,
+                 "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 4,
+                "Pelanggaran":"Perguruan tinggi tidak menyebarluaskan hasil penelitian dengan cara diseminarkan, dipublikasikan, dan/atau dipatenkan, kecuali hasil penelitian yang bersifat rahasia, mengganggu, dan/atau membahayakan kepentingan umum",
+                "Sangsi":"Peringatan Tertulis",
+                "KeteranganSangsi":"",
+                "LevelSangsi":1,
+                "LabelSangsi":"Ringan",
+                "checked":false,
+                 "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 5,
+                "Pelanggaran":"PTN tidak menerima calon Mahasiswa yang telah memenuhi persyaratan akademik dan lolos seleksi penerimaan Mahasiswa secara nasional",
+                "Sangsi":"Peringatan Tertulis",
+                "KeteranganSangsi":"",
+                "LevelSangsi":1,
+                "LabelSangsi":"Ringan",
+                 "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 6,
+                "Pelanggaran":"PTN tidak mencari dan menjaring calon Mahasiswa yang memiliki potensi akademik tinggi, tetapi kurang mampu secara ekonomi dan calon Mahasiswa dari daerah terdepan, terluar, dan tertinggal untuk diterima paling sedikit 20% (dua puluh persen) dari seluruh Mahasiswa baru yang diterima dan tersebar pada semua Program Studi",
+                "Sangsi":"Peringatan Tertulis",
+                "KeteranganSangsi":"",
+                "LevelSangsi":1,
+                "LabelSangsi":"Ringan",
+                "checked":false,
+                 "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 7,
+                "Pelanggaran":"Perguruan tinggi tidak memenuhi hak Mahasiswa yang kurang mampu secara ekonomi untuk dapat menyelesaikan studinya sesuai dengan peraturan akademik",
+                "Sangsi":"Peringatan Tertulis",
+                "KeteranganSangsi":"",
+                "LevelSangsi":1,
+                "LabelSangsi":"Ringan",
+                "checked":false,
+                 "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 8,
+                "Pelanggaran":"Perguruan tinggi memberi gelar yang tidak menggunakan bahasa Indonesia",
+                "Sangsi":"Peringatan Tertulis",
+                "KeteranganSangsi":"",
+                "LevelSangsi":1,
+                "LabelSangsi":"Ringan",
+                "checked":false,
+                 "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 9,
+                "Pelanggaran":"Pemimpin perguruan tinggi tidak melindungi dan memfasilitasi pengelolaan di bidang non akademik",
+                "Sangsi":"Peringatan Tertulis",
+                "KeteranganSangsi":"",
+                "LevelSangsi":1,
+                "LabelSangsi":"Ringan",
+                "checked":false,
+                 "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 10,
+                "Pelanggaran":"Perguruan tinggi tidak mengumumkan ringkasan laporan tahunan kepada masyarakat",
+                "Sangsi":"Peringatan Tertulis",
+                "KeteranganSangsi":"",
+                "LevelSangsi":1,
+                "LabelSangsi":"Ringan",
+                "checked":false,
+                 "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 11,
+                "Pelanggaran":"Perguruan tinggi memiliki Dosen tetap kurang dari 5 (lima) orang untuk setiap Program Studi",
+                "Sangsi":"Peringatan Tertulis",
+                "KeteranganSangsi":"",
+                "LevelSangsi":1,
+                "LabelSangsi":"Ringan",
+                "checked":false,
+                 "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 12,
+                "Pelanggaran":"Perguruan tinggi tidak memenuh  nisbah Dosen dan Mahasiswa sesuai dengan ketentuan peraturan perundang-undangan",
+                "Sangsi":"Peringatan Tertulis",
+                "KeteranganSangsi":"",
+                "LevelSangsi":1,
+                "LabelSangsi":"Ringan",
+                "checked":false,
+                 "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 13,
+                "Pelanggaran":"Perguruan tinggi tidak melakukan pelaporan secara berkala ke pangkalan data Pendidikan Tinggi",
+                "Sangsi":"Peringatan Tertulis",
+                "KeteranganSangsi":"",
+                "LevelSangsi":1,
+                "LabelSangsi":"Ringan",
+                "checked":false,
+                 "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 14,
+                "Pelanggaran":"Program sarjana memiliki Dosen yang tidak berkualifikasi akademik minimum lulusan program magister atau sederajat",
+                "Sangsi":"Penghentian sementara bantuan biaya pendidikan dari pemerintahan pusat",
+                "KeteranganSangsi":"Berupa penundaan pemberian bantuan keuangan, hibah, dan/atau bentuk bantuan lain bagi perguruan tinggi",
+                "LevelSangsi":2,
+                "LabelSangsi":"Sedang",
+                "checked":false,
+                 "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 15,
+                "Pelanggaran":"Program magister memiliki Dosen yang tidak berkualifikasi akademik lulusan program doktor atau sederajat",
+                "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+                "KeteranganSangsi":"Penghentian sementara penerimaan Mahasiswa baru",
+                "LevelSangsi":2,
+                "LabelSangsi":"Sedang",
+                "checked":false,
+                 "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 16,
+                "Pelanggaran":"Program doktor memiliki Dosen yang tidak berkualifikasi akademik lulusan program doktor atau sederajat",
+                "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+                "KeteranganSangsi":"Penundaan proses usul pembukaan Program Studi baru",
+                "LevelSangsi":2,
+                "LabelSangsi":"Sedang",
+                "checked":false,
+                 "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 17,
+                "Pelanggaran":"Program diploma memiliki Dosen yang tidak berkualifikasi akademik minimum lulusan program magister atau sederajat",
+                "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+                "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+                "LevelSangsi":2,
+                "LabelSangsi":"Sedang",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 18,
+                "Pelanggaran":"Program magister terapan memiliki Dosen yang tidak berkualifikasi akademik lulusan program doktor atau sederajat",
+                "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+                "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+                "LevelSangsi":2,
+                "LabelSangsi":"Sedang",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 19,
+                "Pelanggaran":"Program doktor terapan memiliki Dosen yang tidak berkualifikasi akademik lulusan program doktor atau sederajat",
+                "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+                "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+                "LevelSangsi":2,
+                "LabelSangsi":"Sedang",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 20,
+                "Pelanggaran":"Program profesi memiliki Dosen yang tidak berkualifikasi akademik minimum lulusan profesi dan/atau lulusan program magister atau sederajat dengan pengalaman kerja paling singkat 2 (dua) tahun",
+                "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+                "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+                "LevelSangsi":2,
+                "LabelSangsi":"Sedang",
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 21,
+                "Pelanggaran":"Program spesialis memiliki Dosen yang tidak berkualifikasi akademik minimum lulusan program spesialis dan/atau lulusan program doktor atau sederajat dengan pengalaman kerja paling singkat 2 (dua) tahun",
+                "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+                "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+                "LevelSangsi":2,
+                "LabelSangsi":"Sedang",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 22,
+                "Pelanggaran":"Perguruan tinggi tidak mencabut gelar akademik, gelar vokasi, atau gelar profesi apabila karya ilmiah yang digunakan untuk memperoleh gelar akademik, gelar vokasi, atau gelar profesi terbukti merupakan hasil plagiat",
+                "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+                "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+                "LevelSangsi":2,
+                "LabelSangsi":"Sedang",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 23,
+                "Pelanggaran":"Perguruan tinggi tidak menyediakan, memfasilitasi, memiliki Sumber Belajar sesuai dengan Program Studi yang dikembangkan",
+                "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+                "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+                "LevelSangsi":2,
+                "LabelSangsi":"Sedang",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 24,
+                "Pelanggaran":"Perguruan tinggi tidak memiliki statuta",
+                "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+                "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+                "LevelSangsi":2,
+                "LabelSangsi":"Sedang",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 25,
+                "Pelanggaran":"Perguruan tinggi tidak memiliki panduan/prosedur peralihan dan perolehan satuan kredit semester serta rekognisi pembelajaran lampau",
+                "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+                "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+                "LevelSangsi":2,
+                "LabelSangsi":"Sedang",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 26,
+                "Pelanggaran":"Perguruan tinggi melaporkan data yang tidak valid ke PDDIKTI",
+                "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+                "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+                "LevelSangsi":2,
+                "LabelSangsi":"Sedang",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 27,
+                "Pelanggaran":"Perguruan tinggi yang menyelenggarakan kegiatan akademik yang tidak sesuai dengan seluruh Standar Nasional Pendidikan Tinggi",
+                "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+                "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+                "LevelSangsi":2,
+                "LabelSangsi":"Sedang",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 28,
+                "Pelanggaran":"Badan Penyelenggara tidak memberikan gaji pokok serta tunjangan kepada Dosen dan tenaga kependidikan sesuai dengan ketentuan peraturan perundang-undangan",
+                "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+                "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+                "LevelSangsi":2,
+                "LabelSangsi":"Sedang",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 29,
+                "Pelanggaran":"Perguruan tinggi dan/atau Program Studi yang tidak terakreditasi mengeluarkan gelar akademik, gelar vokasi, dan/atau gelar profesi",
+                "Sangsi":"Penghentian pembinaan",
+                "KeteranganSangsi":"Penghentian bantuan keuangan, hibah, dan/atau bentuk bantuan lain yang diperuntukkan bagi perguruan tinggi",
+                "LevelSangsi":3,
+                "LabelSangsi":"Berat",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 30,
+                "Pelanggaran":"Perguruan tinggi dan/atau Program Studi memberikan ijazah, gelar akademik, gelar vokasi, dan/atau gelar profesi kepada orang yang tidak berhak",
+                "Sangsi":"Penghentian pembinaan",
+                "KeteranganSangsi":"Penghentian layanan Pemerintah Pusat bagi perguruan tinggi",
+                "LevelSangsi":3,
+                "LabelSangsi":"Berat",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 31,
+                "Pelanggaran":"Perguruan tinggi tidak mengusulkan akreditasi ulang Program Studi sebagaimana ditentukan dalam peraturan perundang-undangan",
+                "Sangsi":"Penghentian pembinaan",
+                "KeteranganSangsi":"Penghentian penerimaan Mahasiswa baru",
+                "LevelSangsi":3,
+                "LabelSangsi":"Berat",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 32,
+                "Pelanggaran":"Perguruan tinggi lembaga negara lain yang menyelenggarakan pendidikan di wilayah Negara Kesatuan Republik Indonesia yang tidak sesuai dengan ketentuan peraturan perundang-undangan",
+                "Sangsi":"Penghentian pembinaan",
+                "KeteranganSangsi":"Larangan melakukan wisuda",
+                "LevelSangsi":3,
+                "LabelSangsi":"Berat",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 33,
+                "Pelanggaran":"Perguruan tinggi melakukan penerimaan Mahasiswa baru dengan tujuan komersial",
+                "Sangsi":"Penghentian pembinaan",
+                "KeteranganSangsi":"Penghentian proses usul pembukaan Program Studi baru",
+                "LevelSangsi":3,
+                "LabelSangsi":"Berat",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 34,
+                "Pelanggaran":"Pengelolaan perguruan tinggi tidak berprinsip nirlaba",
+                "Sangsi":"Penghentian pembinaan",
+                "KeteranganSangsi":"Penarikan Dosen Pegawai Negeri Sipil yang dipekerjakan",
+                "LevelSangsi":3,
+                "LabelSangsi":"Berat",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 35,
+                "Pelanggaran":"Perguruan tinggi dan/atau Badan Penyelenggara melakukan perubahan nama perguruan tinggi, nama dan/atau bentuk Badan Penyelenggara, dan/atau lokasi Kampus Utama PTS tanpa izin dari Menteri",
+                "Sangsi":"Pencabutan izin Program Studi",
+                "KeteranganSangsi":"",
+                "LevelSangsi":3,
+                "LabelSangsi":"Berat",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 36,
+                "Pelanggaran":"Perguruan tinggi menyelenggarakan Program Studi tanpa izin dari Menteri",
+                "Sangsi":"Pembubaran PTN atau pencabutan izin PTS",
+                "KeteranganSangsi":"",
+                "LevelSangsi":3,
+                "LabelSangsi":"Berat",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 37,
+                "Pelanggaran":"Perguruan tinggi menyelenggarakan PJJ tanpa izin dari Menteri",
+                "Sangsi":"Pembubaran PTN atau pencabutan izin PTS",
+                "KeteranganSangsi":"",
+                "LevelSangsi":3,
+                "LabelSangsi":"Berat",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 38,
+                "Pelanggaran":"Perguruan tinggi dan/atau Program Studi tidak lagi memenuhi syarat pendirian perguruan tinggi dan/atau pembukaan Program Studi",
+                "Sangsi":"Pembubaran PTN atau pencabutan izin PTS",
+                "KeteranganSangsi":"",
+                "LevelSangsi":3,
+                "LabelSangsi":"Berat",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 39,
+                "Pelanggaran":"Terjadi sengketa",
+                "Sangsi":"Pembubaran PTN atau pencabutan izin PTS",
+                "KeteranganSangsi":"",
+                "LevelSangsi":3,
+                "LabelSangsi":"Berat",
+                "checked":false,
+                "TMTBulan":6
+            }
+        ]
+    };
+
+    toggleStep = activeStep => () => {
+        if (this.state.activeStep !== activeStep) {
+            this.setState({
+                activeStep
+            });
+        }
+    };
+
+    // handle particular changes on each checkbox
+    onHandleChange(listName,index) {
+    
+        //set state to checkbox and data in promise mode
+        this.setState({
+            [listName]: this.state[listName].map(
+                        (item, i) => (
+                            
+                                index !== i ? 
+                                item : {...item, checked: !this.state[listName][index].checked}
+                            ) 
+                    )
+        });
+
+
+
+    };
+
+    // done = () => {
+    //     alert('Custom message without form submission.');
+    // };
+
+    handleApplyClick = () => {
+
+        const _noSangsi = document.getElementById('noSangsi').value
+        
+        const _hisJP=[];
+        //Get data for filter by checked
+        this.state.tbljenisPelanggaran.filter(
+            _jp => _jp.checked == true
+        ).map(selectedPelanggaran => (
+            _hisJP.push(selectedPelanggaran)
+        ));
+        
+        this.state.hisJenisPelanggaran=[];
+        this.state.hisJenisPelanggaran.push(
+            {
+                "noSangsi":_noSangsi,
+                "pelanggaran":_hisJP
+            }
+        )
+
+        console.log("Result hisJenisPelanggaran : ", this.state.hisJenisPelanggaran)
+    }
+
+    renderTableData() {
+
+     };
+
+    render() {
+        return (
+            <Card className="card-default">
+                {/* <CardHeader>Vertical Example (without validation)</CardHeader> */}
+                <CardBody>
+                    <Row>
+                        <Col xs="4">
+                            <Nav pills vertical={true}>
+                                <NavItem style={stepNavitemStyle}>
+                                    <NavLink
+                                        tag="div"
+                                        className={classnames({
+                                            active: this.state.activeStep === '1'
+                                        })}
+                                        onClick={this.toggleStep('1')}
+                                    >
+                                        <h4 className="text-left my-3">1. Perbaikan</h4>
+                                    </NavLink>
+                                </NavItem>
+                                <NavItem style={stepNavitemStyle}>
+                                    <NavLink
+                                        tag="div"
+                                        className={classnames({
+                                            active: this.state.activeStep === '2'
+                                        })}
+                                        onClick={this.toggleStep('2')}
+                                    >
+                                        <h4 className="text-left my-3">2. Sanggahan</h4>
+                                    </NavLink>
+                                </NavItem>
+                            </Nav>
+                        </Col>
+                        <Col xs="8">
+                            <TabContent activeTab={this.state.activeStep} className="border-0">
+
+                                <TabPane tabId="1">
+                                    {/* <div className="pt-3 mb-3"> */}
+                                    <div>
+                                        {/* START card */}
+                                        <Card className="card-default">
+                                            <CardHeader>
+                                                <label>Form Perbaikan Sanksi</label>    
+                                            </CardHeader>
+                                            <CardBody>
+                                                <form className="form-horizontal" method="get" action="/" onSubmit={this.onSubmit}>
+                                                    {/* <fieldset> */}
+                                                    <FormGroup row>
+                                                        <label className="col-md-2 col-form-label">Nomor Sanksi</label>
+                                                        <div className="col-md-10">
+                                                            <Input type="text"/>
+                                                            <span className="form-text">Nomor sanksi akan digenerate otomatis dari sistem</span>
+                                                        </div>
+                                                    </FormGroup>
+                                                    {/* </fieldset> */}
+                                                    <FormGroup row>
+                                                        <label className="col-md-2 col-form-label">Keterangan Perbaikan</label>
+                                                        <div className="col-md-10">
+                                                            <Input type="textarea"/>
+                                                            {/* <textarea class="form-control" id="inputContact6" row="3">Some nice Street, 1234</textarea> */}
+                                                            <span className="form-text">Deskripsi perbaikan minimum karakter 50 maksimum 200 karakter</span>
+                                                        </div>
+                                                    </FormGroup>
+                                                    <FormGroup row>
+                                                        <label className="col-md-2 col-form-label">Upload File Pendukung</label>
+                                                        <div className="col-md-10">
+                                                            {/* <input type="file" multiple name="customFile" class="custom-file-input"></input> */}
+                                                            <CustomInput
+                                                                type="file" multiple
+                                                                id="exampleCustomFileBrowser"
+                                                                name="customFile"
+                                                            />
+                                                            <span className="form-text">Multiple files upload</span>
+                                                        </div>
+                                                    </FormGroup>
+                                                    <FormGroup row>
+                                                        <div className="col-xl-10">
+                                                            <button className="btn btn-sm btn-primary" type="submit">Submit Perbaikan</button>
+                                                        </div>
+                                                    </FormGroup>
+                                                </form>
+                                            </CardBody>
+                                        </Card>
+                                        {/* END card */}
+                                    </div>
+                                </TabPane>
+                                <TabPane tabId="2">
+                                    {/* <div className="pt-3 mb-3"> */}
+                                    <div>   
+                                        {/* START card */}
+                                        <Card className="card-default">
+                                            <CardHeader>
+                                                <label>Form Sanggahan Sanksi</label>    
+                                            </CardHeader>
+                                            <CardBody>
+                                                <form className="form-horizontal" method="get" action="/" onSubmit={this.onSubmit}>
+                                                    {/* <fieldset> */}
+                                                    <FormGroup row>
+                                                        <label className="col-md-2 col-form-label">Nomor Sanksi</label>
+                                                        <div className="col-md-10">
+                                                            <Input type="text"/>
+                                                            <span className="form-text">Nomor sanksi akan digenerate otomatis dari sistem</span>
+                                                        </div>
+                                                    </FormGroup>
+                                                    {/* </fieldset> */}
+                                                    <FormGroup row>
+                                                        <label className="col-md-2 col-form-label">Keterangan Sanggahan</label>
+                                                        <div className="col-md-10">
+                                                            <Input type="textarea"/>
+                                                            {/* <textarea class="form-control" id="inputContact6" row="3">Some nice Street, 1234</textarea> */}
+                                                            <span className="form-text">Deskripsi Sanggahan minimum karakter 50 maksimum 200 karakter</span>
+                                                        </div>
+                                                    </FormGroup>
+                                                    <FormGroup row>
+                                                        <label className="col-md-2 col-form-label">Upload File Pendukung</label>
+                                                        <div className="col-md-10">
+                                                            {/* <input type="file" multiple name="customFile" class="custom-file-input"></input> */}
+                                                            <CustomInput
+                                                                type="file" multiple
+                                                                id="exampleCustomFileBrowser"
+                                                                name="customFile"
+                                                            />
+                                                            <span className="form-text">Multiple files upload</span>
+                                                        </div>
+                                                    </FormGroup>
+                                                    <FormGroup row>
+                                                        <div className="col-xl-10">
+                                                            <button className="btn btn-sm btn-primary" type="submit">Submit Sanggahan</button>
+                                                        </div>
+                                                    </FormGroup>
+                                                </form>
+                                            </CardBody>
+                                        </Card>
+                                        {/* END card */}
+                                    </div>
+
+
+                                </TabPane>
+                                
+                            </TabContent>
+                        </Col>
+                    </Row>
+                </CardBody>
+            </Card>
+        );
+    }
+}
+
+export default FormWizardVertical;

+ 425 - 0
pages/app/projectdetails.js

@@ -0,0 +1,425 @@
+import React, { Component } from 'react';
+import ContentWrapper from '@/components/Layout/ContentWrapper';
+import { Row, Col, Progress } from 'reactstrap';
+
+import Sparkline from '@/components/Common/Sparklines';
+import Scrollable from '@/components/Common/Scrollable'
+
+class ProjectDetails extends Component {
+
+    render() {
+        return (
+            <ContentWrapper>
+                <div className="content-heading">
+                    <div>Project #1 Management
+                        <small>In lacinia tellus vitae nisl consectetur pellentesque.</small>
+                    </div>
+                </div>
+                <Row>
+                    <Col xl="8">
+                        {/* Main card */}
+                        <div className="card b">
+                            <div className="card-header">
+                                <div className="float-right mt-2">
+                                    <div className="badge badge-info">started</div>
+                                </div>
+                                <h4 className="my-2">
+                                    <span>Project #1</span>
+                                </h4>
+                            </div>
+                            <div className="card-body bb bt">
+                                <a className="inline" href="">
+                                    <img className="rounded-circle thumb48" src="/static/img/user/03.jpg" alt="project member"/>
+                                </a>
+                                <a className="inline" href="">
+                                    <img className="rounded-circle thumb24" src="/static/img/user/02.jpg" alt="project member"/>
+                                </a>
+                                <a className="inline" href="">
+                                    <img className="rounded-circle thumb24" src="/static/img/user/04.jpg" alt="project member"/>
+                                </a>
+                                <a className="inline" href="">
+                                    <img className="rounded-circle thumb24" src="/static/img/user/05.jpg" alt="project member"/>
+                                </a>
+                                <a className="inline" href="">
+                                    <img className="rounded-circle thumb24" src="/static/img/user/06.jpg" alt="project member"/>
+                                </a>
+                                <a className="inline" href="">
+                                    <img className="rounded-circle thumb24" src="/static/img/user/07.jpg" alt="project member"/>
+                                </a>
+                                <a className="inline" href="">
+                                    <img className="rounded-circle thumb24" src="/static/img/user/08.jpg" alt="project member"/>
+                                </a>
+                                <a className="inline" href="">
+                                    <img className="rounded-circle thumb24" src="/static/img/user/09.jpg" alt="project member"/>
+                                </a>
+                                <div className="float-right mt-2">
+                                    <button className="btn btn-secondary" type="button">Add Member</button>
+                                </div>
+                            </div>
+                            <div className="card-body">
+                                <h4>Description</h4>
+                                <p>Nam eget risus tellus. Vestibulum pretium mollis ligula, at ultrices quam egestas et. Sed mattis tincidunt ligula, ac porttitor lectus porttitor condimentum. Ut et ligula ante, nec mollis lacus. Aliquam erat volutpat. Aliquam auctor diam ut urna lacinia faucibus. Proin est sapien, convallis non hendrerit nec, laoreet ut ipsum. Aenean vehicula, nulla vel pharetra accumsan, elit risus pretium arcu, nec ultrices urna ligula vel nunc. Cras porttitor orci eget nibh pharetra mollis.</p>
+                                <p>Maecenas at porta purus. Ut eu aliquam orci. Praesent in libero at neque gravida venenatis auctor nec arcu.</p>
+                                <p className="text-right">
+                                    <button className="btn btn-secondary" type="button">View all documents</button>
+                                </p>
+                            </div>
+                            <div className="card-body">
+                                <p>
+                                    <small className="float-left">Activity over time</small>
+                                    <Sparkline tag="span" options={{
+                                            type:"line",
+                                            height:"100",
+                                            width:"100%",
+                                            lineWidth:"3",
+                                            lineColor:"#23b7e5",
+                                            chartRangeMin:"0",
+                                            spotColor:"#888",
+                                            minSpotColor:"#23b7e5",
+                                            maxSpotColor:"#23b7e5",
+                                            fillColor:"#e5f2fa",
+                                            highlightLineColor:"#fff",
+                                            spotRadius:"5",
+                                            resize:true
+                                        }}
+                                        values={[2,4,5,6,10,7,8,5,7,7,11,8,6,9,11,9,13,14,12,16]}

+                                        className="sparkline text-center"/>
+                                </p>
+                            </div>
+                            <div className="card-body">
+                                <Row className="text-center">
+                                    <Col xs="4">
+                                        <Sparkline options={{
+                                                type:"pie",
+                                                height:"60",
+                                                sliceColors:['#edf1f2', '#23b7e5']
+                                            }}
+                                            values={[20,80]}

+                                            className="sparkline"/>
+                                        <p className="mt-3">Issues</p>
+                                    </Col>
+                                    <Col xs="4">
+                                        <Sparkline options={{
+                                                type:"pie",
+                                                height:"60",
+                                                sliceColors:['#edf1f2', '#27c24c']
+                                            }}
+                                            values={[60,40]}

+                                            className="sparkline"/>
+                                        <p className="mt-3">Commits</p>
+                                    </Col>
+                                    <Col xs="4">
+                                        <Sparkline options={{
+                                                type:"pie",
+                                                height:"60",
+                                                sliceColors:['#edf1f2', '#ff902b']
+                                            }}
+                                            values={[90,10]}

+                                            className="sparkline"/>
+                                        <p className="mt-3">Files</p>
+                                    </Col>
+                                </Row>
+                            </div>
+                        </div>
+                        {/* End Main card */}
+                        {/* Team messages */}
+                        <div className="card card-default">
+                            <div className="card-header">
+                                <div className="px-2 float-right badge badge-danger">5</div>
+                                <div className="px-2 mr-2 float-right badge badge-success">12</div>
+                                <div className="card-title">Team messages</div>
+                            </div>
+                            {/* START list group */}
+                            <Scrollable height="180px" className="list-group">
+                                {/* START list group item */}
+                                <div className="list-group-item list-group-item-action">
+                                    <div className="media">
+                                        <img className="align-self-start mx-2 circle thumb32" src="/static/img/user/02.jpg" alt="Avatar"/>
+                                        <div className="media-body text-truncate">
+                                            <p className="mb-1">
+                                                <strong className="text-primary">
+                                                    <span className="circle bg-success circle-lg text-left"></span>
+                                                    <span>Catherine Ellis</span>
+                                                </strong>
+                                            </p>
+                                            <p className="mb-1 text-sm">Cras sit amet nibh libero, in gravida nulla. Nulla...</p>
+                                        </div>
+                                        <div className="ml-auto">
+                                            <small className="text-muted ml-2">2h</small>
+                                        </div>
+                                    </div>
+                                </div>
+                                {/* END list group item */}
+                                {/* START list group item */}
+                                <div className="list-group-item list-group-item-action">
+                                    <div className="media">
+                                        <img className="align-self-start mx-2 circle thumb32" src="/static/img/user/03.jpg" alt="Avatar"/>
+                                        <div className="media-body text-truncate">
+                                            <p className="mb-1">
+                                                <strong className="text-primary">
+                                                    <span className="circle bg-success circle-lg text-left"></span>
+                                                    <span>Jessica Silva</span>
+                                                </strong>
+                                            </p>
+                                            <p className="mb-1 text-sm">Cras sit amet nibh libero, in gravida nulla. Nulla...</p>
+                                        </div>
+                                        <div className="ml-auto">
+                                            <small className="text-muted ml-2">3h</small>
+                                        </div>
+                                    </div>
+                                </div>
+                                {/* END list group item */}
+                                {/* START list group item */}
+                                <div className="list-group-item list-group-item-action">
+                                    <div className="media">
+                                        <img className="align-self-start mx-2 circle thumb32" src="/static/img/user/09.jpg" alt="Avatar"/>
+                                        <div className="media-body text-truncate">
+                                            <p className="mb-1">
+                                                <strong className="text-primary">
+                                                    <span className="circle bg-danger circle-lg text-left"></span>
+                                                    <span>Jessie Wells</span>
+                                                </strong>
+                                            </p>
+                                            <p className="mb-1 text-sm">Cras sit amet nibh libero, in gravida nulla. Nulla...</p>
+                                        </div>
+                                        <div className="ml-auto">
+                                            <small className="text-muted ml-2">4h</small>
+                                        </div>
+                                    </div>
+                                </div>
+                                {/* END list group item */}
+                                {/* START list group item */}
+                                <div className="list-group-item list-group-item-action">
+                                    <div className="media">
+                                        <img className="align-self-start mx-2 circle thumb32" src="/static/img/user/12.jpg" alt="Avatar"/>
+                                        <div className="media-body text-truncate">
+                                            <p className="mb-1">
+                                                <strong className="text-primary">
+                                                    <span className="circle bg-danger circle-lg text-left"></span>
+                                                    <span>Rosa Burke</span>
+                                                </strong>
+                                            </p>
+                                            <p className="mb-1 text-sm">Cras sit amet nibh libero, in gravida nulla. Nulla...</p>
+                                        </div>
+                                        <div className="ml-auto">
+                                            <small className="text-muted ml-2">1d</small>
+                                        </div>
+                                    </div>
+                                </div>
+                                {/* END list group item */}
+                                {/* START list group item */}
+                                <div className="list-group-item list-group-item-action">
+                                    <div className="media">
+                                        <img className="align-self-start mx-2 circle thumb32" src="/static/img/user/10.jpg" alt="Avatar"/>
+                                        <div className="media-body text-truncate">
+                                            <p className="mb-1">
+                                                <strong className="text-primary">
+                                                    <span className="circle bg-danger circle-lg text-left"></span>
+                                                    <span>Michelle Lane</span>
+                                                </strong>
+                                            </p>
+                                            <p className="mb-1 text-sm">Mauris eleifend, libero nec cursus lacinia...</p>
+                                        </div>
+                                        <div className="ml-auto">
+                                            <small className="text-muted ml-2">2d</small>
+                                        </div>
+                                    </div>
+                                </div>
+                                {/* END list group item */}
+                            </Scrollable>
+                            {/* END list group */}
+                            {/* START card footer */}
+                            <div className="card-footer">
+                                <div className="input-group">
+                                    <input className="form-control form-control-sm" type="text" placeholder="Search message .."/>
+                                    <span className="input-group-btn">
+                                        <button className="btn btn-secondary btn-sm" type="submit">
+                                            <i className="fa fa-search"></i>
+                                        </button>
+                                    </span>
+                                </div>
+                            </div>
+                            {/* END card-footer */}
+                        </div>
+                        {/* End Team messages */}
+                    </Col>
+                    <Col xl="4">
+                        {/* Aside card */}
+                        <div className="card b">
+                            <div className="card-body bb">
+                                <div className="clearfix">
+                                    <div className="float-left">
+                                        <button className="btn btn-secondary btn-oval" type="button">
+                                            <em className="fa fa-play fa-fw text-muted"></em>
+                                            <span>Start</span>
+                                        </button>
+                                        <button className="btn btn-secondary btn-oval" type="button">
+                                            <em className="fa fa-pause fa-fw text-muted"></em>
+                                            <span>Pause</span>
+                                        </button>
+                                    </div>
+                                    <div className="float-right">
+                                        <button className="btn btn-danger btn-oval" type="button">Cancel</button>
+                                    </div>
+                                </div>
+                            </div>
+                            <div className="card-body bb">
+                                <div className="d-flex align-items-center">
+                                    <div className="w-100">
+                                        <Progress className="progress-xs m-0" color="info" value="48"/>
+                                    </div>
+                                    <div className="wd-xxs text-right">
+                                        <div className="text-bold text-muted">48%</div>
+                                    </div>
+                                </div>
+                            </div>
+                            <div className="card-body">
+                                <ul className="list-inline my-2">
+                                    <li className="list-inline-item">
+                                        <div className="badge p-1 bg-warning">priority</div>
+                                    </li>
+                                    <li className="list-inline-item">
+                                        <div className="badge p-1 bg-gray">angularjs</div>
+                                    </li>
+                                    <li className="list-inline-item">
+                                        <div className="badge p-1 bg-gray">jquery</div>
+                                    </li>
+                                    <li className="list-inline-item">
+                                        <div className="badge p-1 bg-gray">gulp</div>
+                                    </li>
+                                    <li className="list-inline-item">
+                                        <div className="badge p-1 bg-gray">git</div>
+                                    </li>
+                                    <li className="list-inline-item">
+                                        <div className="badge p-1 bg-gray">ios</div>
+                                    </li>
+                                </ul>
+                            </div>
+                            <table className="table">
+                                <tbody>
+                                    <tr>
+                                        <td>
+                                            <strong>Start date</strong>
+                                        </td>
+                                        <td>02/01/2016</td>
+                                    </tr>
+                                    <tr>
+                                        <td>
+                                            <strong>Estimated Hours</strong>
+                                        </td>
+                                        <td>122hs</td>
+                                    </tr>
+                                    <tr>
+                                        <td>
+                                            <strong>Time Consumed</strong>
+                                        </td>
+                                        <td>62hs</td>
+                                    </tr>
+                                    <tr>
+                                        <td>
+                                            <strong>Commits</strong>
+                                        </td>
+                                        <td>140</td>
+                                    </tr>
+                                    <tr>
+                                        <td>
+                                            <strong>Issues</strong>
+                                        </td>
+                                        <td>39</td>
+                                    </tr>
+                                    <tr>
+                                        <td>
+                                            <strong>Files</strong>
+                                        </td>
+                                        <td>87</td>
+                                    </tr>
+                                    <tr>
+                                        <td>
+                                            <strong>Members</strong>
+                                        </td>
+                                        <td>
+                                            <p>Tara Sanders</p>
+                                            <p>Alan Smith</p>
+                                            <p>Priscilla Peters</p>
+                                            <p>Madison Willis</p>
+                                            <p>Lesa Marshall</p>
+                                            <p>Kylie Freeman</p>
+                                        </td>
+                                    </tr>
+                                    <tr>
+                                        <td>
+                                            <strong>Recent files</strong>
+                                        </td>
+                                        <td>
+                                            <Scrollable height="120px" className="list-group">
+                                                <table className="table table-bordered bg-transparent">
+                                                    <tbody>
+                                                        <tr>
+                                                            <td>
+                                                                <em className="fa-lg far fa-file-code"></em>
+                                                            </td>
+                                                            <td>
+                                                                <a className="text-muted" href="">database.controller.js</a>
+                                                            </td>
+                                                        </tr>
+                                                        <tr>
+                                                            <td>
+                                                                <em className="fa-lg far fa-file-image"></em>
+                                                            </td>
+                                                            <td>
+                                                                <a className="text-muted" href="">baground-lg.png</a>
+                                                            </td>
+                                                        </tr>
+                                                        <tr>
+                                                            <td>
+                                                                <em className="fa-lg far fa-file-code"></em>
+                                                            </td>
+                                                            <td>
+                                                                <a className="text-muted" href="">picture.controller.js</a>
+                                                            </td>
+                                                        </tr>
+                                                        <tr>
+                                                            <td>
+                                                                <em className="fa-lg far fa-file-word"></em>
+                                                            </td>
+                                                            <td>
+                                                                <a className="text-muted" href="">applicat-diagrams.docx</a>
+                                                            </td>
+                                                        </tr>
+                                                        <tr>
+                                                            <td>
+                                                                <em className="fa-lg far fa-file-code"></em>
+                                                            </td>
+                                                            <td>
+                                                                <a className="text-muted" href="">database.controller.js</a>
+                                                            </td>
+                                                        </tr>
+                                                        <tr>
+                                                            <td>
+                                                                <em className="fa-lg far fa-file-code"></em>
+                                                            </td>
+                                                            <td>
+                                                                <a className="text-muted" href="">database.controller.js</a>
+                                                            </td>
+                                                        </tr>
+                                                    </tbody>
+                                                </table>
+                                            </Scrollable>
+                                        </td>
+                                    </tr>
+                                </tbody>
+                            </table>
+                            <p className="text-right">
+                                <a className="btn btn-link" href="">Open repository</a>
+                            </p>
+                        </div>
+                        {/* end Aside card */}
+                    </Col>
+                </Row>
+            </ContentWrapper>
+            );
+    }
+
+}
+
+export default ProjectDetails;

+ 892 - 0
pages/app/projects.js

@@ -0,0 +1,892 @@
+import React, { Component } from 'react';
+import ContentWrapper from '@/components/Layout/ContentWrapper';
+import { Progress, Row, Col, Card, CardHeader, CardBody, CardFooter, Table } from 'reactstrap';
+
+import Sparkline from '@/components/Common/Sparklines';
+
+class Projects extends Component {
+
+    render() {
+        return (
+            <ContentWrapper>
+                <div className="content-heading">Projects
+                    <div className="ml-auto">
+                        <button className="btn btn-secondary btn-sm" type="button">Create project</button>
+                    </div>
+                </div>
+                <Row>
+                    <Col xl="4" lg="6">
+                        <Card className="b">
+                            <CardHeader>
+                                <div className="float-right">
+                                    <div className="badge badge-info">started</div>
+                                </div>
+                                <h4 className="m-0">Project #1</h4>
+                                <small className="text-muted">Sed amet lectus id.</small>
+                            </CardHeader>
+                            <CardBody>
+                                <div className="d-flex align-items-center">
+                                    <div className="w-100" data-title="Health">
+                                        <Progress className="progress-xs m-0" value="22" color="warning"/>
+                                    </div>
+                                    <div className="wd-xxs text-right">
+                                        <div className="text-bold text-muted">22%</div>
+                                    </div>
+                                </div>
+                            </CardBody>
+                            <Table>
+                                <tbody>
+                                    <tr>
+                                        <td>
+                                            <strong>Start date</strong>
+                                        </td>
+                                        <td>01/01/2016</td>
+                                    </tr>
+                                    <tr>
+                                        <td>
+                                            <strong>Members</strong>
+                                        </td>
+                                        <td>
+                                            <a className="inline" href="">
+                                                <img className="rounded-circle thumb24 mr-1" src="/static/img/user/02.jpg" alt="project member"/>
+                                            </a>
+                                            <a className="inline" href="">
+                                                <img className="rounded-circle thumb24 mr-1" src="/static/img/user/04.jpg" alt="project member"/>
+                                            </a>
+                                            <a className="inline" href="">
+                                                <img className="rounded-circle thumb24 mr-1" src="/static/img/user/05.jpg" alt="project member"/>
+                                            </a>
+                                            <a className="inline" href="">
+                                                <img className="rounded-circle thumb24 mr-1" src="/static/img/user/06.jpg" alt="project member"/>
+                                            </a>
+                                            <a className="inline" href="">
+                                                <strong>+5</strong>
+                                            </a>
+                                        </td>
+                                    </tr>
+                                    <tr>
+                                        <td>
+                                            <strong>Leader</strong>
+                                        </td>
+                                        <td>
+                                            <a href="" title="Team leader">
+                                                <img className="rounded-circle thumb24 mr-1" src="/static/img/user/03.jpg" alt="project member"/>
+                                            </a>
+                                        </td>
+                                    </tr>
+                                    <tr>
+                                        <td>
+                                            <strong>Metrics</strong>
+                                        </td>
+                                        <td>
+                                             <Sparkline values={[20,80]}
+
+                                                options={{
+                                                    type:"pie",
+                                                    height:"24",
+                                                    sliceColors:["#edf1f2", "#23b7e5"]
+                                                }}
+                                                className="sparkline inline mr-2"/>
+                                             <Sparkline values={[60,40]}
+
+                                                options={{
+                                                    type:"pie",
+                                                    height:"24",
+                                                    sliceColors:["#edf1f2", "#27c24c"]
+                                                }}
+                                                className="sparkline inline mr-2"/>
+                                             <Sparkline values={[90,10]}
+
+                                                options={{
+                                                    type:"pie",
+                                                    height:"24",
+                                                    sliceColors:["#edf1f2", "#ff902b"]
+                                                }}
+                                                className="sparkline inline"/>
+                                        </td>
+                                    </tr>
+                                </tbody>
+                            </Table>
+                            <CardFooter className="text-center">
+                                <button className="btn btn-secondary" type="button">Manage project</button>
+                            </CardFooter>
+                        </Card>
+                    </Col>
+                    <Col xl="4" lg="6">
+                        <Card className="b">
+                            <CardHeader>
+                                <div className="float-right">
+                                    <div className="badge badge-info">started</div>
+                                </div>
+                                <h4 className="m-0">Project #2</h4>
+                                <small className="text-muted">Sed amet lectus id.</small>
+                            </CardHeader>
+                            <CardBody>
+                                <div className="d-flex align-items-center">
+                                    <div className="w-100" data-title="Health">
+                                        <Progress className="progress-xs m-0" value="80" color="success"/>
+                                    </div>
+                                    <div className="wd-xxs text-right">
+                                        <div className="text-bold text-muted">80%</div>
+                                    </div>
+                                </div>
+                            </CardBody>
+                            <Table>
+                                <tbody>
+                                    <tr>
+                                        <td>
+                                            <strong>Start date</strong>
+                                        </td>
+                                        <td>02/01/2016</td>
+                                    </tr>
+                                    <tr>
+                                        <td>
+                                            <strong>Members</strong>
+                                        </td>
+                                        <td>
+                                            <a className="inline" href="">
+                                                <img className="rounded-circle thumb24 mr-1" src="/static/img/user/02.jpg" alt="project member"/>
+                                            </a>
+                                            <a className="inline" href="">
+                                                <img className="rounded-circle thumb24 mr-1" src="/static/img/user/04.jpg" alt="project member"/>
+                                            </a>
+                                            <a className="inline" href="">
+                                                <img className="rounded-circle thumb24 mr-1" src="/static/img/user/05.jpg" alt="project member"/>
+                                            </a>
+                                            <a className="inline" href="">
+                                                <img className="rounded-circle thumb24 mr-1" src="/static/img/user/06.jpg" alt="project member"/>
+                                            </a>
+                                            <a className="inline" href="">
+                                                <strong>+6</strong>
+                                            </a>
+                                        </td>
+                                    </tr>
+                                    <tr>
+                                        <td>
+                                            <strong>Leader</strong>
+                                        </td>
+                                        <td>
+                                            <a href="" title="Team leader">
+                                                <img className="rounded-circle thumb24 mr-1" src="/static/img/user/03.jpg" alt="project member"/>
+                                            </a>
+                                        </td>
+                                    </tr>
+                                    <tr>
+                                        <td>
+                                            <strong>Metrics</strong>
+                                        </td>
+                                        <td>
+                                             <Sparkline values={[20,80]}
+
+                                                options={{
+                                                    type:"pie",
+                                                    height:"24",
+                                                    sliceColors:["#edf1f2", "#23b7e5"]
+                                                }}
+                                                className="sparkline inline mr-2"/>
+                                             <Sparkline values={[60,40]}
+
+                                                options={{
+                                                    type:"pie",
+                                                    height:"24",
+                                                    sliceColors:["#edf1f2", "#27c24c"]
+                                                }}
+                                                className="sparkline inline mr-2"/>
+                                             <Sparkline values={[90,10]}
+
+                                                options={{
+                                                    type:"pie",
+                                                    height:"24",
+                                                    sliceColors:["#edf1f2", "#ff902b"]
+                                                }}
+                                                className="sparkline inline"/>
+                                        </td>
+                                    </tr>
+                                </tbody>
+                            </Table>
+                            <CardFooter className="text-center">
+                                <button className="btn btn-secondary" type="button">Manage project</button>
+                            </CardFooter>
+                        </Card>
+                    </Col>
+                    <Col xl="4" lg="6">
+                        <Card className="b">
+                            <CardHeader>
+                                <div className="float-right">
+                                    <div className="badge badge-info">started</div>
+                                </div>
+                                <h4 className="m-0">Project #3</h4>
+                                <small className="text-muted">Sed amet lectus id.</small>
+                            </CardHeader>
+                            <CardBody>
+                                <div className="d-flex align-items-center">
+                                    <div className="w-100" data-title="Health">
+                                        <Progress className="progress-xs m-0" value="50" color="info"/>
+                                    </div>
+                                    <div className="wd-xxs text-right">
+                                        <div className="text-bold text-muted">50%</div>
+                                    </div>
+                                </div>
+                            </CardBody>
+                            <Table>
+                                <tbody>
+                                    <tr>
+                                        <td>
+                                            <strong>Start date</strong>
+                                        </td>
+                                        <td>03/01/2016</td>
+                                    </tr>
+                                    <tr>
+                                        <td>
+                                            <strong>Members</strong>
+                                        </td>
+                                        <td>
+                                            <a className="inline" href="">
+                                                <img className="rounded-circle thumb24 mr-1" src="/static/img/user/02.jpg" alt="project member"/>
+                                            </a>
+                                            <a className="inline" href="">
+                                                <img className="rounded-circle thumb24 mr-1" src="/static/img/user/04.jpg" alt="project member"/>
+                                            </a>
+                                            <a className="inline" href="">
+                                                <img className="rounded-circle thumb24 mr-1" src="/static/img/user/05.jpg" alt="project member"/>
+                                            </a>
+                                            <a className="inline" href="">
+                                                <img className="rounded-circle thumb24 mr-1" src="/static/img/user/06.jpg" alt="project member"/>
+                                            </a>
+                                            <a className="inline" href="">
+                                                <strong>+7</strong>
+                                            </a>
+                                        </td>
+                                    </tr>
+                                    <tr>
+                                        <td>
+                                            <strong>Leader</strong>
+                                        </td>
+                                        <td>
+                                            <a href="" title="Team leader">
+                                                <img className="rounded-circle thumb24 mr-1" src="/static/img/user/03.jpg" alt="project member"/>
+                                            </a>
+                                        </td>
+                                    </tr>
+                                    <tr>
+                                        <td>
+                                            <strong>Metrics</strong>
+                                        </td>
+                                        <td>
+                                             <Sparkline values={[20,80]}
+
+                                                options={{
+                                                    type:"pie",
+                                                    height:"24",
+                                                    sliceColors:["#edf1f2", "#23b7e5"]
+                                                }}
+                                                className="sparkline inline mr-2"/>
+                                             <Sparkline values={[60,40]}
+
+                                                options={{
+                                                    type:"pie",
+                                                    height:"24",
+                                                    sliceColors:["#edf1f2", "#27c24c"]
+                                                }}
+                                                className="sparkline inline mr-2"/>
+                                             <Sparkline values={[90,10]}
+
+                                                options={{
+                                                    type:"pie",
+                                                    height:"24",
+                                                    sliceColors:["#edf1f2", "#ff902b"]
+                                                }}
+                                                className="sparkline inline"/>
+                                        </td>
+                                    </tr>
+                                </tbody>
+                            </Table>
+                            <CardFooter className="text-center">
+                                <button className="btn btn-secondary" type="button">Manage project</button>
+                            </CardFooter>
+                        </Card>
+                    </Col>
+                    <Col xl="4" lg="6">
+                        <Card className="b">
+                            <CardHeader>
+                                <div className="float-right">
+                                    <div className="badge badge-warning">paused</div>
+                                </div>
+                                <h4 className="m-0">Project #4</h4>
+                                <small className="text-muted">Sed amet lectus id.</small>
+                            </CardHeader>
+                            <CardBody>
+                                <div className="d-flex align-items-center">
+                                    <div className="w-100" data-title="Health">
+                                        <Progress className="progress-xs m-0" value="22" color="warning"/>
+                                    </div>
+                                    <div className="wd-xxs text-right">
+                                        <div className="text-bold text-muted">22%</div>
+                                    </div>
+                                </div>
+                            </CardBody>
+                            <Table>
+                                <tbody>
+                                    <tr>
+                                        <td>
+                                            <strong>Start date</strong>
+                                        </td>
+                                        <td>04/01/2016</td>
+                                    </tr>
+                                    <tr>
+                                        <td>
+                                            <strong>Members</strong>
+                                        </td>
+                                        <td>
+                                            <a className="inline" href="">
+                                                <img className="rounded-circle thumb24 mr-1" src="/static/img/user/02.jpg" alt="project member"/>
+                                            </a>
+                                            <a className="inline" href="">
+                                                <img className="rounded-circle thumb24 mr-1" src="/static/img/user/04.jpg" alt="project member"/>
+                                            </a>
+                                            <a className="inline" href="">
+                                                <img className="rounded-circle thumb24 mr-1" src="/static/img/user/05.jpg" alt="project member"/>
+                                            </a>
+                                            <a className="inline" href="">
+                                                <img className="rounded-circle thumb24 mr-1" src="/static/img/user/06.jpg" alt="project member"/>
+                                            </a>
+                                            <a className="inline" href="">
+                                                <strong>+8</strong>
+                                            </a>
+                                        </td>
+                                    </tr>
+                                    <tr>
+                                        <td>
+                                            <strong>Leader</strong>
+                                        </td>
+                                        <td>
+                                            <a href="" title="Team leader">
+                                                <img className="rounded-circle thumb24 mr-1" src="/static/img/user/03.jpg" alt="project member"/>
+                                            </a>
+                                        </td>
+                                    </tr>
+                                    <tr>
+                                        <td>
+                                            <strong>Metrics</strong>
+                                        </td>
+                                        <td>
+                                             <Sparkline values={[20,80]}
+
+                                                options={{
+                                                    type:"pie",
+                                                    height:"24",
+                                                    sliceColors:["#edf1f2", "#23b7e5"]
+                                                }}
+                                                className="sparkline inline mr-2"/>
+                                             <Sparkline values={[60,40]}
+
+                                                options={{
+                                                    type:"pie",
+                                                    height:"24",
+                                                    sliceColors:["#edf1f2", "#27c24c"]
+                                                }}
+                                                className="sparkline inline mr-2"/>
+                                             <Sparkline values={[90,10]}
+
+                                                options={{
+                                                    type:"pie",
+                                                    height:"24",
+                                                    sliceColors:["#edf1f2", "#ff902b"]
+                                                }}
+                                                className="sparkline inline"/>
+                                        </td>
+                                    </tr>
+                                </tbody>
+                            </Table>
+                            <CardFooter className="text-center">
+                                <button className="btn btn-secondary" type="button">Manage project</button>
+                            </CardFooter>
+                        </Card>
+                    </Col>
+                    <Col xl="4" lg="6">
+                        <Card className="b">
+                            <CardHeader>
+                                <div className="float-right">
+                                    <div className="badge bg-gray">pending</div>
+                                </div>
+                                <h4 className="m-0">Project #5</h4>
+                                <small className="text-muted">Sed amet lectus id.</small>
+                            </CardHeader>
+                            <CardBody>
+                                <p className="m-0 text-center">This project does not register progress.</p>
+                            </CardBody>
+                            <Table>
+                                <tbody>
+                                    <tr>
+                                        <td>
+                                            <strong>Start date</strong>
+                                        </td>
+                                        <td>05/01/2016</td>
+                                    </tr>
+                                    <tr>
+                                        <td>
+                                            <strong>Members</strong>
+                                        </td>
+                                        <td>
+                                            <a className="inline" href="">
+                                                <img className="rounded-circle thumb24 mr-1" src="/static/img/user/02.jpg" alt="project member"/>
+                                            </a>
+                                            <a className="inline" href="">
+                                                <img className="rounded-circle thumb24 mr-1" src="/static/img/user/04.jpg" alt="project member"/>
+                                            </a>
+                                            <a className="inline" href="">
+                                                <img className="rounded-circle thumb24 mr-1" src="/static/img/user/05.jpg" alt="project member"/>
+                                            </a>
+                                            <a className="inline" href="">
+                                                <img className="rounded-circle thumb24 mr-1" src="/static/img/user/06.jpg" alt="project member"/>
+                                            </a>
+                                            <a className="inline" href="">
+                                                <strong>+9</strong>
+                                            </a>
+                                        </td>
+                                    </tr>
+                                    <tr>
+                                        <td>
+                                            <strong>Leader</strong>
+                                        </td>
+                                        <td>
+                                            <a href="" title="Team leader">
+                                                <img className="rounded-circle thumb24 mr-1" src="/static/img/user/03.jpg" alt="project member"/>
+                                            </a>
+                                        </td>
+                                    </tr>
+                                    <tr>
+                                        <td>
+                                            <strong>Metrics</strong>
+                                        </td>
+                                        <td>
+                                             <Sparkline values={[20,80]}
+
+                                                options={{
+                                                    type:"pie",
+                                                    height:"24",
+                                                    sliceColors:["#edf1f2", "#23b7e5"]
+                                                }}
+                                                className="sparkline inline mr-2"/>
+                                             <Sparkline values={[60,40]}
+
+                                                options={{
+                                                    type:"pie",
+                                                    height:"24",
+                                                    sliceColors:["#edf1f2", "#27c24c"]
+                                                }}
+                                                className="sparkline inline mr-2"/>
+                                             <Sparkline values={[90,10]}
+
+                                                options={{
+                                                    type:"pie",
+                                                    height:"24",
+                                                    sliceColors:["#edf1f2", "#ff902b"]
+                                                }}
+                                                className="sparkline inline"/>
+                                        </td>
+                                    </tr>
+                                </tbody>
+                            </Table>
+                            <CardFooter className="text-center">
+                                <button className="btn btn-secondary" type="button">Manage project</button>
+                            </CardFooter>
+                        </Card>
+                    </Col>
+                    <Col xl="4" lg="6">
+                        <Card className="b">
+                            <CardHeader>
+                                <div className="float-right">
+                                    <div className="badge badge-success">completed</div>
+                                </div>
+                                <h4 className="m-0">Project #6</h4>
+                                <small className="text-muted">Sed amet lectus id.</small>
+                            </CardHeader>
+                            <CardBody>
+                                <div className="d-flex align-items-center">
+                                    <div className="w-100" data-title="Health">
+                                        <Progress className="progress-xs m-0" value="100" color="success"/>
+                                    </div>
+                                    <div className="wd-xxs text-right">
+                                        <div className="text-bold text-muted">100%</div>
+                                    </div>
+                                </div>
+                            </CardBody>
+                            <Table>
+                                <tbody>
+                                    <tr>
+                                        <td>
+                                            <strong>Start date</strong>
+                                        </td>
+                                        <td>06/01/2016</td>
+                                    </tr>
+                                    <tr>
+                                        <td>
+                                            <strong>Members</strong>
+                                        </td>
+                                        <td>
+                                            <a className="inline" href="">
+                                                <img className="rounded-circle thumb24 mr-1" src="/static/img/user/02.jpg" alt="project member"/>
+                                            </a>
+                                            <a className="inline" href="">
+                                                <img className="rounded-circle thumb24 mr-1" src="/static/img/user/04.jpg" alt="project member"/>
+                                            </a>
+                                            <a className="inline" href="">
+                                                <img className="rounded-circle thumb24 mr-1" src="/static/img/user/05.jpg" alt="project member"/>
+                                            </a>
+                                            <a className="inline" href="">
+                                                <img className="rounded-circle thumb24 mr-1" src="/static/img/user/06.jpg" alt="project member"/>
+                                            </a>
+                                            <a className="inline" href="">
+                                                <strong>+10</strong>
+                                            </a>
+                                        </td>
+                                    </tr>
+                                    <tr>
+                                        <td>
+                                            <strong>Leader</strong>
+                                        </td>
+                                        <td>
+                                            <a href="" title="Team leader">
+                                                <img className="rounded-circle thumb24 mr-1" src="/static/img/user/03.jpg" alt="project member"/>
+                                            </a>
+                                        </td>
+                                    </tr>
+                                    <tr>
+                                        <td>
+                                            <strong>Metrics</strong>
+                                        </td>
+                                        <td>
+                                             <Sparkline values={[20,80]}
+
+                                                options={{
+                                                    type:"pie",
+                                                    height:"24",
+                                                    sliceColors:["#edf1f2", "#23b7e5"]
+                                                }}
+                                                className="sparkline inline mr-2"/>
+                                             <Sparkline values={[60,40]}
+
+                                                options={{
+                                                    type:"pie",
+                                                    height:"24",
+                                                    sliceColors:["#edf1f2", "#27c24c"]
+                                                }}
+                                                className="sparkline inline mr-2"/>
+                                             <Sparkline values={[90,10]}
+
+                                                options={{
+                                                    type:"pie",
+                                                    height:"24",
+                                                    sliceColors:["#edf1f2", "#ff902b"]
+                                                }}
+                                                className="sparkline inline"/>
+                                        </td>
+                                    </tr>
+                                </tbody>
+                            </Table>
+                            <CardFooter className="text-center">
+                                <button className="btn btn-secondary" type="button">Manage project</button>
+                            </CardFooter>
+                        </Card>
+                    </Col>
+                    <Col xl="4" lg="6">
+                        <Card className="b">
+                            <CardHeader>
+                                <div className="float-right">
+                                    <div className="badge bg-gray-dark">canceled</div>
+                                </div>
+                                <h4 className="m-0">Project #7</h4>
+                                <small className="text-muted">Sed amet lectus id.</small>
+                            </CardHeader>
+                            <CardBody>
+                                <div className="d-flex align-items-center">
+                                    <div className="w-100" data-title="Health">
+                                        <Progress className="progress-xs m-0" value="30" color="warning"/>
+                                    </div>
+                                    <div className="wd-xxs text-right">
+                                        <div className="text-bold text-muted">30%</div>
+                                    </div>
+                                </div>
+                            </CardBody>
+                            <Table>
+                                <tbody>
+                                    <tr>
+                                        <td>
+                                            <strong>Start date</strong>
+                                        </td>
+                                        <td>04/01/2016</td>
+                                    </tr>
+                                    <tr>
+                                        <td>
+                                            <strong>Members</strong>
+                                        </td>
+                                        <td>
+                                            <a className="inline" href="">
+                                                <img className="rounded-circle thumb24 mr-1" src="/static/img/user/02.jpg" alt="project member"/>
+                                            </a>
+                                            <a className="inline" href="">
+                                                <img className="rounded-circle thumb24 mr-1" src="/static/img/user/04.jpg" alt="project member"/>
+                                            </a>
+                                            <a className="inline" href="">
+                                                <img className="rounded-circle thumb24 mr-1" src="/static/img/user/05.jpg" alt="project member"/>
+                                            </a>
+                                            <a className="inline" href="">
+                                                <img className="rounded-circle thumb24 mr-1" src="/static/img/user/06.jpg" alt="project member"/>
+                                            </a>
+                                            <a className="inline" href="">
+                                                <strong>+8</strong>
+                                            </a>
+                                        </td>
+                                    </tr>
+                                    <tr>
+                                        <td>
+                                            <strong>Leader</strong>
+                                        </td>
+                                        <td>
+                                            <a href="" title="Team leader">
+                                                <img className="rounded-circle thumb24 mr-1" src="/static/img/user/03.jpg" alt="project member"/>
+                                            </a>
+                                        </td>
+                                    </tr>
+                                    <tr>
+                                        <td>
+                                            <strong>Metrics</strong>
+                                        </td>
+                                        <td>
+                                             <Sparkline values={[20,80]}
+
+                                                options={{
+                                                    type:"pie",
+                                                    height:"24",
+                                                    sliceColors:["#edf1f2", "#23b7e5"]
+                                                }}
+                                                className="sparkline inline mr-2"/>
+                                             <Sparkline values={[60,40]}
+
+                                                options={{
+                                                    type:"pie",
+                                                    height:"24",
+                                                    sliceColors:["#edf1f2", "#27c24c"]
+                                                }}
+                                                className="sparkline inline mr-2"/>
+                                             <Sparkline values={[90,10]}
+
+                                                options={{
+                                                    type:"pie",
+                                                    height:"24",
+                                                    sliceColors:["#edf1f2", "#ff902b"]
+                                                }}
+                                                className="sparkline inline"/>
+                                        </td>
+                                    </tr>
+                                </tbody>
+                            </Table>
+                            <CardFooter className="text-center">
+                                <button className="btn btn-secondary" type="button">Manage project</button>
+                            </CardFooter>
+                        </Card>
+                    </Col>
+                    <Col xl="4" lg="6">
+                        <Card className="b">
+                            <CardHeader>
+                                <div className="float-right">
+                                    <div className="badge badge-info">started</div>
+                                </div>
+                                <h4 className="m-0">Project #8</h4>
+                                <small className="text-muted">Sed amet lectus id.</small>
+                            </CardHeader>
+                            <CardBody>
+                                <div className="d-flex align-items-center">
+                                    <div className="w-100" data-title="Health">
+                                        <Progress className="progress-xs m-0" value="10" color="danger"/>
+                                    </div>
+                                    <div className="wd-xxs text-right">
+                                        <div className="text-bold text-muted">10%</div>
+                                    </div>
+                                </div>
+                            </CardBody>
+                            <Table>
+                                <tbody>
+                                    <tr>
+                                        <td>
+                                            <strong>Start date</strong>
+                                        </td>
+                                        <td>05/01/2016</td>
+                                    </tr>
+                                    <tr>
+                                        <td>
+                                            <strong>Members</strong>
+                                        </td>
+                                        <td>
+                                            <a className="inline" href="">
+                                                <img className="rounded-circle thumb24 mr-1" src="/static/img/user/02.jpg" alt="project member"/>
+                                            </a>
+                                            <a className="inline" href="">
+                                                <img className="rounded-circle thumb24 mr-1" src="/static/img/user/04.jpg" alt="project member"/>
+                                            </a>
+                                            <a className="inline" href="">
+                                                <img className="rounded-circle thumb24 mr-1" src="/static/img/user/05.jpg" alt="project member"/>
+                                            </a>
+                                            <a className="inline" href="">
+                                                <img className="rounded-circle thumb24 mr-1" src="/static/img/user/06.jpg" alt="project member"/>
+                                            </a>
+                                            <a className="inline" href="">
+                                                <strong>+9</strong>
+                                            </a>
+                                        </td>
+                                    </tr>
+                                    <tr>
+                                        <td>
+                                            <strong>Leader</strong>
+                                        </td>
+                                        <td>
+                                            <a href="" title="Team leader">
+                                                <img className="rounded-circle thumb24 mr-1" src="/static/img/user/03.jpg" alt="project member"/>
+                                            </a>
+                                        </td>
+                                    </tr>
+                                    <tr>
+                                        <td>
+                                            <strong>Metrics</strong>
+                                        </td>
+                                        <td>
+                                             <Sparkline values={[20,80]}
+
+                                                options={{
+                                                    type:"pie",
+                                                    height:"24",
+                                                    sliceColors:["#edf1f2", "#23b7e5"]
+                                                }}
+                                                className="sparkline inline mr-2"/>
+                                             <Sparkline values={[60,40]}
+
+                                                options={{
+                                                    type:"pie",
+                                                    height:"24",
+                                                    sliceColors:["#edf1f2", "#27c24c"]
+                                                }}
+                                                className="sparkline inline mr-2"/>
+                                             <Sparkline values={[90,10]}
+
+                                                options={{
+                                                    type:"pie",
+                                                    height:"24",
+                                                    sliceColors:["#edf1f2", "#ff902b"]
+                                                }}
+                                                className="sparkline inline"/>
+                                        </td>
+                                    </tr>
+                                </tbody>
+                            </Table>
+                            <CardFooter className="text-center">
+                                <button className="btn btn-secondary" type="button">Manage project</button>
+                            </CardFooter>
+                        </Card>
+                    </Col>
+                    <Col xl="4" lg="6">
+                        <Card className="b">
+                            <CardHeader>
+                                <div className="float-right">
+                                    <div className="badge badge-success">completed</div>
+                                </div>
+                                <h4 className="m-0">Project #9</h4>
+                                <small className="text-muted">Sed amet lectus id.</small>
+                            </CardHeader>
+                            <CardBody>
+                                <div className="d-flex align-items-center">
+                                    <div className="w-100" data-title="Health">
+                                        <Progress className="progress-xs m-0" value="100" color="success"/>
+                                    </div>
+                                    <div className="wd-xxs text-right">
+                                        <div className="text-bold text-muted">100%</div>
+                                    </div>
+                                </div>
+                            </CardBody>
+                            <Table>
+                                <tbody>
+                                    <tr>
+                                        <td>
+                                            <strong>Start date</strong>
+                                        </td>
+                                        <td>06/01/2016</td>
+                                    </tr>
+                                    <tr>
+                                        <td>
+                                            <strong>Members</strong>
+                                        </td>
+                                        <td>
+                                            <a className="inline" href="">
+                                                <img className="rounded-circle thumb24 mr-1" src="/static/img/user/02.jpg" alt="project member"/>
+                                            </a>
+                                            <a className="inline" href="">
+                                                <img className="rounded-circle thumb24 mr-1" src="/static/img/user/04.jpg" alt="project member"/>
+                                            </a>
+                                            <a className="inline" href="">
+                                                <img className="rounded-circle thumb24 mr-1" src="/static/img/user/05.jpg" alt="project member"/>
+                                            </a>
+                                            <a className="inline" href="">
+                                                <img className="rounded-circle thumb24 mr-1" src="/static/img/user/06.jpg" alt="project member"/>
+                                            </a>
+                                            <a className="inline" href="">
+                                                <strong>+10</strong>
+                                            </a>
+                                        </td>
+                                    </tr>
+                                    <tr>
+                                        <td>
+                                            <strong>Leader</strong>
+                                        </td>
+                                        <td>
+                                            <a href="" title="Team leader">
+                                                <img className="rounded-circle thumb24 mr-1" src="/static/img/user/03.jpg" alt="project member"/>
+                                            </a>
+                                        </td>
+                                    </tr>
+                                    <tr>
+                                        <td>
+                                            <strong>Metrics</strong>
+                                        </td>
+                                        <td>
+                                             <Sparkline values={[20,80]}
+
+                                                options={{
+                                                    type:"pie",
+                                                    height:"24",
+                                                    sliceColors:["#edf1f2", "#23b7e5"]
+                                                }}
+                                                className="sparkline inline mr-2"/>
+                                             <Sparkline values={[60,40]}
+
+                                                options={{
+                                                    type:"pie",
+                                                    height:"24",
+                                                    sliceColors:["#edf1f2", "#27c24c"]
+                                                }}
+                                                className="sparkline inline mr-2"/>
+                                             <Sparkline values={[90,10]}
+
+                                                options={{
+                                                    type:"pie",
+                                                    height:"24",
+                                                    sliceColors:["#edf1f2", "#ff902b"]
+                                                }}
+                                                className="sparkline inline"/>
+                                        </td>
+                                    </tr>
+                                </tbody>
+                            </Table>
+                            <CardFooter className="text-center">
+                                <button className="btn btn-secondary" type="button">Manage project</button>
+                            </CardFooter>
+                        </Card>
+                    </Col>
+                </Row>
+            </ContentWrapper>
+            );
+    }
+}
+
+export default Projects;
+
+

+ 887 - 0
pages/app/pt.sanksi.js

@@ -0,0 +1,887 @@
+import React, { Component } from 'react';
+//import { withRouter } from 'next/router'
+import ContentWrapper from '@/components/Layout/ContentWrapper';
+import { Row, Col, Card, Button, CardHeader, CardFooter, Table, Nav, NavItem, NavLink, TabContent, TabPane, Pagination, PaginationItem, PaginationLink, ListGroup, ListGroupItem, Dropdown, DropdownMenu, DropdownToggle, DropdownItem,FormGroup  } from 'reactstrap';
+//import { Row, Col, Card, CardHeader, CardFooter, Table, Pagination, PaginationItem, PaginationLink } from 'reactstrap';
+
+// import { Row, Col, Dropdown, DropdownMenu, DropdownToggle, DropdownItem } from 'reactstrap';
+import Select from 'react-select';
+import { GoogleMap, LoadScript, Marker } from '@react-google-maps/api';
+
+import { GetServerSideProps, NextPage } from 'next';
+import ErrorPage from 'next/error';
+import fetch from 'node-fetch';
+
+import https from 'https';
+
+const containerStyle = {
+    width: '100%',
+    height: '155px'
+};
+
+import FormWizardVertical from './pt.wizard.vertical.js';
+
+var jenisPelanggaran = [];
+
+//const qpt_id = {};
+
+//http://localhost:3000/app/profile?ptId=0BCE4DB7-B207-445D-8D03-0C54B7688252
+
+// Demo with custom style
+const DemoMapCustomStyle = props => (
+        <GoogleMap mapContainerStyle={containerStyle} zoom={14} center={props.location} options={{ styles: props.mapStyles }}>
+        <Marker position={props.location} />
+        </GoogleMap>
+)
+
+const styleHeaderText = {
+    color: 'brown'
+}
+
+class Profile extends Component {
+
+    toggleTab = tab => {
+        if (this.state.activeTab !== tab) {
+            this.setState({
+                activeTab: tab
+            });
+        }
+    }
+
+    
+    static async getInitialProps({ query }) {
+
+        
+
+        const httpsAgent = new https.Agent({
+            rejectUnauthorized: false,
+          });
+        
+          //console.log('post agent : ');
+
+          
+         //const res = await fetch('https://api.kemdikbud.go.id:8243/pddikti/1.2/pt/707C3895-B546-4DA5-A6A7-EFE7461A7C7E', { 
+         //const res = await fetch('https://api.kemdikbud.go.id:8243/pddikti/1.2/pt/'+query.ptId, { 
+        //     method: 'get', 
+        //     headers: new Headers({
+        //       'Authorization': 'Bearer 5b62f743-eef2-3370-8c66-6951b2e9c2c5', 
+        //       'Accept': 'application/json'
+        //     }),
+        //     agent: httpsAgent
+        //   }
+        //  )
+
+        //console.log('res : ', res);
+         
+        //const json = await res.json();
+        const json = [
+            {
+                "id": "0BCE4DB7-B207-445D-8D03-0C54B7688252",
+                "kode": "031031",
+                "kode_satker": null,
+                "nama": "Universitas Satyagama",
+                "nama_singkat": "USG",
+                "sk_pendirian": "0742/O/1990",
+                "tgl_sk_pendirian": "1990-12-22",
+                "sk_operasional": null,
+                "tgl_sk_operasional": null,
+                "status": "A",
+                "alamat": {
+                    "jalan": "Jalan Kamal Raya No 2-A Cengkareng",
+                    "rt": null,
+                    "rw": null,
+                    "dusun": null,
+                    "kelurahan": "-",
+                    "kode_pos": "11730",
+                    "kab_kota": {
+                        "id": "016200",
+                        "nama": "Kota Jakarta Barat"
+                    }
+                },
+                "propinsi": {
+                    "id": "010000",
+                    "nama": "Prov. D.K.I. Jakarta"
+                },
+                "telepon": "(021) 5452377-78",
+                "faksimile": "(021) 54391325",
+                "website": "www.satyagama.ac.id",
+                "email": "info@satyagama.ac.id",
+                "status_milik": {
+                    "id": "3",
+                    "nama": "Yayasan"
+                },
+                "pembina": {
+                    "id": "728989DD-251E-4516-BE2C-BA17A93A5C51",
+                    "nama": "LLDIKTI III"
+                },
+                "bentuk_pendidikan": {
+                    "id": "23",
+                    "nama": "Universitas"
+                },
+                "last_update": "2021-12-08",
+                "negara": {
+                    "id": "ID",
+                    "nama": "Indonesia"
+                },
+                "pimpinan": {
+                    "id": "D3D20B3D-0FBE-4706-8A70-67C4C09C8FBE",
+                    "nama": "DEWI SULISTYANI",
+                    "tmt_sk_pengangkatan": "2021-03-17",
+                    "tst_sk_pengangkatan": "2025-03-17"
+                }
+            }
+        ];
+        console.log('json : ', json);
+        // const json = 
+        //                 {
+        //                     "id": "0BCE4DB7-B207-445D-8D03-0C54B7688252",
+        //                     "kode": "031031",
+        //                     "kode_satker": null,
+        //                     "nama": "Universitas Satyagama",
+        //                     "nama_singkat": "USG",
+        //                     "sk_pendirian": "0742/O/1990",
+        //                     "tgl_sk_pendirian": "1990-12-22",
+        //                     "sk_operasional": null,
+        //                     "tgl_sk_operasional": null,
+        //                     "status": "N",
+        //                     "alamat": {
+        //                     "jalan": "Jalan Kamal Raya No 2-A Cengkareng",
+        //                     "rt": null,
+        //                     "rw": null,
+        //                     "dusun": null,
+        //                     "kelurahan": "-",
+        //                     "kode_pos": "11730",
+        //                     "kab_kota": {
+        //                         "id": "016200",
+        //                         "nama": "Kota Jakarta Barat"
+        //                     }
+        //                     },
+        //                     "propinsi": {
+        //                     "id": "010000",
+        //                     "nama": "Prov. D.K.I. Jakarta"
+        //                     },
+        //                     "telepon": "(021) 5452377-78",
+        //                     "faksimile": "(021) 54391325",
+        //                     "website": "www.satyagama.ac.id",
+        //                     "email": "info@satyagama.ac.id",
+        //                     "status_milik": {
+        //                     "id": "3",
+        //                     "nama": "Yayasan"
+        //                     },
+        //                     "pembina": {
+        //                     "id": "728989DD-251E-4516-BE2C-BA17A93A5C51",
+        //                     "nama": "LLDIKTI III"
+        //                     },
+        //                     "bentuk_pendidikan": {
+        //                     "id": "23",
+        //                     "nama": "Universitas"
+        //                     },
+        //                     "last_update": "2021-08-22",
+        //                     "negara": {
+        //                     "id": "ID",
+        //                     "nama": "Indonesia"
+        //                     }
+        //             }
+
+
+
+        return { data: json[0] }
+      }
+
+    state = {
+        dropdownOpen: false,
+        dropdownOpenUpload: false,
+        timelineAlt: false,
+        location: { lat: 33.7906731, lng: -117.8357194 },
+        customStyle: [{featureType:'water',stylers:[{visibility:'on'},{color:'#bdd1f9'}]},{featureType:'all',elementType:'labels.text.fill',stylers:[{color:'#334165'}]},{featureType:'landscape',stylers:[{color:'#e9ebf1'}]},{featureType:'road.highway',elementType:'geometry',stylers:[{color:'#c5c6c6'}]},{featureType:'road.arterial',elementType:'geometry',stylers:[{color:'#fff'}]},{featureType:'road.local',elementType:'geometry',stylers:[{color:'#fff'}]},{featureType:'transit',elementType:'geometry',stylers:[{color:'#d8dbe0'}]},{featureType:'poi',elementType:'geometry',stylers:[{color:'#cfd5e0'}]},{featureType:'administrative',stylers:[{visibility:'on'},{lightness:33}]},{featureType:'poi.park',elementType:'labels',stylers:[{visibility:'on'},{lightness:20}]},{featureType:'road',stylers:[{color:'#d8dbe0',lightness:20}]}],
+        listA: [],
+        //isChecked:true,
+        selectedOptionMulti: [],
+        activeTab: 'tasks'
+        // hisJenisPelanggaran:[],
+        // tbljenisPelanggaran:[
+        //     {
+        //         "idPelanggaran": 0,
+        //         "Pelanggaran":"Tidak Ada",
+        //         "Sangsi":"Tanpa Sangsi",
+        //         "KeteranganSangsi":"-",
+        //         "LevelSangsi":0,
+        //         "LabelSangsi":"Tidak ada",
+        //         "checked":false,
+        //         "TMTBulan":0
+        //     },
+        //     {
+        //         "idPelanggaran": 1,
+        //         "Pelanggaran":"Pemimpin perguruan tinggi tidak melindungi dan memfasilitasi pelaksanaan kebebasan akademik,kebebasan mimbar akademik, dan otonomi keilmuan di perguruan tinggi",
+        //         "Sangsi":"Peringatan Tertulis",
+        //         "KeteranganSangsi":"-",
+        //         "LevelSangsi":1,
+        //         "LabelSangsi":"Ringan",
+        //         "checked":false,
+        //          "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 2,
+        //         "Pelanggaran":"Perguruan tinggi tidak memuat mata kuliah agama,Pancasila, kewarganegaraan, dan bahasa Indonesia dalam kurikulumnya",
+        //         "Sangsi":"Peringatan Tertulis",
+        //         "KeteranganSangsi":"-",
+        //         "LevelSangsi":1,
+        //         "LabelSangsi":"Ringan",
+        //         "checked":false,
+        //          "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 3,
+        //         "Pelanggaran":"Perguruan tinggi tidak menggunakan bahasa Indonesia sebagai bahasa pengantar utama",
+        //         "Sangsi":"Peringatan Tertulis",
+        //         "KeteranganSangsi":"-",
+        //         "LevelSangsi":1,
+        //         "LabelSangsi":"Ringan",
+        //         "checked":false,
+        //          "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 4,
+        //         "Pelanggaran":"Perguruan tinggi tidak menyebarluaskan hasil penelitian dengan cara diseminarkan, dipublikasikan, dan/atau dipatenkan, kecuali hasil penelitian yang bersifat rahasia, mengganggu, dan/atau membahayakan kepentingan umum",
+        //         "Sangsi":"Peringatan Tertulis",
+        //         "KeteranganSangsi":"",
+        //         "LevelSangsi":1,
+        //         "LabelSangsi":"Ringan",
+        //         "checked":false,
+        //          "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 5,
+        //         "Pelanggaran":"PTN tidak menerima calon Mahasiswa yang telah memenuhi persyaratan akademik dan lolos seleksi penerimaan Mahasiswa secara nasional",
+        //         "Sangsi":"Peringatan Tertulis",
+        //         "KeteranganSangsi":"",
+        //         "LevelSangsi":1,
+        //         "LabelSangsi":"Ringan",
+        //          "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 6,
+        //         "Pelanggaran":"PTN tidak mencari dan menjaring calon Mahasiswa yang memiliki potensi akademik tinggi, tetapi kurang mampu secara ekonomi dan calon Mahasiswa dari daerah terdepan, terluar, dan tertinggal untuk diterima paling sedikit 20% (dua puluh persen) dari seluruh Mahasiswa baru yang diterima dan tersebar pada semua Program Studi",
+        //         "Sangsi":"Peringatan Tertulis",
+        //         "KeteranganSangsi":"",
+        //         "LevelSangsi":1,
+        //         "LabelSangsi":"Ringan",
+        //         "checked":false,
+        //          "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 7,
+        //         "Pelanggaran":"Perguruan tinggi tidak memenuhi hak Mahasiswa yang kurang mampu secara ekonomi untuk dapat menyelesaikan studinya sesuai dengan peraturan akademik",
+        //         "Sangsi":"Peringatan Tertulis",
+        //         "KeteranganSangsi":"",
+        //         "LevelSangsi":1,
+        //         "LabelSangsi":"Ringan",
+        //         "checked":false,
+        //          "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 8,
+        //         "Pelanggaran":"Perguruan tinggi memberi gelar yang tidak menggunakan bahasa Indonesia",
+        //         "Sangsi":"Peringatan Tertulis",
+        //         "KeteranganSangsi":"",
+        //         "LevelSangsi":1,
+        //         "LabelSangsi":"Ringan",
+        //         "checked":false,
+        //          "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 9,
+        //         "Pelanggaran":"Pemimpin perguruan tinggi tidak melindungi dan memfasilitasi pengelolaan di bidang non akademik",
+        //         "Sangsi":"Peringatan Tertulis",
+        //         "KeteranganSangsi":"",
+        //         "LevelSangsi":1,
+        //         "LabelSangsi":"Ringan",
+        //         "checked":false,
+        //          "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 10,
+        //         "Pelanggaran":"Perguruan tinggi tidak mengumumkan ringkasan laporan tahunan kepada masyarakat",
+        //         "Sangsi":"Peringatan Tertulis",
+        //         "KeteranganSangsi":"",
+        //         "LevelSangsi":1,
+        //         "LabelSangsi":"Ringan",
+        //         "checked":false,
+        //          "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 11,
+        //         "Pelanggaran":"Perguruan tinggi memiliki Dosen tetap kurang dari 5 (lima) orang untuk setiap Program Studi",
+        //         "Sangsi":"Peringatan Tertulis",
+        //         "KeteranganSangsi":"",
+        //         "LevelSangsi":1,
+        //         "LabelSangsi":"Ringan",
+        //         "checked":false,
+        //          "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 12,
+        //         "Pelanggaran":"Perguruan tinggi tidak memenuh  nisbah Dosen dan Mahasiswa sesuai dengan ketentuan peraturan perundang-undangan",
+        //         "Sangsi":"Peringatan Tertulis",
+        //         "KeteranganSangsi":"",
+        //         "LevelSangsi":1,
+        //         "LabelSangsi":"Ringan",
+        //         "checked":false,
+        //          "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 13,
+        //         "Pelanggaran":"Perguruan tinggi tidak melakukan pelaporan secara berkala ke pangkalan data Pendidikan Tinggi",
+        //         "Sangsi":"Peringatan Tertulis",
+        //         "KeteranganSangsi":"",
+        //         "LevelSangsi":1,
+        //         "LabelSangsi":"Ringan",
+        //         "checked":false,
+        //          "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 14,
+        //         "Pelanggaran":"Program sarjana memiliki Dosen yang tidak berkualifikasi akademik minimum lulusan program magister atau sederajat",
+        //         "Sangsi":"Penghentian sementara bantuan biaya pendidikan dari pemerintahan pusat",
+        //         "KeteranganSangsi":"Berupa penundaan pemberian bantuan keuangan, hibah, dan/atau bentuk bantuan lain bagi perguruan tinggi",
+        //         "LevelSangsi":2,
+        //         "LabelSangsi":"Sedang",
+        //         "checked":false,
+        //          "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 15,
+        //         "Pelanggaran":"Program magister memiliki Dosen yang tidak berkualifikasi akademik lulusan program doktor atau sederajat",
+        //         "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+        //         "KeteranganSangsi":"Penghentian sementara penerimaan Mahasiswa baru",
+        //         "LevelSangsi":2,
+        //         "LabelSangsi":"Sedang",
+        //         "checked":false,
+        //          "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 16,
+        //         "Pelanggaran":"Program doktor memiliki Dosen yang tidak berkualifikasi akademik lulusan program doktor atau sederajat",
+        //         "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+        //         "KeteranganSangsi":"Penundaan proses usul pembukaan Program Studi baru",
+        //         "LevelSangsi":2,
+        //         "LabelSangsi":"Sedang",
+        //         "checked":false,
+        //          "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 17,
+        //         "Pelanggaran":"Program diploma memiliki Dosen yang tidak berkualifikasi akademik minimum lulusan program magister atau sederajat",
+        //         "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+        //         "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+        //         "LevelSangsi":2,
+        //         "LabelSangsi":"Sedang",
+        //         "checked":false,
+        //         "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 18,
+        //         "Pelanggaran":"Program magister terapan memiliki Dosen yang tidak berkualifikasi akademik lulusan program doktor atau sederajat",
+        //         "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+        //         "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+        //         "LevelSangsi":2,
+        //         "LabelSangsi":"Sedang",
+        //         "checked":false,
+        //         "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 19,
+        //         "Pelanggaran":"Program doktor terapan memiliki Dosen yang tidak berkualifikasi akademik lulusan program doktor atau sederajat",
+        //         "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+        //         "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+        //         "LevelSangsi":2,
+        //         "LabelSangsi":"Sedang",
+        //         "checked":false,
+        //         "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 20,
+        //         "Pelanggaran":"Program profesi memiliki Dosen yang tidak berkualifikasi akademik minimum lulusan profesi dan/atau lulusan program magister atau sederajat dengan pengalaman kerja paling singkat 2 (dua) tahun",
+        //         "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+        //         "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+        //         "LevelSangsi":2,
+        //         "LabelSangsi":"Sedang",
+        //         "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 21,
+        //         "Pelanggaran":"Program spesialis memiliki Dosen yang tidak berkualifikasi akademik minimum lulusan program spesialis dan/atau lulusan program doktor atau sederajat dengan pengalaman kerja paling singkat 2 (dua) tahun",
+        //         "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+        //         "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+        //         "LevelSangsi":2,
+        //         "LabelSangsi":"Sedang",
+        //         "checked":false,
+        //         "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 22,
+        //         "Pelanggaran":"Perguruan tinggi tidak mencabut gelar akademik, gelar vokasi, atau gelar profesi apabila karya ilmiah yang digunakan untuk memperoleh gelar akademik, gelar vokasi, atau gelar profesi terbukti merupakan hasil plagiat",
+        //         "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+        //         "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+        //         "LevelSangsi":2,
+        //         "LabelSangsi":"Sedang",
+        //         "checked":false,
+        //         "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 23,
+        //         "Pelanggaran":"Perguruan tinggi tidak menyediakan, memfasilitasi, memiliki Sumber Belajar sesuai dengan Program Studi yang dikembangkan",
+        //         "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+        //         "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+        //         "LevelSangsi":2,
+        //         "LabelSangsi":"Sedang",
+        //         "checked":false,
+        //         "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 24,
+        //         "Pelanggaran":"Perguruan tinggi tidak memiliki statuta",
+        //         "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+        //         "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+        //         "LevelSangsi":2,
+        //         "LabelSangsi":"Sedang",
+        //         "checked":false,
+        //         "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 25,
+        //         "Pelanggaran":"Perguruan tinggi tidak memiliki panduan/prosedur peralihan dan perolehan satuan kredit semester serta rekognisi pembelajaran lampau",
+        //         "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+        //         "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+        //         "LevelSangsi":2,
+        //         "LabelSangsi":"Sedang",
+        //         "checked":false,
+        //         "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 26,
+        //         "Pelanggaran":"Perguruan tinggi melaporkan data yang tidak valid ke PDDIKTI",
+        //         "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+        //         "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+        //         "LevelSangsi":2,
+        //         "LabelSangsi":"Sedang",
+        //         "checked":false,
+        //         "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 27,
+        //         "Pelanggaran":"Perguruan tinggi yang menyelenggarakan kegiatan akademik yang tidak sesuai dengan seluruh Standar Nasional Pendidikan Tinggi",
+        //         "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+        //         "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+        //         "LevelSangsi":2,
+        //         "LabelSangsi":"Sedang",
+        //         "checked":false,
+        //         "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 28,
+        //         "Pelanggaran":"Badan Penyelenggara tidak memberikan gaji pokok serta tunjangan kepada Dosen dan tenaga kependidikan sesuai dengan ketentuan peraturan perundang-undangan",
+        //         "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+        //         "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+        //         "LevelSangsi":2,
+        //         "LabelSangsi":"Sedang",
+        //         "checked":false,
+        //         "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 29,
+        //         "Pelanggaran":"Perguruan tinggi dan/atau Program Studi yang tidak terakreditasi mengeluarkan gelar akademik, gelar vokasi, dan/atau gelar profesi",
+        //         "Sangsi":"Penghentian pembinaan",
+        //         "KeteranganSangsi":"Penghentian bantuan keuangan, hibah, dan/atau bentuk bantuan lain yang diperuntukkan bagi perguruan tinggi",
+        //         "LevelSangsi":3,
+        //         "LabelSangsi":"Berat",
+        //         "checked":false,
+        //         "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 30,
+        //         "Pelanggaran":"Perguruan tinggi dan/atau Program Studi memberikan ijazah, gelar akademik, gelar vokasi, dan/atau gelar profesi kepada orang yang tidak berhak",
+        //         "Sangsi":"Penghentian pembinaan",
+        //         "KeteranganSangsi":"Penghentian layanan Pemerintah Pusat bagi perguruan tinggi",
+        //         "LevelSangsi":3,
+        //         "LabelSangsi":"Berat",
+        //         "checked":false,
+        //         "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 31,
+        //         "Pelanggaran":"Perguruan tinggi tidak mengusulkan akreditasi ulang Program Studi sebagaimana ditentukan dalam peraturan perundang-undangan",
+        //         "Sangsi":"Penghentian pembinaan",
+        //         "KeteranganSangsi":"Penghentian penerimaan Mahasiswa baru",
+        //         "LevelSangsi":3,
+        //         "LabelSangsi":"Berat",
+        //         "checked":false,
+        //         "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 32,
+        //         "Pelanggaran":"Perguruan tinggi lembaga negara lain yang menyelenggarakan pendidikan di wilayah Negara Kesatuan Republik Indonesia yang tidak sesuai dengan ketentuan peraturan perundang-undangan",
+        //         "Sangsi":"Penghentian pembinaan",
+        //         "KeteranganSangsi":"Larangan melakukan wisuda",
+        //         "LevelSangsi":3,
+        //         "LabelSangsi":"Berat",
+        //         "checked":false,
+        //         "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 33,
+        //         "Pelanggaran":"Perguruan tinggi melakukan penerimaan Mahasiswa baru dengan tujuan komersial",
+        //         "Sangsi":"Penghentian pembinaan",
+        //         "KeteranganSangsi":"Penghentian proses usul pembukaan Program Studi baru",
+        //         "LevelSangsi":3,
+        //         "LabelSangsi":"Berat",
+        //         "checked":false,
+        //         "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 34,
+        //         "Pelanggaran":"Pengelolaan perguruan tinggi tidak berprinsip nirlaba",
+        //         "Sangsi":"Penghentian pembinaan",
+        //         "KeteranganSangsi":"Penarikan Dosen Pegawai Negeri Sipil yang dipekerjakan",
+        //         "LevelSangsi":3,
+        //         "LabelSangsi":"Berat",
+        //         "checked":false,
+        //         "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 35,
+        //         "Pelanggaran":"Perguruan tinggi dan/atau Badan Penyelenggara melakukan perubahan nama perguruan tinggi, nama dan/atau bentuk Badan Penyelenggara, dan/atau lokasi Kampus Utama PTS tanpa izin dari Menteri",
+        //         "Sangsi":"Pencabutan izin Program Studi",
+        //         "KeteranganSangsi":"",
+        //         "LevelSangsi":3,
+        //         "LabelSangsi":"Berat",
+        //         "checked":false,
+        //         "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 36,
+        //         "Pelanggaran":"Perguruan tinggi menyelenggarakan Program Studi tanpa izin dari Menteri",
+        //         "Sangsi":"Pembubaran PTN atau pencabutan izin PTS",
+        //         "KeteranganSangsi":"",
+        //         "LevelSangsi":3,
+        //         "LabelSangsi":"Berat",
+        //         "checked":false,
+        //         "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 37,
+        //         "Pelanggaran":"Perguruan tinggi menyelenggarakan PJJ tanpa izin dari Menteri",
+        //         "Sangsi":"Pembubaran PTN atau pencabutan izin PTS",
+        //         "KeteranganSangsi":"",
+        //         "LevelSangsi":3,
+        //         "LabelSangsi":"Berat",
+        //         "checked":false,
+        //         "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 38,
+        //         "Pelanggaran":"Perguruan tinggi dan/atau Program Studi tidak lagi memenuhi syarat pendirian perguruan tinggi dan/atau pembukaan Program Studi",
+        //         "Sangsi":"Pembubaran PTN atau pencabutan izin PTS",
+        //         "KeteranganSangsi":"",
+        //         "LevelSangsi":3,
+        //         "LabelSangsi":"Berat",
+        //         "checked":false,
+        //         "TMTBulan":6
+        //     },
+        //     {
+        //         "idPelanggaran": 39,
+        //         "Pelanggaran":"Terjadi sengketa",
+        //         "Sangsi":"Pembubaran PTN atau pencabutan izin PTS",
+        //         "KeteranganSangsi":"",
+        //         "LevelSangsi":3,
+        //         "LabelSangsi":"Berat",
+        //         "checked":false,
+        //         "TMTBulan":6
+        //     }
+        // ]
+    }
+
+    toggleDD = () => this.setState({
+        dropdownOpen: !this.state.dropdownOpen
+    })
+
+    toggleDDUpload = () => this.setState({
+        dropdownOpenUpload: !this.state.dropdownOpenUpload
+    })
+
+    toggleTimeline = e => {
+        this.setState({
+            timelineAlt: e.target.checked
+        })
+    }
+
+    // // handle particular changes on each checkbox
+    // onHandleChange(listName,index) {
+      
+    //     //set state to checkbox and data in promise mode
+    //     this.setState({
+    //         [listName]: this.state[listName].map(
+    //                     (item, i) => (
+                            
+    //                             index !== i ? 
+    //                             item : {...item, checked: !this.state[listName][index].checked}
+    //                         ) 
+    //                 )
+    //     });
+
+
+
+    // }
+
+
+    // state = {
+    //     location: { lat: 33.7906731, lng: -117.8357194 },
+    //     customStyle: [{featureType:'water',stylers:[{visibility:'on'},{color:'#bdd1f9'}]},{featureType:'all',elementType:'labels.text.fill',stylers:[{color:'#334165'}]},{featureType:'landscape',stylers:[{color:'#e9ebf1'}]},{featureType:'road.highway',elementType:'geometry',stylers:[{color:'#c5c6c6'}]},{featureType:'road.arterial',elementType:'geometry',stylers:[{color:'#fff'}]},{featureType:'road.local',elementType:'geometry',stylers:[{color:'#fff'}]},{featureType:'transit',elementType:'geometry',stylers:[{color:'#d8dbe0'}]},{featureType:'poi',elementType:'geometry',stylers:[{color:'#cfd5e0'}]},{featureType:'administrative',stylers:[{visibility:'on'},{lightness:33}]},{featureType:'poi.park',elementType:'labels',stylers:[{visibility:'on'},{lightness:20}]},{featureType:'road',stylers:[{color:'#d8dbe0',lightness:20}]}]
+    // }
+
+    
+    // renderTableData() {
+    //     //const dataTable = this.props.data;
+    //     //if (dataTable === true ) {
+
+
+    //         return this.state.tbljenisPelanggaran.map((jp,index) => {
+            
+    //         return (
+    //                 // <tr>
+    //                 //     <td>
+    //                 //         <label>{index+1}</label>
+    //                 //     </td>
+    //                 //     <td>
+    //                 //         <div className="media align-items-center">
+    //                 //             <a className="mr-3" href="">
+    //                 //                 <img className="img-fluid rounded thumb64" src="/static/img/dummy-search.png" alt="Dummy"/>
+    //                 //             </a>
+    //                 //             <div className="media-body d-flex">
+    //                 //                 <div>
+    //                 //                     <h4 className="m-0">{pt.nama}</h4>
+    //                 //                     <small className="text-muted">{pt.sk_pendirian} - {pt.website} - {pt.email}</small>
+    //                 //                     <p>{pt.alamat.jalan}</p>
+    //                 //                 </div>
+    //                 //                 <div className="ml-auto">
+    //                 //                     <Button color="info" size="sm" onClick={(e) => this.handleClick(e, pt.id)}>View</Button>
+    //                 //                 </div>
+    //                 //             </div>
+    //                 //         </div>
+    //                 //     </td>
+    //                 // </tr>
+    //             <tr>
+    //                 <td><label>{index+1}</label></td>
+    //                 <td>
+    //                     <div className="media align-items-center">
+    //                         <div className="media-body d-flex">
+    //                             <div>
+                                    
+    //                                 <p>{jp.Pelanggaran}</p>
+    //                                 <p>TMT : {jp.TMTBulan} Bulan</p>
+    //                                 <p>Level Pelanggaran : {jp.LabelSangsi}</p>
+                                    
+    //                             </div>
+    //                         </div>
+    //                     </div>
+    //                 </td>
+    //                 <td>
+    //                     <div className="media align-items-center">
+    //                         <div className="media-body d-flex">
+    //                             <div>
+    //                                 <p>{jp.Sangsi}</p>
+    //                                 <p>Keterangan : {jp.KeteranganSangsi}</p>
+    //                             </div>
+    //                         </div>
+    //                     </div>
+    //                 </td>
+    //                 <td>
+    //                     <div className="checkbox c-checkbox">
+    //                         <label>
+    //                             {/* <input type="checkbox" checked={this.state.listA[index].checked} onChange={e => this.handleChange('listA', index)}/> */}
+    //                             <input 
+    //                                     //name="cb"{jp.idPelanggaran}
+    //                                     type="checkbox"
+    //                                     // checked={
+    //                                     //     jp.checked=true
+    //                                     // } 
+    //                                     checked={this.state.tbljenisPelanggaran[jp.idPelanggaran].checked}
+    //                                     //{this.state.listA[0].checked}
+    //                                     onChange={
+    //                                         e => this.onHandleChange('tbljenisPelanggaran',jp.idPelanggaran)
+    //                                     }
+    //                             />
+    //                             <span className="fa fa-check"></span>
+    //                         </label>
+    //                     </div>
+    //                 </td>
+    //              </tr>
+    //         )
+    //         })
+    //     //}
+    //  }
+
+/*     handleApplyClick = () => {
+
+        const _noSangsi = document.getElementById('noSangsi').value
+        
+        const _hisJP=[];
+        //Get data for filter by checked
+        this.state.tbljenisPelanggaran.filter(
+            _jp => _jp.checked == true
+        ).map(selectedPelanggaran => (
+            _hisJP.push(selectedPelanggaran)
+        ));
+        
+
+        this.state.hisJenisPelanggaran.push(
+            {
+                "noSangsi":_noSangsi,
+                "pelanggaran":_hisJP
+            }
+        )
+
+        console.log("Result hisJenisPelanggaran : ", this.state.hisJenisPelanggaran)
+    } */
+
+    render() {
+
+        const { selectedOptionMulti } = this.state;
+
+        return (
+            <ContentWrapper unwrap>
+                <div className="bg-cover" style={{backgroundImage: 'url(/static/img/profile-bg.png)'}}>
+                    <div className="p-4 text-center" style={styleHeaderText} >
+                        <img className="img-thumbnail rounded-circle thumb128" src="/static/img/univ-avatar.png" alt="Avatar"/>
+                        <h3 className="m-0">{this.props.data.nama}</h3>
+                        <p>{this.props.data.website}</p>
+                        <p>{this.props.data.sk_pendirian}</p>
+                        <p>{this.props.data.alamat.jalan}</p>
+                    </div>
+                </div>
+                {/* <div className="text-center bg-gray-dark p-3 mb-4">
+                    <Row>
+                        <Col xs="4" className="br">
+                            <h3 className="m-0">400</h3>
+                            <p className="m-0">
+                                <span className="d-none d-md-inline">Profile</span>
+                                <span>Views</span>
+                            </p>
+                        </Col>
+                        <Col xs="4" className="br">
+                            <h3 className="m-0">2000</h3>
+                            <p className="m-0">Likes</p>
+                        </Col>
+                        <Col xs="4">
+                            <h3 className="m-0">100</h3>
+                            <p className="m-0">Following</p>
+                        </Col>
+                    </Row>
+                </div> */}
+                {/* START card */}
+                <div className="p-3">
+                    {/* <Card className="card-default">
+                        <CardHeader> */}
+                                            {/* START panel tab */}
+                {/* <div className="card card-transparent"> */}
+                    <Nav tabs justified>
+                        <NavItem>
+                            <NavLink className={ this.state.activeTab === 'tasks' ? 'active':'' }
+                                onClick={() => { this.toggleTab('tasks'); }}
+                            >
+                                <em className="far fa-clock fa-fw"></em> Pelanggaran
+                            </NavLink>
+                        </NavItem>
+                        {/* <NavItem>
+                            <NavLink className={ this.state.activeTab === 'trans' ? 'active':'' }
+                                onClick={() => { this.toggleTab('trans'); }}
+                            >
+                                <em className="fas fa-info-circle"></em> Action Jenis Pelanggaran
+                            </NavLink>
+                        </NavItem> */}
+                        <NavItem>
+                            <NavLink className={ this.state.activeTab === 'wizard' ? 'active':'' }
+                                onClick={() => { this.toggleTab('wizard'); }}
+                            >
+                                <em className="fas fa-info-circle"></em> Perbaikan & Sanggahan
+                            </NavLink>
+                        </NavItem>
+                    </Nav>
+
+                    
+                    <TabContent activeTab={this.state.activeTab} className="bg-white p-0">
+                        <TabPane tabId="tasks">
+                            <div className="p-3">
+                                {/* START card */}
+                                <Card className="card-default">
+                                    <CardHeader>Daftar Pelanggaran</CardHeader>
+                                    {/* START table-responsive */}
+                                    <Table striped bordered hover responsive>
+                                        <thead>
+                                            <tr>
+                                                <th>ID Laporan</th>
+                                                <th>UUID Pelanggaran</th>
+                                                <th>Progres</th>
+                                                <th>Aktivitas Terakhir</th>
+                                                <th></th>
+                                            </tr>
+                                        </thead>
+                                        <tbody>
+                                            <tr>
+                                                <td>
+                                                    {/* <div className="ml-auto">ABCDEFGH012345</div> */}
+                                                    <div className="d-flex align-items-center mb-3">BI:54678</div>
+                                                </td>
+                                                <td>
+                                                    {/* <div className="ml-auto">ABCDEFGH012345</div> */}
+                                                    <div className="d-flex align-items-center mb-3">ABCDEFGH012345</div>
+                                                </td>
+                                                <td>
+                                                    <div className="progress progress-sm">
+                                                        <div className="progress-bar progress-bar-striped bg-success" role="progressbar" style={{width: '10%'}}>
+                                                            {/* <span className="sr-only">80% Complete</span> */}
+                                                            {/* <div className="radial-bar radial-bar-50 radial-bar-xs" data-label="50%"></div> */}
+                                                        </div>
+                                                    </div>
+                                                </td>
+                                                <td>
+                                                    <div className="d-flex align-items-center mb-3">05/05/2021</div>
+                                                    {/* <div className="ml-auto">05/05/2021</div> */}
+                                                </td>
+                                                <td>
+                                                    <div className="d-flex align-items-center mb-3">
+                                                        <Button color="info" size="sm" onClick={(e) => this.toggleTab('wizard')}>Lanjutkan</Button>
+                                                        {/* <Button color="info" size="sm">Lanjutkan</Button> */}
+                                                    </div>
+                                                </td>
+
+                                            </tr>
+                                           
+                                        </tbody>
+                                    </Table>
+                                    {/* END table-responsive */}
+                                </Card>
+                                {/* END card */}
+                                                            
+                            </div>
+                        </TabPane>
+                        
+                        <TabPane tabId="wizard" className="p-3">
+                            <FormWizardVertical />
+                        </TabPane>
+                    </TabContent>
+                {/* </div> */}
+                {/* END panel tab */}
+                    {/* </CardHeader>
+                </Card> */}
+                </div>
+                {/* START card */}
+
+            </ContentWrapper>
+            );
+    }
+
+}
+
+export default Profile;
+

+ 636 - 0
pages/app/pt.wizard.vertical.js

@@ -0,0 +1,636 @@
+import React, { Component } from 'react';
+import {
+    Card,
+    CardHeader,
+    CardFooter,
+    CardBody,
+    TabContent,
+    FormGroup,
+    TabPane,
+    Input,
+    Nav,
+    NavItem,
+    NavLink,
+    Button,
+    Row,
+    Col,
+    Table,
+    CustomInput
+} from 'reactstrap';
+import classnames from 'classnames';
+
+const stepNavitemStyle = {
+    backgroundColor: '#fcfcfc'
+};
+
+class FormWizardVertical extends Component {
+    state = {
+        activeStep: '1',
+        hisJenisPelanggaran:[],
+        tbljenisPelanggaran:[
+            {
+                "idPelanggaran": 0,
+                "Pelanggaran":"Tidak Ada",
+                "Sangsi":"Tanpa Sangsi",
+                "KeteranganSangsi":"-",
+                "LevelSangsi":0,
+                "LabelSangsi":"Tidak ada",
+                "checked":false,
+                "TMTBulan":0
+            },
+            {
+                "idPelanggaran": 1,
+                "Pelanggaran":"Pemimpin perguruan tinggi tidak melindungi dan memfasilitasi pelaksanaan kebebasan akademik,kebebasan mimbar akademik, dan otonomi keilmuan di perguruan tinggi",
+                "Sangsi":"Peringatan Tertulis",
+                "KeteranganSangsi":"-",
+                "LevelSangsi":1,
+                "LabelSangsi":"Ringan",
+                "checked":false,
+                 "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 2,
+                "Pelanggaran":"Perguruan tinggi tidak memuat mata kuliah agama,Pancasila, kewarganegaraan, dan bahasa Indonesia dalam kurikulumnya",
+                "Sangsi":"Peringatan Tertulis",
+                "KeteranganSangsi":"-",
+                "LevelSangsi":1,
+                "LabelSangsi":"Ringan",
+                "checked":false,
+                 "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 3,
+                "Pelanggaran":"Perguruan tinggi tidak menggunakan bahasa Indonesia sebagai bahasa pengantar utama",
+                "Sangsi":"Peringatan Tertulis",
+                "KeteranganSangsi":"-",
+                "LevelSangsi":1,
+                "LabelSangsi":"Ringan",
+                "checked":false,
+                 "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 4,
+                "Pelanggaran":"Perguruan tinggi tidak menyebarluaskan hasil penelitian dengan cara diseminarkan, dipublikasikan, dan/atau dipatenkan, kecuali hasil penelitian yang bersifat rahasia, mengganggu, dan/atau membahayakan kepentingan umum",
+                "Sangsi":"Peringatan Tertulis",
+                "KeteranganSangsi":"",
+                "LevelSangsi":1,
+                "LabelSangsi":"Ringan",
+                "checked":false,
+                 "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 5,
+                "Pelanggaran":"PTN tidak menerima calon Mahasiswa yang telah memenuhi persyaratan akademik dan lolos seleksi penerimaan Mahasiswa secara nasional",
+                "Sangsi":"Peringatan Tertulis",
+                "KeteranganSangsi":"",
+                "LevelSangsi":1,
+                "LabelSangsi":"Ringan",
+                 "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 6,
+                "Pelanggaran":"PTN tidak mencari dan menjaring calon Mahasiswa yang memiliki potensi akademik tinggi, tetapi kurang mampu secara ekonomi dan calon Mahasiswa dari daerah terdepan, terluar, dan tertinggal untuk diterima paling sedikit 20% (dua puluh persen) dari seluruh Mahasiswa baru yang diterima dan tersebar pada semua Program Studi",
+                "Sangsi":"Peringatan Tertulis",
+                "KeteranganSangsi":"",
+                "LevelSangsi":1,
+                "LabelSangsi":"Ringan",
+                "checked":false,
+                 "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 7,
+                "Pelanggaran":"Perguruan tinggi tidak memenuhi hak Mahasiswa yang kurang mampu secara ekonomi untuk dapat menyelesaikan studinya sesuai dengan peraturan akademik",
+                "Sangsi":"Peringatan Tertulis",
+                "KeteranganSangsi":"",
+                "LevelSangsi":1,
+                "LabelSangsi":"Ringan",
+                "checked":false,
+                 "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 8,
+                "Pelanggaran":"Perguruan tinggi memberi gelar yang tidak menggunakan bahasa Indonesia",
+                "Sangsi":"Peringatan Tertulis",
+                "KeteranganSangsi":"",
+                "LevelSangsi":1,
+                "LabelSangsi":"Ringan",
+                "checked":false,
+                 "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 9,
+                "Pelanggaran":"Pemimpin perguruan tinggi tidak melindungi dan memfasilitasi pengelolaan di bidang non akademik",
+                "Sangsi":"Peringatan Tertulis",
+                "KeteranganSangsi":"",
+                "LevelSangsi":1,
+                "LabelSangsi":"Ringan",
+                "checked":false,
+                 "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 10,
+                "Pelanggaran":"Perguruan tinggi tidak mengumumkan ringkasan laporan tahunan kepada masyarakat",
+                "Sangsi":"Peringatan Tertulis",
+                "KeteranganSangsi":"",
+                "LevelSangsi":1,
+                "LabelSangsi":"Ringan",
+                "checked":false,
+                 "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 11,
+                "Pelanggaran":"Perguruan tinggi memiliki Dosen tetap kurang dari 5 (lima) orang untuk setiap Program Studi",
+                "Sangsi":"Peringatan Tertulis",
+                "KeteranganSangsi":"",
+                "LevelSangsi":1,
+                "LabelSangsi":"Ringan",
+                "checked":false,
+                 "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 12,
+                "Pelanggaran":"Perguruan tinggi tidak memenuh  nisbah Dosen dan Mahasiswa sesuai dengan ketentuan peraturan perundang-undangan",
+                "Sangsi":"Peringatan Tertulis",
+                "KeteranganSangsi":"",
+                "LevelSangsi":1,
+                "LabelSangsi":"Ringan",
+                "checked":false,
+                 "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 13,
+                "Pelanggaran":"Perguruan tinggi tidak melakukan pelaporan secara berkala ke pangkalan data Pendidikan Tinggi",
+                "Sangsi":"Peringatan Tertulis",
+                "KeteranganSangsi":"",
+                "LevelSangsi":1,
+                "LabelSangsi":"Ringan",
+                "checked":false,
+                 "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 14,
+                "Pelanggaran":"Program sarjana memiliki Dosen yang tidak berkualifikasi akademik minimum lulusan program magister atau sederajat",
+                "Sangsi":"Penghentian sementara bantuan biaya pendidikan dari pemerintahan pusat",
+                "KeteranganSangsi":"Berupa penundaan pemberian bantuan keuangan, hibah, dan/atau bentuk bantuan lain bagi perguruan tinggi",
+                "LevelSangsi":2,
+                "LabelSangsi":"Sedang",
+                "checked":false,
+                 "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 15,
+                "Pelanggaran":"Program magister memiliki Dosen yang tidak berkualifikasi akademik lulusan program doktor atau sederajat",
+                "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+                "KeteranganSangsi":"Penghentian sementara penerimaan Mahasiswa baru",
+                "LevelSangsi":2,
+                "LabelSangsi":"Sedang",
+                "checked":false,
+                 "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 16,
+                "Pelanggaran":"Program doktor memiliki Dosen yang tidak berkualifikasi akademik lulusan program doktor atau sederajat",
+                "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+                "KeteranganSangsi":"Penundaan proses usul pembukaan Program Studi baru",
+                "LevelSangsi":2,
+                "LabelSangsi":"Sedang",
+                "checked":false,
+                 "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 17,
+                "Pelanggaran":"Program diploma memiliki Dosen yang tidak berkualifikasi akademik minimum lulusan program magister atau sederajat",
+                "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+                "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+                "LevelSangsi":2,
+                "LabelSangsi":"Sedang",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 18,
+                "Pelanggaran":"Program magister terapan memiliki Dosen yang tidak berkualifikasi akademik lulusan program doktor atau sederajat",
+                "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+                "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+                "LevelSangsi":2,
+                "LabelSangsi":"Sedang",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 19,
+                "Pelanggaran":"Program doktor terapan memiliki Dosen yang tidak berkualifikasi akademik lulusan program doktor atau sederajat",
+                "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+                "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+                "LevelSangsi":2,
+                "LabelSangsi":"Sedang",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 20,
+                "Pelanggaran":"Program profesi memiliki Dosen yang tidak berkualifikasi akademik minimum lulusan profesi dan/atau lulusan program magister atau sederajat dengan pengalaman kerja paling singkat 2 (dua) tahun",
+                "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+                "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+                "LevelSangsi":2,
+                "LabelSangsi":"Sedang",
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 21,
+                "Pelanggaran":"Program spesialis memiliki Dosen yang tidak berkualifikasi akademik minimum lulusan program spesialis dan/atau lulusan program doktor atau sederajat dengan pengalaman kerja paling singkat 2 (dua) tahun",
+                "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+                "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+                "LevelSangsi":2,
+                "LabelSangsi":"Sedang",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 22,
+                "Pelanggaran":"Perguruan tinggi tidak mencabut gelar akademik, gelar vokasi, atau gelar profesi apabila karya ilmiah yang digunakan untuk memperoleh gelar akademik, gelar vokasi, atau gelar profesi terbukti merupakan hasil plagiat",
+                "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+                "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+                "LevelSangsi":2,
+                "LabelSangsi":"Sedang",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 23,
+                "Pelanggaran":"Perguruan tinggi tidak menyediakan, memfasilitasi, memiliki Sumber Belajar sesuai dengan Program Studi yang dikembangkan",
+                "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+                "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+                "LevelSangsi":2,
+                "LabelSangsi":"Sedang",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 24,
+                "Pelanggaran":"Perguruan tinggi tidak memiliki statuta",
+                "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+                "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+                "LevelSangsi":2,
+                "LabelSangsi":"Sedang",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 25,
+                "Pelanggaran":"Perguruan tinggi tidak memiliki panduan/prosedur peralihan dan perolehan satuan kredit semester serta rekognisi pembelajaran lampau",
+                "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+                "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+                "LevelSangsi":2,
+                "LabelSangsi":"Sedang",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 26,
+                "Pelanggaran":"Perguruan tinggi melaporkan data yang tidak valid ke PDDIKTI",
+                "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+                "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+                "LevelSangsi":2,
+                "LabelSangsi":"Sedang",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 27,
+                "Pelanggaran":"Perguruan tinggi yang menyelenggarakan kegiatan akademik yang tidak sesuai dengan seluruh Standar Nasional Pendidikan Tinggi",
+                "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+                "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+                "LevelSangsi":2,
+                "LabelSangsi":"Sedang",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 28,
+                "Pelanggaran":"Badan Penyelenggara tidak memberikan gaji pokok serta tunjangan kepada Dosen dan tenaga kependidikan sesuai dengan ketentuan peraturan perundang-undangan",
+                "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+                "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+                "LevelSangsi":2,
+                "LabelSangsi":"Sedang",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 29,
+                "Pelanggaran":"Perguruan tinggi dan/atau Program Studi yang tidak terakreditasi mengeluarkan gelar akademik, gelar vokasi, dan/atau gelar profesi",
+                "Sangsi":"Penghentian pembinaan",
+                "KeteranganSangsi":"Penghentian bantuan keuangan, hibah, dan/atau bentuk bantuan lain yang diperuntukkan bagi perguruan tinggi",
+                "LevelSangsi":3,
+                "LabelSangsi":"Berat",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 30,
+                "Pelanggaran":"Perguruan tinggi dan/atau Program Studi memberikan ijazah, gelar akademik, gelar vokasi, dan/atau gelar profesi kepada orang yang tidak berhak",
+                "Sangsi":"Penghentian pembinaan",
+                "KeteranganSangsi":"Penghentian layanan Pemerintah Pusat bagi perguruan tinggi",
+                "LevelSangsi":3,
+                "LabelSangsi":"Berat",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 31,
+                "Pelanggaran":"Perguruan tinggi tidak mengusulkan akreditasi ulang Program Studi sebagaimana ditentukan dalam peraturan perundang-undangan",
+                "Sangsi":"Penghentian pembinaan",
+                "KeteranganSangsi":"Penghentian penerimaan Mahasiswa baru",
+                "LevelSangsi":3,
+                "LabelSangsi":"Berat",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 32,
+                "Pelanggaran":"Perguruan tinggi lembaga negara lain yang menyelenggarakan pendidikan di wilayah Negara Kesatuan Republik Indonesia yang tidak sesuai dengan ketentuan peraturan perundang-undangan",
+                "Sangsi":"Penghentian pembinaan",
+                "KeteranganSangsi":"Larangan melakukan wisuda",
+                "LevelSangsi":3,
+                "LabelSangsi":"Berat",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 33,
+                "Pelanggaran":"Perguruan tinggi melakukan penerimaan Mahasiswa baru dengan tujuan komersial",
+                "Sangsi":"Penghentian pembinaan",
+                "KeteranganSangsi":"Penghentian proses usul pembukaan Program Studi baru",
+                "LevelSangsi":3,
+                "LabelSangsi":"Berat",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 34,
+                "Pelanggaran":"Pengelolaan perguruan tinggi tidak berprinsip nirlaba",
+                "Sangsi":"Penghentian pembinaan",
+                "KeteranganSangsi":"Penarikan Dosen Pegawai Negeri Sipil yang dipekerjakan",
+                "LevelSangsi":3,
+                "LabelSangsi":"Berat",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 35,
+                "Pelanggaran":"Perguruan tinggi dan/atau Badan Penyelenggara melakukan perubahan nama perguruan tinggi, nama dan/atau bentuk Badan Penyelenggara, dan/atau lokasi Kampus Utama PTS tanpa izin dari Menteri",
+                "Sangsi":"Pencabutan izin Program Studi",
+                "KeteranganSangsi":"",
+                "LevelSangsi":3,
+                "LabelSangsi":"Berat",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 36,
+                "Pelanggaran":"Perguruan tinggi menyelenggarakan Program Studi tanpa izin dari Menteri",
+                "Sangsi":"Pembubaran PTN atau pencabutan izin PTS",
+                "KeteranganSangsi":"",
+                "LevelSangsi":3,
+                "LabelSangsi":"Berat",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 37,
+                "Pelanggaran":"Perguruan tinggi menyelenggarakan PJJ tanpa izin dari Menteri",
+                "Sangsi":"Pembubaran PTN atau pencabutan izin PTS",
+                "KeteranganSangsi":"",
+                "LevelSangsi":3,
+                "LabelSangsi":"Berat",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 38,
+                "Pelanggaran":"Perguruan tinggi dan/atau Program Studi tidak lagi memenuhi syarat pendirian perguruan tinggi dan/atau pembukaan Program Studi",
+                "Sangsi":"Pembubaran PTN atau pencabutan izin PTS",
+                "KeteranganSangsi":"",
+                "LevelSangsi":3,
+                "LabelSangsi":"Berat",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 39,
+                "Pelanggaran":"Terjadi sengketa",
+                "Sangsi":"Pembubaran PTN atau pencabutan izin PTS",
+                "KeteranganSangsi":"",
+                "LevelSangsi":3,
+                "LabelSangsi":"Berat",
+                "checked":false,
+                "TMTBulan":6
+            }
+        ]
+    };
+
+    toggleStep = activeStep => () => {
+        if (this.state.activeStep !== activeStep) {
+            this.setState({
+                activeStep
+            });
+        }
+    };
+
+    // handle particular changes on each checkbox
+    onHandleChange(listName,index) {
+    
+        //set state to checkbox and data in promise mode
+        this.setState({
+            [listName]: this.state[listName].map(
+                        (item, i) => (
+                            
+                                index !== i ? 
+                                item : {...item, checked: !this.state[listName][index].checked}
+                            ) 
+                    )
+        });
+
+
+
+    };
+
+    // done = () => {
+    //     alert('Custom message without form submission.');
+    // };
+
+    handleApplyClick = () => {
+
+        const _noSangsi = document.getElementById('noSangsi').value
+        
+        const _hisJP=[];
+        //Get data for filter by checked
+        this.state.tbljenisPelanggaran.filter(
+            _jp => _jp.checked == true
+        ).map(selectedPelanggaran => (
+            _hisJP.push(selectedPelanggaran)
+        ));
+        
+        this.state.hisJenisPelanggaran=[];
+        this.state.hisJenisPelanggaran.push(
+            {
+                "noSangsi":_noSangsi,
+                "pelanggaran":_hisJP
+            }
+        )
+
+        console.log("Result hisJenisPelanggaran : ", this.state.hisJenisPelanggaran)
+    }
+
+    renderTableData() {
+        
+    };
+
+    render() {
+        return (
+            <Card className="card-default">
+                {/* <CardHeader>Vertical Example (without validation)</CardHeader> */}
+                <CardBody>
+                    <Row>
+                        <Col xs="4">
+                            <Nav pills vertical={true}>
+                                <NavItem style={stepNavitemStyle}>
+                                    <NavLink
+                                        tag="div"
+                                        className={classnames({
+                                            active: this.state.activeStep === '1'
+                                        })}
+                                        onClick={this.toggleStep('1')}
+                                    >
+                                        <h4 className="text-left my-3">1. Perbaikan</h4>
+                                    </NavLink>
+                                </NavItem>
+                                <NavItem style={stepNavitemStyle}>
+                                    <NavLink
+                                        tag="div"
+                                        className={classnames({
+                                            active: this.state.activeStep === '2'
+                                        })}
+                                        onClick={this.toggleStep('2')}
+                                    >
+                                        <h4 className="text-left my-3">2. Sanggahan</h4>
+                                    </NavLink>
+                                </NavItem>
+                            </Nav>
+                        </Col>
+                        <Col xs="8">
+                            <TabContent activeTab={this.state.activeStep} className="border-0">
+
+                                <TabPane tabId="1">
+                                    {/* <div className="pt-3 mb-3"> */}
+                                    <div>
+                                        {/* START card */}
+                                        <Card className="card-default">
+                                            <CardHeader>
+                                                <label>Form Perbaikan Sanksi</label>    
+                                            </CardHeader>
+                                            <CardBody>
+                                                <form className="form-horizontal" method="get" action="/" onSubmit={this.onSubmit}>
+                                                    {/* <fieldset> */}
+                                                    <FormGroup row>
+                                                        <label className="col-md-2 col-form-label">Nomor Sanksi</label>
+                                                        <div className="col-md-10">
+                                                            <Input type="text"/>
+                                                            <span className="form-text">Nomor sanksi akan digenerate otomatis dari sistem</span>
+                                                        </div>
+                                                    </FormGroup>
+                                                    {/* </fieldset> */}
+                                                    <FormGroup row>
+                                                        <label className="col-md-2 col-form-label">Keterangan Perbaikan</label>
+                                                        <div className="col-md-10">
+                                                            <Input type="textarea"/>
+                                                            {/* <textarea class="form-control" id="inputContact6" row="3">Some nice Street, 1234</textarea> */}
+                                                            <span className="form-text">Deskripsi perbaikan minimum karakter 50 maksimum 200 karakter</span>
+                                                        </div>
+                                                    </FormGroup>
+                                                    <FormGroup row>
+                                                        <label className="col-md-2 col-form-label">Upload File Pendukung</label>
+                                                        <div className="col-md-10">
+                                                            {/* <input type="file" multiple name="customFile" class="custom-file-input"></input> */}
+                                                            <CustomInput
+                                                                type="file" multiple
+                                                                id="exampleCustomFileBrowser"
+                                                                name="customFile"
+                                                            />
+                                                            <span className="form-text">Multiple files upload</span>
+                                                        </div>
+                                                    </FormGroup>
+                                                    <FormGroup row>
+                                                        <div className="col-xl-10">
+                                                            <button className="btn btn-sm btn-primary" type="submit">Submit Perbaikan</button>
+                                                        </div>
+                                                    </FormGroup>
+                                                </form>
+                                            </CardBody>
+                                        </Card>
+                                        {/* END card */}
+                                    </div>
+                                </TabPane>
+                                <TabPane tabId="2">
+                                    {/* <div className="pt-3 mb-3"> */}
+                                    <div>   
+                                        {/* START card */}
+                                        <Card className="card-default">
+                                            <CardHeader>
+                                                <label>Form Sanggahan Sanksi</label>    
+                                            </CardHeader>
+                                            <CardBody>
+                                                <form className="form-horizontal" method="get" action="/" onSubmit={this.onSubmit}>
+                                                    {/* <fieldset> */}
+                                                    <FormGroup row>
+                                                        <label className="col-md-2 col-form-label">Nomor Sanksi</label>
+                                                        <div className="col-md-10">
+                                                            <Input type="text"/>
+                                                            <span className="form-text">Nomor sanksi akan digenerate otomatis dari sistem</span>
+                                                        </div>
+                                                    </FormGroup>
+                                                    {/* </fieldset> */}
+                                                    <FormGroup row>
+                                                        <label className="col-md-2 col-form-label">Keterangan Sanggahan</label>
+                                                        <div className="col-md-10">
+                                                            <Input type="textarea"/>
+                                                            {/* <textarea class="form-control" id="inputContact6" row="3">Some nice Street, 1234</textarea> */}
+                                                            <span className="form-text">Deskripsi Sanggahan minimum karakter 50 maksimum 200 karakter</span>
+                                                        </div>
+                                                    </FormGroup>
+                                                    <FormGroup row>
+                                                        <label className="col-md-2 col-form-label">Upload File Pendukung</label>
+                                                        <div className="col-md-10">
+                                                            {/* <input type="file" multiple name="customFile" class="custom-file-input"></input> */}
+                                                            <CustomInput
+                                                                type="file" multiple
+                                                                id="exampleCustomFileBrowser"
+                                                                name="customFile"
+                                                            />
+                                                            <span className="form-text">Multiple files upload</span>
+                                                        </div>
+                                                    </FormGroup>
+                                                    <FormGroup row>
+                                                        <div className="col-xl-10">
+                                                            <button className="btn btn-sm btn-primary" type="submit">Submit Sanggahan</button>
+                                                        </div>
+                                                    </FormGroup>
+                                                </form>
+                                            </CardBody>
+                                        </Card>
+                                        {/* END card */}
+                                    </div>
+
+
+                                </TabPane>
+
+                            </TabContent>
+                        </Col>
+                    </Row>
+                </CardBody>
+            </Card>
+        );
+    }
+}
+
+export default FormWizardVertical;

+ 285 - 0
pages/app/sanksi.js

@@ -0,0 +1,285 @@
+import React, { Component } from 'react';
+import Router from 'next/router'
+import ContentWrapper from '@/components/Layout/ContentWrapper';
+import { Row, Col, Progress, Button } from 'reactstrap';
+
+import Sparkline from '@/components/Common/Sparklines';
+import Scrollable from '@/components/Common/Scrollable'
+import Datatable from '@/components/Tables/Datatable';
+import moment from 'moment';
+
+class BugTracker extends Component {
+
+    newProcessClick = (e, PT_ID) => {
+        //temp variable for dev
+        PT_ID='0BCE4DB7-B207-445D-8D03-0C54B7688252';
+        const query = { ptId: PT_ID };
+        
+        e.preventDefault();
+        Router.push(
+            {
+                pathname: '/app/sanksi.proses',
+                query: { ptId: PT_ID }
+            }
+        );
+    }
+
+    render() {
+        return (
+            <ContentWrapper>
+                <div className="content-heading">Sanksi</div>
+                <Row>
+                    <Col lg="4">
+                        {/* Aside card */}
+                        <div className="card b">
+                            <div className="card-body bb">
+                                <p>Overvall progress</p>
+                                <div className="d-flex align-items-center mb-2">
+                                    <div className="w-100">
+                                        <Progress className="progress-xs m0" color="info" value={ 20 } />
+                                    </div>
+                                    <div className="ml-auto">
+                                        <div className="col wd-xxs text-right">
+                                            <div className="text-bold text-muted">20%</div>
+                                        </div>
+                                    </div>
+                                </div>
+                            </div>
+                            <div className="card-body">
+                                <p>Metrics</p>
+                                <div className="row text-center">
+                                    <div className="col-6 col-lg-6 col-xl-6">
+                                     <Sparkline values={[20,80]}
+
+                                        options={{
+                                            type:"pie",
+                                            height:"50",
+                                            sliceColors:["#edf1f2", "#23b7e5"]
+                                        }}
+                                        className="sparkline"/>
+                                        <p className="mt-3">Open Case</p>
+                                    </div>
+                                    <div className="col-6 col-lg-6 col-xl-6">
+                                     <Sparkline values={[80,20]}
+
+                                        options={{
+                                            type:"pie",
+                                            height:"50",
+                                            sliceColors:["#edf1f2", "#27c24c"]
+                                        }}
+                                        className="sparkline"/>
+                                        <p className="mt-3">Close Case</p>
+                                    </div>
+                                    {/* <div className="col-3 col-lg-6 col-xl-3">
+                                     <Sparkline values={[20,80]}
+
+                                        options={{
+                                            type:"pie",
+                                            height:"50",
+                                            sliceColors:["#edf1f2", "#ff902b"]
+                                        }}
+                                        className="sparkline"/>
+                                        <p className="mt-3">Hours</p>
+                                    </div>
+                                    <div className="col-3 col-lg-6 col-xl-3">
+                                     <Sparkline values={[30,70]}
+
+                                        options={{
+                                            type:"pie",
+                                            height:"50",
+                                            sliceColors:["#edf1f2", "#f05050"]
+                                        }}
+                                        className="sparkline"/>
+                                        <p className="mt-3">Assigned</p>
+                                    </div> */}
+                                </div>
+                            </div>
+                            <table className="table bb">
+                                <tbody>
+                                    {/* <tr>
+                                        <td>
+                                            <strong>Assigned Hours</strong>
+                                        </td>
+                                        <td>68 hs</td>
+                                    </tr>
+                                    <tr>
+                                        <td>
+                                            <strong>Time Consumed</strong>
+                                        </td>
+                                        <td>32 hs</td>
+                                    </tr> */}
+                                    <tr>
+                                        <td>
+                                            <strong>Open Case</strong>
+                                        </td>
+                                        <td>80</td>
+                                    </tr>
+                                    <tr>
+                                        <td>
+                                            <strong>Close Case</strong>
+                                        </td>
+                                        <td>20</td>
+                                    </tr>
+                                    <tr>
+                                        <td>
+                                            <strong>Performance</strong>
+                                        </td>
+                                        <td>
+                                            <em className="far fa-smile fa-lg text-warning"></em>
+                                        </td>
+                                    </tr>
+                                    {/* <tr>
+                                        <td>
+                                            <strong>Commits</strong>
+                                        </td>
+                                        <td>140</td>
+                                    </tr> */}
+                                    {/* <tr>
+                                        <td>
+                                            <strong>Last Case Closed</strong>
+                                        </td>
+                                        <td>
+                                            <Scrollable height="120px" className="list-group">
+                                                <table className="table table-bordered bg-transparent">
+                                                    <tbody>
+                                                        <tr>
+                                                            <td>
+                                                                <a className="text-muted" href="">BI:54678</a>
+                                                            </td>
+                                                        </tr>
+                                                        <tr>
+                                                            <td>
+                                                                <a className="text-muted" href="">BI:55778</a>
+                                                            </td>
+                                                        </tr>
+                                                        <tr>
+                                                            <td>
+                                                                <a className="text-muted" href="">BI:56878</a>
+                                                            </td>
+                                                        </tr>
+                                                        <tr>
+                                                            <td>
+                                                                <a className="text-muted" href="">BI:57978</a>
+                                                            </td>
+                                                        </tr>
+                                                        <tr>
+                                                            <td>
+                                                                <a className="text-muted" href="">BI:1107</a>
+                                                            </td>
+                                                        </tr>
+                                                    </tbody>
+                                                </table>
+                                            </Scrollable>
+                                        </td>
+                                    </tr> */}
+                                    <tr>
+                                        <td>
+                                            <strong>Last Case Closed</strong>
+                                        </td>
+                                        <td>BI:1107 - 12/01/2016</td>
+                                    </tr>
+                                </tbody>
+                            </table>
+                        </div>
+                        {/* end Aside card */}
+                    </Col>
+                    <Col lg="8">
+                        {/* <div className="mb-3 d-flex"> */}
+                            {/* <div> */}
+                                {/* <button className="btn btn-sm btn-info" type="button" onClick={(e) => this.newReportClick(e)}>Laporan Baru</button> */}
+                                {/* <Button color="info" size="sm" onClick={(e) => this.handleClick(e, pt.id)}>View</Button> */}
+                                {/* <button className="btn btn-sm btn-secondary" type="button">
+                                    <em className="fa fa-user-plus"></em>
+                                </button>
+                                <button className="btn btn-sm btn-secondary" type="button">
+                                    <em className="fas fa-pencil-alt"></em>
+                                </button>
+                                <button className="btn btn-sm btn-secondary" type="button">
+                                    <em className="fas fa-share"></em>
+                                </button>
+                                <button className="btn btn-sm btn-secondary" type="button">
+                                    <em className="fa fa-print"></em>
+                                </button> */}
+                            {/* </div> */}
+                            {/* <div className="ml-auto">
+                                <p className="mb-0 mt-1">19 bugs / 16 issues</p>
+                            </div> */}
+                        {/* </div> */}
+                        <div className="card b">
+                            <div className="card-body">
+                                <Datatable options={{responsive: true}}>
+                                    <table className="table w-100">
+                                        <thead>
+                                            <tr>
+                                                {/* <th>Type</th> */}
+                                                <th>#ID</th>
+                                                <th>Description</th>
+                                                <th>Created</th>
+                                                {/* <th>Priority</th>
+                                                <th>Asigned</th> */}
+                                                <th>Status</th>
+                                                <th>Action</th>
+                                            </tr>
+                                        </thead>
+                                        <tbody>
+                                            <tr>
+                                                {/* <td>
+                                                    <div className="badge bg-gray-lighter">bug</div>
+                                                </td> */}
+                                                <td>BI:54678</td>
+                                                <td className="text-nowrap">
+                                                    <div className="media align-items-center">
+                                                        <a className="mr-3" href="">
+                                                            <img className="img-fluid rounded thumb64" src="/static/img/dummy-search.png" alt="Dummy"/>
+                                                        </a>
+                                                        <div className="media-body d-flex">
+                                                            <div>
+                                                                <h4 className="m-0">Universitas Satyagama</h4>
+                                                                <small className="text-muted">0742/O/1990 - www.satyagama.ac.id - info@satyagama.ac.id</small>
+                                                                <p>Jalan Kamal Raya No 2-A Cengkareng</p>
+                                                                <p> </p>
+                                                            </div>
+                                                            {/* <div className="ml-auto">
+                                                                <Button color="info" size="sm" onClick={(e) => this.handleClick(e, pt.id)}>Proses Sangsi</Button>
+                                                            </div> */}
+                                                        </div>
+                                                    </div>
+                                                
+
+
+
+                                                    {/* <small>Maecenas mollis egestas convallis.</small> */}
+                                                </td>
+                                                <td>{moment("2020-04-04 11:45:26.123").fromNow()}</td>
+                                                {/* <td>
+                                                    <div className="circle circle-lg bg-warning" data-title="normal"></div>
+                                                </td> */}
+                                                {/* <td>
+                                                    <a href="">Sylvia Daniels</a>
+                                                </td> */}
+                                                <td>
+                                                    <div className="inline wd-xxs badge badge-success">open</div>
+                                                </td>
+                                                <td>
+                                                    <div className="ml-auto">
+                                                        <button class="btn-oval btn btn-primary" size="sm" onClick={(e) => this.newProcessClick(e)}>Proses Sanksi</button>
+                                                    </div>
+                                                </td>
+                                            </tr>
+                                            
+                                        </tbody>
+                                    </table>
+                                </Datatable>
+                            </div>
+                        </div>
+                    </Col>
+                </Row>
+            </ContentWrapper>
+            );
+    }
+
+}
+
+export default BugTracker;
+
+

+ 431 - 0
pages/app/sanksi.proses.js

@@ -0,0 +1,431 @@
+import React, { Component } from 'react';
+//import { withRouter } from 'next/router'
+import ContentWrapper from '@/components/Layout/ContentWrapper';
+import { Row, Col, Card, Button, CardHeader, CardFooter, Table, Nav, NavItem, NavLink, TabContent, TabPane, Pagination, PaginationItem, PaginationLink, ListGroup, ListGroupItem, Dropdown, DropdownMenu, DropdownToggle, DropdownItem } from 'reactstrap';
+//import { Row, Col, Card, CardHeader, CardFooter, Table, Pagination, PaginationItem, PaginationLink } from 'reactstrap';
+
+// import { Row, Col, Dropdown, DropdownMenu, DropdownToggle, DropdownItem } from 'reactstrap';
+import Select from 'react-select';
+import { GoogleMap, LoadScript, Marker } from '@react-google-maps/api';
+
+import { GetServerSideProps, NextPage } from 'next';
+import ErrorPage from 'next/error';
+import fetch from 'node-fetch';
+
+import https from 'https';
+
+const containerStyle = {
+    width: '100%',
+    height: '155px'
+};
+
+import FormWizardVertical from './sanksi.proses.wizard.js';
+
+var jenisPelanggaran = [];
+
+//const qpt_id = {};
+
+//http://localhost:3000/app/profile?ptId=0BCE4DB7-B207-445D-8D03-0C54B7688252
+
+// Demo with custom style
+const DemoMapCustomStyle = props => (
+        <GoogleMap mapContainerStyle={containerStyle} zoom={14} center={props.location} options={{ styles: props.mapStyles }}>
+        <Marker position={props.location} />
+        </GoogleMap>
+)
+
+const styleHeaderText = {
+    color: 'brown'
+}
+
+class Profile extends Component {
+
+    toggleTab = tab => {
+        if (this.state.activeTab !== tab) {
+            this.setState({
+                activeTab: tab
+            });
+        }
+    }
+
+    
+    static async getInitialProps({ query }) {
+
+        
+
+        const httpsAgent = new https.Agent({
+            rejectUnauthorized: false,
+          });
+        
+          //console.log('post agent : ');
+
+
+         //const res = await fetch('https://api.kemdikbud.go.id:8243/pddikti/1.2/pt/707C3895-B546-4DA5-A6A7-EFE7461A7C7E', { 
+        //  const res = await fetch('https://api.kemdikbud.go.id:8243/pddikti/1.2/pt/'+query.ptId, { 
+        //     method: 'get', 
+        //     headers: new Headers({
+        //       'Authorization': 'Bearer 5b62f743-eef2-3370-8c66-6951b2e9c2c5', 
+        //       'Accept': 'application/json'
+        //     }),
+        //     agent: httpsAgent
+        //   }
+        //  )
+
+        //console.log('res : ', res);
+         
+        //const json = await res.json();
+        //console.log('json : ', json);
+        const json = [
+                        {
+                            "id": "0BCE4DB7-B207-445D-8D03-0C54B7688252",
+                            "kode": "031031",
+                            "kode_satker": null,
+                            "nama": "Universitas Satyagama",
+                            "nama_singkat": "USG",
+                            "sk_pendirian": "0742/O/1990",
+                            "tgl_sk_pendirian": "1990-12-22",
+                            "sk_operasional": null,
+                            "tgl_sk_operasional": null,
+                            "status": "N",
+                            "alamat": {
+                            "jalan": "Jalan Kamal Raya No 2-A Cengkareng",
+                            "rt": null,
+                            "rw": null,
+                            "dusun": null,
+                            "kelurahan": "-",
+                            "kode_pos": "11730",
+                            "kab_kota": {
+                                "id": "016200",
+                                "nama": "Kota Jakarta Barat"
+                            }
+                            },
+                            "propinsi": {
+                            "id": "010000",
+                            "nama": "Prov. D.K.I. Jakarta"
+                            },
+                            "telepon": "(021) 5452377-78",
+                            "faksimile": "(021) 54391325",
+                            "website": "www.satyagama.ac.id",
+                            "email": "info@satyagama.ac.id",
+                            "status_milik": {
+                            "id": "3",
+                            "nama": "Yayasan"
+                            },
+                            "pembina": {
+                            "id": "728989DD-251E-4516-BE2C-BA17A93A5C51",
+                            "nama": "LLDIKTI III"
+                            },
+                            "bentuk_pendidikan": {
+                            "id": "23",
+                            "nama": "Universitas"
+                            },
+                            "last_update": "2021-08-22",
+                            "negara": {
+                            "id": "ID",
+                            "nama": "Indonesia"
+                            }
+                    }
+                ]
+
+
+        return { data: json[0] }
+      }
+
+    state = {
+        dropdownOpen: false,
+        dropdownOpenUpload: false,
+        timelineAlt: false,
+        location: { lat: 33.7906731, lng: -117.8357194 },
+        customStyle: [{featureType:'water',stylers:[{visibility:'on'},{color:'#bdd1f9'}]},{featureType:'all',elementType:'labels.text.fill',stylers:[{color:'#334165'}]},{featureType:'landscape',stylers:[{color:'#e9ebf1'}]},{featureType:'road.highway',elementType:'geometry',stylers:[{color:'#c5c6c6'}]},{featureType:'road.arterial',elementType:'geometry',stylers:[{color:'#fff'}]},{featureType:'road.local',elementType:'geometry',stylers:[{color:'#fff'}]},{featureType:'transit',elementType:'geometry',stylers:[{color:'#d8dbe0'}]},{featureType:'poi',elementType:'geometry',stylers:[{color:'#cfd5e0'}]},{featureType:'administrative',stylers:[{visibility:'on'},{lightness:33}]},{featureType:'poi.park',elementType:'labels',stylers:[{visibility:'on'},{lightness:20}]},{featureType:'road',stylers:[{color:'#d8dbe0',lightness:20}]}],
+        listA: [],
+        //isChecked:true,
+        selectedOptionMulti: [],
+        activeTab: 'tasks'
+        
+    }
+
+    toggleDD = () => this.setState({
+        dropdownOpen: !this.state.dropdownOpen
+    })
+
+    toggleDDUpload = () => this.setState({
+        dropdownOpenUpload: !this.state.dropdownOpenUpload
+    })
+
+    toggleTimeline = e => {
+        this.setState({
+            timelineAlt: e.target.checked
+        })
+    }
+
+    // // handle particular changes on each checkbox
+    // onHandleChange(listName,index) {
+      
+    //     //set state to checkbox and data in promise mode
+    //     this.setState({
+    //         [listName]: this.state[listName].map(
+    //                     (item, i) => (
+                            
+    //                             index !== i ? 
+    //                             item : {...item, checked: !this.state[listName][index].checked}
+    //                         ) 
+    //                 )
+    //     });
+
+
+
+    // }
+
+
+    // state = {
+    //     location: { lat: 33.7906731, lng: -117.8357194 },
+    //     customStyle: [{featureType:'water',stylers:[{visibility:'on'},{color:'#bdd1f9'}]},{featureType:'all',elementType:'labels.text.fill',stylers:[{color:'#334165'}]},{featureType:'landscape',stylers:[{color:'#e9ebf1'}]},{featureType:'road.highway',elementType:'geometry',stylers:[{color:'#c5c6c6'}]},{featureType:'road.arterial',elementType:'geometry',stylers:[{color:'#fff'}]},{featureType:'road.local',elementType:'geometry',stylers:[{color:'#fff'}]},{featureType:'transit',elementType:'geometry',stylers:[{color:'#d8dbe0'}]},{featureType:'poi',elementType:'geometry',stylers:[{color:'#cfd5e0'}]},{featureType:'administrative',stylers:[{visibility:'on'},{lightness:33}]},{featureType:'poi.park',elementType:'labels',stylers:[{visibility:'on'},{lightness:20}]},{featureType:'road',stylers:[{color:'#d8dbe0',lightness:20}]}]
+    // }
+
+    
+    // renderTableData() {
+    //     //const dataTable = this.props.data;
+    //     //if (dataTable === true ) {
+
+
+    //         return this.state.tbljenisPelanggaran.map((jp,index) => {
+            
+    //         return (
+    //                 // <tr>
+    //                 //     <td>
+    //                 //         <label>{index+1}</label>
+    //                 //     </td>
+    //                 //     <td>
+    //                 //         <div className="media align-items-center">
+    //                 //             <a className="mr-3" href="">
+    //                 //                 <img className="img-fluid rounded thumb64" src="/static/img/dummy-search.png" alt="Dummy"/>
+    //                 //             </a>
+    //                 //             <div className="media-body d-flex">
+    //                 //                 <div>
+    //                 //                     <h4 className="m-0">{pt.nama}</h4>
+    //                 //                     <small className="text-muted">{pt.sk_pendirian} - {pt.website} - {pt.email}</small>
+    //                 //                     <p>{pt.alamat.jalan}</p>
+    //                 //                 </div>
+    //                 //                 <div className="ml-auto">
+    //                 //                     <Button color="info" size="sm" onClick={(e) => this.handleClick(e, pt.id)}>View</Button>
+    //                 //                 </div>
+    //                 //             </div>
+    //                 //         </div>
+    //                 //     </td>
+    //                 // </tr>
+    //             <tr>
+    //                 <td><label>{index+1}</label></td>
+    //                 <td>
+    //                     <div className="media align-items-center">
+    //                         <div className="media-body d-flex">
+    //                             <div>
+                                    
+    //                                 <p>{jp.Pelanggaran}</p>
+    //                                 <p>TMT : {jp.TMTBulan} Bulan</p>
+    //                                 <p>Level Pelanggaran : {jp.LabelSangsi}</p>
+                                    
+    //                             </div>
+    //                         </div>
+    //                     </div>
+    //                 </td>
+    //                 <td>
+    //                     <div className="media align-items-center">
+    //                         <div className="media-body d-flex">
+    //                             <div>
+    //                                 <p>{jp.Sangsi}</p>
+    //                                 <p>Keterangan : {jp.KeteranganSangsi}</p>
+    //                             </div>
+    //                         </div>
+    //                     </div>
+    //                 </td>
+    //                 <td>
+    //                     <div className="checkbox c-checkbox">
+    //                         <label>
+    //                             {/* <input type="checkbox" checked={this.state.listA[index].checked} onChange={e => this.handleChange('listA', index)}/> */}
+    //                             <input 
+    //                                     //name="cb"{jp.idPelanggaran}
+    //                                     type="checkbox"
+    //                                     // checked={
+    //                                     //     jp.checked=true
+    //                                     // } 
+    //                                     checked={this.state.tbljenisPelanggaran[jp.idPelanggaran].checked}
+    //                                     //{this.state.listA[0].checked}
+    //                                     onChange={
+    //                                         e => this.onHandleChange('tbljenisPelanggaran',jp.idPelanggaran)
+    //                                     }
+    //                             />
+    //                             <span className="fa fa-check"></span>
+    //                         </label>
+    //                     </div>
+    //                 </td>
+    //              </tr>
+    //         )
+    //         })
+    //     //}
+    //  }
+
+/*     handleApplyClick = () => {
+
+        const _noSangsi = document.getElementById('noSangsi').value
+        
+        const _hisJP=[];
+        //Get data for filter by checked
+        this.state.tbljenisPelanggaran.filter(
+            _jp => _jp.checked == true
+        ).map(selectedPelanggaran => (
+            _hisJP.push(selectedPelanggaran)
+        ));
+        
+
+        this.state.hisJenisPelanggaran.push(
+            {
+                "noSangsi":_noSangsi,
+                "pelanggaran":_hisJP
+            }
+        )
+
+        console.log("Result hisJenisPelanggaran : ", this.state.hisJenisPelanggaran)
+    } */
+
+    render() {
+
+        const { selectedOptionMulti } = this.state;
+
+        return (
+            <ContentWrapper unwrap>
+                <div className="bg-cover" style={{backgroundImage: 'url(/static/img/profile-bg.png)'}}>
+                    <div className="p-4 text-center" style={styleHeaderText} >
+                        <img className="img-thumbnail rounded-circle thumb128" src="/static/img/univ-avatar.png" alt="Avatar"/>
+                        <h3 className="m-0">{this.props.data.nama}</h3>
+                        <p>{this.props.data.website}</p>
+                        <p>{this.props.data.sk_pendirian}</p>
+                        <p>{this.props.data.alamat.jalan}</p>
+                    </div>
+                </div>
+                {/* <div className="text-center bg-gray-dark p-3 mb-4">
+                    <Row>
+                        <Col xs="4" className="br">
+                            <h3 className="m-0">400</h3>
+                            <p className="m-0">
+                                <span className="d-none d-md-inline">Profile</span>
+                                <span>Views</span>
+                            </p>
+                        </Col>
+                        <Col xs="4" className="br">
+                            <h3 className="m-0">2000</h3>
+                            <p className="m-0">Likes</p>
+                        </Col>
+                        <Col xs="4">
+                            <h3 className="m-0">100</h3>
+                            <p className="m-0">Following</p>
+                        </Col>
+                    </Row>
+                </div> */}
+                {/* START card */}
+                <div className="p-3">
+                    {/* <Card className="card-default">
+                        <CardHeader> */}
+                                            {/* START panel tab */}
+                {/* <div className="card card-transparent"> */}
+                    <Nav tabs justified>
+                        <NavItem>
+                            <NavLink className={ this.state.activeTab === 'tasks' ? 'active':'' }
+                                onClick={() => { this.toggleTab('tasks'); }}
+                            >
+                                <em className="far fa-clock fa-fw"></em> History Jenis Pelanggaran
+                            </NavLink>
+                        </NavItem>
+                        {/* <NavItem>
+                            <NavLink className={ this.state.activeTab === 'trans' ? 'active':'' }
+                                onClick={() => { this.toggleTab('trans'); }}
+                            >
+                                <em className="fas fa-info-circle"></em> Action Jenis Pelanggaran
+                            </NavLink>
+                        </NavItem> */}
+                        <NavItem>
+                            <NavLink className={ this.state.activeTab === 'wizard' ? 'active':'' }
+                                onClick={() => { this.toggleTab('wizard'); }}
+                            >
+                                <em className="fas fa-info-circle"></em> Action Jenis Pelanggaran
+                            </NavLink>
+                        </NavItem>
+                    </Nav>
+
+                    
+                    <TabContent activeTab={this.state.activeTab} className="bg-white p-0">
+                        <TabPane tabId="tasks">
+                            <div className="p-3">
+                                {/* START card */}
+                                <Card className="card-default">
+                                    <CardHeader>Daftar Pelanggaran</CardHeader>
+                                    {/* START table-responsive */}
+                                    <Table striped bordered hover responsive>
+                                        <thead>
+                                            <tr>
+                                                <th>ID Laporan</th>
+                                                <th>UUID Pelanggaran</th>
+                                                <th>Progres</th>
+                                                <th>Aktivitas Terakhir</th>
+                                                <th></th>
+                                            </tr>
+                                        </thead>
+                                        <tbody>
+                                            <tr>
+                                                <td>
+                                                    {/* <div className="ml-auto">ABCDEFGH012345</div> */}
+                                                    <div className="d-flex align-items-center mb-3">BI:54678</div>
+                                                </td>
+                                                <td>
+                                                    {/* <div className="ml-auto">ABCDEFGH012345</div> */}
+                                                    <div className="d-flex align-items-center mb-3">ABCDEFGH012345</div>
+                                                </td>
+                                                <td>
+                                                    <div className="progress progress-sm">
+                                                        <div className="progress-bar progress-bar-striped bg-success" role="progressbar" style={{width: '10%'}}>
+                                                            {/* <span className="sr-only">80% Complete</span> */}
+                                                            {/* <div className="radial-bar radial-bar-50 radial-bar-xs" data-label="50%"></div> */}
+                                                        </div>
+                                                    </div>
+                                                </td>
+                                                <td>
+                                                    <div className="d-flex align-items-center mb-3">05/05/2021</div>
+                                                    {/* <div className="ml-auto">05/05/2021</div> */}
+                                                </td>
+                                                <td>
+                                                    <div className="d-flex align-items-center mb-3">
+                                                        <Button color="info" size="sm" onClick={(e) => this.handleClick(e, pt.id)}>Lanjutkan</Button>
+                                                    </div>
+                                                </td>
+
+                                            </tr>
+                                           
+                                        </tbody>
+                                    </Table>
+                                    {/* END table-responsive */}
+                                </Card>
+                                {/* END card */}
+                                                            
+                            </div>
+                        </TabPane>
+                        
+                        <TabPane tabId="wizard" className="p-3">
+                            <FormWizardVertical />
+                        </TabPane>
+                    </TabContent>
+                {/* </div> */}
+                {/* END panel tab */}
+                    {/* </CardHeader>
+                </Card> */}
+                </div>
+                {/* START card */}
+                <div className="p-3">
+                    
+                </div>
+            </ContentWrapper>
+            );
+    }
+
+}
+
+export default Profile;
+

+ 737 - 0
pages/app/sanksi.proses.wizard.js

@@ -0,0 +1,737 @@
+import React, { Component } from 'react';
+import {
+    Card,
+    CardHeader,
+    CardFooter,
+    CardBody,
+    TabContent,
+    TabPane,
+    Nav,
+    NavItem,
+    NavLink,
+    Button,
+    Row,
+    Col,
+    Table,
+    CustomInput
+} from 'reactstrap';
+import classnames from 'classnames';
+
+const stepNavitemStyle = {
+    backgroundColor: '#fcfcfc'
+};
+
+class FormWizardVertical extends Component {
+    state = {
+        activeStep: '1',
+        hisJenisPelanggaran:[],
+        tbljenisPelanggaran:[
+            {
+                "idPelanggaran": 0,
+                "Pelanggaran":"Tidak Ada",
+                "Sangsi":"Tanpa Sangsi",
+                "KeteranganSangsi":"-",
+                "LevelSangsi":0,
+                "LabelSangsi":"Tidak ada",
+                "checked":false,
+                "TMTBulan":0
+            },
+            {
+                "idPelanggaran": 1,
+                "Pelanggaran":"Pemimpin perguruan tinggi tidak melindungi dan memfasilitasi pelaksanaan kebebasan akademik,kebebasan mimbar akademik, dan otonomi keilmuan di perguruan tinggi",
+                "Sangsi":"Peringatan Tertulis",
+                "KeteranganSangsi":"-",
+                "LevelSangsi":1,
+                "LabelSangsi":"Ringan",
+                "checked":false,
+                 "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 2,
+                "Pelanggaran":"Perguruan tinggi tidak memuat mata kuliah agama,Pancasila, kewarganegaraan, dan bahasa Indonesia dalam kurikulumnya",
+                "Sangsi":"Peringatan Tertulis",
+                "KeteranganSangsi":"-",
+                "LevelSangsi":1,
+                "LabelSangsi":"Ringan",
+                "checked":false,
+                 "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 3,
+                "Pelanggaran":"Perguruan tinggi tidak menggunakan bahasa Indonesia sebagai bahasa pengantar utama",
+                "Sangsi":"Peringatan Tertulis",
+                "KeteranganSangsi":"-",
+                "LevelSangsi":1,
+                "LabelSangsi":"Ringan",
+                "checked":false,
+                 "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 4,
+                "Pelanggaran":"Perguruan tinggi tidak menyebarluaskan hasil penelitian dengan cara diseminarkan, dipublikasikan, dan/atau dipatenkan, kecuali hasil penelitian yang bersifat rahasia, mengganggu, dan/atau membahayakan kepentingan umum",
+                "Sangsi":"Peringatan Tertulis",
+                "KeteranganSangsi":"",
+                "LevelSangsi":1,
+                "LabelSangsi":"Ringan",
+                "checked":false,
+                 "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 5,
+                "Pelanggaran":"PTN tidak menerima calon Mahasiswa yang telah memenuhi persyaratan akademik dan lolos seleksi penerimaan Mahasiswa secara nasional",
+                "Sangsi":"Peringatan Tertulis",
+                "KeteranganSangsi":"",
+                "LevelSangsi":1,
+                "LabelSangsi":"Ringan",
+                 "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 6,
+                "Pelanggaran":"PTN tidak mencari dan menjaring calon Mahasiswa yang memiliki potensi akademik tinggi, tetapi kurang mampu secara ekonomi dan calon Mahasiswa dari daerah terdepan, terluar, dan tertinggal untuk diterima paling sedikit 20% (dua puluh persen) dari seluruh Mahasiswa baru yang diterima dan tersebar pada semua Program Studi",
+                "Sangsi":"Peringatan Tertulis",
+                "KeteranganSangsi":"",
+                "LevelSangsi":1,
+                "LabelSangsi":"Ringan",
+                "checked":false,
+                 "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 7,
+                "Pelanggaran":"Perguruan tinggi tidak memenuhi hak Mahasiswa yang kurang mampu secara ekonomi untuk dapat menyelesaikan studinya sesuai dengan peraturan akademik",
+                "Sangsi":"Peringatan Tertulis",
+                "KeteranganSangsi":"",
+                "LevelSangsi":1,
+                "LabelSangsi":"Ringan",
+                "checked":false,
+                 "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 8,
+                "Pelanggaran":"Perguruan tinggi memberi gelar yang tidak menggunakan bahasa Indonesia",
+                "Sangsi":"Peringatan Tertulis",
+                "KeteranganSangsi":"",
+                "LevelSangsi":1,
+                "LabelSangsi":"Ringan",
+                "checked":false,
+                 "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 9,
+                "Pelanggaran":"Pemimpin perguruan tinggi tidak melindungi dan memfasilitasi pengelolaan di bidang non akademik",
+                "Sangsi":"Peringatan Tertulis",
+                "KeteranganSangsi":"",
+                "LevelSangsi":1,
+                "LabelSangsi":"Ringan",
+                "checked":false,
+                 "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 10,
+                "Pelanggaran":"Perguruan tinggi tidak mengumumkan ringkasan laporan tahunan kepada masyarakat",
+                "Sangsi":"Peringatan Tertulis",
+                "KeteranganSangsi":"",
+                "LevelSangsi":1,
+                "LabelSangsi":"Ringan",
+                "checked":false,
+                 "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 11,
+                "Pelanggaran":"Perguruan tinggi memiliki Dosen tetap kurang dari 5 (lima) orang untuk setiap Program Studi",
+                "Sangsi":"Peringatan Tertulis",
+                "KeteranganSangsi":"",
+                "LevelSangsi":1,
+                "LabelSangsi":"Ringan",
+                "checked":false,
+                 "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 12,
+                "Pelanggaran":"Perguruan tinggi tidak memenuh  nisbah Dosen dan Mahasiswa sesuai dengan ketentuan peraturan perundang-undangan",
+                "Sangsi":"Peringatan Tertulis",
+                "KeteranganSangsi":"",
+                "LevelSangsi":1,
+                "LabelSangsi":"Ringan",
+                "checked":false,
+                 "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 13,
+                "Pelanggaran":"Perguruan tinggi tidak melakukan pelaporan secara berkala ke pangkalan data Pendidikan Tinggi",
+                "Sangsi":"Peringatan Tertulis",
+                "KeteranganSangsi":"",
+                "LevelSangsi":1,
+                "LabelSangsi":"Ringan",
+                "checked":false,
+                 "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 14,
+                "Pelanggaran":"Program sarjana memiliki Dosen yang tidak berkualifikasi akademik minimum lulusan program magister atau sederajat",
+                "Sangsi":"Penghentian sementara bantuan biaya pendidikan dari pemerintahan pusat",
+                "KeteranganSangsi":"Berupa penundaan pemberian bantuan keuangan, hibah, dan/atau bentuk bantuan lain bagi perguruan tinggi",
+                "LevelSangsi":2,
+                "LabelSangsi":"Sedang",
+                "checked":false,
+                 "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 15,
+                "Pelanggaran":"Program magister memiliki Dosen yang tidak berkualifikasi akademik lulusan program doktor atau sederajat",
+                "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+                "KeteranganSangsi":"Penghentian sementara penerimaan Mahasiswa baru",
+                "LevelSangsi":2,
+                "LabelSangsi":"Sedang",
+                "checked":false,
+                 "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 16,
+                "Pelanggaran":"Program doktor memiliki Dosen yang tidak berkualifikasi akademik lulusan program doktor atau sederajat",
+                "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+                "KeteranganSangsi":"Penundaan proses usul pembukaan Program Studi baru",
+                "LevelSangsi":2,
+                "LabelSangsi":"Sedang",
+                "checked":false,
+                 "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 17,
+                "Pelanggaran":"Program diploma memiliki Dosen yang tidak berkualifikasi akademik minimum lulusan program magister atau sederajat",
+                "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+                "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+                "LevelSangsi":2,
+                "LabelSangsi":"Sedang",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 18,
+                "Pelanggaran":"Program magister terapan memiliki Dosen yang tidak berkualifikasi akademik lulusan program doktor atau sederajat",
+                "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+                "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+                "LevelSangsi":2,
+                "LabelSangsi":"Sedang",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 19,
+                "Pelanggaran":"Program doktor terapan memiliki Dosen yang tidak berkualifikasi akademik lulusan program doktor atau sederajat",
+                "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+                "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+                "LevelSangsi":2,
+                "LabelSangsi":"Sedang",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 20,
+                "Pelanggaran":"Program profesi memiliki Dosen yang tidak berkualifikasi akademik minimum lulusan profesi dan/atau lulusan program magister atau sederajat dengan pengalaman kerja paling singkat 2 (dua) tahun",
+                "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+                "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+                "LevelSangsi":2,
+                "LabelSangsi":"Sedang",
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 21,
+                "Pelanggaran":"Program spesialis memiliki Dosen yang tidak berkualifikasi akademik minimum lulusan program spesialis dan/atau lulusan program doktor atau sederajat dengan pengalaman kerja paling singkat 2 (dua) tahun",
+                "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+                "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+                "LevelSangsi":2,
+                "LabelSangsi":"Sedang",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 22,
+                "Pelanggaran":"Perguruan tinggi tidak mencabut gelar akademik, gelar vokasi, atau gelar profesi apabila karya ilmiah yang digunakan untuk memperoleh gelar akademik, gelar vokasi, atau gelar profesi terbukti merupakan hasil plagiat",
+                "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+                "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+                "LevelSangsi":2,
+                "LabelSangsi":"Sedang",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 23,
+                "Pelanggaran":"Perguruan tinggi tidak menyediakan, memfasilitasi, memiliki Sumber Belajar sesuai dengan Program Studi yang dikembangkan",
+                "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+                "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+                "LevelSangsi":2,
+                "LabelSangsi":"Sedang",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 24,
+                "Pelanggaran":"Perguruan tinggi tidak memiliki statuta",
+                "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+                "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+                "LevelSangsi":2,
+                "LabelSangsi":"Sedang",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 25,
+                "Pelanggaran":"Perguruan tinggi tidak memiliki panduan/prosedur peralihan dan perolehan satuan kredit semester serta rekognisi pembelajaran lampau",
+                "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+                "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+                "LevelSangsi":2,
+                "LabelSangsi":"Sedang",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 26,
+                "Pelanggaran":"Perguruan tinggi melaporkan data yang tidak valid ke PDDIKTI",
+                "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+                "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+                "LevelSangsi":2,
+                "LabelSangsi":"Sedang",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 27,
+                "Pelanggaran":"Perguruan tinggi yang menyelenggarakan kegiatan akademik yang tidak sesuai dengan seluruh Standar Nasional Pendidikan Tinggi",
+                "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+                "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+                "LevelSangsi":2,
+                "LabelSangsi":"Sedang",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 28,
+                "Pelanggaran":"Badan Penyelenggara tidak memberikan gaji pokok serta tunjangan kepada Dosen dan tenaga kependidikan sesuai dengan ketentuan peraturan perundang-undangan",
+                "Sangsi":"Penghentian sementara kegiatan penyelenggaraan pendidikan",
+                "KeteranganSangsi":"Penundaan pelaksanaan akreditasi",
+                "LevelSangsi":2,
+                "LabelSangsi":"Sedang",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 29,
+                "Pelanggaran":"Perguruan tinggi dan/atau Program Studi yang tidak terakreditasi mengeluarkan gelar akademik, gelar vokasi, dan/atau gelar profesi",
+                "Sangsi":"Penghentian pembinaan",
+                "KeteranganSangsi":"Penghentian bantuan keuangan, hibah, dan/atau bentuk bantuan lain yang diperuntukkan bagi perguruan tinggi",
+                "LevelSangsi":3,
+                "LabelSangsi":"Berat",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 30,
+                "Pelanggaran":"Perguruan tinggi dan/atau Program Studi memberikan ijazah, gelar akademik, gelar vokasi, dan/atau gelar profesi kepada orang yang tidak berhak",
+                "Sangsi":"Penghentian pembinaan",
+                "KeteranganSangsi":"Penghentian layanan Pemerintah Pusat bagi perguruan tinggi",
+                "LevelSangsi":3,
+                "LabelSangsi":"Berat",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 31,
+                "Pelanggaran":"Perguruan tinggi tidak mengusulkan akreditasi ulang Program Studi sebagaimana ditentukan dalam peraturan perundang-undangan",
+                "Sangsi":"Penghentian pembinaan",
+                "KeteranganSangsi":"Penghentian penerimaan Mahasiswa baru",
+                "LevelSangsi":3,
+                "LabelSangsi":"Berat",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 32,
+                "Pelanggaran":"Perguruan tinggi lembaga negara lain yang menyelenggarakan pendidikan di wilayah Negara Kesatuan Republik Indonesia yang tidak sesuai dengan ketentuan peraturan perundang-undangan",
+                "Sangsi":"Penghentian pembinaan",
+                "KeteranganSangsi":"Larangan melakukan wisuda",
+                "LevelSangsi":3,
+                "LabelSangsi":"Berat",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 33,
+                "Pelanggaran":"Perguruan tinggi melakukan penerimaan Mahasiswa baru dengan tujuan komersial",
+                "Sangsi":"Penghentian pembinaan",
+                "KeteranganSangsi":"Penghentian proses usul pembukaan Program Studi baru",
+                "LevelSangsi":3,
+                "LabelSangsi":"Berat",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 34,
+                "Pelanggaran":"Pengelolaan perguruan tinggi tidak berprinsip nirlaba",
+                "Sangsi":"Penghentian pembinaan",
+                "KeteranganSangsi":"Penarikan Dosen Pegawai Negeri Sipil yang dipekerjakan",
+                "LevelSangsi":3,
+                "LabelSangsi":"Berat",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 35,
+                "Pelanggaran":"Perguruan tinggi dan/atau Badan Penyelenggara melakukan perubahan nama perguruan tinggi, nama dan/atau bentuk Badan Penyelenggara, dan/atau lokasi Kampus Utama PTS tanpa izin dari Menteri",
+                "Sangsi":"Pencabutan izin Program Studi",
+                "KeteranganSangsi":"",
+                "LevelSangsi":3,
+                "LabelSangsi":"Berat",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 36,
+                "Pelanggaran":"Perguruan tinggi menyelenggarakan Program Studi tanpa izin dari Menteri",
+                "Sangsi":"Pembubaran PTN atau pencabutan izin PTS",
+                "KeteranganSangsi":"",
+                "LevelSangsi":3,
+                "LabelSangsi":"Berat",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 37,
+                "Pelanggaran":"Perguruan tinggi menyelenggarakan PJJ tanpa izin dari Menteri",
+                "Sangsi":"Pembubaran PTN atau pencabutan izin PTS",
+                "KeteranganSangsi":"",
+                "LevelSangsi":3,
+                "LabelSangsi":"Berat",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 38,
+                "Pelanggaran":"Perguruan tinggi dan/atau Program Studi tidak lagi memenuhi syarat pendirian perguruan tinggi dan/atau pembukaan Program Studi",
+                "Sangsi":"Pembubaran PTN atau pencabutan izin PTS",
+                "KeteranganSangsi":"",
+                "LevelSangsi":3,
+                "LabelSangsi":"Berat",
+                "checked":false,
+                "TMTBulan":6
+            },
+            {
+                "idPelanggaran": 39,
+                "Pelanggaran":"Terjadi sengketa",
+                "Sangsi":"Pembubaran PTN atau pencabutan izin PTS",
+                "KeteranganSangsi":"",
+                "LevelSangsi":3,
+                "LabelSangsi":"Berat",
+                "checked":false,
+                "TMTBulan":6
+            }
+        ]
+    };
+
+    toggleStep = activeStep => () => {
+        if (this.state.activeStep !== activeStep) {
+            this.setState({
+                activeStep
+            });
+        }
+    };
+
+    // handle particular changes on each checkbox
+    onHandleChange(listName,index) {
+    
+        //set state to checkbox and data in promise mode
+        this.setState({
+            [listName]: this.state[listName].map(
+                        (item, i) => (
+                            
+                                index !== i ? 
+                                item : {...item, checked: !this.state[listName][index].checked}
+                            ) 
+                    )
+        });
+
+
+
+    };
+
+    // done = () => {
+    //     alert('Custom message without form submission.');
+    // };
+
+    handleApplyClick = () => {
+
+        const _noSangsi = document.getElementById('noSangsi').value
+        
+        const _hisJP=[];
+        //Get data for filter by checked
+        this.state.tbljenisPelanggaran.filter(
+            _jp => _jp.checked == true
+        ).map(selectedPelanggaran => (
+            _hisJP.push(selectedPelanggaran)
+        ));
+        
+        this.state.hisJenisPelanggaran=[];
+        this.state.hisJenisPelanggaran.push(
+            {
+                "noSangsi":_noSangsi,
+                "pelanggaran":_hisJP
+            }
+        )
+
+        console.log("Result hisJenisPelanggaran : ", this.state.hisJenisPelanggaran)
+    }
+
+    renderTableData() {
+        
+            return this.state.tbljenisPelanggaran.map((jp,index) => {
+            
+                return (
+                    <tr>
+                        <td><label>{index+1}</label></td>
+                        <td>
+                            <div className="media align-items-center">
+                                <div className="media-body d-flex">
+                                    <div>
+                                        
+                                        <p>{jp.Pelanggaran}</p>
+                                        <p>TMT : {jp.TMTBulan} Bulan</p>
+                                        <p>Level Pelanggaran : {jp.LabelSangsi}</p>
+                                        
+                                    </div>
+                                </div>
+                            </div>
+                        </td>
+                        <td>
+                            <div className="media align-items-center">
+                                <div className="media-body d-flex">
+                                    <div>
+                                        <p>{jp.Sangsi}</p>
+                                        <p>Keterangan : {jp.KeteranganSangsi}</p>
+                                    </div>
+                                </div>
+                            </div>
+                        </td>
+                        <td>
+                            <div className="checkbox c-checkbox">
+                                <label>
+                                    {/* <input type="checkbox" checked={this.state.listA[index].checked} onChange={e => this.handleChange('listA', index)}/> */}
+                                    <input 
+                                            //name="cb"{jp.idPelanggaran}
+                                            type="checkbox"
+                                            // checked={
+                                            //     jp.checked=true
+                                            // } 
+                                            checked={this.state.tbljenisPelanggaran[jp.idPelanggaran].checked}
+                                            //{this.state.listA[0].checked}
+                                            onChange={
+                                                e => this.onHandleChange('tbljenisPelanggaran',jp.idPelanggaran)
+                                            }
+                                    />
+                                    <span className="fa fa-check"></span>
+                                </label>
+                            </div>
+                        </td>
+                    </tr>
+                )
+            })
+        //}
+     };
+
+    render() {
+        return (
+            <Card className="card-default">
+                {/* <CardHeader>Vertical Example (without validation)</CardHeader> */}
+                <CardBody>
+                    <Row>
+                        <Col xs="4">
+                            <Nav pills vertical={true}>
+                                <NavItem style={stepNavitemStyle}>
+                                    <NavLink
+                                        tag="div"
+                                        className={classnames({
+                                            active: this.state.activeStep === '1'
+                                        })}
+                                        onClick={this.toggleStep('1')}
+                                    >
+                                        <h4 className="text-left my-3">1. Penetapan Pelanggaran & Sanksi</h4>
+                                    </NavLink>
+                                </NavItem>
+                                <NavItem style={stepNavitemStyle}>
+                                    <NavLink
+                                        tag="div"
+                                        className={classnames({
+                                            active: this.state.activeStep === '2'
+                                        })}
+                                        onClick={this.toggleStep('2')}
+                                    >
+                                        <h4 className="text-left my-3">2. Penetapan Nomor Surat Keputusan Sanksi</h4>
+                                    </NavLink>
+                                </NavItem>
+                                <NavItem style={stepNavitemStyle}>
+                                    <NavLink
+                                        tag="div"
+                                        className={classnames({
+                                            active: this.state.activeStep === '3'
+                                        })}
+                                        onClick={this.toggleStep('3')}
+                                    >
+                                        <h4 className="text-left my-3">3. Tabel Log</h4>
+                                    </NavLink>
+                                </NavItem>
+                            </Nav>
+                        </Col>
+                        <Col xs="8">
+                            <TabContent activeTab={this.state.activeStep} className="border-0">
+
+                                <TabPane tabId="1">
+
+                                    <div className="d-flex">
+                                        {/*<Button color="secondary">Previous</Button>*/}
+                                        <Button
+                                            className="ml-auto"
+                                            color="primary"
+                                            onClick={this.toggleStep('2')}
+                                        >
+                                            Next
+                                        </Button>
+                                    </div>
+                                    <hr />
+                                    <div className="pt-3 mb-3">
+                                            <Card className="card-default">
+
+                                                {/* START table-responsive */}
+                                                <Table bordered hover responsive>
+                                                    <thead>
+                                                        <tr>
+                                                            <th>No</th>
+                                                            <th>Jenis Pelanggaran</th>
+                                                            <th>Sangsi</th>
+                                                            <th>
+                                                            </th>
+                                                        </tr>
+                                                    </thead>
+                                                    <tbody>
+                                                        {this.renderTableData()}
+                                                    </tbody>
+                                                </Table>
+                                                {/* END table-responsive */}
+                                                <CardFooter>
+                                                    <div className="d-flex">
+
+                                                        <div className="ml-auto">
+                                                            <div className="input-group float-right">
+                                                                <select className="custom-select" id="inputGroupSelect04">
+                                                                    <option value="0">Action</option>
+                                                                    <option value="1">Simpan</option>
+                                                                    {/* <option value="3">Export</option> */}
+                                                                </select>
+                                                                <div className="input-group-append">
+                                                                    <button className="btn btn-secondary" type="button" onClick={(e) => this.handleApplyClick()}>Apply</button>
+                                                                </div>
+                                                            </div>
+                                                        </div>
+                                                    </div>
+                                                </CardFooter>
+                                            </Card>
+                                        {/* <fieldset>
+                                            <h2>Step 2</h2>
+                                            <p className="lead">
+                                                Nunc pharetra, elit ut lobortis vehicula, nisl metus
+                                                tincidunt mauris, vitae accumsan arcu justo sit amet
+                                                odio.{' '}
+                                            </p>
+                                        </fieldset> */}
+                                    </div>
+                                </TabPane>
+                                <TabPane tabId="2">
+                                    <div className="d-flex">
+                                        <Button color="primary" onClick={this.toggleStep('1')}>
+                                            Previous
+                                        </Button>
+                                        <Button
+                                            className="ml-auto"
+                                            color="primary"
+                                            onClick={this.toggleStep('3')}
+                                        >
+                                            Next
+                                        </Button>
+                                    </div>
+                                    <hr />
+                                    <div className="pt-3 mb-3">
+
+
+                                        <div className="d-flex">
+                                            <CustomInput
+                                                type="file"
+                                                id="exampleCustomFileBrowser2"
+                                                name="customFile"
+                                                label="File Surat Sanksi"
+                                            />
+                                        </div>
+                                        <hr />
+                                        <div className="d-flex">
+                                            <div>
+                                                <div className="input-group">
+                                                    <input className="form-control" type="text" id='noSangsi' placeholder="Nomor Sanksi"/>
+                                                </div>
+                                            </div>
+                                            <div className="ml-auto">
+                                                <div className="input-group float-right">
+                                                    <select className="custom-select" id="inputGroupSelect04">
+                                                        <option value="0">Action</option>
+                                                        <option value="1">Simpan</option>
+                                                        {/* <option value="3">Export</option> */}
+                                                    </select>
+                                                    <div className="input-group-append">
+                                                        <button className="btn btn-secondary" type="button" onClick={(e) => this.handleApplyClick()}>Apply</button>
+                                                    </div>
+                                                </div>
+                                            </div>
+                                        </div>
+
+                                        {/* <fieldset>
+                                            <h2>Step 1</h2>
+                                            <p className="lead">
+                                                Nunc pharetra, elit ut lobortis vehicula, nisl metus
+                                                tincidunt mauris, vitae accumsan arcu justo sit amet
+                                                odio.{' '}
+                                            </p>
+                                        </fieldset> */}
+                                    </div>
+
+
+                                </TabPane>
+                                <TabPane tabId="3">
+                                    <div className="d-flex">
+                                        <Button color="primary" onClick={this.toggleStep('2')}>
+                                            Previous
+                                        </Button>
+                                        {/* <Button
+                                            className="ml-auto"
+                                            color="primary"
+                                            onClick={this.done}
+                                        >
+                                            Done
+                                        </Button> */}
+                                    </div>
+                                    <hr />
+                                    <div className="pt-3 mb-3">
+                                        {/* <fieldset>
+                                            <h2>Step 3</h2>
+                                            <p className="lead">
+                                                Nunc pharetra, elit ut lobortis vehicula, nisl metus
+                                                tincidunt mauris, vitae accumsan arcu justo sit amet
+                                                odio.{' '}
+                                            </p>
+                                        </fieldset> */}
+                                    </div>
+                                </TabPane>
+                            </TabContent>
+                        </Col>
+                    </Row>
+                </CardBody>
+            </Card>
+        );
+    }
+}
+
+export default FormWizardVertical;

+ 310 - 0
pages/app/search.js

@@ -0,0 +1,310 @@
+import React, { Component } from 'react';
+import Router from 'next/router'
+import ContentWrapper from '@/components/Layout/ContentWrapper';
+import { Row, Col, Button, Table, Pagination, PaginationItem, PaginationLink } from 'reactstrap';
+// React Slider
+import Slider from 'rc-slider';
+import 'rc-slider/assets/index.css';
+// React Select
+import Select from 'react-select';
+// DateTimePicker
+import Datetime from 'react-datetime';
+import 'react-datetime/css/react-datetime.css';
+
+
+import https from 'https';
+
+
+
+import CardTool from '@/components/Common/CardTool'
+
+
+
+var pembina = [];
+
+
+class Search extends Component {
+
+    
+
+    static async getInitialProps(ctx) {
+
+        pembina = [];
+        const httpsAgent = new https.Agent({
+            rejectUnauthorized: false,
+          });
+        
+         
+         const res = await fetch('https://api.kemdikbud.go.id:8243/pddikti/1.2/lembaga-non-sp', { 
+            method: 'get', 
+            headers: new Headers({
+              'Authorization': 'Bearer 5b62f743-eef2-3370-8c66-6951b2e9c2c5', 
+              'Accept': 'application/json'
+            }),
+            agent: httpsAgent
+          }
+         )
+
+         
+        const jsonPembina = await res.json();
+        //jsonPembina = JSON.parse(jsonPembina);
+        // id: "ABEAE958-4F20-40EF-B145-B8014EC98D8F",nama: "Badan Intelijen Negara",singkatan: "BIN"
+        // { value: 'australian-capital-territory', label: 'Australian Capital Territory', className: 'State-ACT' },
+
+
+
+        var numrows = jsonPembina.length;
+
+        for (var i = 0; i < numrows; i++) {
+            pembina.push({value:jsonPembina[i].id, label:jsonPembina[i].nama, className: 'State-'+jsonPembina[i].singkatan});
+        }
+
+        console.log('pembina : ', pembina);
+
+        
+        //return { data: json }
+      }
+
+    state = {
+        selectedOptionMulti: [],
+        data: []
+    }
+
+
+    handleChangeSelectMulti = (selectedOptionMulti) => {
+        this.setState({ selectedOptionMulti });
+    }
+
+    renderInputGroup = props => {
+        return (
+            <div className="input-group date">
+                <input className="form-control" {...props} />
+                <span className="input-group-append input-group-addon">
+                    <span className="input-group-text fas fa-calendar-alt"></span>
+                </span>
+            </div>
+        )
+    }
+
+    
+    
+
+
+    handleClick = (e, PT_ID) => {
+        //router = useRouter();
+        const query = { ptId: PT_ID };
+        //    '/app/profile'
+        e.preventDefault();
+        Router.push(
+            {
+                pathname: '/app/profile-pt',
+                query: { ptId: PT_ID }
+            }
+        );
+    }
+
+    fetchData = async () => {
+        var qPembina = "";
+        console.log('this.state.selectedOptionMulti.value : ', this.state.selectedOptionMulti.value);
+        if (this.state.selectedOptionMulti.value !== undefined ){
+            qPembina = '&pembina='+this.state.selectedOptionMulti.value;
+        }
+
+        //console.log('qpembina : ', qPembina);
+        const searchValue = 'q='+document.getElementById('searchInput').value;
+
+        const httpsAgent = new https.Agent({
+            rejectUnauthorized: false,
+          });
+        
+          //console.log('post agent : ');
+
+
+         //const res = await fetch('https://api.kemdikbud.go.id:8243/pddikti/1.2/pt/707C3895-B546-4DA5-A6A7-EFE7461A7C7E', { 
+         const res = await fetch('https://api.kemdikbud.go.id:8243/pddikti/1.2/pt?'+searchValue+qPembina, { 
+            method: 'get', 
+            headers: new Headers({
+              'Authorization': 'Bearer 5b62f743-eef2-3370-8c66-6951b2e9c2c5', 
+              'Accept': 'application/json'
+            }),
+            agent: httpsAgent
+          }
+         )
+         
+        const jsonData = await res.json();
+        
+        this.setState({ data: jsonData });
+        //console.log('jsonData : ', jsonData);
+        //Get unique for filter by pembina
+        // const uniquePembina = [
+        //     new Set(jsonData.map(
+        //         item => item.pembina.nama
+        //     ))
+        // ]
+
+
+    };
+
+
+    handleApplyClick = () => {
+        console.log('selectedOptionMulti : ',this.state.selectedOptionMulti);
+        //const dataTables = this.fetchData().jsonData;
+        this.fetchData();
+        //console.log('this.state.data :', this.state.data);
+        if (this.state.data.length > 0){
+            this.renderTableData();
+        }
+    }
+
+    handleSearchClick = () => {
+
+        //const dataTables = this.fetchData().jsonData;
+        this.fetchData();
+        //console.log('this.state.data :', this.state.data);
+        if (this.state.data.length > 0){
+            this.renderTableData();
+        }
+    }
+
+    renderTableData() {
+        //const dataTable = this.props.data;
+        //if (dataTable === true ) {
+
+
+            return this.state.data.map((pt,index) => {
+            return (
+                    <tr>
+                        <td>
+                            <label>{index+1}</label>
+                        </td>
+                        <td>
+                            <div className="media align-items-center">
+                                <a className="mr-3" href="">
+                                    <img className="img-fluid rounded thumb64" src="/static/img/dummy-search.png" alt="Dummy"/>
+                                </a>
+                                <div className="media-body d-flex">
+                                    <div>
+                                        <h4 className="m-0">{pt.nama}</h4>
+                                        <small className="text-muted">{pt.sk_pendirian} - {pt.website} - {pt.email}</small>
+                                        <p>{pt.alamat.jalan}</p>
+                                    </div>
+                                    <div className="ml-auto">
+                                        <Button color="info" size="sm" onClick={(e) => this.handleClick(e, pt.id)}>View</Button>
+                                    </div>
+                                </div>
+                            </div>
+                        </td>
+                    </tr>
+            )
+            })
+        //}
+     }
+
+    render() {
+        // used for react select
+        const { selectedOptionMulti } = this.state;
+
+        
+
+        return (
+            <ContentWrapper>
+                <div className="content-heading">
+                    <div>Search
+                        <small>Search and filter results</small>
+                    </div>
+                </div>
+                <Row>
+                    <Col lg="9">
+                        <div className="form-group mb-4">
+                            <input className="form-control mb-2" type="text" id='searchInput' placeholder="Pencarian Nama Perguruan Tinggi"/>
+                            <div className="d-flex">
+                                <button className="btn btn-secondary" type="button" onClick={(e) => this.handleSearchClick()}>Search</button>
+                                <div className="ml-auto">
+                                    {/* <label className="c-checkbox">
+                                        <input id="inlineCheckbox10" type="checkbox" defaultValue="option1"/>
+                                        <span className="fa fa-check"></span>Nama Perguruan Tinggi</label> */}
+                                    {/* <label className="c-checkbox">
+                                        <input id="inlineCheckbox20" type="checkbox" defaultValue="option2"/>
+                                        <span className="fa fa-check"></span>Pembina</label> */}
+                                    {/* <label className="c-checkbox">
+                                        <input id="inlineCheckbox30" type="checkbox" defaultValue="option3"/>
+                                        <span className="fa fa-check"></span>Apps</label> */}
+                                </div>
+                            </div>
+                        </div>
+                        {/* START card */}
+                        <div className="card card-default">
+                            <div className="card-header">
+                                {/* <CardTool refresh onRefresh={(_,done) => setTimeout(done,2000)}/> */}
+                                Search Results
+                            </div>
+                            {/* START table-responsive */}
+                            <Table striped bordered hover>
+                                <thead>
+                                    <tr>
+                                        {/* <th data-check-all="" className="wd-xxs">
+                                            <div className="checkbox c-checkbox">
+                                                <label className="m-0">
+                                                    <input type="checkbox"/>
+                                                    <span className="fa fa-check"></span>
+                                                </label>
+                                            </div>
+                                        </th> */}
+                                        <th>No. </th>
+                                        <th>Description</th>
+                                    </tr>
+                                </thead>
+                                <tbody>
+                                    {this.renderTableData()}
+
+                                </tbody>
+                            </Table>
+                            {/* END table-responsive */}
+                            <div className="card-footer">
+                                <div className="d-flex">
+                                    {/* <button className="btn btn-sm btn-secondary">Clear</button> */}
+                                    {/* <nav className="ml-auto">
+                                        <Pagination size="sm">
+                                            <PaginationItem active>
+                                                <PaginationLink>1</PaginationLink>
+                                            </PaginationItem>
+                                            <PaginationItem>
+                                                <PaginationLink>2</PaginationLink>
+                                            </PaginationItem>
+                                            <PaginationItem>
+                                                <PaginationLink>3</PaginationLink>
+                                            </PaginationItem>
+                                            <PaginationItem>
+                                                <PaginationLink next>»</PaginationLink>
+                                            </PaginationItem>
+                                        </Pagination>
+                                    </nav> */}
+                                </div>
+                            </div>
+                        </div>
+                        {/* END card */}
+                    </Col>
+                    <Col lg="3">
+                        <h3 className="m-0 pb-3">Filters</h3>
+                        <div className="form-group mb-4">
+                            <label className="col-form-label mb-2">by Pembina</label>
+                            <br/>
+                            <Select
+                                name="multi-select-name"
+                                multi
+                                simpleValue
+                                value={selectedOptionMulti}
+                                onChange={this.handleChangeSelectMulti}
+                                options={pembina}
+                            />
+                        </div>
+                        <Button color="secondary" size="lg" onClick={(e) => this.handleApplyClick()}>Apply</Button>
+                    </Col>
+                </Row>
+            </ContentWrapper>
+            );
+    }
+
+}
+
+export default Search;

+ 186 - 0
pages/app/timeline.dikti.bak

@@ -0,0 +1,186 @@
+                <div className="p-3">
+                    <Row>
+                        <Col xl="9">
+                            <ul className="timeline">
+                                <li className="timeline-separator" data-datetime="Today"></li>
+                                <li className="timeline-inverted">
+                                    <div className="timeline-badge info">
+                                        <em className="far fa-file"></em>
+                                    </div>
+                                    <div className="timeline-card">
+                                        <div className="popover right">
+                                            <div className="arrow"></div>
+                                            <div className="popover-body">
+                                                <div className="d-flex align-items-center mb-3">
+                                                    <img className="mr-3 rounded-circle thumb48" src="/static/img/user/admin.png" alt="Avatar"/>
+                                                    <p className="m-0">
+                                                        {/* <a className="text-muted" href=""> */}
+                                                            <strong>Admin</strong>
+                                                        {/* </a> */}
+                                                        <br/>Upload Bukti Perbaikan 
+                                                        {/* <em className="fa fa-paperclip"></em> */}
+                                                        <Dropdown isOpen={this.state.dropdownOpenUpload} toggle={this.toggleDDUpload}>
+                                                            {/* <em className="fa fa-graduation-cap fa-fw mr-3"></em>Status */}
+                                                                {/* <p className="m-0"><br/> Upload Bukti Perbaikan </p> */}
+                                                                <DropdownToggle caret color="link">
+                                                                    <em className="fa fa-paperclip"></em>
+                                                                </DropdownToggle>
+                                                                <DropdownMenu className="animated fadeInUpShort">
+                                                                    <DropdownItem>
+                                                                        <em className="fa fa-lock mr-2"></em>Upload
+                                                                    </DropdownItem>
+                                                                </DropdownMenu>
+                                                            </Dropdown>
+                                                        </p> 
+                                                        {/* <li> */}
+
+
+                                                        {/* </li> */}
+                                                </div>
+                                                {/* <a href="">
+                                                    <img className="img-fluid img-thumbnail" src="/static/img/mockup.png" alt="Img"/>
+                                                </a> */}
+                                                <p className="text-muted my-2">3 Logs</p>
+                                                <div className="media bb p-2">
+                                                    <img className="mr-2 rounded-circle thumb32" src="/static/img/user/user.png" alt="Avatar"/>
+                                                    <div className="media-body">
+                                                        <p className="m-0">
+                                                            <a href="">
+                                                                <strong>Universitas Username</strong>
+                                                            </a>
+                                                        </p>
+                                                        <div className="text-sm text-muted">Uploaded Document File BBB.pdf</div>
+                                                    </div>
+                                                    <small className="ml-auto text-muted">12m ago</small>
+                                                </div>
+                                                <div className="media bb p-2">
+                                                    <img className="mr-2 rounded-circle thumb32" src="/static/img/user/user.png" alt="Avatar"/>
+                                                    <div className="media-body">
+                                                        <p className="m-0">
+                                                            <a href="">
+                                                                <strong>Universitas Username</strong>
+                                                            </a>
+                                                        </p>
+                                                        <div className="text-sm text-muted">Uploaded Document File CCC.pdf</div>
+                                                    </div>
+                                                    <small className="ml-auto text-muted">30m ago</small>
+                                                </div>
+                                                <div className="media bb p-2">
+                                                    <img className="mr-2 rounded-circle thumb32" src="/static/img/user/user.png" alt="Avatar"/>
+                                                    <div className="media-body">
+                                                        <p className="m-0">
+                                                            <a href="">
+                                                                <strong>Universitas Username</strong>
+                                                            </a>
+                                                        </p>
+                                                        <div className="text-sm text-muted">Uploaded Document File AAA.pdf</div>
+                                                    </div>
+                                                    <small className="ml-auto text-muted">30m ago</small>
+                                                </div>
+                                                {/* <form className="mt-2" method="post" action="#">
+                                                    <textarea className="form-control no-resize" placeholder="Comment..." rows="1"></textarea>
+                                                </form> */}
+                                            </div>
+                                        </div>
+                                    </div>
+                                </li>
+                                <li>
+                                    <div className="timeline-badge danger">
+                                        <em className="fas fa-ticket-alt"></em>
+                                    </div>
+                                    <div className="timeline-card">
+                                        <div className="popover left">
+                                            <div className="arrow"></div>
+                                            <div className="popover-body">
+                                                <div className="d-flex align-items-center mb-3">
+                                                    <img className="mr-3 rounded-circle thumb48" src="/static/img/user/admin.png" alt="Avatar"/>
+                                                    <p className="m-0">
+                                                        {/* <a className="text-muted" href=""> */}
+                                                            <strong>Admin</strong>
+                                                        {/* </a> */}
+                                                        <br/>opened project
+                                                        <a className="ml-2" href="">#548795</a>
+                                                    </p>
+                                                </div>
+                                                <p>
+                                                    <em>&mdash; Project description sample</em>
+                                                </p>
+                                            </div>
+                                        </div>
+                                    </div>
+                                </li>
+                                <li className="timeline-end">
+                                    <a className="timeline-badge">
+                                        <em className="fa fa-plus"></em>
+                                    </a>
+                                </li>
+                            </ul>
+                        </Col>
+                        <Col xl="3">
+                            <div className="card card-default">
+                                <div className="card-body">
+                                    <div className="text-center">
+                                        <h3 className="mt-0">{this.props.data.nama}</h3>
+                                        <p>{this.props.data.sk_pendirian}</p>
+                                    </div>
+                                    <hr/>
+                                    <ul className="list-unstyled px-4">
+                                        <li>
+                                            <em className="fa fa-globe fa-fw mr-3"></em>{this.props.data.website}
+                                        </li>
+                                        <li>
+                                            <em className="fa fa-graduation-cap fa-fw mr-3"></em>Status Pelanggaran : Tidak Ada
+                                        </li>
+                                        {/* <li>
+                                            <Dropdown isOpen={this.state.dropdownOpen} toggle={this.toggleDD}>
+                                            <em className="fa fa-graduation-cap fa-fw mr-3"></em>Status
+                                            
+                                                <DropdownToggle caret color="link">
+                                                </DropdownToggle>
+                                                <DropdownMenu className="animated fadeInUpShort">
+                                                    <DropdownItem>
+                                                        <em className="fa fa-lock mr-2"></em>Status Sample 1
+                                                    </DropdownItem>
+                                                    <DropdownItem>
+                                                        <em className="fa fa-lock-open mr-2"></em>Status Sample 2
+                                                    </DropdownItem>
+                                                    <DropdownItem>
+                                                        <em className="fa fa-low-vision mr-2"></em>Status Sample 3
+                                                    </DropdownItem>
+                                                </DropdownMenu>
+                                            </Dropdown>
+                                        </li> */}
+                                        {/* <li>
+                                            <em className="fa fa-graduation-cap fa-fw mr-3"></em>
+                                            <div class="dropdown">
+                                                <button type="button" aria-haspopup="true" aria-expanded="false" class="btn btn-secondary">Status
+                                                </button>
+                                                <div tabindex="-1" role="menu" aria-hidden="true" class="animated bounceInDown dropdown-menu"><button type="button" tabindex="0" class="dropdown-item">Action</button><button type="button" tabindex="0" class="dropdown-item">Another action</button><button type="button" tabindex="0" class="dropdown-item active">Active Item</button><div tabindex="-1" class="dropdown-divider"></div><button type="button" tabindex="0" class="dropdown-item">Separated link</button></div>
+                                            </div>
+                                        </li> */}
+                                       {/* <li> */}
+                                        {/* <em className="fa fa-graduation-cap fa-fw mr-3"></em> */}
+                                                {/* <Dropdown isOpen={this.state.dropdownOpen} toggle={this.toggleDD}>
+                                                <DropdownToggle caret color="link">
+                                                    <em className="fa fa-paperclip">Status</em>
+                                                </DropdownToggle>
+                                                <DropdownMenu className="animated fadeInUpShort">
+                                                    <DropdownItem>
+                                                        <em className="fa fa-download mr-2"></em>Download
+                                                    </DropdownItem>
+                                                    <DropdownItem>
+                                                        <em className="fa fa-share mr-2"></em>Send to
+                                                    </DropdownItem>
+                                                    <DropdownItem>
+                                                        <em className="fa fa-times mr-2"></em>Delete
+                                                    </DropdownItem>
+                                                </DropdownMenu>
+                                            </Dropdown> */}
+                                        {/* </li> */}
+                                    </ul>
+                                </div>
+                            </div>
+                            
+                        </Col>
+                    </Row>
+                </div>

+ 194 - 0
pages/app/timeline.js

@@ -0,0 +1,194 @@
+import React, { Component } from 'react';
+import ContentWrapper from '@/components/Layout/ContentWrapper';
+import { Dropdown, DropdownToggle, DropdownMenu, DropdownItem } from 'reactstrap';
+
+class Timeline extends Component {
+
+    state = {
+        dropdownOpen: false,
+        timelineAlt: false
+    }
+
+    toggleDD = () => this.setState({
+        dropdownOpen: !this.state.dropdownOpen
+    })
+
+    toggleTimeline = e => {
+        this.setState({
+            timelineAlt: e.target.checked
+        })
+    }
+
+    render() {
+        return (
+            <ContentWrapper>
+                <div className="content-heading">
+                    Timeline
+                    <div className="ml-auto">
+                        <div className="d-flex align-items-center">
+                            <small className="mr-2">Alternative</small>
+                            <label className="switch m-0">
+                                <input type="checkbox" defaultChecked={this.state.timelineAlt} onChange={this.toggleTimeline} />
+                                <span></span>
+                            </label>
+                        </div>
+                    </div>
+                </div>
+                {/* START timeline */}
+                <ul className={this.state.timelineAlt ? "timeline-alt" : "timeline"}>
+                    <li className="timeline-separator" data-datetime="Now"></li>
+                    {/* START timeline item */}
+                    <li>
+                        <div className="timeline-badge primary">
+                            <em className="fa fa-users"></em>
+                        </div>
+                        <div className="timeline-card">
+                            <div className="popover left">
+                                <h4 className="popover-header">Client Meeting</h4>
+                                <div className="arrow"></div>
+                                <div className="popover-body">
+                                    <p>Av 123 St - Floor 2
+                                        <br/>
+                                        <small>Pellentesque ut diam velit, eget porttitor risus. Nullam posuere euismod volutpat.</small>
+                                    </p>
+                                </div>
+                            </div>
+                        </div>
+                    </li>
+                    {/* END timeline item */}
+                    {/* START timeline item */}
+                    <li className="timeline-inverted">
+                        <div className="timeline-badge warning">
+                            <em className="fa fa-phone"></em>
+                        </div>
+                        <div className="timeline-card">
+                            <div className="popover right">
+                                <h4 className="popover-header">Call</h4>
+                                <div className="arrow"></div>
+                                <div className="popover-body">
+                                    <p>Michael
+                                        <a href="tel:+011654524578">(+011) 6545 24578 ext. 132</a>
+                                        <br/>
+                                        <small>Pellentesque ut diam velit, eget porttitor risus. Nullam posuere euismod volutpat.</small>
+                                    </p>
+                                </div>
+                            </div>
+                        </div>
+                    </li>
+                    {/* END timeline item */}
+                    {/* START timeline separator */}
+                    <li className="timeline-separator" data-datetime="Yesterday"></li>
+                    {/* END timeline separator */}
+                    {/* START timeline item */}
+                    <li>
+                        <div className="timeline-badge danger">
+                            <em className="fas fa-video"></em>
+                        </div>
+                        <div className="timeline-card">
+                            <div className="popover left">
+                                <h4 className="popover-header">Conference</h4>
+                                <div className="arrow"></div>
+                                <div className="popover-body">
+                                    <p>Join development group</p>
+                                    <small>
+                                        <a href="skype:echo123?call">
+                                            <em className="fa fa-phone mr-2"></em>Call the Skype Echo</a>
+                                    </small>
+                                </div>
+                            </div>
+                        </div>
+                    </li>
+                    {/* END timeline item */}
+                    {/* START timeline item */}
+                    <li className="timeline-inverted">
+                        <div className="timeline-card">
+                            <div className="popover right">
+                                <h4 className="popover-header">Appointment</h4>
+                                <div className="arrow"></div>
+                                <div className="popover-body">
+                                    <p>Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam.</p>
+                                    <Dropdown isOpen={this.state.dropdownOpen} toggle={this.toggleDD}>
+                                        <DropdownToggle caret color="link">
+                                            <em className="fa fa-paperclip"></em>
+                                        </DropdownToggle>
+                                        <DropdownMenu className="animated fadeInUpShort">
+                                            <DropdownItem>
+                                                <em className="fa fa-download mr-2"></em>Download
+                                            </DropdownItem>
+                                            <DropdownItem>
+                                                <em className="fa fa-share mr-2"></em>Send to
+                                            </DropdownItem>
+                                            <DropdownItem>
+                                                <em className="fa fa-times mr-2"></em>Delete
+                                            </DropdownItem>
+                                        </DropdownMenu>
+                                    </Dropdown>
+                                </div>
+                            </div>
+                        </div>
+                    </li>
+                    {/* END timeline item */}
+                    {/* START timeline item */}
+                    <li>
+                        <div className="timeline-badge info">
+                            <em className="fa fa-plane"></em>
+                        </div>
+                        <div className="timeline-card">
+                            <div className="popover left">
+                                <h4 className="popover-header">Fly</h4>
+                                <div className="arrow"></div>
+                                <div className="popover-body">
+                                    <p>Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.</p>
+                                </div>
+                            </div>
+                        </div>
+                    </li>
+                    {/* END timeline item */}
+                    {/* START timeline item */}
+                    <li>
+                        <div className="timeline-card">
+                            <div className="popover left">
+                                <h4 className="popover-header">Appointment</h4>
+                                <div className="arrow"></div>
+                                <div className="popover-body">
+                                    <p>Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.</p>
+                                </div>
+                            </div>
+                        </div>
+                    </li>
+                    {/* END timeline item */}
+                    {/* START timeline separator */}
+                    <li className="timeline-separator" data-datetime="2014-05-21"></li>
+                    {/* END timeline separator */}
+                    {/* START timeline item */}
+                    <li className="timeline-inverted">
+                        <div className="timeline-badge success">
+                            <em className="fa fa-music"></em>
+                        </div>
+                        <div className="timeline-card">
+                            <div className="popover right">
+                                <h4 className="popover-header">Relax</h4>
+                                <div className="arrow"></div>
+                                <div className="popover-body">
+                                    <p>Listen some music</p>
+                                </div>
+                            </div>
+                        </div>
+                    </li>
+                    {/* END timeline item */}
+                    {/* START timeline item */}
+                    <li className="timeline-end">
+                        <a className="timeline-badge" href="#more">
+                            <em className="fa fa-plus"></em>
+                        </a>
+                    </li>
+                    {/* END timeline item */}
+                </ul>
+                {/* END timeline */}
+            </ContentWrapper>
+            );
+    }
+
+}
+
+export default Timeline;

+ 450 - 0
pages/app/userlist.js

@@ -0,0 +1,450 @@
+import React, { Component } from 'react';
+import ContentWrapper from '@/components/Layout/ContentWrapper';
+import { Row, Col, Card, CardHeader, CardFooter, Table, Pagination, PaginationItem, PaginationLink } from 'reactstrap';
+
+import Sparkline from '@/components/Common/Sparklines.js';
+
+class TableExtended extends Component {
+
+    state = {
+        listA: [{checked: false}, {checked: false}, {checked: false}],
+        listB: [{checked: false}, {checked: false}, {checked: false}]
+    }
+
+    // handle global when click on header checkbox
+    handleCheckList(listName, checkStat) {
+        this.setState({
+            [listName]: this.state[listName].map(item => ({...item, checked: checkStat}))
+        });
+    }
+    handleCheckListA = e => this.handleCheckList('listA', e.target.checked)
+    handleCheckListB = e => this.handleCheckList('listB', e.target.checked)
+
+    // handle particular changes on each checkbox
+    handleChange = (listName, index) => {
+        this.setState({
+            [listName]: this.state[listName].map((item, i) => (index !== i ? item : {...item, checked: !this.state[listName][index].checked} ) )
+        });
+    }
+
+    render() {
+        return (
+            <ContentWrapper>
+                <div className="content-heading">
+                    <div>Tables
+                        <small>A showcase of different components inside tables</small>
+                    </div>
+                </div>
+                {/* START card */}
+                <Card className="card-default">
+                    <CardHeader>Demo Table #1</CardHeader>
+                    {/* START table-responsive */}
+                    <Table bordered hover responsive>
+                        <thead>
+                            <tr>
+                                <th>UID</th>
+                                <th>Picture</th>
+                                <th>Username</th>
+                                <th>First Name</th>
+                                <th>Last Name</th>
+                                <th>Email</th>
+                                <th>Profile</th>
+                                <th>Last Login</th>
+                                <th data-check-all>
+                                    <div className="checkbox c-checkbox">
+                                        <label>
+                                            <input type="checkbox" onChange={this.handleCheckListA}/>
+                                            <span className="fa fa-check"></span>
+                                        </label>
+                                    </div>
+                                </th>
+                            </tr>
+                        </thead>
+                        <tbody>
+                            <tr>
+                                <td>1</td>
+                                <td>
+                                    <div className="media">
+                                        <img className="img-fluid circle" src="/static/img/user/01.jpg" alt="Avater"/>
+                                    </div>
+                                </td>
+                                <td>@twitter</td>
+                                <td>Larry</td>
+                                <td>the Bird</td>
+                                <td>mail@example.com</td>
+                                <td className="text-center">
+                                    <div className="radial-bar radial-bar-25 radial-bar-xs" data-label="25%"></div>
+                                </td>
+                                <td>1 week</td>
+                                <td>
+                                    <div className="checkbox c-checkbox">
+                                        <label>
+                                            <input type="checkbox" checked={this.state.listA[0].checked} onChange={e => this.handleChange('listA', 0)}/>
+                                            <span className="fa fa-check"></span>
+                                        </label>
+                                    </div>
+                                </td>
+                            </tr>
+                            <tr>
+                                <td>2</td>
+                                <td>
+                                    <div className="media">
+                                        <img className="img-fluid circle" src="/static/img/user/02.jpg" alt="Avater"/>
+                                    </div>
+                                </td>
+                                <td>@mdo</td>
+                                <td>Mark</td>
+                                <td>Otto</td>
+                                <td>mail@example.com</td>
+                                <td className="text-center">
+                                    <div className="radial-bar radial-bar-50 radial-bar-xs" data-label="50%"></div>
+                                </td>
+                                <td>25 minutes</td>
+                                <td>
+                                    <div className="checkbox c-checkbox">
+                                        <label>
+                                            <input type="checkbox" checked={this.state.listA[1].checked} onChange={e => this.handleChange('listA', 1)}/>
+                                            <span className="fa fa-check"></span>
+                                        </label>
+                                    </div>
+                                </td>
+                            </tr>
+                            <tr>
+                                <td>3</td>
+                                <td>
+                                    <div className="media">
+                                        <img className="img-fluid circle" src="/static/img/user/03.jpg" alt="Avater"/>
+                                    </div>
+                                </td>
+                                <td>@fat</td>
+                                <td>Jacob</td>
+                                <td>Thornton</td>
+                                <td>mail@example.com</td>
+                                <td className="text-center">
+                                    <div className="radial-bar radial-bar-80 radial-bar-xs" data-label="80%"></div>
+                                </td>
+                                <td>10 hours</td>
+                                <td>
+                                    <div className="checkbox c-checkbox">
+                                        <label>
+                                            <input type="checkbox" checked={this.state.listA[2].checked} onChange={e => this.handleChange('listA', 2)}/>
+                                            <span className="fa fa-check"></span>
+                                        </label>
+                                    </div>
+                                </td>
+                            </tr>
+                        </tbody>
+                    </Table>
+                    {/* END table-responsive */}
+                    <CardFooter>
+                        <div className="d-flex">
+                            <div>
+                                <div className="input-group">
+                                    <input className="form-control" type="text" placeholder="Search"/>
+                                    <div className="input-group-append">
+                                        <button className="btn btn-secondary" type="Search">Button</button>
+                                    </div>
+                                </div>
+                            </div>
+                            <div className="ml-auto">
+                                <div className="input-group float-right">
+                                    <select className="custom-select" id="inputGroupSelect04">
+                                        <option value="0">Bulk action</option>
+                                        <option value="1">Delete</option>
+                                        <option value="2">Clone</option>
+                                        <option value="3">Export</option>
+                                    </select>
+                                    <div className="input-group-append">
+                                        <button className="btn btn-secondary" type="button">Apply</button>
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+                    </CardFooter>
+                </Card>
+                {/* START card */}
+                <Card className="card-default">
+                    <CardHeader>Demo Table #2</CardHeader>
+                    {/* START table-responsive */}
+                    <Table striped bordered hover responsive>
+                        <thead>
+                            <tr>
+                                <th data-check-all>
+                                    <div className="checkbox c-checkbox">
+                                        <label>
+                                            <input type="checkbox" onChange={this.handleCheckListB}/>
+                                            <span className="fa fa-check"></span>
+                                        </label>
+                                    </div>
+                                </th>
+                                <th>Description</th>
+                                <th>Active</th>
+                            </tr>
+                        </thead>
+                        <tbody>
+                            <tr>
+                                <td>
+                                    <div className="checkbox c-checkbox">
+                                        <label>
+                                            <input type="checkbox" checked={this.state.listB[0].checked} onChange={e => this.handleChange('listB', 0)}/>
+                                            <span className="fa fa-check"></span>
+                                        </label>
+                                    </div>
+                                </td>
+                                <td>
+                                    <div className="media">
+                                        <a className="float-left" href="">
+                                            <img className="img-fluid circle" src="/static/img/user/01.jpg" alt="Avatar"/>
+                                        </a>
+                                        <div className="media-body">
+                                            <div className="float-right badge badge-info">admin</div>
+                                            <h4>Holly Wallace</h4>
+                                            <p>Username: holly123</p>Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.</div>
+                                    </div>
+                                </td>
+                                <td className="text-center">
+                                    <label className="switch">
+                                        <input type="checkbox"/>
+                                        <span></span>
+                                    </label>
+                                </td>
+                            </tr>
+                            <tr>
+                                <td>
+                                    <div className="checkbox c-checkbox">
+                                        <label>
+                                            <input type="checkbox" checked={this.state.listB[1].checked} onChange={e => this.handleChange('listB', 1)}/>
+                                            <span className="fa fa-check"></span>
+                                        </label>
+                                    </div>
+                                </td>
+                                <td>
+                                    <div className="media">
+                                        <a className="float-left" href="">
+                                            <img className="img-fluid circle" src="/static/img/user/03.jpg" alt="Avatar"/>
+                                        </a>
+                                        <div className="media-body">
+                                            <div className="float-right badge badge-info">writer</div>
+                                            <h4>Alexis Foster</h4>
+                                            <p>Username: ali89</p>Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.</div>
+                                    </div>
+                                </td>
+                                <td className="text-center">
+                                    <label className="switch">
+                                        <input type="checkbox" defaultChecked/>
+                                        <span></span>
+                                    </label>
+                                </td>
+                            </tr>
+                            <tr>
+                                <td>
+                                    <div className="checkbox c-checkbox">
+                                        <label>
+                                            <input type="checkbox" checked={this.state.listB[2].checked} onChange={e => this.handleChange('listB', 2)}/>
+                                            <span className="fa fa-check"></span>
+                                        </label>
+                                    </div>
+                                </td>
+                                <td>
+                                    <div className="media">
+                                        <a className="float-left" href="">
+                                            <img className="img-fluid circle" src="/static/img/user/05.jpg" alt="Avatar"/>
+                                        </a>
+                                        <div className="media-body">
+                                            <div className="float-right badge badge-info">editor</div>
+                                            <h4>Mario Miles</h4>
+                                            <p>Username: mariomiles</p>Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.</div>
+                                    </div>
+                                </td>
+                                <td className="text-center">
+                                    <label className="switch">
+                                        <input type="checkbox" defaultChecked/>
+                                        <span></span>
+                                    </label>
+                                </td>
+                            </tr>
+                        </tbody>
+                    </Table>
+                    {/* END table-responsive */}
+                    <CardFooter>
+                        <div className="d-flex align-items-center">
+                            <div>
+                                <div className="input-group">
+                                    <select className="custom-select" id="inputGroupSelect04">
+                                        <option value="0">Bulk action</option>
+                                        <option value="1">Delete</option>
+                                        <option value="2">Clone</option>
+                                        <option value="3">Export</option>
+                                    </select>
+                                    <div className="input-group-append">
+                                        <button className="btn btn-secondary" type="button">Apply</button>
+                                    </div>
+                                </div>
+                            </div>
+                            <div className="ml-auto">
+                                <Pagination className="pagination-sm">
+                                    <PaginationItem>
+                                      <PaginationLink previous href="" />
+                                    </PaginationItem>
+                                    <PaginationItem>
+                                      <PaginationLink href="">
+                                        1
+                                      </PaginationLink>
+                                    </PaginationItem>
+                                    <PaginationItem>
+                                      <PaginationLink href="">
+                                        2
+                                      </PaginationLink>
+                                    </PaginationItem>
+                                    <PaginationItem>
+                                      <PaginationLink href="">
+                                        3
+                                      </PaginationLink>
+                                    </PaginationItem>
+                                    <PaginationItem>
+                                      <PaginationLink next href="" />
+                                    </PaginationItem>
+                                </Pagination>
+                            </div>
+                        </div>
+                    </CardFooter>
+                </Card>
+                {/* END card */}
+                {/* START row */}
+                <Row>
+                    <Col xl="6">
+                        {/* START card */}
+                        <Card className="card-default">
+                            <CardHeader>Demo Tabl</CardHeader>
+                            {/* START table-responsive */}
+                            <Table striped bordered hover responsive>
+                                <thead>
+                                    <tr>
+                                        <th>Task name</th>
+                                        <th>Progress</th>
+                                        <th>Deadline</th>
+                                    </tr>
+                                </thead>
+                                <tbody>
+                                    <tr>
+                                        <td>Nunc luctus, quam non condimentum ornare</td>
+                                        <td>
+                                            <div className="progress progress-xs">
+                                                <div className="progress-bar progress-bar-striped bg-success" role="progressbar" style={{width: '80%'}}>
+                                                    <span className="sr-only">80% Complete</span>
+                                                </div>
+                                            </div>
+                                        </td>
+                                        <td>05/05/2014</td>
+                                    </tr>
+                                    <tr>
+                                        <td>Integer in convallis felis.</td>
+                                        <td>
+                                            <div className="progress progress-xs">
+                                                <div className="progress-bar progress-bar-striped bg-danger" role="progressbar" style={{width: '20%'}}>
+                                                    <span className="sr-only">20% Complete</span>
+                                                </div>
+                                            </div>
+                                        </td>
+                                        <td>15/05/2014</td>
+                                    </tr>
+                                    <tr>
+                                        <td>Nullam sit amet magna vestibulum libero dapibus iaculis.</td>
+                                        <td>
+                                            <div className="progress progress-xs">
+                                                <div className="progress-bar progress-bar-striped bg-info" role="progressbar" style={{width: '50%'}}>
+                                                    <span className="sr-only">50% Complete</span>
+                                                </div>
+                                            </div>
+                                        </td>
+                                        <td>05/10/2014</td>
+                                    </tr>
+                                </tbody>
+                            </Table>
+                            {/* END table-responsive */}
+                        </Card>
+                        {/* END card */}
+                    </Col>
+                    <Col xl="6">
+                        {/* START card */}
+                        <Card className="card-default">
+                            <CardHeader>Demo Table #4</CardHeader>
+                            {/* START table-responsive */}
+                            <Table striped bordered hover responsive>
+                                <thead>
+                                    <tr>
+                                        <th>Project</th>
+                                        <th>Activity</th>
+                                        <th>Completion</th>
+                                    </tr>
+                                </thead>
+                                <tbody>
+                                    <tr>
+                                        <td>Bootstrap 5.x</td>
+                                        <td>
+                                            <Sparkline options={{
+                                                barColor:"#5d9cec",
+                                                height:20,
+                                                barWidth:5,
+                                                barSpacing:2,
+                                                resize:true
+                                                }}
+                                                values={[1,4,4,7,5,9,10]}
+
+                                            />
+                                        </td>
+                                        <td>
+                                            <div className="badge badge-danger">Canceled</div>
+                                        </td>
+                                    </tr>
+                                    <tr>
+                                        <td>Web Engine</td>
+                                        <td>
+                                            <Sparkline options={{
+                                                barColor:"#7266ba",
+                                                height:20,
+                                                barWidth:5,
+                                                barSpacing:2,
+                                                resize:true
+                                                }}
+                                                values={[1,4,4,10,5,9,2]}
+
+                                            />
+                                        </td>
+                                        <td>
+                                            <div className="badge badge-success">Complete</div>
+                                        </td>
+                                    </tr>
+                                    <tr>
+                                        <td>Nullam sit amet</td>
+                                        <td>
+                                            <Sparkline options={{
+                                                barColor:"#23b7e5",
+                                                height:20,
+                                                barWidth:5,
+                                                barSpacing:2,
+                                                resize:true
+                                                }}
+                                                values={[1,4,4,7,5,9,4]}
+
+                                            />
+                                        </td>
+                                        <td>
+                                            <div className="badge badge-warning">Delayed</div>
+                                        </td>
+                                    </tr>
+                                </tbody>
+                            </Table>
+                            {/* END table-responsive */}
+                        </Card>
+                        {/* END card */}
+                    </Col>
+                </Row>
+                {/* END row */}
+            </ContentWrapper>
+            );
+    }
+
+}
+
+export default TableExtended;

+ 21 - 0
pages/index.js

@@ -0,0 +1,21 @@
+import React from 'react';
+import Router from 'next/router';
+
+//const defaultPage = 'login';
+//const defaultPage = 'app/profile';
+const defaultPage = 'app/search';
+//const defaultPage = 'singleview';
+
+export default class extends React.Component {
+    static async getInitialProps({ res }) {
+        if (res) {
+            res.writeHead(302, {
+                Location: defaultPage
+            });
+            res.end();
+        } else {
+            Router.push(defaultPage);
+        }
+        return {};
+    }
+}

+ 207 - 0
pages/login.js

@@ -0,0 +1,207 @@
+// import React, { Component,useState } from 'react';
+import React, { Component} from 'react';
+import BasePage from '@/components/Layout/BasePage';
+import Link from 'next/link';
+import { Input, CustomInput } from 'reactstrap';
+import * as actions from '../store/actions/actions';
+
+import FormValidator from '@/components/Forms/Validator.js';
+import { dispatch } from 'd3';
+import Router, { withRouter } from 'next/router'
+
+// import useUser from '../lib/useUser';
+// import fetchJson from '../lib/fetchJson';
+
+const year = new Date().getFullYear()
+
+
+class Login extends Component {
+
+    // mutateUser = useUser({
+    //     redirectTo: '/profile-sg',
+    //     redirectIfFound: true,
+    // })
+
+    // [errorMsg, setErrorMsg] = useState('')
+
+
+    state = {
+        formLogin: {
+            uname: '',
+            password: ''
+        }
+    }
+
+     /**
+      * Validate input using onChange event
+      * @param  {String} formName The name of the form in the state object
+      * @return {Function} a function used for the event
+      */
+    validateOnChange = event => {
+        const input = event.target;
+        const form = input.form
+        const value = input.type === 'checkbox' ? input.checked : input.value;
+
+        const result = FormValidator.validate(input);
+
+        this.setState({
+            [form.name]: {
+                ...this.state[form.name],
+                [input.name]: value,
+                errors: {
+                    ...this.state[form.name].errors,
+                    [input.name]: result
+                }
+            }
+        });
+
+    }
+
+    onSubmit(e)  {
+        const form = e.target;
+        const inputs = [...form.elements].filter(i => ['INPUT', 'SELECT'].includes(i.nodeName))
+
+        const { errors, hasError } = FormValidator.bulkValidate(inputs)
+
+        this.setState({
+            [form.name]: {
+                ...this.state[form.name],
+                errors
+            }
+        });
+
+        console.log(hasError ? 'Form has errors. Check!' : 'Form Submitted!');
+
+
+        e.preventDefault();
+
+        if (!hasError) {
+            //this.props.logged('signin')
+            //Router.push('/singleview');
+
+            // const body = {
+            //     username: this.state.formLogin.uname,
+            //     password: this.state.formLogin.password
+            //   }
+
+            // try {
+            //     mutateUser(
+            //         await fetchJson('/api/login', {
+            //         method: 'POST',
+            //         headers: { 'Content-Type': 'application/json' },
+            //         body: JSON.stringify(body),
+            //         })
+            //     )
+
+
+            // } catch (error) {
+            // console.error('An unexpected error happened:', error)
+            // setErrorMsg(error.data.message)
+            // }
+            
+            //main route
+            Router.push('/app/projects');
+        };
+
+    }
+
+    /* Simplify error check */
+    hasError = (formName, inputName, method) => {
+        return  this.state[formName] &&
+                this.state[formName].errors &&
+                this.state[formName].errors[inputName] &&
+                this.state[formName].errors[inputName][method]
+    }
+
+    render() {
+        return (
+            <div className="block-center mt-4 wd-xl">
+                <div className="card card-flat">
+                    {/* <div className="card-header text-center bg-white">
+                        <a href="">
+                            <img className="block-center " src="/static/img/logo.png" alt="Logo"/>
+                        </a>
+                    </div> */}
+                    <img class="card-img-top" src="/static/img/logo.png" alt="Logo"></img>
+                    <div className="card-body">
+                        <h5 class="card-title text-center py-2 bg-gray">Aplikasi Perguruan Tinggi Bermasalah </h5>
+                        {/* <p className="text-center py-2">Aplikasi Perguruan Tinggi Bermasalah </p> */}
+                        <form className="mb-3" name="formLogin" onSubmit={this.onSubmit}>
+                            <div className="form-group">
+                                <div className="input-group with-focus">
+                                    {/* <Input type="email"
+                                        name="email"
+                                        className="border-right-0"
+                                        placeholder="Enter username"
+                                        invalid={this.hasError('formLogin','email','required')||this.hasError('formLogin','email','email')}
+                                        onChange={this.validateOnChange}
+                                        data-validate='["required", "email"]'
+                                        value={this.state.formLogin.email}/> */}
+
+                                    <Input placeholder="Enter User Name"
+                                    name="uname"
+                                    className="border-right-0"
+                                    invalid={this.hasError('formLogin','uname','required')}
+                                    onChange={this.validateOnChange}
+                                    data-validate='["required"]'
+                                    value={this.state.formLogin.uname}
+                                     />
+                                    <div className="input-group-append">
+                                        <span className="input-group-text text-muted bg-transparent border-left-0">
+                                            <em className="fa fa-user"></em>
+                                        </span>
+                                    </div>
+                                    { this.hasError('formLogin','uname','required') && <span className="invalid-feedback">Field is required</span> }
+                                    {/* { this.hasError('formLogin','email','email') && <span className="invalid-feedback">Field must be valid email</span> } */}
+                                </div>
+                            </div>
+                            <div className="form-group">
+                                <div className="input-group with-focus">
+                                    <Input type="password"
+                                        id="id-password"
+                                        name="password"
+                                        className="border-right-0"
+                                        placeholder="Password"
+                                        invalid={this.hasError('formLogin','password','required')}
+                                        onChange={this.validateOnChange}
+                                        data-validate='["required"]'
+                                        value={this.state.formLogin.password}
+                                    />
+                                    <div className="input-group-append">
+                                        <span className="input-group-text text-muted bg-transparent border-left-0">
+                                            <em className="fa fa-lock"></em>
+                                        </span>
+                                    </div>
+                                    <span className="invalid-feedback">Field is required</span>
+                                </div>
+                            </div>
+                            {/* <div className="clearfix">
+                                <CustomInput type="checkbox" id="rememberme"
+                                    className="float-left mt-0"
+                                    name="remember"
+                                    label="Remember Me">
+                                </CustomInput>
+                                <div className="float-right">
+                                    <Link href="/pages/recover" as="/recover"><a className="text-muted"> </a></Link>
+                                </div>
+                            </div> */}
+                            <button className="btn btn-block btn-primary mt-3" type="submit">Login</button>
+                        </form>
+                    </div>
+                </div>
+                <div className="p-3 text-center">
+                    {/* <span className="mr-2">&copy;</span> */}
+                    <span>&copy; {year} - Dikti</span>
+                    {/* <span className="mx-2">-</span>
+                    <span>Dikti</span> */}
+                    <br/>
+                    <span> </span>
+                </div>
+            </div>
+        );
+    }
+}
+
+Login.Layout = BasePage;
+
+export default Login;

+ 48 - 0
pages/pages/error500.js

@@ -0,0 +1,48 @@
+import React from 'react';
+import BasePage from '@/components/Layout/BasePage';
+import Link from 'next/link';
+
+const Error500 = props => (
+    <div className="abs-center wd-xl">
+        <div className="text-center mb-4">
+            <div className="mb-3">
+                <em className="fa fa-wrench fa-5x text-muted" />
+            </div>
+            <div className="text-lg mb-3">500</div>
+            <p className="lead m-0">Oh! Something went wrong :(</p>
+            <p>Don't worry, we're now checking this.</p>
+            <p>In the meantime, please try one of those links below or come back in a moment</p>
+        </div>
+        <ul className="list-inline text-center text-sm mb-4">
+            <li className="list-inline-item">
+                <Link href="/dashboard/dashboardv1">
+                    <a className="text-muted">Go to App</a>
+                </Link>
+            </li>
+            <li className="text-muted list-inline-item">|</li>
+            <li className="list-inline-item">
+                <Link href="/pages/login" as="/login">
+                    <a className="text-muted">Login</a>
+                </Link>
+            </li>
+            <li className="text-muted list-inline-item">|</li>
+            <li className="list-inline-item">
+                <Link href="/pages/register" as="/register">
+                    <a className="text-muted">Register</a>
+                </Link>
+            </li>
+        </ul>
+        <div className="p-3 text-center">
+            <span className="mr-2">&copy;</span>
+            <span>2020</span>
+            <span className="mx-2">-</span>
+            <span>Angle</span>
+            <br />
+            <span>Bootstrap Admin Template</span>
+        </div>
+    </div>
+);
+
+Error500.Layout = BasePage;
+
+export default Error500;

+ 57 - 0
pages/pages/lock.js

@@ -0,0 +1,57 @@
+import React, { Component } from 'react';
+import BasePage from '@/components/Layout/BasePage';
+import Link from 'next/link';
+
+class Lock extends Component {
+
+    render() {
+        return (
+            <div className="abs-center wd-xl">
+                <div className="d-flex justify-content-center">
+                    <div className="p-2">
+                        <img className="img-fluid img-thumbnail rounded-circle" src="/static/img/user/02.jpg" alt="Avatar" width="60" height="60"/>
+                    </div>
+                </div>
+                <div className="card b0">
+                    <div className="card-body">
+                        <p className="text-center">Please login to unlock your screen.</p>
+                        <form>
+                            <div className="form-group">
+                                <div className="input-group with-focus">
+                                    <input className="form-control border-right-0" id="exampleInputEmail1" type="email" placeholder="Enter email" autoComplete="off" required/>
+                                    <div className="input-group-append">
+                                        <span className="input-group-text text-muted bg-transparent border-left-0">
+                                            <em className="fa fa-lock"></em>
+                                        </span>
+                                    </div>
+                                </div>
+                            </div>
+                            <div className="d-flex">
+                                <div className="mt-1">
+                                    <Link href="/pages/recover" as="/recover">
+                                        <small className="text-muted">Forgot your password?</small>
+                                    </Link>
+                                </div>
+                                <div className="ml-auto">
+                                    <Link href="/dashboard/dashboardv1"><button className="btn btn-sm btn-primary">Unlock</button></Link>
+                                </div>
+                            </div>
+                        </form>
+                    </div>
+                </div>
+                <div className="p-3 text-center">
+                    <span className="mr-2">&copy;</span>
+                    <span>2020</span>
+                    <span className="mx-2">-</span>
+                    <span>Angle</span>
+                    <br/>
+                    <span>Bootstrap Admin Template</span>
+                </div>
+            </div>
+        );
+    }
+}
+
+Lock.Layout = BasePage
+
+export default Lock;

+ 22 - 0
pages/pages/maintenance.js

@@ -0,0 +1,22 @@
+import React from 'react';
+import BasePage from '@/components/Layout/BasePage';
+
+const Maintenance = props => (
+    <div className="abs-center">
+        <div className="text-center my-3">
+            <h1 className="mb-3">
+                <sup>
+                    <em className="fa fa-cog fa-2x text-muted fa-spin text-info"></em>
+                </sup>
+                <em className="fa fa-cog fa-5x text-muted fa-spin text-purple"></em>
+                <em className="fa fa-cog fa-lg text-muted fa-spin text-success"></em>
+            </h1>
+            <div className="text-bold text-lg mb-3">SITE IS UNDER MAINTENANCE</div>
+            <p className="lead m-0">We'll back online shortly!</p>
+        </div>
+    </div>
+)
+
+Maintenance.Layout = BasePage
+
+export default Maintenance;

+ 52 - 0
pages/pages/notfound.js

@@ -0,0 +1,52 @@
+import React from 'react';
+import BasePage from '@/components/Layout/BasePage';
+import Link from 'next/link';
+
+const NotFound = props => (
+    <div className="abs-center wd-xl">
+        <div className="text-center mb-4">
+            <div className="text-lg mb-3">404</div>
+            <p className="lead m-0">We couldn't find this page.</p>
+            <p>The page you are looking for does not exists.</p>
+        </div>
+        <div className="input-group mb-4">
+            <input className="form-control" type="text" placeholder="Try with a search" />
+            <span className="input-group-btn">
+                <button className="btn btn-secondary" type="button">
+                    <em className="fa fa-search" />
+                </button>
+            </span>
+        </div>
+        <ul className="list-inline text-center text-sm mb-4">
+            <li className="list-inline-item">
+                <Link href="/dashboard/dashboardv1">
+                    <a className="text-muted">Go to App</a>
+                </Link>
+            </li>
+            <li className="text-muted list-inline-item">|</li>
+            <li className="list-inline-item">
+                <Link href="/pages/login" as="/login">
+                    <a className="text-muted">Login</a>
+                </Link>
+            </li>
+            <li className="text-muted list-inline-item">|</li>
+            <li className="list-inline-item">
+                <Link href="/pages/register" as="/register">
+                    <a className="text-muted">Register</a>
+                </Link>
+            </li>
+        </ul>
+        <div className="p-3 text-center">
+            <span className="mr-2">&copy;</span>
+            <span>2020</span>
+            <span className="mx-2">-</span>
+            <span>Angle</span>
+            <br />
+            <span>Bootstrap Admin Template</span>
+        </div>
+    </div>
+);
+
+NotFound.Layout = BasePage;
+
+export default NotFound;

+ 51 - 0
pages/pages/recover.js

@@ -0,0 +1,51 @@
+import React, { Component } from 'react';
+import BasePage from '@/components/Layout/BasePage';
+
+class Recover extends Component {
+
+    render() {
+        return (
+            <div className="block-center mt-4 wd-xl">
+                {/* START card */}
+                <div className="card card-flat">
+                    <div className="card-header text-center bg-dark">
+                        <a href="">
+                            <img className="block-center rounded" src="/static/img/logo.png" alt="Logo"/>
+                        </a>
+                    </div>
+                    <div className="card-body">
+                        <p className="text-center py-2">PASSWORD RESET</p>
+                        <form>
+                            <p className="text-center">Fill with your mail to receive instructions on how to reset your password.</p>
+                            <div className="form-group">
+                                <label className="text-muted" htmlFor="resetInputEmail1">Email address</label>
+                                <div className="input-group with-focus">
+                                    <input className="form-control border-right-0" id="resetInputEmail1" type="email" placeholder="Enter email" autoComplete="off"/>
+                                    <div className="input-group-append">
+                                        <span className="input-group-text text-muted bg-transparent border-left-0">
+                                            <em className="fa fa-envelope"></em>
+                                        </span>
+                                    </div>
+                                </div>
+                            </div>
+                            <button className="btn btn-danger btn-block" type="button">Reset</button>
+                        </form>
+                    </div>
+                </div>
+                {/* END card */}
+                <div className="p-3 text-center">
+                    <span className="mr-2">&copy;</span>
+                    <span>2020</span>
+                    <span className="mx-2">-</span>
+                    <span>Angle</span>
+                    <br/>
+                    <span>Bootstrap Admin Template</span>
+                </div>
+            </div>
+        );
+    }
+}
+
+Recover.Layout = BasePage;
+
+export default Recover;

+ 175 - 0
pages/pages/register.js

@@ -0,0 +1,175 @@
+import React, { Component } from 'react';
+import BasePage from '@/components/Layout/BasePage';
+import Link from 'next/link';
+import { Input, CustomInput } from 'reactstrap';
+
+import FormValidator from '@/components/Forms/Validator.js';
+
+class Register extends Component {
+
+    state = {
+        formRegister: {
+            email: '',
+            password: '',
+            password2: '',
+            terms: false
+        }
+    }
+
+     /**
+      * Validate input using onChange event
+      * @param  {String} formName The name of the form in the state object
+      * @return {Function} a function used for the event
+      */
+    validateOnChange = event => {
+        const input = event.target;
+        const form = input.form
+        const value = input.type === 'checkbox' ? input.checked : input.value;
+
+        const result = FormValidator.validate(input);
+
+        this.setState({
+            [form.name]: {
+                ...this.state[form.name],
+                [input.name]: value,
+                errors: {
+                    ...this.state[form.name].errors,
+                    [input.name]: result
+                }
+            }
+        });
+
+    }
+
+    onSubmit = e => {
+        const form = e.target;
+        const inputs = [...form.elements].filter(i => ['INPUT', 'SELECT'].includes(i.nodeName))
+
+        const { errors, hasError } = FormValidator.bulkValidate(inputs)
+
+        this.setState({
+            [form.name]: {
+                ...this.state[form.name],
+                errors
+            }
+        });
+
+        console.log(hasError ? 'Form has errors. Check!' : 'Form Submitted!')
+
+        e.preventDefault()
+    }
+
+    /* Simplify error check */
+    hasError = (formName, inputName, method) => {
+        return  this.state[formName] &&
+                this.state[formName].errors &&
+                this.state[formName].errors[inputName] &&
+                this.state[formName].errors[inputName][method]
+    }
+
+    render() {
+        return (
+            <div className="block-center mt-4 wd-xl">
+                {/* START card */}
+                <div className="card card-flat">
+                    <div className="card-header text-center bg-dark">
+                        <a href="">
+                            <img className="block-center" src="/static/img/logo.png" alt="Logo"/>
+                        </a>
+                    </div>
+                    <div className="card-body">
+                        <p className="text-center py-2">SIGNUP TO GET INSTANT ACCESS.</p>
+                        <form className="mb-3" name="formRegister" onSubmit={this.onSubmit}>
+                            <div className="form-group">
+                                <label className="text-muted" htmlFor="signupInputEmail1">Email address</label>
+                                <div className="input-group with-focus">
+                                    <Input type="email"
+                                        name="email"
+                                        className="border-right-0"
+                                        placeholder="Enter email"
+                                        invalid={this.hasError('formRegister','email','required')||this.hasError('formRegister','email','email')}
+                                        onChange={this.validateOnChange}
+                                        data-validate='["required", "email"]'
+                                        value={this.state.formRegister.email}/>
+                                    <div className="input-group-append">
+                                        <span className="input-group-text text-muted bg-transparent border-left-0">
+                                            <em className="fa fa-envelope"></em>
+                                        </span>
+                                    </div>
+                                    { this.hasError('formRegister','email','required') && <span className="invalid-feedback">Field is required</span> }
+                                    { this.hasError('formRegister','email','email') && <span className="invalid-feedback">Field must be valid email</span> }
+                                </div>
+                            </div>
+                            <div className="form-group">
+                                <label className="text-muted" htmlFor="signupInputPassword1">Password</label>
+                                <div className="input-group with-focus">
+                                    <Input type="text"
+                                        id="id-password"
+                                        name="password"
+                                        className="border-right-0"
+                                        placeholder="Password"
+                                        invalid={this.hasError('formRegister','password','required')}
+                                        onChange={this.validateOnChange}
+                                        data-validate='["required"]'
+                                        value={this.state.formRegister.password}
+                                    />
+                                    <div className="input-group-append">
+                                        <span className="input-group-text text-muted bg-transparent border-left-0">
+                                            <em className="fa fa-lock"></em>
+                                        </span>
+                                    </div>
+                                    <span className="invalid-feedback">Field is required</span>
+                                </div>
+                            </div>
+                            <div className="form-group">
+                                <label className="text-muted" htmlFor="signupInputRePassword1">Retype Password</label>
+                                <div className="input-group with-focus">
+                                    <Input type="text" name="password2"
+                                        className="border-right-0"
+                                        placeholder="Retype assword"
+                                        invalid={this.hasError('formRegister','password2','equalto')}
+                                        onChange={this.validateOnChange}
+                                        data-validate='["equalto"]'
+                                        value={this.state.formRegister.password2}
+                                        data-param="id-password"
+                                    />
+                                    <div className="input-group-append">
+                                        <span className="input-group-text text-muted bg-transparent border-left-0">
+                                            <em className="fa fa-lock"></em>
+                                        </span>
+                                    </div>
+                                    <span className="invalid-feedback">Field must be equal to previous</span>
+                                </div>
+                            </div>
+                            <CustomInput type="checkbox" id="terms"
+                                name="terms"
+                                label="I agree with the terms"
+                                invalid={this.hasError('formRegister','terms','required')}
+                                onChange={this.validateOnChange}
+                                data-validate='["required"]'
+                                checked={this.state.formRegister.terms}>
+                                    <span className="invalid-feedback">Field is required</span>
+                                </CustomInput>
+                            <button className="btn btn-block btn-primary mt-3" type="submit">Create account</button>
+                        </form>
+                        <p className="pt-3 text-center">Have an account?</p>
+                        <Link href="/pages/login" as="/login"><button type="button" className="btn btn-block btn-secondary">Signup</button></Link>
+                    </div>
+                </div>
+                {/* END card */}
+                <div className="p-3 text-center">
+                    <span className="mr-2">&copy;</span>
+                    <span>2020</span>
+                    <span className="mx-2">-</span>
+                    <span>Angle</span>
+                    <br/>
+                    <span>Bootstrap Admin Template</span>
+                </div>
+            </div>
+        );
+    }
+}
+
+Register.Layout = BasePage
+
+export default Register;

+ 58 - 0
pages/singleview.js

@@ -0,0 +1,58 @@
+import React from 'react';
+import { Trans } from '@/components/Common/Translate';
+import ContentWrapper from '@/components/Layout/ContentWrapper';
+import { Row, Col, Dropdown, DropdownToggle, DropdownMenu, DropdownItem } from 'reactstrap';
+
+class SingleView extends React.Component {
+
+    state = {
+      dropdownOpen: false
+    }
+
+    changeLanguage = lng => {
+        this.props.changeLanguage(lng);
+    }
+
+    toggle = () => {
+        this.setState({
+            dropdownOpen: !this.state.dropdownOpen
+        });
+    }
+
+    render() {
+        return (
+            <ContentWrapper>
+                <div className="content-heading">
+                   <div>Single View
+                      <small><Trans i18nKey='dashboard.WELCOME'></Trans></small>
+                   </div>
+                    { /* START Language list */ }
+                    <div className="ml-auto">
+                        <Dropdown isOpen={this.state.dropdownOpen} toggle={this.toggle}>
+                            <DropdownToggle>
+                                English
+                            </DropdownToggle>
+                            <DropdownMenu className="dropdown-menu-right-forced animated fadeInUpShort">
+                                <DropdownItem onClick={() => this.changeLanguage('en')}>English</DropdownItem>
+                                <DropdownItem onClick={() => this.changeLanguage('es')}>Spanish</DropdownItem>
+                            </DropdownMenu>
+                        </Dropdown>
+                    </div>
+                    { /* END Language list */ }
+                </div>
+                <Row>
+                    <Col xs={12} className="text-center">
+                        <h2 className="text-thin">Single view content</h2>
+                        <p>
+                            This project is an application skeleton. You can use it to quickly bootstrap your ReactJS webapp projects and dev environment for these projects.
+                            <br/>
+                            The seed app doesn't do much and has most of the feature removed so you can add theme as per your needs just following the demo app examples.
+                        </p>
+                    </Col>
+                </Row>
+            </ContentWrapper>
+        );
+    }
+}
+
+export default SingleView;

+ 27 - 0
pelanggaran-object-post.json

@@ -0,0 +1,27 @@
+[
+    {
+        "noSangsi": "",
+        "pelanggaran": [
+            {
+                "idPelanggaran": 37,
+                "Pelanggaran": "Perguruan tinggi menyelenggarakan PJJ tanpa izin dari Menteri",
+                "Sangsi": "Pembubaran PTN atau pencabutan izin PTS",
+                "KeteranganSangsi": "",
+                "LevelSangsi": 3,
+                "LabelSangsi": "Berat",
+                "checked": true,
+                "TMTBulan": 6
+            },
+            {
+                "idPelanggaran": 38,
+                "Pelanggaran": "Perguruan tinggi dan/atau Program Studi tidak lagi memenuhi syarat pendirian perguruan tinggi dan/atau pembukaan Program Studi",
+                "Sangsi": "Pembubaran PTN atau pencabutan izin PTS",
+                "KeteranganSangsi": "",
+                "LevelSangsi": 3,
+                "LabelSangsi": "Berat",
+                "checked": true,
+                "TMTBulan": 6
+            }
+        ]
+    }
+]

+ 29 - 0
polyfills.js

@@ -0,0 +1,29 @@
+import 'core-js/es6/string';
+import 'core-js/es6/array';
+import 'core-js/es6/map';
+import 'core-js/es6/set';
+import 'core-js/es6/object';
+import 'core-js/es6/promise';
+import 'core-js/es7/object';
+import 'core-js/es7/array';
+import 'raf/polyfill';
+
+if (typeof window !== 'undefined') {
+    // IE11 matches polyfill
+    if (!Element.prototype.matches) {
+        Element.prototype.matches =
+            Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;
+    }
+    // IE11 Element.closest polyfill
+    if (!Element.prototype.closest) {
+        Element.prototype.closest = function(s) {
+            var el = this;
+
+            do {
+                if (el.matches(s)) return el;
+                el = el.parentElement || el.parentNode;
+            } while (el !== null && el.nodeType === 1);
+            return null;
+        };
+    }
+}

BIN
public/static/favicon.ico


BIN
public/static/img/bg1.jpg


BIN
public/static/img/bg10.jpg


BIN
public/static/img/bg2.jpg


BIN
public/static/img/bg3.jpg


BIN
public/static/img/bg4.jpg


BIN
public/static/img/bg5.jpg


BIN
public/static/img/bg6.jpg


BIN
public/static/img/bg7.jpg


BIN
public/static/img/bg8.jpg


BIN
public/static/img/bg9.jpg


BIN
public/static/img/dummy-search.png


BIN
public/static/img/dummy.png


BIN
public/static/img/lock-bg.jpg


BIN
public/static/img/logo-inner.png


BIN
public/static/img/logo-ristekdikti.png


BIN
public/static/img/logo-single-ori.png


BIN
public/static/img/logo-single.png


Vissa filer visades inte eftersom för många filer har ändrats