diff --git a/.gitignore b/.gitignore index e9eb524..1813ac1 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,7 @@ craftbeerpi.db modules/plugins/* !modules/plugins/__init__.py *.pyc +*.js +modules/ui/package.json + +modules/ui/.babelrc diff --git a/README.md b/README.md index 6fd2ce6..84730e1 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,12 @@ Type cd craftbeerpi3 to navigate into the craftbeerpi folder. Type sudo ./install.sh +## Hardware Wiring + +Here you will find a guide how to wire everything up. + +http://web.craftbeerpi.com/hardware/ + ## ATTENTION CraftBeerPi 3.0 is a complete rewrite. Server as well as user interface. I recommend to use a second SD card for testing. diff --git a/config/schema.sql b/config/schema.sql index 06c2d25..ce62c26 100644 --- a/config/schema.sql +++ b/config/schema.sql @@ -1,4 +1,4 @@ -CREATE TABLE kettle +CREATE TABLE IF NOT EXISTS kettle ( id INTEGER PRIMARY KEY NOT NULL, name VARCHAR(80), @@ -13,7 +13,7 @@ CREATE TABLE kettle diameter INTEGER ); -CREATE TABLE step +CREATE TABLE IF NOT EXISTS step ( id INTEGER PRIMARY KEY NOT NULL, "order" INTEGER, @@ -27,7 +27,7 @@ CREATE TABLE step kettleid INTEGER ); -CREATE TABLE sensor +CREATE TABLE IF NOT EXISTS sensor ( id INTEGER PRIMARY KEY NOT NULL, type VARCHAR(100), @@ -36,7 +36,7 @@ CREATE TABLE sensor hide BOOLEAN ); -CREATE TABLE fermenter_step +CREATE TABLE IF NOT EXISTS fermenter_step ( id INTEGER PRIMARY KEY NOT NULL, name VARCHAR(80), @@ -54,7 +54,7 @@ CREATE TABLE fermenter_step FOREIGN KEY (fermenter_id) REFERENCES fermenter (id) ); -CREATE TABLE fermenter +CREATE TABLE IF NOT EXISTS fermenter ( id INTEGER PRIMARY KEY NOT NULL, name VARCHAR(80), @@ -69,7 +69,7 @@ CREATE TABLE fermenter target_temp INTEGER ); -CREATE TABLE config +CREATE TABLE IF NOT EXISTS config ( name VARCHAR(50) PRIMARY KEY NOT NULL, value VARCHAR(255), @@ -79,19 +79,22 @@ CREATE TABLE config ); -INSERT INTO config VALUES ('kettle_cols', 4, 'select', 'Adjust the width of a kettle widget on the brewing dashboard', '[1,2,3, 4, 5, 6, 7, 8, 9, 10, 11, 12]'); -INSERT INTO config VALUES ('actor_cols', 4, 'select', 'Adjust the width of a actor widget on the brewing dashboard', '[1,2,3, 4, 5, 6, 7, 8, 9, 10, 11, 12]'); -INSERT INTO config VALUES ('sensor_cols', 4, 'select', 'Adjust the width of a sensor widget on the brewing dashboard', '[1,2,3, 4, 5, 6, 7, 8, 9, 10, 11, 12]'); -INSERT INTO config VALUES ('unit', 'C', 'select', 'Temperature Unit', '["C","F"]'); -INSERT INTO config VALUES ('brewery_name', 'My Home Brewery', 'text', 'Your brewery name', NULL ); -INSERT INTO config VALUES ('buzzer', 16, 'select', 'Buzzer GPIO', '[16,17,18,19,20]'); -INSERT INTO config VALUES ('setup', 'YES', 'select', 'Show the Setup dialog', '["YES","NO"]'); +INSERT OR IGNORE INTO config VALUES ('kettle_cols', 4, 'select', 'Adjust the width of a kettle widget on the brewing dashboard', '[1,2,3, 4, 5, 6, 7, 8, 9, 10, 11, 12]'); +INSERT OR IGNORE INTO config VALUES ('actor_cols', 4, 'select', 'Adjust the width of a actor widget on the brewing dashboard', '[1,2,3, 4, 5, 6, 7, 8, 9, 10, 11, 12]'); +INSERT OR IGNORE INTO config VALUES ('sensor_cols', 4, 'select', 'Adjust the width of a sensor widget on the brewing dashboard', '[1,2,3, 4, 5, 6, 7, 8, 9, 10, 11, 12]'); +INSERT OR IGNORE INTO config VALUES ('unit', 'C', 'select', 'Temperature Unit', '["C","F"]'); +INSERT OR IGNORE INTO config VALUES ('brewery_name', 'My Home Brewery', 'text', 'Your brewery name', NULL ); +INSERT OR IGNORE INTO config VALUES ('buzzer', 16, 'select', 'Buzzer GPIO', '[16,17,18,19,20]'); +INSERT OR IGNORE INTO config VALUES ('setup', 'YES', 'select', 'Show the Setup dialog', '["YES","NO"]'); +INSERT OR IGNORE INTO config VALUES ('brew_name', '', 'text', 'Brew Name', NULL); +INSERT OR IGNORE INTO config VALUES ('donation_notification', 'YES', 'select', 'Disable Donation Notification', '["YES","NO"]'); -CREATE TABLE actor + +CREATE TABLE IF NOT EXISTS actor ( id INTEGER PRIMARY KEY NOT NULL, name VARCHAR(50), type VARCHAR(100), config VARCHAR(500), hide BOOLEAN -); \ No newline at end of file +); diff --git a/config/version.yaml b/config/version.yaml new file mode 100644 index 0000000..d9c62ed --- /dev/null +++ b/config/version.yaml @@ -0,0 +1 @@ +3.0.2 \ No newline at end of file diff --git a/modules/__init__.py b/modules/__init__.py index ae139fb..96b5400 100755 --- a/modules/__init__.py +++ b/modules/__init__.py @@ -35,6 +35,8 @@ import modules.system import modules.buzzer import modules.stats import modules.kettle +import modules.recipe_import +import modules.core.db_mirgrate from app_config import cbpi # Build the database: # This will create the database file using SQLAlchemy @@ -63,3 +65,6 @@ cbpi.run_background_processes() +app.logger.info("##########################################") +app.logger.info("### STARTUP COMPLETE") +app.logger.info("##########################################") \ No newline at end of file diff --git a/modules/actor/__init__.py b/modules/actor/__init__.py index f395f58..c966d27 100644 --- a/modules/actor/__init__.py +++ b/modules/actor/__init__.py @@ -17,10 +17,10 @@ class ActorView(BaseView): obj.state = 0 obj.power = 100 - def post_post_callback(self, m): + def _post_post_callback(self, m): self.api.init_actor(m.id) - def post_put_callback(self, m): + def _post_put_callback(self, m): self.api.init_actor(m.id) @@ -60,10 +60,15 @@ class ActorView(BaseView): t = self.api.socketio.start_background_task(target=self.toggleTimeJob, id=id, t=t) return ('', 204) + @route('/action/', methods=["POST"]) + def action(self, id, method): + + cbpi.cache.get("actors").get(id).instance.__getattribute__(method)() + return ('', 204) + + @cbpi.initalizer(order=1000) def init(cbpi): - print "INITIALIZE ACTOR MODULE" - cbpi.app.logger.info("INITIALIZE ACTOR MODULE") ActorView.register(cbpi.app, route_base='/api/actor') ActorView.init_cache() cbpi.init_actors() \ No newline at end of file diff --git a/modules/addon/endpoints.py b/modules/addon/endpoints.py index 4a5e4c8..9da4639 100644 --- a/modules/addon/endpoints.py +++ b/modules/addon/endpoints.py @@ -166,7 +166,9 @@ def update_addon(name): def loadCorePlugins(): for filename in os.listdir("./modules/base_plugins"): - if filename.endswith(".py") or filename.endswith(".pyc"): + + + if os.path.isdir("./modules/base_plugins/"+filename) is False: continue try: modules[filename] = import_module("modules.base_plugins.%s" % (filename)) @@ -178,7 +180,7 @@ def loadCorePlugins(): def loadPlugins(): for filename in os.listdir("./modules/plugins"): - if filename.endswith(".py") or filename.endswith(".pyc"): + if os.path.isdir("./modules/plugins/" + filename) is False: continue try: modules[filename] = import_module("modules.plugins.%s" % (filename)) @@ -188,11 +190,11 @@ def loadPlugins(): @cbpi.initalizer(order=1) def initPlugins(app): - print "INITIALIZE CUSTOM PLUGINS" + loadCorePlugins() loadPlugins() @cbpi.initalizer(order=2) def init(cbpi): - print "INITIALIZE ADDON MODULE" + cbpi.app.register_blueprint(blueprint, url_prefix='/api/editor') diff --git a/modules/app_config.py b/modules/app_config.py index 10db8b2..96a5e0c 100644 --- a/modules/app_config.py +++ b/modules/app_config.py @@ -15,7 +15,9 @@ from modules.core.db import DBModel app = Flask(__name__) -logging.basicConfig(filename='./logs/app.log',level=logging.INFO) +FORMAT = '%(asctime)-15s - %(levelname)s - %(message)s' + +logging.basicConfig(filename='./logs/app.log',level=logging.INFO, format=FORMAT) app.config['SECRET_KEY'] = 'craftbeerpi' app.config['UPLOAD_FOLDER'] = './upload' @@ -45,7 +47,7 @@ class ComplexEncoder(json.JSONEncoder): return None app.json_encoder = ComplexEncoder -socketio = SocketIO(app, json=json) +socketio = SocketIO(app, json=json, logging=False) cbpi = CraftBeerPi(app, socketio) app.logger.info("##########################################") diff --git a/modules/base_plugins/brew_steps/__init__.py b/modules/base_plugins/brew_steps/__init__.py index 84c03b2..51e9426 100644 --- a/modules/base_plugins/brew_steps/__init__.py +++ b/modules/base_plugins/brew_steps/__init__.py @@ -7,15 +7,16 @@ from modules.core.step import StepBase from modules import cbpi + @cbpi.step class MashStep(StepBase): ''' Just put the decorator @cbpi.step on top of a method ''' # Properties - temp = Property.Number("Temperature", configurable=True) - kettle = StepProperty.Kettle("Kettle") - timer = Property.Number("Timer in Minutes", configurable=True) + temp = Property.Number("Temperature", configurable=True, description="Target Temperature of Mash Step") + kettle = StepProperty.Kettle("Kettle", description="Kettle in which the mashing takes place") + timer = Property.Number("Timer in Minutes", configurable=True, description="Timer is started when the target temperature is reached") def init(self): ''' @@ -49,7 +50,7 @@ class MashStep(StepBase): ''' # Check if Target Temp is reached - if self.get_kettle_temp(self.kettle) >= int(self.temp): + if self.get_kettle_temp(self.kettle) >= float(self.temp): # Check if Timer is Running if self.is_timer_finished() is None: self.start_timer(int(self.timer) * 60) @@ -65,10 +66,14 @@ class MashInStep(StepBase): Just put the decorator @cbpi.step on top of a method ''' # Properties - temp = Property.Number("Temperature", configurable=True) - kettle = StepProperty.Kettle("Kettle") + temp = Property.Number("Temperature", configurable=True, description="Target Temperature of Mash Step") + kettle = StepProperty.Kettle("Kettle", description="Kettle in which the mashing takes place") s = False + @cbpi.action("Change Power") + def change_power(self): + self.actor_power(1, 50) + def init(self): ''' Initialize Step. This method is called once at the beginning of the step @@ -93,3 +98,124 @@ class MashInStep(StepBase): +@cbpi.step +class ChilStep(StepBase): + + timer = Property.Number("Timer in Minutes", configurable=True, default_value=0, description="Timer is started immediately") + + @cbpi.action("Stat Timer") + def start(self): + if self.is_timer_finished() is None: + self.start_timer(int(self.timer) * 60) + + def reset(self): + self.stop_timer() + + + def finish(self): + pass + + def execute(self): + if self.is_timer_finished() is None: + self.start_timer(int(self.timer) * 60) + + if self.is_timer_finished() == True: + self.next() + +@cbpi.step +class PumpStep(StepBase): + + pump = StepProperty.Actor("Pump", description="Pump actor gets toogled") + timer = Property.Number("Timer in Minutes", configurable=True, default_value=0, description="Timer is started immediately") + + @cbpi.action("Stat Timer") + def start(self): + if self.is_timer_finished() is None: + self.start_timer(int(self.timer) * 60) + + def reset(self): + self.stop_timer() + + + def finish(self): + self.actor_off(int(self.pump)) + + def init(self): + self.actor_on(int(self.pump)) + + def execute(self): + if self.is_timer_finished() is None: + self.start_timer(int(self.timer) * 60) + + if self.is_timer_finished() == True: + self.next() + +@cbpi.step +class BoilStep(StepBase): + ''' + Just put the decorator @cbpi.step on top of a method + ''' + # Properties + temp = Property.Number("Temperature", configurable=True, default_value=100, description="Target temperature for boiling") + kettle = StepProperty.Kettle("Kettle", description="Kettle in which the boiling step takes place") + timer = Property.Number("Timer in Minutes", configurable=True, default_value=90, description="Timer is started when target temperature is reached") + hop_1 = Property.Number("Hop 1 Addition", configurable=True, description="Fist Hop alert") + hop_1_added = Property.Number("",default_value=None) + hop_2 = Property.Number("Hop 2 Addition", configurable=True, description="Second Hop alert") + hop_2_added = Property.Number("", default_value=None) + hop_3 = Property.Number("Hop 3 Addition", configurable=True) + hop_3_added = Property.Number("", default_value=None, description="Second Hop alert") + + def init(self): + ''' + Initialize Step. This method is called once at the beginning of the step + :return: + ''' + # set target tep + self.set_target_temp(self.temp, self.kettle) + + + + + @cbpi.action("Start Timer Now") + def start(self): + ''' + Custom Action which can be execute form the brewing dashboard. + All method with decorator @cbpi.action("YOUR CUSTOM NAME") will be available in the user interface + :return: + ''' + if self.is_timer_finished() is None: + self.start_timer(int(self.timer) * 60) + + def reset(self): + self.stop_timer() + self.set_target_temp(self.temp, self.kettle) + + def finish(self): + self.set_target_temp(0, self.kettle) + + + def check_hop_timer(self, number, value): + + if self.__getattribute__("hop_%s_added" % number) is not True and time.time() > ( + self.timer_end - (int(self.timer) * 60 - int(value) * 60)): + self.__setattr__("hop_%s_added" % number, True) + self.notify("Hop Alert", "Please add Hop %s" % number, timeout=None) + + def execute(self): + ''' + This method is execute in an interval + :return: + ''' + # Check if Target Temp is reached + if self.get_kettle_temp(self.kettle) >= int(self.temp): + # Check if Timer is Running + if self.is_timer_finished() is None: + self.start_timer(int(self.timer) * 60) + else: + self.check_hop_timer(1, self.hop_1) + self.check_hop_timer(2, self.hop_2) + self.check_hop_timer(3, self.hop_3) + # Check if timer finished and go to next step + if self.is_timer_finished() == True: + self.next() \ No newline at end of file diff --git a/modules/base_plugins/dummy_temp/__init__.py b/modules/base_plugins/dummy_temp/__init__.py index 089406d..2ed3f47 100644 --- a/modules/base_plugins/dummy_temp/__init__.py +++ b/modules/base_plugins/dummy_temp/__init__.py @@ -10,21 +10,38 @@ from modules.core.props import Property @cbpi.sensor class DummyTempSensor(SensorActive): - temp = Property.Number("Temperature", configurable=True, default_value=5) + + temp = Property.Number("Temperature", configurable=True, default_value=5, description="Dummy Temperature as decimal value") + + @cbpi.action("My Custom Action") + def my_action(self): + print "HELLO WORLD" + pass def get_unit(self): + ''' + :return: Unit of the sensor as string. Should not be longer than 3 characters + ''' return "°C" if self.get_config_parameter("unit", "C") == "C" else "°F" def stop(self): - pass + SensorActive.stop(self) def execute(self): - while self.is_running(): - + ''' + Active sensor has to handle his own loop + :return: + ''' + while self.is_running() is True: self.data_received(self.temp) - socketio.sleep(5) - - + self.sleep(5) + + @classmethod + def init_global(cls): + ''' + Called one at the startup for all sensors + :return: + ''' diff --git a/modules/base_plugins/fermenter_hysteresis/__init__.py b/modules/base_plugins/fermenter_hysteresis/__init__.py index 40943e5..ef24d25 100644 --- a/modules/base_plugins/fermenter_hysteresis/__init__.py +++ b/modules/base_plugins/fermenter_hysteresis/__init__.py @@ -6,10 +6,10 @@ from modules.core.props import Property @cbpi.fermentation_controller class Hysteresis(FermenterController): - heater_offset_min = Property.Number("Heater Offset min", True, 0) - heater_offset_max = Property.Number("Heater Offset max", True, 0) - cooler_offset_min = Property.Number("Cooler Offset min", True, 0) - cooler_offset_max = Property.Number("Cooler Offset max", True, 0) + heater_offset_min = Property.Number("Heater Offset ON", True, 0, description="Offset as decimal number when the heater is switched on. Should be greater then 'Heater Offset OFF'. For example a value of 2 switches on the heater if the current temperature is 2 degrees below the target temperature") + heater_offset_max = Property.Number("Heater Offset OFF", True, 0, description="Offset as decimal number when the heater is switched off. Should be smaller then 'Heater Offset ON'. For example a value of 1 switches off the heater if the current temperature is 1 degree below the target temperature") + cooler_offset_min = Property.Number("Cooler Offset ON", True, 0, description="Offset as decimal number when the cooler is switched on. Should be greater then 'Cooler Offset OFF'. For example a value of 2 switches on the cooler if the current temperature is 2 degrees above the target temperature") + cooler_offset_max = Property.Number("Cooler Offset OFF", True, 0, description="Offset as decimal number when the cooler is switched off. Should be less then 'Cooler Offset ON'. For example a value of 1 switches off the cooler if the current temperature is 1 degree above the target temperature") def stop(self): super(FermenterController, self).stop() @@ -23,16 +23,16 @@ class Hysteresis(FermenterController): target_temp = self.get_target_temp() temp = self.get_temp() - if temp + int(self.heater_offset_min) < target_temp: + if temp + float(self.heater_offset_min) <= target_temp: self.heater_on(100) - if temp + int(self.heater_offset_max) > target_temp: + if temp + float(self.heater_offset_max) >= target_temp: self.heater_off() - if temp > target_temp + int(self.cooler_offset_min): + if temp >= target_temp + float(self.cooler_offset_min): self.cooler_on(100) - if temp < target_temp + int(self.cooler_offset_max): + if temp <= target_temp + float(self.cooler_offset_max): self.cooler_off() - self.sleep(1) \ No newline at end of file + self.sleep(1) diff --git a/modules/base_plugins/gpio_actor/__init__.py b/modules/base_plugins/gpio_actor/__init__.py index fe75689..e346ef9 100644 --- a/modules/base_plugins/gpio_actor/__init__.py +++ b/modules/base_plugins/gpio_actor/__init__.py @@ -18,7 +18,7 @@ except Exception as e: @cbpi.actor class GPIOSimple(ActorBase): - gpio = Property.Select("GPIO", options=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27]) + gpio = Property.Select("GPIO", options=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27], description="GPIO to which the actor is connected") def init(self): GPIO.setup(int(self.gpio), GPIO.OUT) @@ -35,7 +35,7 @@ class GPIOSimple(ActorBase): @cbpi.actor class GPIOPWM(ActorBase): - gpio = Property.Select("GPIO", options=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27]) + gpio = Property.Select("GPIO", options=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27], description="GPIO to which the actor is connected") duty_cylce = Property.Number("Duty Cycle", configurable=True) p = None @@ -57,6 +57,11 @@ class GPIOPWM(ActorBase): self.p.start(int(self.power)) def set_power(self, power): + ''' + Optional: Set the power of your actor + :param power: int value between 0 - 100 + :return: + ''' if power is not None: self.power = int(power) self.p.ChangeDutyCycle(self.power) @@ -69,7 +74,7 @@ class GPIOPWM(ActorBase): @cbpi.actor class RelayBoard(ActorBase): - gpio = Property.Select("GPIO", options=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27]) + gpio = Property.Select("GPIO", options=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27], description="GPIO to which the actor is connected") def init(self): GPIO.setup(int(self.gpio), GPIO.OUT) @@ -86,8 +91,17 @@ class RelayBoard(ActorBase): @cbpi.actor class Dummy(ActorBase): + def on(self, power=100): + ''' + Code to switch on the actor + :param power: int value between 0 - 100 + :return: + ''' print "ON" def off(self): print "OFF" + + + diff --git a/modules/base_plugins/hysteresis/__init__.py b/modules/base_plugins/hysteresis/__init__.py index 06941ab..ebc7419 100644 --- a/modules/base_plugins/hysteresis/__init__.py +++ b/modules/base_plugins/hysteresis/__init__.py @@ -8,8 +8,8 @@ class Hysteresis(KettleController): # Custom Properties - on = Property.Number("Offset On", True, 0) - off = Property.Number("Offset Off", True, 0) + on = Property.Number("Offset On", True, 0, description="Offset below target temp when heater should switched on. Should be bigger then Offset Off") + off = Property.Number("Offset Off", True, 0, description="Offset below target temp when heater should switched off. Should be smaller then Offset Off") def stop(self): ''' @@ -30,11 +30,9 @@ class Hysteresis(KettleController): ''' while self.is_running(): - self.actor_power(50) - - if self.get_temp() < self.get_target_temp() - int(self.on): + if self.get_temp() < self.get_target_temp() - float(self.on): self.heater_on(100) - elif self.get_temp() >= self.get_target_temp() - int(self.off): + elif self.get_temp() >= self.get_target_temp() - float(self.off): self.heater_off() else: self.heater_off() diff --git a/modules/base_plugins/one_wire/__init__.py b/modules/base_plugins/one_wire/__init__.py index 9398208..cec4a94 100644 --- a/modules/base_plugins/one_wire/__init__.py +++ b/modules/base_plugins/one_wire/__init__.py @@ -66,7 +66,8 @@ class myThread (threading.Thread): @cbpi.sensor class ONE_WIRE_SENSOR(SensorPassive): - sensor_name = Property.Select("Sensor", getSensors()) + sensor_name = Property.Select("Sensor", getSensors(), description="The OneWire sensor address.") + offset = Property.Number("Offset", True, 0, description="Offset which is added to the received sensor data. Positive and negative values are both allowed.") def init(self): @@ -86,10 +87,14 @@ class ONE_WIRE_SENSOR(SensorPassive): def read(self): if self.get_config_parameter("unit", "C") == "C": - self.data_received(round(self.t.value, 2)) + self.data_received(round(self.t.value + self.offset_value(), 2)) else: - self.data_received(round(9.0 / 5.0 * self.t.value + 32, 2)) + self.data_received(round(9.0 / 5.0 * self.t.value + 32 + self.offset_value(), 2)) + @cbpi.try_catch(0) + def offset_value(self): + return float(self.offset) + @classmethod def init_global(self): try: @@ -108,5 +113,5 @@ def set_temp(t): @cbpi.initalizer() def init(cbpi): - cbpi.app.logger.info("INITIALIZE ONE WIRE MODULE") + cbpi.app.register_blueprint(blueprint, url_prefix='/api/one_wire') diff --git a/modules/buzzer/__init__.py b/modules/buzzer/__init__.py index 2eff869..4fc5a9a 100644 --- a/modules/buzzer/__init__.py +++ b/modules/buzzer/__init__.py @@ -41,10 +41,8 @@ class Buzzer(object): start_new_thread(play, (self.sound,)) -@cbpi.initalizer(order=0) +@cbpi.initalizer(order=1) def init(cbpi): - print "INIT BUZZER" - cbpi.app.logger.info("INIT BUZZER") gpio = cbpi.get_config_parameter("buzzer", 16) cbpi.buzzer = Buzzer(gpio) cbpi.beep() diff --git a/modules/config/__init__.py b/modules/config/__init__.py index 14cc4b0..1adf054 100644 --- a/modules/config/__init__.py +++ b/modules/config/__init__.py @@ -24,10 +24,9 @@ class ConfigView(BaseView): update_data = {"name": data["name"], "value": data["value"]} if self.api.cache.get(self.cache_key) is not None: - #self.pre_post_callback(self.api.cache.get(self.cache_key)[name]) self.api.cache.get(self.cache_key)[name].__dict__.update(**update_data) m = self.model.update(**self.api.cache.get(self.cache_key)[name].__dict__) - self.post_put_callback(self.api.cache.get(self.cache_key)[name]) + self._post_put_callback(self.api.cache.get(self.cache_key)[name]) return json.dumps(self.api.cache.get(self.cache_key)[name].__dict__) @route('/', methods=["GET"]) @@ -51,9 +50,8 @@ class ConfigView(BaseView): cls.post_init_callback(value) cls.api.cache[cls.cache_key][value.name] = value - -@cbpi.initalizer(order=1) +@cbpi.initalizer(order=0) def init(cbpi): - print "INITIALIZE CONFIG MODULE" + ConfigView.register(cbpi.app, route_base='/api/config') ConfigView.init_cache() diff --git a/modules/core/baseview.py b/modules/core/baseview.py index c5b98ab..9bdf8a3 100644 --- a/modules/core/baseview.py +++ b/modules/core/baseview.py @@ -9,7 +9,7 @@ class BaseView(FlaskView): cache_key = None api = cbpi - @route('/') + @route('/', methods=["GET"]) def getOne(self, id): if self.api.cache.get(self.cache_key) is not None: @@ -17,36 +17,36 @@ class BaseView(FlaskView): else: return json.dumps(self.model.get_one(id)) - @route('/') + @route('/', methods=["GET"]) def getAll(self): if self.api.cache.get(self.cache_key) is not None: return json.dumps(self.api.cache.get(self.cache_key)) else: return json.dumps(self.model.get_all()) - def pre_post_callback(self, data): + def _pre_post_callback(self, data): pass - def post_post_callback(self, m): + def _post_post_callback(self, m): pass @route('/', methods=["POST"]) def post(self): data = request.json - self.pre_post_callback(data) + self._pre_post_callback(data) m = self.model.insert(**data) if self.api.cache.get(self.cache_key) is not None: self.api.cache.get(self.cache_key)[m.id] = m - self.post_post_callback(m) + self._post_post_callback(m) return json.dumps(m) - def pre_put_callback(self, m): + def _pre_put_callback(self, m): pass - def post_put_callback(self, m): + def _post_put_callback(self, m): pass @@ -59,32 +59,32 @@ class BaseView(FlaskView): except: pass if self.api.cache.get(self.cache_key) is not None: - self.pre_put_callback(self.api.cache.get(self.cache_key)[id]) + self._pre_put_callback(self.api.cache.get(self.cache_key)[id]) self.api.cache.get(self.cache_key)[id].__dict__.update(**data) m = self.model.update(**self.api.cache.get(self.cache_key)[id].__dict__) - self.post_put_callback(self.api.cache.get(self.cache_key)[id]) + self._post_put_callback(self.api.cache.get(self.cache_key)[id]) return json.dumps(self.api.cache.get(self.cache_key)[id]) else: m = self.model.update(**data) - self.post_put_callback(m) + self._post_put_callback(m) return json.dumps(m) - def pre_delete_callback(self, m): + def _pre_delete_callback(self, m): pass - def post_delete_callback(self, id): + def _post_delete_callback(self, id): pass @route('/', methods=["DELETE"]) def delete(self, id): if self.api.cache.get(self.cache_key) is not None: - self.pre_delete_callback(self.api.cache.get(self.cache_key)[id]) + self._pre_delete_callback(self.api.cache.get(self.cache_key)[id]) del self.api.cache.get(self.cache_key)[id] m = self.model.delete(id) - def post_delete_callback(self, id): + def _post_delete_callback(self, id): pass return ('',204) diff --git a/modules/core/controller.py b/modules/core/controller.py index a0d5494..c940cdd 100644 --- a/modules/core/controller.py +++ b/modules/core/controller.py @@ -135,13 +135,13 @@ class FermenterController(ControllerBase, ActorController, SensorController): @cbpi.try_catch(None) def cooler_on(self, power=100): f = self.api.cache.get("fermenter").get(self.fermenter_id) - if f.heater is not None: + if f.cooler is not None: self.actor_on(power, int(f.cooler)) @cbpi.try_catch(None) def cooler_off(self): f = self.api.cache.get("fermenter").get(self.fermenter_id) - if f.heater is not None: + if f.cooler is not None: self.actor_off(int(f.cooler)) @cbpi.try_catch(None) diff --git a/modules/core/core.py b/modules/core/core.py index 1caf28a..f0634a2 100644 --- a/modules/core/core.py +++ b/modules/core/core.py @@ -1,3 +1,4 @@ +import inspect import pprint import sqlite3 @@ -28,6 +29,7 @@ class ActorAPI(object): self.app.logger.info("Init Actors") t = self.cache.get("actor_types") for key, value in t.iteritems(): + value.get("class").api = self value.get("class").init_global() for key in self.cache.get("actors"): @@ -73,12 +75,8 @@ class ActorAPI(object): if actor.state == 0: return - - actor.instance.off() actor.state = 0 - - self.emit("SWITCH_ACTOR", actor) class SensorAPI(object): @@ -161,9 +159,8 @@ class SensorAPI(object): def log_action(self, text): filename = "./logs/action.log" formatted_time = strftime("%Y-%m-%d %H:%M:%S", localtime()) - - with open(filename, "a") as file: + text = text.encode("utf-8") file.write("%s,%s\n" % (formatted_time, text)) def shutdown_sensor(self, id): @@ -173,7 +170,7 @@ class SensorAPI(object): def get_sensor_value(self, id): try: id = int(id) - return int(self.cache.get("sensors")[id].instance.last_value) + return float(self.cache.get("sensors")[id].instance.last_value) except Exception as e: return None @@ -226,12 +223,9 @@ class CraftBeerPi(ActorAPI, SensorAPI): def notify(self, headline, message, type="success", timeout=5000): self.beep() msg = {"id": str(uuid.uuid1()), "type": type, "headline": headline, "message": message, "timeout": timeout} - if timeout is None: - self.cache["messages"].append(msg) - self.emit("NOTIFY", msg) + self.emit_message(msg) def beep(self): - if self.buzzer is not None: self.buzzer.beep() @@ -248,6 +242,15 @@ class CraftBeerPi(ActorAPI, SensorAPI): else: return cfg.value + def set_config_parameter(self, name, value): + from modules.config import Config + with self.app.app_context(): + update_data = {"name": name, "value": value} + self.cache.get("config")[name].__dict__.update(**update_data) + c = Config.update(**update_data) + self.emit("UPDATE_CONFIG", c) + + def add_config_parameter(self, name, value, type, description, options=None): from modules.config import Config with self.app.app_context(): @@ -264,28 +267,56 @@ class CraftBeerPi(ActorAPI, SensorAPI): # helper method for parsing props def __parseProps(self, key, cls): name = cls.__name__ - self.cache[key][name] = {"name": name, "class": cls, "properties": []} + self.cache[key][name] = {"name": name, "class": cls, "properties": [], "actions": []} tmpObj = cls() members = [attr for attr in dir(tmpObj) if not callable(getattr(tmpObj, attr)) and not attr.startswith("__")] for m in members: if isinstance(tmpObj.__getattribute__(m), Property.Number): t = tmpObj.__getattribute__(m) self.cache[key][name]["properties"].append( - {"name": m, "label": t.label, "type": "number", "configurable": t.configurable}) + {"name": m, "label": t.label, "type": "number", "configurable": t.configurable, "description": t.description}) elif isinstance(tmpObj.__getattribute__(m), Property.Text): t = tmpObj.__getattribute__(m) self.cache[key][name]["properties"].append( - {"name": m, "label": t.label, "type": "text", "configurable": t.configurable}) + {"name": m, "label": t.label, "type": "text", "configurable": t.configurable, "description": t.description}) elif isinstance(tmpObj.__getattribute__(m), Property.Select): t = tmpObj.__getattribute__(m) self.cache[key][name]["properties"].append( - {"name": m, "label": t.label, "type": "select", "configurable": True, "options": t.options}) + {"name": m, "label": t.label, "type": "select", "configurable": True, "options": t.options, "description": t.description}) + elif isinstance(tmpObj.__getattribute__(m), Property.Actor): + t = tmpObj.__getattribute__(m) + self.cache[key][name]["properties"].append({"name": m, "label": t.label, "type": "actor", "configurable": t.configurable, "description": t.description}) + elif isinstance(tmpObj.__getattribute__(m), Property.Sensor): + t = tmpObj.__getattribute__(m) + self.cache[key][name]["properties"].append({"name": m, "label": t.label, "type": "sensor", "configurable": t.configurable, "description": t.description}) + elif isinstance(tmpObj.__getattribute__(m), Property.Kettle): + t = tmpObj.__getattribute__(m) + self.cache[key][name]["properties"].append({"name": m, "label": t.label, "type": "kettle", "configurable": t.configurable, "description": t.description}) + + for name, method in cls.__dict__.iteritems(): + if hasattr(method, "action"): + label = method.__getattribute__("label") + self.cache[key][cls.__name__]["actions"].append({"method": name, "label": label}) + + return cls def actor(self, cls): return self.__parseProps("actor_types", cls) + + + def actor2(self, description="", power=True, **options): + + def decorator(f): + print f() + print f + print options + print description + return f + return decorator + def sensor(self, cls): return self.__parseProps("sensor_types", cls) @@ -300,6 +331,8 @@ class CraftBeerPi(ActorAPI, SensorAPI): def get_fermentation_controller(self, name): return self.cache["fermentation_controller_types"].get(name) + + # Step action def action(self,label): def real_decorator(func): @@ -320,22 +353,22 @@ class CraftBeerPi(ActorAPI, SensorAPI): for m in members: if isinstance(tmpObj.__getattribute__(m), StepProperty.Number): t = tmpObj.__getattribute__(m) - self.cache[key][name]["properties"].append({"name": m, "label": t.label, "type": "number", "configurable": t.configurable}) + self.cache[key][name]["properties"].append({"name": m, "label": t.label, "type": "number", "configurable": t.configurable, "default_value": t.default_value, "description": t.description}) elif isinstance(tmpObj.__getattribute__(m), StepProperty.Text): t = tmpObj.__getattribute__(m) - self.cache[key][name]["properties"].append({"name": m, "label": t.label, "type": "text", "configurable": t.configurable}) + self.cache[key][name]["properties"].append({"name": m, "label": t.label, "type": "text", "configurable": t.configurable, "description": t.description}) elif isinstance(tmpObj.__getattribute__(m), StepProperty.Select): t = tmpObj.__getattribute__(m) - self.cache[key][name]["properties"].append({"name": m, "label": t.label, "type": "select", "options": t.options}) + self.cache[key][name]["properties"].append({"name": m, "label": t.label, "type": "select", "configurable": True, "options": t.options, "description": t.description}) elif isinstance(tmpObj.__getattribute__(m), StepProperty.Actor): t = tmpObj.__getattribute__(m) - self.cache[key][name]["properties"].append({"name": m, "label": t.label, "type": "actor", "configurable": t.configurable}) + self.cache[key][name]["properties"].append({"name": m, "label": t.label, "type": "actor", "configurable": t.configurable, "description": t.description}) elif isinstance(tmpObj.__getattribute__(m), StepProperty.Sensor): t = tmpObj.__getattribute__(m) - self.cache[key][name]["properties"].append({"name": m, "label": t.label, "type": "sensor", "configurable": t.configurable}) + self.cache[key][name]["properties"].append({"name": m, "label": t.label, "type": "sensor", "configurable": t.configurable, "description": t.description}) elif isinstance(tmpObj.__getattribute__(m), StepProperty.Kettle): t = tmpObj.__getattribute__(m) - self.cache[key][name]["properties"].append({"name": m, "label": t.label, "type": "kettle", "configurable": t.configurable}) + self.cache[key][name]["properties"].append({"name": m, "label": t.label, "type": "kettle", "configurable": t.configurable, "description": t.description}) for name, method in cls.__dict__.iteritems(): if hasattr(method, "action"): @@ -420,7 +453,7 @@ class CraftBeerPi(ActorAPI, SensorAPI): self.app.logger.info("Invoke Init") self.cache["init"] = sorted(self.cache["init"], key=lambda k: k['order']) for i in self.cache.get("init"): - self.app.logger.info("-> %s " % i.get("function").__name__) + self.app.logger.info("INITIALIZER - METHOD %s PAHT %s: " % (i.get("function").__name__, str(inspect.getmodule(i.get("function")).__file__) )) i.get("function")(self) @@ -451,7 +484,7 @@ class CraftBeerPi(ActorAPI, SensorAPI): def job(interval, method): while True: try: - method() + method(self) except Exception as e: self.app.logger.error("Exception" + method.__name__ + ": " + str(e)) self.socketio.sleep(interval) diff --git a/modules/core/db.py b/modules/core/db.py index bb8935e..ef111ba 100644 --- a/modules/core/db.py +++ b/modules/core/db.py @@ -42,13 +42,15 @@ class DBModel(object): def get_all(cls): cur = get_db().cursor() if cls.__order_by__ is not None: - cur.execute("SELECT * FROM %s ORDER BY '%s'" % (cls.__table_name__,cls.__order_by__)) + + cur.execute("SELECT * FROM %s ORDER BY %s.'%s'" % (cls.__table_name__,cls.__table_name__,cls.__order_by__)) else: cur.execute("SELECT * FROM %s" % cls.__table_name__) if cls.__as_array__ is True: result = [] for r in cur.fetchall(): + result.append( cls(r)) else: result = {} @@ -104,7 +106,7 @@ class DBModel(object): else: data = data + (kwargs.get(f),) - print query, data + cur.execute(query, data) get_db().commit() i = cur.lastrowid diff --git a/modules/core/db_mirgrate.py b/modules/core/db_mirgrate.py new file mode 100644 index 0000000..bdb850e --- /dev/null +++ b/modules/core/db_mirgrate.py @@ -0,0 +1,47 @@ +import sqlite3 +import os +from modules import cbpi +from db import get_db + +def execute_file(curernt_version, data): + if curernt_version >= data["version"]: + cbpi.app.logger.info("SKIP DB FILE: %s" % data["file"]) + return + try: + with sqlite3.connect("craftbeerpi.db") as conn: + with open('./update/%s' % data["file"], 'r') as f: + d = f.read() + sqlCommands = d.split(";") + cur = conn.cursor() + for s in sqlCommands: + cur.execute(s) + cur.execute("INSERT INTO schema_info (version,filename) values (?,?)", (data["version"], data["file"])) + conn.commit() + + except sqlite3.OperationalError as err: + print "EXCEPT" + print err + +@cbpi.initalizer(order=-9999) +def init(app=None): + + with cbpi.app.app_context(): + conn = get_db() + cur = conn.cursor() + current_version = None + try: + cur.execute("SELECT max(version) as m FROM schema_info") + m = cur.fetchone() + current_version = m["m"] + except: + pass + result = [] + for filename in os.listdir("./update"): + if filename.endswith(".sql"): + d = {"version": int(filename[:filename.index('_')]), "file": filename} + result.append(d) + execute_file(current_version, d) + + + + diff --git a/modules/core/hardware.py b/modules/core/hardware.py index 85f53e8..e329f9a 100644 --- a/modules/core/hardware.py +++ b/modules/core/hardware.py @@ -5,16 +5,19 @@ class Base(object): @classmethod def init_global(cls): - print "GLOBAL ACTOR INIT" + pass def get_config_parameter(self, key, default_value): return self.api.get_config_parameter(key, default_value) + def sleep(self, seconds): + self.api.socketio.sleep(seconds) + def init(self): - print "INIT BASE" + pass def stop(self): - print "STOP HARDWARE" + pass def update(self, **kwds): pass @@ -67,15 +70,16 @@ class SensorActive(SensorBase): __running = False def is_running(self): + return self.__running def init(self): self.__running = True - print "INIT ACTIVE SENSOR" def stop(self): self.__running = False + def execute(self): pass @@ -95,10 +99,10 @@ class ActorBase(Base): return 1 def set_power(self, power): - print "SET POWER TO %s" % power + pass def on(self, power=0): - print "ON" + pass def off(self): - print "OFF" + pass diff --git a/modules/core/props.py b/modules/core/props.py index efef745..e3f4654 100644 --- a/modules/core/props.py +++ b/modules/core/props.py @@ -3,36 +3,65 @@ class PropertyType(object): class Property(object): class Select(PropertyType): - def __init__(self, label, options): + def __init__(self, label, options, description=""): PropertyType.__init__(self) self.label = label self.options = options + self.description = description class Number(PropertyType): - def __init__(self, label, configurable=False, default_value=0, unit=""): + def __init__(self, label, configurable=False, default_value=None, unit="", description=""): PropertyType.__init__(self) self.label = label self.configurable = configurable + self.default_value = default_value + self.description = description class Text(PropertyType): - def __init__(self, label, configurable=False, default_value=""): + def __init__(self, label, configurable=False, default_value="", description=""): PropertyType.__init__(self) self.label = label self.configurable = configurable + self.description = description + + class Actor(PropertyType): + def __init__(self, label, description=""): + PropertyType.__init__(self) + self.label = label + self.configurable = True + self.description = description + + class Sensor(PropertyType): + def __init__(self, label, description=""): + PropertyType.__init__(self) + self.label = label + self.configurable = True + self.description = description + + class Kettle(PropertyType): + def __init__(self, label, description=""): + PropertyType.__init__(self) + self.label = label + self.configurable = True + self.description = description + class StepProperty(Property): class Actor(PropertyType): - def __init__(self, label): + def __init__(self, label, description=""): PropertyType.__init__(self) self.label = label self.configurable = True + self.description = description class Sensor(PropertyType): - def __init__(self, label): + def __init__(self, label, description=""): PropertyType.__init__(self) self.label = label self.configurable = True + self.description = description class Kettle(PropertyType): - def __init__(self, label): + def __init__(self, label, description=""): PropertyType.__init__(self) self.label = label - self.configurable = True \ No newline at end of file + self.configurable = True + self.description = description \ No newline at end of file diff --git a/modules/core/step.py b/modules/core/step.py index 8dc3347..0084a37 100644 --- a/modules/core/step.py +++ b/modules/core/step.py @@ -44,7 +44,7 @@ class KettleAPI(NotificationAPI): return self.api.cache.get("kettle").get(id).target_temp def set_target_temp(self, temp, id=None): - temp = int(temp) + temp = float(temp) try: if id is None: @@ -59,7 +59,7 @@ class Timer(object): timer_end = Property.Number("TIMER_END", configurable=False) def start_timer(self, timer): - print "START TIMER NEW" + if self.timer_end is not None: return self.timer_end = int(time.time()) + timer @@ -100,13 +100,13 @@ class StepBase(Timer, ActorAPI, SensorAPI, KettleAPI): self.n = True def init(self): - print "INIT STEP" + pass def finish(self): - print "FINSIH STEP" + pass def reset(self): - print "REST STEP" + pass def execute(self): print "-------------" diff --git a/modules/fermenter/__init__.py b/modules/fermenter/__init__.py index b0b9bae..e2dcf91 100755 --- a/modules/fermenter/__init__.py +++ b/modules/fermenter/__init__.py @@ -63,18 +63,19 @@ class FermenterView(BaseView): model = Fermenter cache_key = "fermenter" - def post_post_callback(self, m): + + def _post_post_callback(self, m): m.state = False m.steps = [] - def pre_put_callback(self, m): + def _pre_put_callback(self, m): m.state = False try: m.instance.stop() except: pass - def post_put_callback(self, m): + def _post_put_callback(self, m): m.state = False @route('//targettemp/', methods=['POST']) @@ -282,7 +283,7 @@ class FermenterView(BaseView): @cbpi.backgroundtask(key="read_target_temps_fermenter", interval=5) -def read_target_temps(): +def read_target_temps(api): """ background process that reads all passive sensors in interval of 1 second :return: None @@ -295,7 +296,7 @@ def read_target_temps(): instance = FermenterView() @cbpi.backgroundtask(key="fermentation_task", interval=1) -def execute_fermentation_step(): +def execute_fermentation_step(api): with cbpi.app.app_context(): instance.check_step() @@ -310,6 +311,6 @@ def init_active_steps(): @cbpi.initalizer(order=1) def init(cbpi): - print "INITIALIZE CONFIG MODULE" + FermenterView.register(cbpi.app, route_base='/api/fermenter') FermenterView.init_cache() diff --git a/modules/kettle/__init__.py b/modules/kettle/__init__.py index 52ffd18..c8bff56 100644 --- a/modules/kettle/__init__.py +++ b/modules/kettle/__init__.py @@ -15,7 +15,7 @@ class Kettle2View(BaseView): cache_key = "kettle" @classmethod - def pre_post_callback(self, data): + def _pre_post_callback(self, data): data["target_temp"] = 0 @classmethod @@ -23,16 +23,16 @@ class Kettle2View(BaseView): obj.state = False - def post_post_callback(self, m): + def _post_post_callback(self, m): m.state = False - def pre_put_callback(self, m): + def _pre_put_callback(self, m): try: m.instance.stop() except: pass - def post_put_callback(self, m): + def _post_put_callback(self, m): m.state = False @route('//targettemp/', methods=['POST']) @@ -76,11 +76,11 @@ def set_target_temp(id, temp): :param temp: target temp to set :return: None ''' - print "GOT EVENT %s %s" % (id, temp) + Kettle2View().postTargetTemp(id,temp) @cbpi.backgroundtask(key="read_target_temps", interval=5) -def read_target_temps(): +def read_target_temps(api): """ background process that reads all passive sensors in interval of 1 second :return: None diff --git a/modules/logs/endpoints.py b/modules/logs/endpoints.py index 9bbce01..a68d9b7 100644 --- a/modules/logs/endpoints.py +++ b/modules/logs/endpoints.py @@ -105,5 +105,4 @@ def init(app): :param app: the flask app :return: None """ - print "INITIALIZE LOG MODULE" LogView.register(cbpi.app, route_base='/api/logs') diff --git a/modules/notification/__init__.py b/modules/notification/__init__.py index 4098749..2f440cb 100644 --- a/modules/notification/__init__.py +++ b/modules/notification/__init__.py @@ -32,10 +32,9 @@ def messageEvent(message, **kwargs): :param kwargs: other parameter :return: None """ - - msg = {"id": len(cbpi.cache["messages"]), "type": "info", "message": message, "read": False} - cbpi.cache["messages"].append(msg) - cbpi.emit('MESSAGE', msg,) + if message["timeout"] is None: + cbpi.cache["messages"].append(message) + cbpi.emit("NOTIFY", message) @cbpi.initalizer(order=2) def init(cbpi): @@ -44,9 +43,8 @@ def init(cbpi): :param app: the flask app :return: None """ - print "INITIALIZE MESSAGE MODULE" - - msg = {"id": len(cbpi.cache["messages"]), "type": "info", "headline": "Support CraftBeerPi with your donation", "message": "You will find the PayPay Donation button in the system menu" , "read": False} - cbpi.cache["messages"].append(msg) + if cbpi.get_config_parameter("donation_notification", "YES") == "YES": + msg = {"id": len(cbpi.cache["messages"]), "type": "info", "headline": "Support CraftBeerPi with your donation", "message": "You will find the PayPay Donation button in the system menu" , "read": False} + cbpi.cache["messages"].append(msg) NotificationView.register(cbpi.app, route_base='/api/notification') diff --git a/modules/recipe_import/__init__.py b/modules/recipe_import/__init__.py new file mode 100644 index 0000000..f3b440c --- /dev/null +++ b/modules/recipe_import/__init__.py @@ -0,0 +1,3 @@ +import beerxml +import kbh +import restapi \ No newline at end of file diff --git a/modules/recipe_import/beerxml.py b/modules/recipe_import/beerxml.py new file mode 100644 index 0000000..e9f17e0 --- /dev/null +++ b/modules/recipe_import/beerxml.py @@ -0,0 +1,110 @@ +from flask import json, request +from flask_classy import FlaskView, route +from git import Repo, Git +import sqlite3 +from modules.app_config import cbpi +from werkzeug.utils import secure_filename +import pprint +import time +import os +from modules.steps import Step,StepView +import xml.etree.ElementTree + +class BeerXMLImport(FlaskView): + BEER_XML_FILE = "./upload/beer.xml" + @route('/', methods=['GET']) + def get(self): + if not os.path.exists(self.BEER_XML_FILE): + self.api.notify(headline="File Not Found", message="Please upload a Beer.xml File", + type="danger") + return ('', 404) + result = [] + + e = xml.etree.ElementTree.parse(self.BEER_XML_FILE).getroot() + result = [] + for idx, val in enumerate(e.findall('RECIPE')): + result.append({"id": idx+1, "name": val.find("NAME").text}) + return json.dumps(result) + + def allowed_file(self, filename): + return '.' in filename and filename.rsplit('.', 1)[1] in set(['xml']) + + @route('/upload', methods=['POST']) + def upload_file(self): + try: + if request.method == 'POST': + file = request.files['file'] + if file and self.allowed_file(file.filename): + file.save(os.path.join(self.api.app.config['UPLOAD_FOLDER'], "beer.xml")) + self.api.notify(headline="Upload Successful", message="The Beer XML file was uploaded succesfully") + return ('', 204) + return ('', 404) + except Exception as e: + self.api.notify(headline="Upload Failed", message="Failed to upload Beer xml", type="danger") + return ('', 500) + + @route('/', methods=['POST']) + def load(self, id): + + + steps = self.getSteps(id) + name = self.getRecipeName(id) + self.api.set_config_parameter("brew_name", name) + boil_time = self.getBoilTime(id) + mashstep_type = cbpi.get_config_parameter("step_mash", "MashStep") + mash_kettle = cbpi.get_config_parameter("step_mash_kettle", None) + + boilstep_type = cbpi.get_config_parameter("step_boil", "BoilStep") + boil_kettle = cbpi.get_config_parameter("step_boil_kettle", None) + boil_temp = 100 if cbpi.get_config_parameter("unit", "C") == "C" else 212 + + # READ KBH DATABASE + Step.delete_all() + StepView().reset() + + try: + + for row in steps: + Step.insert(**{"name": row.get("name"), "type": mashstep_type, "config": {"kettle": mash_kettle, "temp": float(row.get("temp")), "timer": row.get("timer")}}) + Step.insert(**{"name": "ChilStep", "type": "ChilStep", "config": {"timer": 15}}) + ## Add cooking step + Step.insert(**{"name": "Boil", "type": boilstep_type, "config": {"kettle": boil_kettle, "temp": boil_temp, "timer": boil_time}}) + ## Add Whirlpool step + Step.insert(**{"name": "Whirlpool", "type": "ChilStep", "config": {"timer": 15}}) + self.api.emit("UPDATE_ALL_STEPS", Step.get_all()) + self.api.notify(headline="Recipe %s loaded successfully" % name, message="") + except Exception as e: + self.api.notify(headline="Failed to load Recipe", message=e.message, type="danger") + return ('', 500) + + return ('', 204) + + def getRecipeName(self, id): + e = xml.etree.ElementTree.parse(self.BEER_XML_FILE).getroot() + return e.find('./RECIPE[%s]/NAME' % (str(id))).text + + def getBoilTime(self, id): + e = xml.etree.ElementTree.parse(self.BEER_XML_FILE).getroot() + return float(e.find('./RECIPE[%s]/BOIL_TIME' % (str(id))).text) + + def getSteps(self, id): + + + + e = xml.etree.ElementTree.parse(self.BEER_XML_FILE).getroot() + steps = [] + for e in e.findall('./RECIPE[%s]/MASH/MASH_STEPS/MASH_STEP' % (str(id))): + + if self.api.get_config_parameter("unit", "C") == "C": + temp = float(e.find("STEP_TEMP").text) + else: + temp = round(9.0 / 5.0 * float(e.find("STEP_TEMP").text) + 32, 2) + steps.append({"name": e.find("NAME").text, "temp": temp, "timer": float(e.find("STEP_TIME").text)}) + + return steps + +@cbpi.initalizer() +def init(cbpi): + + BeerXMLImport.api = cbpi + BeerXMLImport.register(cbpi.app, route_base='/api/beerxml') diff --git a/modules/recipe_import/kbh.py b/modules/recipe_import/kbh.py new file mode 100644 index 0000000..d6c23cb --- /dev/null +++ b/modules/recipe_import/kbh.py @@ -0,0 +1,109 @@ +from flask import json, request +from flask_classy import FlaskView, route +from git import Repo, Git +import sqlite3 +from modules.app_config import cbpi +from werkzeug.utils import secure_filename +import pprint +import time +import os +from modules.steps import Step, StepView + + +class KBH(FlaskView): + + @route('/', methods=['GET']) + def get(self): + conn = None + try: + if not os.path.exists(self.api.app.config['UPLOAD_FOLDER'] + '/kbh.db'): + self.api.notify(headline="File Not Found", message="Please upload a Kleiner Brauhelfer Database", type="danger") + return ('', 404) + + conn = sqlite3.connect(self.api.app.config['UPLOAD_FOLDER'] + '/kbh.db') + c = conn.cursor() + c.execute('SELECT ID, Sudname, BierWurdeGebraut FROM Sud') + data = c.fetchall() + result = [] + for row in data: + result.append({"id": row[0], "name": row[1], "brewed": row[2]}) + return json.dumps(result) + except Exception as e: + print e + self.api.notify(headline="Failed to load KHB database", message="ERROR", type="danger") + return ('', 500) + finally: + if conn: + conn.close() + + def allowed_file(self, filename): + return '.' in filename and filename.rsplit('.', 1)[1] in set(['sqlite']) + + @route('/upload', methods=['POST']) + def upload_file(self): + try: + if request.method == 'POST': + file = request.files['file'] + if file and self.allowed_file(file.filename): + filename = secure_filename(file.filename) + file.save(os.path.join(self.api.app.config['UPLOAD_FOLDER'], "kbh.db")) + self.api.notify(headline="Upload Successful", message="The Kleiner Brauhelfer Database was uploaded succesfully") + return ('', 204) + return ('', 404) + except Exception as e: + self.api.notify(headline="Upload Failed", message="Failed to upload Kleiner Brauhelfer", type="danger") + + return ('', 500) + + @route('/', methods=['POST']) + def load(self, id): + mashstep_type = cbpi.get_config_parameter("step_mash", "MashStep") + mashinstep_type = cbpi.get_config_parameter("step_mashin", "MashInStep") + chilstep_type = cbpi.get_config_parameter("step_chil", "ChilStep") + boilstep_type = cbpi.get_config_parameter("step_boil", "BoilStep") + mash_kettle = cbpi.get_config_parameter("step_mash_kettle", None) + boil_kettle = cbpi.get_config_parameter("step_boil_kettle", None) + boil_temp = 100 if cbpi.get_config_parameter("unit", "C") == "C" else 212 + + # READ KBH DATABASE + Step.delete_all() + StepView().reset() + conn = None + try: + conn = sqlite3.connect(self.api.app.config['UPLOAD_FOLDER'] + '/kbh.db') + c = conn.cursor() + c.execute('SELECT EinmaischenTemp, Sudname FROM Sud WHERE ID = ?', (id,)) + row = c.fetchone() + name = row[1] + + self.api.set_config_parameter("brew_name", name) + Step.insert(**{"name": "MashIn", "type": mashinstep_type, "config": {"kettle": mash_kettle, "temp": row[0]}}) + ### add rest step + for row in c.execute('SELECT * FROM Rasten WHERE SudID = ?', (id,)): + Step.insert(**{"name": row[5], "type": mashstep_type, "config": {"kettle": mash_kettle, "temp": row[3], "timer": row[4]}}) + Step.insert(**{"name": "Chil", "type": chilstep_type, "config": {"timer": 15}}) + ## Add cooking step + c.execute('SELECT max(Zeit) FROM Hopfengaben WHERE SudID = ?', (id,)) + row = c.fetchone() + Step.insert(**{"name": "Boil", "type": boilstep_type, "config": {"kettle": boil_kettle, "temp": boil_temp, "timer": row[0]}}) + ## Add Whirlpool step + Step.insert(**{"name": "Whirlpool", "type": chilstep_type, "config": {"timer": 15}}) + + #setBrewName(name) + self.api.emit("UPDATE_ALL_STEPS", Step.get_all()) + self.api.notify(headline="Recipe %s loaded successfully" % name, message="") + except Exception as e: + self.api.notify(headline="Failed to load Recipe", message=e.message, type="danger") + return ('', 500) + finally: + if conn: + conn.close() + return ('', 204) + + + +@cbpi.initalizer() +def init(cbpi): + + KBH.api = cbpi + KBH.register(cbpi.app, route_base='/api/kbh') diff --git a/modules/recipe_import/restapi.py b/modules/recipe_import/restapi.py new file mode 100644 index 0000000..1e9a84c --- /dev/null +++ b/modules/recipe_import/restapi.py @@ -0,0 +1,62 @@ +from flask import json, request +from flask_classy import FlaskView, route +from git import Repo, Git +import sqlite3 +from modules.app_config import cbpi +from werkzeug.utils import secure_filename +import pprint +import time +import os +from modules.steps import Step,StepView +import xml.etree.ElementTree + + +class RESTImport(FlaskView): + + + @route('/', methods=['POST']) + def load(self): + + try: + data = request.json + + name = data.get("name", "No Name") + + self.api.set_config_parameter("brew_name", name) + chilstep_type = cbpi.get_config_parameter("step_chil", "ChilStep") + mashstep_type = cbpi.get_config_parameter("step_mash", "MashStep") + mash_kettle = cbpi.get_config_parameter("step_mash_kettle", None) + + boilstep_type = cbpi.get_config_parameter("step_boil", "BoilStep") + boil_kettle = cbpi.get_config_parameter("step_boil_kettle", None) + boil_temp = 100 if cbpi.get_config_parameter("unit", "C") == "C" else 212 + + # READ KBH DATABASE + Step.delete_all() + StepView().reset() + + + for step in data.get("steps"): + if step.get("type", None) == "MASH": + Step.insert(**{"name": step.get("name","Mash Step"), "type": mashstep_type, "config": {"kettle": mash_kettle, "temp": step.get("temp",0), "timer": step.get("timer",0)}}) + elif step.get("type", None) == "CHIL": + Step.insert(**{"name": step.get("name","Chil"), "type": chilstep_type, "config": {"timer": step.get("timer")}}) + elif step.get("type", None) == "BOIL": + Step.insert(**{"name": step.get("name", "Boil"), "type": boilstep_type, "config": {"kettle": boil_kettle, "timer": step.get("timer"), "temp": boil_temp}}) + else: + pass + + self.api.emit("UPDATE_ALL_STEPS", Step.get_all()) + self.api.notify(headline="Recipe %s loaded successfully" % name, message="") + except Exception as e: + self.api.notify(headline="Failed to load Recipe", type="danger", message=str(e)) + m = str(e.message) + return (str(e), 500) + + return ('', 204) + + +@cbpi.initalizer() +def init(cbpi): + RESTImport.api = cbpi + RESTImport.register(cbpi.app, route_base='/api/recipe/import/v1') diff --git a/modules/sensors/__init__.py b/modules/sensors/__init__.py index 161868e..dfbe744 100755 --- a/modules/sensors/__init__.py +++ b/modules/sensors/__init__.py @@ -12,27 +12,32 @@ class SensorView(BaseView): model = Sensor cache_key = "sensors" + @route('/action/', methods=["POST"]) + def action(self, id, method): - def post_post_callback(self, m): + cbpi.cache.get("sensors").get(id).instance.__getattribute__(method)() + return ('', 204) + + def _post_post_callback(self, m): cbpi.init_sensor(m.id) - def post_put_callback(self, m): + def _post_put_callback(self, m): cbpi.stop_sensor(m.id) cbpi.init_sensor(m.id) - def pre_delete_callback(self, m): + def _pre_delete_callback(self, m): cbpi.stop_sensor(m.id) @cbpi.initalizer(order=1000) def init(cbpi): - print "INITIALIZE SENSOR MODULE" + SensorView.register(cbpi.app, route_base='/api/sensor') SensorView.init_cache() cbpi.init_sensors() @cbpi.backgroundtask(key="read_passiv_sensor", interval=5) -def read_passive_sensor(): +def read_passive_sensor(api): """ background process that reads all passive sensors in interval of 1 second :return: None diff --git a/modules/stats/__init__.py b/modules/stats/__init__.py index 894f59f..993cf26 100644 --- a/modules/stats/__init__.py +++ b/modules/stats/__init__.py @@ -16,7 +16,7 @@ def getserial(): @cbpi.initalizer(order=9999) def sendStats(cbpi): - print "INITIALIZE STATS" + try: serial = getserial() diff --git a/modules/steps/__init__.py b/modules/steps/__init__.py index 5953ed9..05d65fc 100755 --- a/modules/steps/__init__.py +++ b/modules/steps/__init__.py @@ -1,5 +1,5 @@ import time -from flask import json +from flask import json, request from flask_classy import route from modules import DBModel, cbpi, get_db @@ -21,9 +21,9 @@ class Step(DBModel): return r.get("order") @classmethod - def get_by_state(cls, state): + def get_by_state(cls, state, order=True): cur = get_db().cursor() - cur.execute("SELECT * FROM %s WHERE state = ?" % cls.__table_name__, state) + cur.execute("SELECT * FROM %s WHERE state = ? ORDER BY %s.'order'" % (cls.__table_name__,cls.__table_name__,), state) r = cur.fetchone() if r is not None: return cls(r) @@ -54,13 +54,29 @@ class Step(DBModel): cur.execute("UPDATE %s SET stepstate = ? WHERE id =?" % cls.__table_name__, (json.dumps(state),id)) get_db().commit() + @classmethod + def sort(cls, new_order): + cur = get_db().cursor() + + for e in new_order: + + cur.execute("UPDATE %s SET '%s' = ? WHERE id = ?" % (cls.__table_name__, "order"), (e[1], e[0])) + get_db().commit() + + class StepView(BaseView): model = Step - def pre_post_callback(self, data): + def _pre_post_callback(self, data): order = self.model.get_max_order() data["order"] = 1 if order is None else order + 1 data["state"] = "I" + @route('/sort', methods=["POST"]) + def sort_steps(self): + Step.sort(request.json) + cbpi.emit("UPDATE_ALL_STEPS", self.model.get_all()) + return ('', 204) + @route('/', methods=["DELETE"]) def deleteAll(self): self.model.delete_all() @@ -69,16 +85,12 @@ class StepView(BaseView): @route('/action/', methods=["POST"]) def action(self, method): - cbpi.cache["active_step"].__getattribute__(method)() - return ('', 204) @route('/reset', methods=["POST"]) def reset(self): - self.model.reset_all_steps() - #db.session.commit() self.stop_step() cbpi.emit("UPDATE_ALL_STEPS", self.model.get_all()) return ('', 204) @@ -115,7 +127,6 @@ class StepView(BaseView): return ('', 204) def init_step(self, step): - cbpi.log_action("Start Step %s" % step.name) type_cfg = cbpi.cache.get("step_types").get(step.type) if type_cfg is None: @@ -128,7 +139,6 @@ class StepView(BaseView): cfg.update(dict(name=step.name, api=cbpi, id=step.id, timer_end=None, managed_fields=get_manged_fields_as_array(type_cfg))) instance = type_cfg.get("class")(**cfg) instance.init() - # set step instance to ache cbpi.cache["active_step"] = instance @@ -185,15 +195,16 @@ def init_after_startup(): if type_cfg is None: # step type not found. cant restart step return + cfg = step.stepstate.copy() - cfg.update(dict(api=cbpi, id=step.id, timer_end=None, managed_fields=get_manged_fields_as_array(type_cfg))) + cfg.update(dict(api=cbpi, id=step.id, managed_fields=get_manged_fields_as_array(type_cfg))) instance = type_cfg.get("class")(**cfg) instance.init() cbpi.cache["active_step"] = instance @cbpi.initalizer(order=2000) def init(cbpi): - print "INITIALIZE STEPS MODULE" + StepView.register(cbpi.app, route_base='/api/step') def get_all(): @@ -205,7 +216,7 @@ def init(cbpi): cbpi.add_cache_callback("steps", get_all) @cbpi.backgroundtask(key="step_task", interval=0.1) -def execute_step(): +def execute_step(api): ''' Background job which executes the step :return: @@ -214,9 +225,7 @@ def execute_step(): step = cbpi.cache.get("active_step") if step is not None: step.execute() - if step.is_dirty(): - state = {} for field in step.managed_fields: state[field] = step.__getattribute__(field) diff --git a/modules/system/endpoints.py b/modules/system/endpoints.py index f354543..bfb23b3 100755 --- a/modules/system/endpoints.py +++ b/modules/system/endpoints.py @@ -1,4 +1,5 @@ -from flask import json +import yaml +from flask import json, url_for, Response from flask_classy import FlaskView, route from git import Repo, Git @@ -101,7 +102,44 @@ class SystemView(FlaskView): def dump(self): return json.dumps(cbpi.cache) + @route('/endpoints', methods=['GET']) + def endpoints(self): + import urllib + output = [] + vf = self.api.app.view_functions + + for f in self.api.app.view_functions: + print f + endpoints = {} + re = { + "swagger": "2.0", + "host": "", + "info": { + "description":"", + "version": "", + "title": "CraftBeerPi" + }, + "schemes": ["http"], + "paths": endpoints} + for rule in self.api.app.url_map.iter_rules(): + r = rule + endpoints[rule.rule] = {} + if "HEAD" in r.methods: r.methods.remove("HEAD") + if "OPTIONS" in r.methods: r.methods.remove("OPTIONS") + for m in rule.methods: + endpoints[rule.rule][m] = dict(summary="", description="", consumes=["application/json"],produces=["application/json"]) + + with open("config/version.yaml", 'r') as stream: + + y = yaml.load(stream) + pprint.pprint(y) + pprint.pprint(re) + return Response(yaml.dump(re), mimetype='text/yaml') + + + @cbpi.initalizer() def init(cbpi): - print "INITIALIZE SYSTEM MODULE" + + SystemView.api = cbpi SystemView.register(cbpi.app, route_base='/api/system') diff --git a/modules/ui/endpoints.py b/modules/ui/endpoints.py index cc1d2e2..8039a4f 100644 --- a/modules/ui/endpoints.py +++ b/modules/ui/endpoints.py @@ -5,11 +5,12 @@ react = Blueprint('react', __name__, template_folder='templates', static_folder= @cbpi.initalizer(order=10) def init(cbpi): - print "INITIALIZE UI" cbpi.app.register_blueprint(react, url_prefix='/ui') -@react.route('/') + + +@react.route('/', methods=["GET"]) def index(): return react.send_static_file("index.html") diff --git a/modules/ui/package-lock.json b/modules/ui/package-lock.json new file mode 100644 index 0000000..79d5a86 --- /dev/null +++ b/modules/ui/package-lock.json @@ -0,0 +1,6006 @@ +{ + "name": "react-app2", + "version": "0.1.0", + "lockfileVersion": 1, + "dependencies": { + "abab": { + "version": "https://registry.npmjs.org/abab/-/abab-1.0.3.tgz", + "integrity": "sha1-uB3l9ydOxOdW15fNg08wNkJyTl0=", + "dev": true + }, + "accepts": { + "version": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", + "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=", + "dev": true + }, + "acorn": { + "version": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=" + }, + "acorn-globals": { + "version": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz", + "integrity": "sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8=", + "dev": true, + "dependencies": { + "acorn": { + "version": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "dev": true + } + } + }, + "acorn-jsx": { + "version": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", + "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", + "dev": true + }, + "add-dom-event-listener": { + "version": "https://registry.npmjs.org/add-dom-event-listener/-/add-dom-event-listener-1.0.2.tgz", + "integrity": "sha1-j67SxBAIchzxEdodMNmVuFvkK+0=" + }, + "after": { + "version": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", + "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=" + }, + "ajv": { + "version": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "dev": true + }, + "ajv-keywords": { + "version": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", + "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", + "dev": true + }, + "align-text": { + "version": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=" + }, + "alphanum-sort": { + "version": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", + "dev": true + }, + "amdefine": { + "version": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" + }, + "ansi-escapes": { + "version": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", + "dev": true + }, + "ansi-html": { + "version": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.5.tgz", + "integrity": "sha1-DcqloIEgaGa8JAo7dzoYTqO4i2Q=", + "dev": true + }, + "ansi-regex": { + "version": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "ansicolors": { + "version": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.2.1.tgz", + "integrity": "sha1-vgiVmQl7dKXJxKhKDNvNtivYeu8=", + "dev": true + }, + "anymatch": { + "version": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", + "integrity": "sha1-o+Uvo5FoyCX/V7AkgSbOWo/5VQc=" + }, + "append-transform": { + "version": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", + "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", + "dev": true + }, + "argparse": { + "version": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", + "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "dev": true + }, + "aria-query": { + "version": "https://registry.npmjs.org/aria-query/-/aria-query-0.3.0.tgz", + "integrity": "sha1-y4qZhOKGJxHIPICt5bj1yg3itGc=", + "dev": true + }, + "arr-diff": { + "version": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=" + }, + "arr-flatten": { + "version": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.0.3.tgz", + "integrity": "sha1-onTthawIhJtr14R8RYB0XcUa37E=" + }, + "array-equal": { + "version": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", + "dev": true + }, + "array-flatten": { + "version": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "array-union": { + "version": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true + }, + "array-uniq": { + "version": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" + }, + "arraybuffer.slice": { + "version": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz", + "integrity": "sha1-8zshWfBTKj8xB6JywMz70a0peco=" + }, + "arrify": { + "version": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" + }, + "asap": { + "version": "https://registry.npmjs.org/asap/-/asap-2.0.5.tgz", + "integrity": "sha1-UidltQw1EEkOUtfc/ghe+bqWlY8=" + }, + "asn1": { + "version": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true + }, + "assert": { + "version": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=" + }, + "assert-plus": { + "version": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", + "dev": true + }, + "ast-types-flow": { + "version": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=", + "dev": true + }, + "async": { + "version": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" + }, + "async-each": { + "version": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=" + }, + "asynckit": { + "version": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "autoprefixer": { + "version": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.2.tgz", + "integrity": "sha1-Fyqwe5mK6blXUwkopZpAvlSkUCM=", + "dev": true + }, + "aws-sign2": { + "version": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", + "dev": true + }, + "aws4": { + "version": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", + "dev": true + }, + "axios": { + "version": "https://registry.npmjs.org/axios/-/axios-0.16.2.tgz", + "integrity": "sha1-uk+S8XFn37q0CYN4VFS5rBScPG0=" + }, + "babel-code-frame": { + "version": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz", + "integrity": "sha1-AnYgvuVnqIwyVhV05/0IAdMxGOQ=" + }, + "babel-core": { + "version": "https://registry.npmjs.org/babel-core/-/babel-core-6.25.0.tgz", + "integrity": "sha1-fdQrBGPHQunVKW3rPsZ6kyLa1yk=" + }, + "babel-eslint": { + "version": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-7.1.1.tgz", + "integrity": "sha1-imqITwhapwYK9pz8dzQcL5k3D7I=", + "dev": true + }, + "babel-generator": { + "version": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.25.0.tgz", + "integrity": "sha1-M6GvcNXyiQrrRlpKd5PB32qeqfw=" + }, + "babel-helper-bindify-decorators": { + "version": "https://registry.npmjs.org/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz", + "integrity": "sha1-FMGeXxQte0fxmlJDHlKxzLxAozA=" + }, + "babel-helper-builder-binary-assignment-operator-visitor": { + "version": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", + "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=" + }, + "babel-helper-builder-react-jsx": { + "version": "https://registry.npmjs.org/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.24.1.tgz", + "integrity": "sha1-CteRfjPI11HmRtrKTnfMGTd9LLw=" + }, + "babel-helper-call-delegate": { + "version": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", + "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=" + }, + "babel-helper-define-map": { + "version": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.24.1.tgz", + "integrity": "sha1-epdH8ljYlH0y1RX2qhx70CIEoIA=" + }, + "babel-helper-explode-assignable-expression": { + "version": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", + "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=" + }, + "babel-helper-explode-class": { + "version": "https://registry.npmjs.org/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz", + "integrity": "sha1-fcKjkQ3uAHBW4eMdZAztPVTqqes=" + }, + "babel-helper-function-name": { + "version": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", + "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=" + }, + "babel-helper-get-function-arity": { + "version": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", + "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=" + }, + "babel-helper-hoist-variables": { + "version": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", + "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=" + }, + "babel-helper-optimise-call-expression": { + "version": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", + "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=" + }, + "babel-helper-regex": { + "version": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.24.1.tgz", + "integrity": "sha1-024i+rEAjXnYhkjjIRaGgShFbOg=" + }, + "babel-helper-remap-async-to-generator": { + "version": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", + "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=" + }, + "babel-helper-replace-supers": { + "version": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", + "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=" + }, + "babel-helpers": { + "version": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=" + }, + "babel-jest": { + "version": "https://registry.npmjs.org/babel-jest/-/babel-jest-18.0.0.tgz", + "integrity": "sha1-F+u6jLMoXJBthZ6HB+Tnl5X7ZeM=", + "dev": true + }, + "babel-loader": { + "version": "https://registry.npmjs.org/babel-loader/-/babel-loader-6.4.1.tgz", + "integrity": "sha1-CzQRLVsHSKjc2/Uaz2+b1C1QuMo=" + }, + "babel-messages": { + "version": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=" + }, + "babel-plugin-check-es2015-constants": { + "version": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", + "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=" + }, + "babel-plugin-istanbul": { + "version": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-3.1.2.tgz", + "integrity": "sha1-EdWr3hhCXsJLXWSMfgtdJc01SiI=", + "dev": true + }, + "babel-plugin-jest-hoist": { + "version": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-18.0.0.tgz", + "integrity": "sha1-QVDnDsq1YObnNErchJSYBy004So=", + "dev": true + }, + "babel-plugin-syntax-async-functions": { + "version": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", + "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=" + }, + "babel-plugin-syntax-async-generators": { + "version": "https://registry.npmjs.org/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz", + "integrity": "sha1-a8lj67FuzLrmuStZbrfzXDQqi5o=" + }, + "babel-plugin-syntax-class-constructor-call": { + "version": "https://registry.npmjs.org/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.18.0.tgz", + "integrity": "sha1-nLnTn+Q8hgC+yBRkVt3L1OGnZBY=" + }, + "babel-plugin-syntax-class-properties": { + "version": "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz", + "integrity": "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=" + }, + "babel-plugin-syntax-decorators": { + "version": "https://registry.npmjs.org/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz", + "integrity": "sha1-MSVjtNvePMgGzuPkFszurd0RrAs=" + }, + "babel-plugin-syntax-do-expressions": { + "version": "https://registry.npmjs.org/babel-plugin-syntax-do-expressions/-/babel-plugin-syntax-do-expressions-6.13.0.tgz", + "integrity": "sha1-V0d1YTmqJtOQ0JQQsDdEugfkeW0=" + }, + "babel-plugin-syntax-dynamic-import": { + "version": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", + "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=" + }, + "babel-plugin-syntax-exponentiation-operator": { + "version": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", + "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=" + }, + "babel-plugin-syntax-export-extensions": { + "version": "https://registry.npmjs.org/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz", + "integrity": "sha1-cKFITw+QiaToStRLrDU8lbmxJyE=" + }, + "babel-plugin-syntax-flow": { + "version": "https://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz", + "integrity": "sha1-TDqyCiryaqIM0lmVw5jE63AxDI0=" + }, + "babel-plugin-syntax-function-bind": { + "version": "https://registry.npmjs.org/babel-plugin-syntax-function-bind/-/babel-plugin-syntax-function-bind-6.13.0.tgz", + "integrity": "sha1-SMSV8Xe98xqYHnMvVa3AvdJgH0Y=" + }, + "babel-plugin-syntax-jsx": { + "version": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", + "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=" + }, + "babel-plugin-syntax-object-rest-spread": { + "version": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=" + }, + "babel-plugin-syntax-trailing-function-commas": { + "version": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", + "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=" + }, + "babel-plugin-transform-async-generator-functions": { + "version": "https://registry.npmjs.org/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz", + "integrity": "sha1-8FiQAUX9PpkHpt3yjaWfIVJYpds=" + }, + "babel-plugin-transform-async-to-generator": { + "version": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", + "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=" + }, + "babel-plugin-transform-class-constructor-call": { + "version": "https://registry.npmjs.org/babel-plugin-transform-class-constructor-call/-/babel-plugin-transform-class-constructor-call-6.24.1.tgz", + "integrity": "sha1-gNwoVQWsBn3LjWxl4vbxGrd2Xvk=" + }, + "babel-plugin-transform-class-properties": { + "version": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz", + "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=" + }, + "babel-plugin-transform-decorators": { + "version": "https://registry.npmjs.org/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz", + "integrity": "sha1-eIAT2PjGtSIr33s0Q5Df13Vp4k0=" + }, + "babel-plugin-transform-do-expressions": { + "version": "https://registry.npmjs.org/babel-plugin-transform-do-expressions/-/babel-plugin-transform-do-expressions-6.22.0.tgz", + "integrity": "sha1-KMyvkoEtlJws0SgfaQyP3EaK6bs=" + }, + "babel-plugin-transform-es2015-arrow-functions": { + "version": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", + "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=" + }, + "babel-plugin-transform-es2015-block-scoped-functions": { + "version": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", + "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=" + }, + "babel-plugin-transform-es2015-block-scoping": { + "version": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.24.1.tgz", + "integrity": "sha1-dsKV3DpHQbFmWt/TFnIV3P8ypXY=" + }, + "babel-plugin-transform-es2015-classes": { + "version": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", + "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=" + }, + "babel-plugin-transform-es2015-computed-properties": { + "version": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", + "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=" + }, + "babel-plugin-transform-es2015-destructuring": { + "version": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", + "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=" + }, + "babel-plugin-transform-es2015-duplicate-keys": { + "version": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", + "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=" + }, + "babel-plugin-transform-es2015-for-of": { + "version": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", + "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=" + }, + "babel-plugin-transform-es2015-function-name": { + "version": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", + "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=" + }, + "babel-plugin-transform-es2015-literals": { + "version": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", + "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=" + }, + "babel-plugin-transform-es2015-modules-amd": { + "version": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", + "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=" + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.1.tgz", + "integrity": "sha1-0+MQtA72ZKNmIiAAl8bUQCmPK/4=" + }, + "babel-plugin-transform-es2015-modules-systemjs": { + "version": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", + "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=" + }, + "babel-plugin-transform-es2015-modules-umd": { + "version": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", + "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=" + }, + "babel-plugin-transform-es2015-object-super": { + "version": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", + "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=" + }, + "babel-plugin-transform-es2015-parameters": { + "version": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", + "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=" + }, + "babel-plugin-transform-es2015-shorthand-properties": { + "version": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", + "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=" + }, + "babel-plugin-transform-es2015-spread": { + "version": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", + "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=" + }, + "babel-plugin-transform-es2015-sticky-regex": { + "version": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", + "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=" + }, + "babel-plugin-transform-es2015-template-literals": { + "version": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", + "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=" + }, + "babel-plugin-transform-es2015-typeof-symbol": { + "version": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", + "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=" + }, + "babel-plugin-transform-es2015-unicode-regex": { + "version": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", + "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=" + }, + "babel-plugin-transform-exponentiation-operator": { + "version": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", + "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=" + }, + "babel-plugin-transform-export-extensions": { + "version": "https://registry.npmjs.org/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.22.0.tgz", + "integrity": "sha1-U3OLR+deghhYnuqUbLvTkQm75lM=" + }, + "babel-plugin-transform-flow-strip-types": { + "version": "https://registry.npmjs.org/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz", + "integrity": "sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988=" + }, + "babel-plugin-transform-function-bind": { + "version": "https://registry.npmjs.org/babel-plugin-transform-function-bind/-/babel-plugin-transform-function-bind-6.22.0.tgz", + "integrity": "sha1-xvuOlqwpajELjPjqQBRiQH3fapc=" + }, + "babel-plugin-transform-object-rest-spread": { + "version": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.23.0.tgz", + "integrity": "sha1-h11ryb52HFiirj/u5dxIldjH+SE=" + }, + "babel-plugin-transform-react-constant-elements": { + "version": "https://registry.npmjs.org/babel-plugin-transform-react-constant-elements/-/babel-plugin-transform-react-constant-elements-6.22.0.tgz", + "integrity": "sha1-SvRW+A0oPovgDwDxKFI1Te+gjuE=", + "dev": true + }, + "babel-plugin-transform-react-display-name": { + "version": "https://registry.npmjs.org/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz", + "integrity": "sha1-Z+K/Hx6ck6sI25Z5LgU5K/LMKNE=" + }, + "babel-plugin-transform-react-jsx": { + "version": "https://registry.npmjs.org/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz", + "integrity": "sha1-hAoCjn30YN/DotKfDA2R9jduZqM=" + }, + "babel-plugin-transform-react-jsx-self": { + "version": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz", + "integrity": "sha1-322AqdomEqEh5t3XVYvL7PBuY24=" + }, + "babel-plugin-transform-react-jsx-source": { + "version": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz", + "integrity": "sha1-ZqwSFT9c0tF7PBkmj0vwGX9E7NY=" + }, + "babel-plugin-transform-regenerator": { + "version": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.24.1.tgz", + "integrity": "sha1-uNowWtQ8PJm0hI5P5AN7dw0jxBg=" + }, + "babel-plugin-transform-runtime": { + "version": "https://registry.npmjs.org/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.22.0.tgz", + "integrity": "sha1-EJaNdgu/ZRckMIHux3jhD6goVRw=", + "dev": true + }, + "babel-plugin-transform-strict-mode": { + "version": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=" + }, + "babel-preset-env": { + "version": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.2.1.tgz", + "integrity": "sha1-ZZF49U33SnR2X3lr5NKQtb7rP18=", + "dev": true + }, + "babel-preset-es2015": { + "version": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", + "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=" + }, + "babel-preset-flow": { + "version": "https://registry.npmjs.org/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz", + "integrity": "sha1-5xIYiHCFrpoktb5Baa/7WZgWxJ0=" + }, + "babel-preset-jest": { + "version": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-18.0.0.tgz", + "integrity": "sha1-hPr4yj7GWrp9Xj9Zu67ZNaskBJ4=", + "dev": true + }, + "babel-preset-react": { + "version": "https://registry.npmjs.org/babel-preset-react/-/babel-preset-react-6.24.1.tgz", + "integrity": "sha1-umnfrqRfw+xjm2pOzqbhdwLJE4A=" + }, + "babel-preset-react-app": { + "version": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-2.2.0.tgz", + "integrity": "sha1-MUO88xYEn3i1+dBCL9eCLKRxXKQ=", + "dev": true, + "dependencies": { + "babel-plugin-transform-class-properties": { + "version": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.22.0.tgz", + "integrity": "sha1-qnj4E0SVx94GwJcRi6BhhE4dwdg=", + "dev": true + }, + "babel-plugin-transform-object-rest-spread": { + "version": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.22.0.tgz", + "integrity": "sha1-HUGbVeaNLk9kpf8zc71n1zyOg7w=", + "dev": true + }, + "babel-plugin-transform-react-jsx": { + "version": "https://registry.npmjs.org/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.22.0.tgz", + "integrity": "sha1-SFVrfdTD/pfRyUO81U/D8lYcGBc=", + "dev": true + }, + "babel-plugin-transform-regenerator": { + "version": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.22.0.tgz", + "integrity": "sha1-ZXQFk6MZxEUiFXU41pC4QJRhfqY=", + "dev": true + }, + "babel-preset-react": { + "version": "https://registry.npmjs.org/babel-preset-react/-/babel-preset-react-6.22.0.tgz", + "integrity": "sha1-e8l+LXPuxLmA+2tOTgiE6BzNwWU=", + "dev": true + }, + "babel-runtime": { + "version": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.22.0.tgz", + "integrity": "sha1-HPi0rGfHek3bDbKuH3TeUqxMphE=", + "dev": true + }, + "regenerator-transform": { + "version": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.9.8.tgz", + "integrity": "sha1-D4i7K8A5Mt23trcxLmgHjwECbWw=", + "dev": true + } + } + }, + "babel-preset-stage-0": { + "version": "https://registry.npmjs.org/babel-preset-stage-0/-/babel-preset-stage-0-6.24.1.tgz", + "integrity": "sha1-VkLRUEL5E4TX5a+LyIsduVsDnmo=" + }, + "babel-preset-stage-1": { + "version": "https://registry.npmjs.org/babel-preset-stage-1/-/babel-preset-stage-1-6.24.1.tgz", + "integrity": "sha1-dpLNfc1oSZB+auSgqFWJz7niv7A=" + }, + "babel-preset-stage-2": { + "version": "https://registry.npmjs.org/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz", + "integrity": "sha1-2eKWD7PXEYfw5k7sYrwHdnIZvcE=" + }, + "babel-preset-stage-3": { + "version": "https://registry.npmjs.org/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz", + "integrity": "sha1-g2raCp56f6N8sTj7kyb4eTSkg5U=" + }, + "babel-register": { + "version": "https://registry.npmjs.org/babel-register/-/babel-register-6.24.1.tgz", + "integrity": "sha1-fhDhOi9xBlvfrVoXh7pFvKbe118=" + }, + "babel-runtime": { + "version": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", + "integrity": "sha1-CpSJ8UTecO+zzkMArM2zKeL8VDs=" + }, + "babel-template": { + "version": "https://registry.npmjs.org/babel-template/-/babel-template-6.25.0.tgz", + "integrity": "sha1-ZlJBFmt8KqTGGdceGSlpVSsQwHE=" + }, + "babel-traverse": { + "version": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.25.0.tgz", + "integrity": "sha1-IldJfi/NGbie3BPEyROB+VEklvE=" + }, + "babel-types": { + "version": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz", + "integrity": "sha1-cK+ySNVmDl0Y+BHZHIMDtUE0oY4=" + }, + "babylon": { + "version": "https://registry.npmjs.org/babylon/-/babylon-6.17.4.tgz", + "integrity": "sha1-Pot0AriNIsNCPhN6FXeIOxX/hpo=" + }, + "backo2": { + "version": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" + }, + "balanced-match": { + "version": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base64-arraybuffer": { + "version": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", + "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=" + }, + "base64-js": { + "version": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz", + "integrity": "sha1-qRlH2h9KUW6jjltOwOw3c2deCIY=" + }, + "batch": { + "version": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "dev": true, + "optional": true + }, + "better-assert": { + "version": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", + "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=" + }, + "big.js": { + "version": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz", + "integrity": "sha1-TK2iGTZS6zyp7I5VyQFWacmAaXg=" + }, + "binary-extensions": { + "version": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.8.0.tgz", + "integrity": "sha1-SOyNFt9Dd+rl+liEaCSAr02Vx3Q=" + }, + "blob": { + "version": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz", + "integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=" + }, + "bluebird": { + "version": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz", + "integrity": "sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw=", + "dev": true + }, + "boolbase": { + "version": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "boom": { + "version": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "dev": true + }, + "brace-expansion": { + "version": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=" + }, + "braces": { + "version": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=" + }, + "browser-resolve": { + "version": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz", + "integrity": "sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=", + "dev": true, + "dependencies": { + "resolve": { + "version": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + } + } + }, + "browserify-aes": { + "version": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-0.4.0.tgz", + "integrity": "sha1-BnFJtmjfMcS1hTPgLQHoBthgjiw=" + }, + "browserify-zlib": { + "version": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", + "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=" + }, + "browserslist": { + "version": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "dev": true + }, + "bser": { + "version": "https://registry.npmjs.org/bser/-/bser-1.0.2.tgz", + "integrity": "sha1-OBEWlwsqbe6lZG3RXdcnhES1YWk=", + "dev": true + }, + "buffer": { + "version": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "dependencies": { + "isarray": { + "version": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + } + } + }, + "builtin-modules": { + "version": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "builtin-status-codes": { + "version": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" + }, + "bytes": { + "version": "https://registry.npmjs.org/bytes/-/bytes-2.3.0.tgz", + "integrity": "sha1-1baAoWW2IBc5rLYRVCqrwtjOsHA=", + "dev": true + }, + "caller-path": { + "version": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", + "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "dev": true + }, + "callsite": { + "version": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=" + }, + "callsites": { + "version": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "dev": true + }, + "camel-case": { + "version": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "dev": true + }, + "camelcase": { + "version": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" + }, + "caniuse-api": { + "version": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz", + "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=", + "dev": true + }, + "caniuse-db": { + "version": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000694.tgz", + "integrity": "sha1-AgCfT4LS8BJuTGkbfNWts1GTXAE=", + "dev": true + }, + "cardinal": { + "version": "https://registry.npmjs.org/cardinal/-/cardinal-1.0.0.tgz", + "integrity": "sha1-UOIcGwqjdyn5N33vGWtanOyTLuk=", + "dev": true + }, + "case-sensitive-paths-webpack-plugin": { + "version": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-1.1.4.tgz", + "integrity": "sha1-iq7dVpmobKwrNM9A2bQUV1iXhHI=", + "dev": true + }, + "caseless": { + "version": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "center-align": { + "version": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=" + }, + "chain-function": { + "version": "https://registry.npmjs.org/chain-function/-/chain-function-1.0.0.tgz", + "integrity": "sha1-DUqzfn4Y6tC9xHuSB2QRjOWHM9w=" + }, + "chalk": { + "version": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=" + }, + "chokidar": { + "version": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=" + }, + "ci-info": { + "version": "https://registry.npmjs.org/ci-info/-/ci-info-1.0.0.tgz", + "integrity": "sha1-3FKF8rTiUYIWg2gcOBwziPRuxTQ=", + "dev": true + }, + "circular-json": { + "version": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.1.tgz", + "integrity": "sha1-vos2rvzN6LPKeqLWr8B6NyQsDS0=", + "dev": true + }, + "clap": { + "version": "https://registry.npmjs.org/clap/-/clap-1.2.0.tgz", + "integrity": "sha1-WckP4+E3EEdG/xlGmiemNP9oyFc=", + "dev": true + }, + "classnames": { + "version": "https://registry.npmjs.org/classnames/-/classnames-2.2.5.tgz", + "integrity": "sha1-+zgB1FNGdknvNgPH1hoCvRKb3m0=" + }, + "clean-css": { + "version": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.4.tgz", + "integrity": "sha1-7siBHbJ0V+AHjYypIfqBty+oK/Q=", + "dev": true + }, + "cli-cursor": { + "version": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "dev": true + }, + "cli-table": { + "version": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.1.tgz", + "integrity": "sha1-9TsFJmqLGguTSz0IIebi3FkUriM=", + "dev": true, + "dependencies": { + "colors": { + "version": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", + "dev": true + } + } + }, + "cli-usage": { + "version": "https://registry.npmjs.org/cli-usage/-/cli-usage-0.1.4.tgz", + "integrity": "sha1-fAHg3HBsI0s5yTODjI4gshdXduI=", + "dev": true + }, + "cli-width": { + "version": "https://registry.npmjs.org/cli-width/-/cli-width-2.1.0.tgz", + "integrity": "sha1-sjTKIJsp72b8UY2bmNWEewDt8Ao=", + "dev": true + }, + "cliui": { + "version": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dependencies": { + "wordwrap": { + "version": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" + } + } + }, + "clone": { + "version": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", + "integrity": "sha1-Jgt6meux7f4kdTgXX3gyQ8sZ0Uk=" + }, + "co": { + "version": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "coa": { + "version": "https://registry.npmjs.org/coa/-/coa-1.0.3.tgz", + "integrity": "sha1-G1Sl4dz3fJkEVdTe6pjFZEFtyJM=", + "dev": true + }, + "code-point-at": { + "version": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "color": { + "version": "https://registry.npmjs.org/color/-/color-0.11.4.tgz", + "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=", + "dev": true + }, + "color-convert": { + "version": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", + "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=", + "dev": true + }, + "color-name": { + "version": "https://registry.npmjs.org/color-name/-/color-name-1.1.2.tgz", + "integrity": "sha1-XIq3K2S9IhXWF66VWeuxSEdc+Y0=", + "dev": true + }, + "color-string": { + "version": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", + "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=", + "dev": true + }, + "colormin": { + "version": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz", + "integrity": "sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=", + "dev": true + }, + "colors": { + "version": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true + }, + "combined-stream": { + "version": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "dev": true + }, + "commander": { + "version": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "dev": true + }, + "commondir": { + "version": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" + }, + "component-bind": { + "version": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", + "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=" + }, + "component-classes": { + "version": "https://registry.npmjs.org/component-classes/-/component-classes-1.2.6.tgz", + "integrity": "sha1-xkI5TDYYpNiwuJGe/Mu9kw5c1pE=" + }, + "component-emitter": { + "version": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" + }, + "component-indexof": { + "version": "https://registry.npmjs.org/component-indexof/-/component-indexof-0.0.3.tgz", + "integrity": "sha1-EdCRMSI5648yyPJa6csAL/6NPCQ=" + }, + "component-inherit": { + "version": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", + "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=" + }, + "compressible": { + "version": "https://registry.npmjs.org/compressible/-/compressible-2.0.10.tgz", + "integrity": "sha1-/tocf3YXkScyspv4zyYlKiC57s0=", + "dev": true + }, + "compression": { + "version": "https://registry.npmjs.org/compression/-/compression-1.6.2.tgz", + "integrity": "sha1-zOsSHsydCcUtetDDNQ6pPd1AK8M=", + "dev": true, + "dependencies": { + "debug": { + "version": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true + }, + "ms": { + "version": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true + } + } + }, + "concat-map": { + "version": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", + "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "dev": true + }, + "connect-history-api-fallback": { + "version": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.3.0.tgz", + "integrity": "sha1-5R0X+PDvDbkKZP20feMFFVbp8Wk=", + "dev": true + }, + "console-browserify": { + "version": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=" + }, + "constants-browserify": { + "version": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" + }, + "contains-path": { + "version": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", + "dev": true + }, + "content-disposition": { + "version": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", + "dev": true + }, + "content-type": { + "version": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz", + "integrity": "sha1-t9ETrueo3Se9IRM8TcJSnfFyHu0=", + "dev": true + }, + "content-type-parser": { + "version": "https://registry.npmjs.org/content-type-parser/-/content-type-parser-1.0.1.tgz", + "integrity": "sha1-w+VpiMU8ZRJ/tG1AMqOpACRv3JQ=", + "dev": true + }, + "convert-source-map": { + "version": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", + "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=" + }, + "cookie": { + "version": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "dev": true + }, + "cookie-signature": { + "version": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "core-js": { + "version": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", + "integrity": "sha1-TekR5mew6ukSTjQlS1OupvxhjT4=" + }, + "core-util-is": { + "version": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "cosmiconfig": { + "version": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-2.1.3.tgz", + "integrity": "sha1-lSdx6w3dwcs/ovb75RpSLpOz7go=", + "dev": true, + "dependencies": { + "minimist": { + "version": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "create-react-class": { + "version": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.6.0.tgz", + "integrity": "sha1-q0SEl8JlZuHilBPogyB9V8/nvtQ=" + }, + "cross-spawn": { + "version": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", + "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", + "dev": true + }, + "cryptiles": { + "version": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "dev": true + }, + "crypto-browserify": { + "version": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.3.0.tgz", + "integrity": "sha1-ufx1u0oO1h3PHNXa6W6zDJw+UGw=" + }, + "css-animation": { + "version": "https://registry.npmjs.org/css-animation/-/css-animation-1.3.2.tgz", + "integrity": "sha1-31FYIO9ZA3M60tsJmUA7MDe4uIA=" + }, + "css-color-names": { + "version": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", + "dev": true + }, + "css-loader": { + "version": "https://registry.npmjs.org/css-loader/-/css-loader-0.26.1.tgz", + "integrity": "sha1-K6fyATG5NZdJaz6btQB4WknNKeo=", + "dev": true + }, + "css-select": { + "version": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "dev": true + }, + "css-selector-tokenizer": { + "version": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz", + "integrity": "sha1-5piEdK6MlTR3v15+/s/OzNnPTIY=", + "dev": true, + "dependencies": { + "regexpu-core": { + "version": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", + "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", + "dev": true + } + } + }, + "css-vendor": { + "version": "https://registry.npmjs.org/css-vendor/-/css-vendor-0.3.8.tgz", + "integrity": "sha1-ZCHP0wNM5mT+dnOXL9ARn8KJQfo=" + }, + "css-what": { + "version": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz", + "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=", + "dev": true + }, + "cssesc": { + "version": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", + "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=", + "dev": true + }, + "cssnano": { + "version": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz", + "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=", + "dev": true + }, + "csso": { + "version": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz", + "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=", + "dev": true + }, + "cssom": { + "version": "https://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz", + "integrity": "sha1-uANhcMefB6kP8vFuIihAJ6JDhIs=", + "dev": true + }, + "cssstyle": { + "version": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz", + "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=", + "dev": true + }, + "d": { + "version": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", + "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "dev": true + }, + "damerau-levenshtein": { + "version": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.4.tgz", + "integrity": "sha1-AxkcQyy27qFou3fzpV/9zLiXhRQ=", + "dev": true + }, + "dashdash": { + "version": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "dependencies": { + "assert-plus": { + "version": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "date-now": { + "version": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=" + }, + "debug": { + "version": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=" + }, + "decamelize": { + "version": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "deep-diff": { + "version": "https://registry.npmjs.org/deep-diff/-/deep-diff-0.3.8.tgz", + "integrity": "sha1-wB3mPvsO7JeYgB1Ax+Da4ltYLIQ=" + }, + "deep-is": { + "version": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "default-require-extensions": { + "version": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", + "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", + "dev": true + }, + "defined": { + "version": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", + "dev": true + }, + "del": { + "version": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "dev": true + }, + "delayed-stream": { + "version": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "depd": { + "version": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz", + "integrity": "sha1-4b2Cxqq2ztlluXuIsX7T5SjKGMM=", + "dev": true + }, + "destroy": { + "version": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-indent": { + "version": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=" + }, + "detect-port": { + "version": "https://registry.npmjs.org/detect-port/-/detect-port-1.1.0.tgz", + "integrity": "sha1-/edXRZHqPedERXgmQ8P5IbKkYYw=", + "dev": true + }, + "diff": { + "version": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", + "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=", + "dev": true + }, + "doctrine": { + "version": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "dev": true, + "dependencies": { + "isarray": { + "version": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + } + } + }, + "dom-align": { + "version": "https://registry.npmjs.org/dom-align/-/dom-align-1.6.2.tgz", + "integrity": "sha1-sU5kkXwl3mtAVSJzObTWT0t9uIU=" + }, + "dom-converter": { + "version": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.1.4.tgz", + "integrity": "sha1-pF71cnuJDJv/5tfIduexnLDhfzs=", + "dev": true, + "dependencies": { + "utila": { + "version": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz", + "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=", + "dev": true + } + } + }, + "dom-helpers": { + "version": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.2.1.tgz", + "integrity": "sha1-MgPgf+0he9H0JLAZc1WC/Deyglo=" + }, + "dom-serializer": { + "version": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", + "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "dev": true, + "dependencies": { + "domelementtype": { + "version": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=", + "dev": true + } + } + }, + "domain-browser": { + "version": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz", + "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=" + }, + "domelementtype": { + "version": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", + "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=", + "dev": true + }, + "domhandler": { + "version": "https://registry.npmjs.org/domhandler/-/domhandler-2.1.0.tgz", + "integrity": "sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ=", + "dev": true + }, + "domutils": { + "version": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dev": true + }, + "dotenv": { + "version": "https://registry.npmjs.org/dotenv/-/dotenv-2.0.0.tgz", + "integrity": "sha1-vXWcNXqqcDZeAclrewvsCKbg2Uk=", + "dev": true + }, + "duplexer": { + "version": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", + "dev": true + }, + "ecc-jsbn": { + "version": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "dev": true, + "optional": true + }, + "ee-first": { + "version": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "electron-to-chromium": { + "version": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.14.tgz", + "integrity": "sha1-ZK8Pnv08PGrNV9cfg7Scp+6cS0M=", + "dev": true + }, + "emoji-regex": { + "version": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-6.4.2.tgz", + "integrity": "sha1-owtv7jU9QG2Wz7n6dlvcgol+/24=", + "dev": true + }, + "emojis-list": { + "version": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" + }, + "encodeurl": { + "version": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz", + "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=", + "dev": true + }, + "encoding": { + "version": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=" + }, + "engine.io-client": { + "version": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.8.4.tgz", + "integrity": "sha1-n+hd7iWFPKa6viW9KtaHEIY+kcI=", + "dependencies": { + "debug": { + "version": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=" + }, + "ms": { + "version": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=" + } + } + }, + "engine.io-parser": { + "version": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.3.2.tgz", + "integrity": "sha1-k3sHnwAH0Ik+xW1GyyILjLQ1Igo=" + }, + "enhanced-resolve": { + "version": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz", + "integrity": "sha1-TW5omzcl+GCQknzMhs2fFjW4ni4=", + "dependencies": { + "memory-fs": { + "version": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.2.0.tgz", + "integrity": "sha1-8rslNovBIeORwlIN6Slpyu4KApA=" + } + } + }, + "entities": { + "version": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", + "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", + "dev": true + }, + "errno": { + "version": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", + "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=" + }, + "error-ex": { + "version": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "dev": true + }, + "es5-ext": { + "version": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.23.tgz", + "integrity": "sha1-dXi1G+l0IHpUh4IbVlOMIk5Oezg=", + "dev": true + }, + "es6-iterator": { + "version": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.1.tgz", + "integrity": "sha1-jjGcnwRTv1ddN0lAplWSDlnKVRI=", + "dev": true + }, + "es6-map": { + "version": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", + "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", + "dev": true + }, + "es6-set": { + "version": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", + "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", + "dev": true + }, + "es6-symbol": { + "version": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "dev": true + }, + "es6-weak-map": { + "version": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", + "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", + "dev": true + }, + "escape-html": { + "version": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "escodegen": { + "version": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", + "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=", + "dev": true, + "dependencies": { + "estraverse": { + "version": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", + "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=", + "dev": true + }, + "source-map": { + "version": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", + "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=", + "dev": true, + "optional": true + } + } + }, + "escope": { + "version": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", + "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", + "dev": true + }, + "eslint": { + "version": "https://registry.npmjs.org/eslint/-/eslint-3.16.1.tgz", + "integrity": "sha1-m8MfxzQWks93LoBgdQj2fXEcVgk=", + "dev": true, + "dependencies": { + "strip-bom": { + "version": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, + "eslint-config-react-app": { + "version": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-0.6.2.tgz", + "integrity": "sha1-7lNcuq+eNXbqFrma/nIDU9hzDsA=", + "dev": true + }, + "eslint-import-resolver-node": { + "version": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.2.3.tgz", + "integrity": "sha1-Wt2BBujJKNssuiMrzZ76hG49oWw=", + "dev": true + }, + "eslint-loader": { + "version": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-1.6.0.tgz", + "integrity": "sha1-OPmh5sYCpPHz81FiiXJuXSbm4WU=", + "dev": true + }, + "eslint-module-utils": { + "version": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-1.0.0.tgz", + "integrity": "sha1-xKV/06U+/YQmzC1VUKraubvQX9A=", + "dev": true, + "dependencies": { + "debug": { + "version": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true + }, + "ms": { + "version": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true + } + } + }, + "eslint-plugin-flowtype": { + "version": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.21.0.tgz", + "integrity": "sha1-pH6Fq83RgdN6M2BUvVUhSa44fZw=", + "dev": true + }, + "eslint-plugin-import": { + "version": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.0.1.tgz", + "integrity": "sha1-3P6WNX1Haz+CJXDULCm+xm9dnFw=", + "dev": true, + "dependencies": { + "doctrine": { + "version": "https://registry.npmjs.org/doctrine/-/doctrine-1.3.0.tgz", + "integrity": "sha1-E+dWgrVVGEJCdvfBc3g0Vu+RPSY=", + "dev": true + }, + "isarray": { + "version": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + } + } + }, + "eslint-plugin-jsx-a11y": { + "version": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-4.0.0.tgz", + "integrity": "sha1-d5uw/nsI2lZKQiYkkR3hAGHgSO4=", + "dev": true + }, + "eslint-plugin-react": { + "version": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-6.4.1.tgz", + "integrity": "sha1-fRqt50fbFYkvce7h/qSt35e8+is=", + "dev": true + }, + "espree": { + "version": "https://registry.npmjs.org/espree/-/espree-3.4.3.tgz", + "integrity": "sha1-KRC1zNSc6JPC//+qtP2LOjG4I3Q=", + "dev": true, + "dependencies": { + "acorn": { + "version": "https://registry.npmjs.org/acorn/-/acorn-5.0.3.tgz", + "integrity": "sha1-xGDfCEkUY/AozLguqzcwvwEIez0=", + "dev": true + } + } + }, + "esprima": { + "version": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "dev": true + }, + "esrecurse": { + "version": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz", + "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=", + "dev": true + }, + "estraverse": { + "version": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "esutils": { + "version": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + }, + "etag": { + "version": "https://registry.npmjs.org/etag/-/etag-1.8.0.tgz", + "integrity": "sha1-b2Ma7zNtbEY2K1F2QETOIWvjwFE=", + "dev": true + }, + "event-emitter": { + "version": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "dev": true + }, + "eventemitter3": { + "version": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz", + "integrity": "sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg=", + "dev": true + }, + "events": { + "version": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=" + }, + "eventsource": { + "version": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz", + "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=", + "dev": true + }, + "exec-sh": { + "version": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.0.tgz", + "integrity": "sha1-FPdd4/INKG75MwmbLOUKkDWc7xA=", + "dev": true + }, + "exit-hook": { + "version": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", + "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", + "dev": true + }, + "expand-brackets": { + "version": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=" + }, + "expand-range": { + "version": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=" + }, + "express": { + "version": "https://registry.npmjs.org/express/-/express-4.15.3.tgz", + "integrity": "sha1-urZdDwOqgMNYQIly/HAPkWlEtmI=", + "dev": true, + "dependencies": { + "debug": { + "version": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", + "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", + "dev": true + }, + "path-to-regexp": { + "version": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + } + } + }, + "extend": { + "version": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "dev": true + }, + "extglob": { + "version": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=" + }, + "extract-text-webpack-plugin": { + "version": "https://registry.npmjs.org/extract-text-webpack-plugin/-/extract-text-webpack-plugin-1.0.1.tgz", + "integrity": "sha1-yVvzy6rEnclvHcbgclSfu2VMzSw=", + "dev": true + }, + "extsprintf": { + "version": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", + "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=", + "dev": true + }, + "fast-levenshtein": { + "version": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fastparse": { + "version": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz", + "integrity": "sha1-0eJkOzipTXWDtHkGDmxK/8lAcfg=", + "dev": true + }, + "faye-websocket": { + "version": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.7.3.tgz", + "integrity": "sha1-zEB0x/Sk39A69U3WXDVLE1EyzhE=", + "dev": true + }, + "fb-watchman": { + "version": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-1.9.2.tgz", + "integrity": "sha1-okz0eCf4LTj7Waaa1wt247auc4M=", + "dev": true + }, + "fbjs": { + "version": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.12.tgz", + "integrity": "sha1-ELXZL3bUVXX9Y6IX1OoCvqL47QQ=", + "dependencies": { + "core-js": { + "version": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=" + } + } + }, + "figures": { + "version": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true + }, + "file-entry-cache": { + "version": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "dev": true + }, + "file-loader": { + "version": "https://registry.npmjs.org/file-loader/-/file-loader-0.10.0.tgz", + "integrity": "sha1-u+bbdHSsksf1T9wZfPVH6YtrjhI=", + "dev": true + }, + "filename-regex": { + "version": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=" + }, + "fileset": { + "version": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", + "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", + "dev": true + }, + "filesize": { + "version": "https://registry.npmjs.org/filesize/-/filesize-3.3.0.tgz", + "integrity": "sha1-UxSeo0YOOy4CSWKlFkiqVyz5gSI=", + "dev": true + }, + "fill-range": { + "version": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=" + }, + "finalhandler": { + "version": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.3.tgz", + "integrity": "sha1-70fneVDpmXgOhgIqVg4yF+DQzIk=", + "dev": true, + "dependencies": { + "debug": { + "version": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", + "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", + "dev": true + } + } + }, + "find-cache-dir": { + "version": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", + "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=" + }, + "find-up": { + "version": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=" + }, + "flat-cache": { + "version": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.2.2.tgz", + "integrity": "sha1-+oZxTnLCHbiGAXYezy9VXRq8a5Y=", + "dev": true + }, + "flatten": { + "version": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz", + "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=", + "dev": true + }, + "follow-redirects": { + "version": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.2.4.tgz", + "integrity": "sha1-NV6PTRaHa0P1d7DVziZouXIyFOo=" + }, + "for-in": { + "version": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + }, + "for-own": { + "version": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=" + }, + "forever-agent": { + "version": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", + "dev": true + }, + "formatio": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.1.1.tgz", + "integrity": "sha1-XtPM1jZVEJc4NGXZlhmRAOhhYek=" + }, + "forwarded": { + "version": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz", + "integrity": "sha1-Ge+YdMSuHCl7zweP3mOgm2aoQ2M=", + "dev": true + }, + "fresh": { + "version": "https://registry.npmjs.org/fresh/-/fresh-0.5.0.tgz", + "integrity": "sha1-9HTKXmqSRtb9jglTz6m5yAWvp44=", + "dev": true + }, + "fs-extra": { + "version": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", + "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", + "dev": true + }, + "fs.realpath": { + "version": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.2.tgz", + "integrity": "sha1-MoK3E/s62A7eDp/PRhG1qm/AM/Q=", + "optional": true, + "dependencies": { + "abbrev": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz", + "integrity": "sha1-0FVMIlZjbi9W58LlrRg/hZQo2B8=", + "optional": true + }, + "ajv": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "aproba": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.1.1.tgz", + "integrity": "sha1-ldNgDwdxCqDpKYxyatXs8urLq6s=", + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", + "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", + "optional": true + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "optional": true + }, + "assert-plus": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", + "optional": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "optional": true + }, + "aws-sign2": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", + "optional": true + }, + "aws4": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", + "optional": true + }, + "balanced-match": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "optional": true + }, + "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=" + }, + "boom": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=" + }, + "brace-expansion": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.7.tgz", + "integrity": "sha1-Pv/DxQ4ABTH7cg6v+A8K6O8jz1k=" + }, + "buffer-shims": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=" + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "optional": true + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "optional": true + }, + "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=" + }, + "combined-stream": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "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=" + }, + "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=" + }, + "cryptiles": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "optional": true + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "optional": true, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "optional": true + } + } + }, + "debug": { + "version": "2.6.8", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "optional": true + }, + "deep-extend": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", + "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", + "optional": true + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "optional": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "optional": true + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "optional": true + }, + "extsprintf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", + "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=" + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "optional": true + }, + "form-data": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", + "optional": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fstream": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", + "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=" + }, + "fstream-ignore": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", + "integrity": "sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=", + "optional": true + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "optional": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "optional": true, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "optional": true + } + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==" + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + }, + "har-schema": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", + "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", + "optional": true + }, + "har-validator": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", + "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", + "optional": true + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "optional": true + }, + "hawk": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "optional": true + }, + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=" + }, + "http-signature": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "optional": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=" + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ini": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", + "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", + "optional": 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=" + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "optional": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "optional": true + }, + "jodid25519": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz", + "integrity": "sha1-BtSRIlUJNBlHfUJWM2BuDpB4KWc=", + "optional": true + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "optional": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "optional": true + }, + "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=", + "optional": true + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "optional": true + }, + "jsprim": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", + "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=", + "optional": true, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "optional": true + } + } + }, + "mime-db": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz", + "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=" + }, + "mime-types": { + "version": "2.1.15", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", + "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==" + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "optional": true + }, + "node-pre-gyp": { + "version": "0.6.36", + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.36.tgz", + "integrity": "sha1-22BBEst04NR3VU6bUFsXq936t4Y=", + "optional": true + }, + "nopt": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", + "optional": true + }, + "npmlog": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.0.tgz", + "integrity": "sha512-ocolIkZYZt8UveuiDS0yAkkIjid1o7lPG8cYm05yNYzBn8ykQtaiPMEGp8fY9tKdDgm8okpdKzkvu1y9hUYugA==", + "optional": true + }, + "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.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "optional": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=" + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "optional": true + }, + "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=", + "optional": true + }, + "osenv": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", + "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", + "optional": true + }, + "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=" + }, + "performance-now": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", + "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", + "optional": true + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "optional": true + }, + "qs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", + "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", + "optional": true + }, + "rc": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz", + "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", + "optional": true, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "optional": true + } + } + }, + "readable-stream": { + "version": "2.2.9", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", + "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=" + }, + "request": { + "version": "2.81.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", + "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", + "optional": true + }, + "rimraf": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", + "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=" + }, + "safe-buffer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", + "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=" + }, + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "optional": true + }, + "sntp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "optional": true + }, + "sshpk": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.0.tgz", + "integrity": "sha1-/yo+T9BEl1Vf7Zezmg/YL6+zozw=", + "optional": true, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "optional": true + } + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=" + }, + "string_decoder": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.1.tgz", + "integrity": "sha1-YuIA8DmVWmgQ2N8KM//A8BNmLZg=" + }, + "stringstream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "optional": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=" + }, + "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=", + "optional": true + }, + "tar": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=" + }, + "tar-pack": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.4.0.tgz", + "integrity": "sha1-I74tf2cagzk3bL2wuP4/3r8xeYQ=", + "optional": true + }, + "tough-cookie": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", + "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", + "optional": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "optional": true + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz", + "integrity": "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=", + "optional": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "uuid": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz", + "integrity": "sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE=", + "optional": true + }, + "verror": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", + "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=", + "optional": true + }, + "wide-align": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", + "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", + "optional": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + } + } + }, + "function-bind": { + "version": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.0.tgz", + "integrity": "sha1-FhdnFMgBeY5Ojyz391KUZ7tKV3E=", + "dev": true + }, + "generate-function": { + "version": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", + "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", + "dev": true + }, + "generate-object-property": { + "version": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", + "dev": true + }, + "get-caller-file": { + "version": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "dev": true + }, + "getpass": { + "version": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "dependencies": { + "assert-plus": { + "version": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "glob": { + "version": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", + "dev": true + }, + "glob-base": { + "version": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=" + }, + "glob-parent": { + "version": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=" + }, + "globals": { + "version": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha1-qjiWs+abSH8X4x7SFD1pqOMMLYo=" + }, + "globby": { + "version": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dev": true + }, + "graceful-fs": { + "version": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + }, + "graceful-readlink": { + "version": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "dev": true + }, + "growly": { + "version": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", + "dev": true + }, + "gzip-size": { + "version": "https://registry.npmjs.org/gzip-size/-/gzip-size-3.0.0.tgz", + "integrity": "sha1-VGGI6b3DN/Zzdy+BZgRks4nc5SA=", + "dev": true + }, + "handlebars": { + "version": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.10.tgz", + "integrity": "sha1-PTDHGLCaPZbyPqTMH0A8TTup/08=", + "dev": true, + "dependencies": { + "source-map": { + "version": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true + } + } + }, + "har-schema": { + "version": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", + "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", + "dev": true + }, + "har-validator": { + "version": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", + "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", + "dev": true + }, + "has": { + "version": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", + "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", + "dev": true + }, + "has-ansi": { + "version": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=" + }, + "has-binary": { + "version": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.7.tgz", + "integrity": "sha1-aOYesWIQyVRaClzOBqhzkS/h5ow=" + }, + "has-cors": { + "version": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=" + }, + "has-flag": { + "version": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "hawk": { + "version": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "dev": true + }, + "he": { + "version": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "dev": true + }, + "highcharts": { + "version": "https://registry.npmjs.org/highcharts/-/highcharts-5.0.12.tgz", + "integrity": "sha1-9zuXD+XH8EEAIgtkqnvX+wGdEeI=" + }, + "highcharts-exporting": { + "version": "https://registry.npmjs.org/highcharts-exporting/-/highcharts-exporting-0.1.2.tgz", + "integrity": "sha1-SYUOWk2rKkqI6D6KHxQ7wcIlDa8=" + }, + "highcharts-more": { + "version": "https://registry.npmjs.org/highcharts-more/-/highcharts-more-0.1.2.tgz", + "integrity": "sha1-OMLjhlaex5yL2X/WizhMXqUS76w=" + }, + "history": { + "version": "https://registry.npmjs.org/history/-/history-4.6.3.tgz", + "integrity": "sha1-bXI6hxLFgda+836MJvSu3G64aWc=" + }, + "hoek": { + "version": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "dev": true + }, + "hoist-non-react-statics": { + "version": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz", + "integrity": "sha1-qkSM8JhtVcxAdzsXF0t90GbLfPs=" + }, + "home-or-tmp": { + "version": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=" + }, + "hosted-git-info": { + "version": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.4.2.tgz", + "integrity": "sha1-AHa59GonBQbduq6lZJaJdGBhKmc=", + "dev": true + }, + "html-comment-regex": { + "version": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.1.tgz", + "integrity": "sha1-ZouTd26q5V696POtRkswekljYl4=", + "dev": true + }, + "html-encoding-sniffer": { + "version": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.1.tgz", + "integrity": "sha1-eb96eF6klf5mFl5zQVPzY/9UN9o=", + "dev": true + }, + "html-entities": { + "version": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.0.tgz", + "integrity": "sha1-QZSMr4XOgv7Tbk5qDtNxpmZDeeI=", + "dev": true + }, + "html-minifier": { + "version": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.2.tgz", + "integrity": "sha1-1zvD/0SJQkCIGM5gm/P7DqfvTrc=", + "dev": true, + "dependencies": { + "uglify-js": { + "version": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.0.20.tgz", + "integrity": "sha1-yzWyvP5HgFG28ygr6NtOSt1JoeU=", + "dev": true + } + } + }, + "html-webpack-plugin": { + "version": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-2.24.0.tgz", + "integrity": "sha1-U2l86nmp880fjCOaxx+UnVZzyss=", + "dev": true + }, + "htmlparser2": { + "version": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz", + "integrity": "sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4=", + "dev": true, + "dependencies": { + "domutils": { + "version": "https://registry.npmjs.org/domutils/-/domutils-1.1.6.tgz", + "integrity": "sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU=", + "dev": true + }, + "readable-stream": { + "version": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true + }, + "string_decoder": { + "version": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "http-errors": { + "version": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.1.tgz", + "integrity": "sha1-X4uO2YrKVFZWv1cplzh/kEpyIlc=", + "dev": true + }, + "http-proxy": { + "version": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.16.2.tgz", + "integrity": "sha1-Bt/ykpUr9k2+hHH6nfcwZtTzd0I=", + "dev": true + }, + "http-proxy-middleware": { + "version": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.17.3.tgz", + "integrity": "sha1-lAOCFHFJuFYIT1U0dS1bWoFozR0=", + "dev": true, + "dependencies": { + "is-extglob": { + "version": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true + } + } + }, + "http-signature": { + "version": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "dev": true + }, + "https-browserify": { + "version": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz", + "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=" + }, + "iconv-lite": { + "version": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.18.tgz", + "integrity": "sha1-I9hlaxaq5nQqwpcy6o8DNqR4nPI=" + }, + "icss-replace-symbols": { + "version": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", + "dev": true + }, + "ieee754": { + "version": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", + "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=" + }, + "ignore": { + "version": "https://registry.npmjs.org/ignore/-/ignore-3.3.3.tgz", + "integrity": "sha1-QyNS5XrM2HqzEQ6C0/6g5HgSFW0=", + "dev": true + }, + "immutability-helper": { + "version": "https://registry.npmjs.org/immutability-helper/-/immutability-helper-2.2.2.tgz", + "integrity": "sha1-5+nacos94vrTSiFvQVezJtvMyJI=" + }, + "imurmurhash": { + "version": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indexes-of": { + "version": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, + "indexof": { + "version": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" + }, + "inflight": { + "version": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true + }, + "inherits": { + "version": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "inquirer": { + "version": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", + "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", + "dev": true + }, + "interpret": { + "version": "https://registry.npmjs.org/interpret/-/interpret-0.6.6.tgz", + "integrity": "sha1-/s16GOfOXKar+5U+H4YhOknxYls=" + }, + "invariant": { + "version": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", + "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=" + }, + "invert-kv": { + "version": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "ipaddr.js": { + "version": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.3.0.tgz", + "integrity": "sha1-HgOlL9rYOou7KyXL9JmLTP/NPew=", + "dev": true + }, + "is-absolute-url": { + "version": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", + "dev": true + }, + "is-arrayish": { + "version": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=" + }, + "is-buffer": { + "version": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", + "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=" + }, + "is-builtin-module": { + "version": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true + }, + "is-ci": { + "version": "https://registry.npmjs.org/is-ci/-/is-ci-1.0.10.tgz", + "integrity": "sha1-9zkzayYyNlBhqdSCcM1WrjNpMY4=", + "dev": true + }, + "is-directory": { + "version": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, + "is-dotfile": { + "version": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=" + }, + "is-equal-shallow": { + "version": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=" + }, + "is-extendable": { + "version": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + }, + "is-extglob": { + "version": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + }, + "is-finite": { + "version": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=" + }, + "is-fullwidth-code-point": { + "version": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true + }, + "is-glob": { + "version": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=" + }, + "is-in-browser": { + "version": "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.0.2.tgz", + "integrity": "sha1-9oi+qPHlqtwyROvIcNGIz7m2E88=" + }, + "is-my-json-valid": { + "version": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz", + "integrity": "sha1-8Hndm/2uZe4gOKrorLyGqxCeNpM=", + "dev": true + }, + "is-number": { + "version": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=" + }, + "is-path-cwd": { + "version": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", + "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", + "dev": true + }, + "is-path-inside": { + "version": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz", + "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=", + "dev": true + }, + "is-plain-obj": { + "version": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, + "is-posix-bracket": { + "version": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=" + }, + "is-primitive": { + "version": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=" + }, + "is-property": { + "version": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", + "dev": true + }, + "is-resolvable": { + "version": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz", + "integrity": "sha1-jfV8YeouPFAUCNEA+wE8+NbgzGI=", + "dev": true + }, + "is-stream": { + "version": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-svg": { + "version": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz", + "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=", + "dev": true + }, + "is-typedarray": { + "version": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-utf8": { + "version": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "isarray": { + "version": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "isexe": { + "version": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dependencies": { + "isarray": { + "version": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + } + } + }, + "isomorphic-fetch": { + "version": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", + "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=" + }, + "isstream": { + "version": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "istanbul-api": { + "version": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.1.9.tgz", + "integrity": "sha1-KCeSDTgNQobYV9V6KWioQduKfsg=", + "dev": true, + "dependencies": { + "async": { + "version": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", + "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", + "dev": true + } + } + }, + "istanbul-lib-coverage": { + "version": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz", + "integrity": "sha1-c7+5mIhSmUFck9OKPprfeEp3qdo=", + "dev": true + }, + "istanbul-lib-hook": { + "version": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.0.7.tgz", + "integrity": "sha1-3WYH8DB2V4/n1vKmMM8UO0m6zdw=", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.7.2.tgz", + "integrity": "sha1-YBSwPTRw+3djjVgCUIwlXAYxLlY=", + "dev": true + }, + "istanbul-lib-report": { + "version": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz", + "integrity": "sha1-8OVfVmVf+jQiIIC3oM1HYOFAX8k=", + "dev": true, + "dependencies": { + "supports-color": { + "version": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true + } + } + }, + "istanbul-lib-source-maps": { + "version": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.1.tgz", + "integrity": "sha1-pv4ay6jOCO68Y45XLilNJnAIqgw=", + "dev": true + }, + "istanbul-reports": { + "version": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.1.tgz", + "integrity": "sha1-BCvlyJ4XW8P4ZSPKqynAFOd/7k4=", + "dev": true + }, + "jest": { + "version": "https://registry.npmjs.org/jest/-/jest-18.1.0.tgz", + "integrity": "sha1-vOvx4gPe5cKtIJHIBTAKND2ebH0=", + "dev": true, + "dependencies": { + "callsites": { + "version": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + }, + "camelcase": { + "version": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "cliui": { + "version": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true + }, + "jest-cli": { + "version": "https://registry.npmjs.org/jest-cli/-/jest-cli-18.1.0.tgz", + "integrity": "sha1-Xq027K1CCBfCybqiqnV09jJXs9Y=", + "dev": true + }, + "yargs": { + "version": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", + "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", + "dev": true + } + } + }, + "jest-changed-files": { + "version": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-17.0.2.tgz", + "integrity": "sha1-9WV3WHNplvWQpRuH5ck2nZBLp7c=", + "dev": true + }, + "jest-config": { + "version": "https://registry.npmjs.org/jest-config/-/jest-config-18.1.0.tgz", + "integrity": "sha1-YRF0Cm1Iqrhv9anmqwuYvZk7b/Q=", + "dev": true + }, + "jest-diff": { + "version": "https://registry.npmjs.org/jest-diff/-/jest-diff-18.1.0.tgz", + "integrity": "sha1-T/eedN2YjBORlbNl3GXYf2BvSAM=", + "dev": true + }, + "jest-environment-jsdom": { + "version": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-18.1.0.tgz", + "integrity": "sha1-GLQvDE6iuunzbKs2ObHo+MOE4k4=", + "dev": true + }, + "jest-environment-node": { + "version": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-18.1.0.tgz", + "integrity": "sha1-TWeXVyyN2pms9frmlutilFVHx3k=", + "dev": true + }, + "jest-file-exists": { + "version": "https://registry.npmjs.org/jest-file-exists/-/jest-file-exists-17.0.0.tgz", + "integrity": "sha1-f2Prc6HEOhP0Yb4mF2i0WvLN0Wk=", + "dev": true + }, + "jest-haste-map": { + "version": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-18.1.0.tgz", + "integrity": "sha1-BoOcdLdwpAwaEGlohR340oHAg3U=", + "dev": true + }, + "jest-jasmine2": { + "version": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-18.1.0.tgz", + "integrity": "sha1-CU4QTCwYlwh2bHcmO7Kuy1hgqAs=", + "dev": true + }, + "jest-matcher-utils": { + "version": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-18.1.0.tgz", + "integrity": "sha1-GsRlGVXuKmDO8ef8yYzf13PA+TI=", + "dev": true + }, + "jest-matchers": { + "version": "https://registry.npmjs.org/jest-matchers/-/jest-matchers-18.1.0.tgz", + "integrity": "sha1-A0FIS/h6H9C6wKTSyJnit3o/Hq0=", + "dev": true + }, + "jest-mock": { + "version": "https://registry.npmjs.org/jest-mock/-/jest-mock-18.0.0.tgz", + "integrity": "sha1-XCSIRuoz+lWLUm9TEqtKZ2XkibM=", + "dev": true + }, + "jest-resolve": { + "version": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-18.1.0.tgz", + "integrity": "sha1-aACsy1NmWMkGzV4p3kErGrmsJJs=", + "dev": true + }, + "jest-resolve-dependencies": { + "version": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-18.1.0.tgz", + "integrity": "sha1-gTT7XK9Zye2EL+AVKrAcUnEfG7s=", + "dev": true + }, + "jest-runtime": { + "version": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-18.1.0.tgz", + "integrity": "sha1-Or/WhxdbIfw7haK4BkOZ6ZeFmSI=", + "dev": true, + "dependencies": { + "camelcase": { + "version": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "cliui": { + "version": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true + }, + "yargs": { + "version": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", + "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", + "dev": true + } + } + }, + "jest-snapshot": { + "version": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-18.1.0.tgz", + "integrity": "sha1-VbltLuY5ybznb4fyo/1Atxx6WRY=", + "dev": true + }, + "jest-util": { + "version": "https://registry.npmjs.org/jest-util/-/jest-util-18.1.0.tgz", + "integrity": "sha1-OpnDIRSrF/hL4JQ4JScAbm1L/Go=", + "dev": true + }, + "js-base64": { + "version": "https://registry.npmjs.org/js-base64/-/js-base64-2.1.9.tgz", + "integrity": "sha1-8OgK4DmkvWVLXygfyT8EqRSn/M4=", + "dev": true + }, + "js-tokens": { + "version": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.1.tgz", + "integrity": "sha1-COnxMkhKLEWjCQfp3E1VZ7fxFNc=" + }, + "js-yaml": { + "version": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", + "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=", + "dev": true + }, + "jsbn": { + "version": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, + "optional": true + }, + "jsdom": { + "version": "https://registry.npmjs.org/jsdom/-/jsdom-9.12.0.tgz", + "integrity": "sha1-6MVG//ywbADUgzyoRBD+1/igl9Q=", + "dev": true, + "dependencies": { + "acorn": { + "version": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "dev": true + } + } + }, + "jsesc": { + "version": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=" + }, + "json-loader": { + "version": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.4.tgz", + "integrity": "sha1-i6oTZaYy9Yo8RtIBdfxgAsluN94=", + "dev": true + }, + "json-schema": { + "version": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-stable-stringify": { + "version": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true + }, + "json-stringify-safe": { + "version": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json3": { + "version": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", + "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=" + }, + "json5": { + "version": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=" + }, + "jsonfile": { + "version": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "dev": true + }, + "jsonify": { + "version": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, + "jsonpointer": { + "version": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", + "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", + "dev": true + }, + "jsprim": { + "version": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", + "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=", + "dev": true, + "dependencies": { + "assert-plus": { + "version": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "jss": { + "version": "https://registry.npmjs.org/jss/-/jss-7.1.7.tgz", + "integrity": "sha1-8qziCCR/GmgWbdIMzWnIZhBfpAQ=" + }, + "jss-camel-case": { + "version": "https://registry.npmjs.org/jss-camel-case/-/jss-camel-case-4.0.0.tgz", + "integrity": "sha1-Oe8qE3qqHi8WCrgmhFMF+O+rz9U=" + }, + "jss-compose": { + "version": "https://registry.npmjs.org/jss-compose/-/jss-compose-3.0.1.tgz", + "integrity": "sha1-CsB/ILrx1SPCEQFtOD2rCNz+QYY=" + }, + "jss-default-unit": { + "version": "https://registry.npmjs.org/jss-default-unit/-/jss-default-unit-6.1.2.tgz", + "integrity": "sha1-bEYBVBKbe+MEpKTc0rKDWElUrsU=" + }, + "jss-expand": { + "version": "https://registry.npmjs.org/jss-expand/-/jss-expand-3.0.1.tgz", + "integrity": "sha1-kPGzCtCrcA5mbqVPcYY0HFDX/u0=" + }, + "jss-extend": { + "version": "https://registry.npmjs.org/jss-extend/-/jss-extend-4.0.1.tgz", + "integrity": "sha1-a3FqGyF7oycV28tplA7GezXEFdw=" + }, + "jss-global": { + "version": "https://registry.npmjs.org/jss-global/-/jss-global-1.0.1.tgz", + "integrity": "sha1-NnMXePbYZJEQYR98F4281g/ZKyQ=" + }, + "jss-nested": { + "version": "https://registry.npmjs.org/jss-nested/-/jss-nested-4.0.1.tgz", + "integrity": "sha1-9QzCBkMMipIMzVTjt1b3/HJFUTA=" + }, + "jss-preset-default": { + "version": "https://registry.npmjs.org/jss-preset-default/-/jss-preset-default-2.0.0.tgz", + "integrity": "sha1-A2jZliazEGfo0Eqzx8sXuoNU1CI=" + }, + "jss-props-sort": { + "version": "https://registry.npmjs.org/jss-props-sort/-/jss-props-sort-4.0.0.tgz", + "integrity": "sha1-70I5xnlcowTBjc6eA5WheJ7Z94o=" + }, + "jss-vendor-prefixer": { + "version": "https://registry.npmjs.org/jss-vendor-prefixer/-/jss-vendor-prefixer-5.1.0.tgz", + "integrity": "sha1-Wbc1RN6B5rLv1x9tO3RGcYJoZaI=" + }, + "jsx-ast-utils": { + "version": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz", + "integrity": "sha1-OGchPo3Xm/Ho8jAMDPwe+xgsDfE=", + "dev": true + }, + "keycode": { + "version": "https://registry.npmjs.org/keycode/-/keycode-2.1.9.tgz", + "integrity": "sha1-lkojxU5IiUBbSGGlyfBIDUUUHfo=" + }, + "kind-of": { + "version": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=" + }, + "klaw": { + "version": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", + "dev": true + }, + "lazy-cache": { + "version": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" + }, + "lcid": { + "version": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true + }, + "levn": { + "version": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true + }, + "load-json-file": { + "version": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true + }, + "loader-utils": { + "version": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=" + }, + "lodash": { + "version": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + }, + "lodash-es": { + "version": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.4.tgz", + "integrity": "sha1-3MHXVS4VCgZABzupyzHXDwMpUOc=" + }, + "lodash._arraycopy": { + "version": "https://registry.npmjs.org/lodash._arraycopy/-/lodash._arraycopy-3.0.0.tgz", + "integrity": "sha1-due3wfH7klRzdIeKVi7Qaj5Q9uE=", + "dev": true + }, + "lodash._arrayeach": { + "version": "https://registry.npmjs.org/lodash._arrayeach/-/lodash._arrayeach-3.0.0.tgz", + "integrity": "sha1-urFWsqkNPxu9XGU0AzSeXlkz754=", + "dev": true + }, + "lodash._baseassign": { + "version": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", + "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", + "dev": true + }, + "lodash._baseclone": { + "version": "https://registry.npmjs.org/lodash._baseclone/-/lodash._baseclone-3.3.0.tgz", + "integrity": "sha1-MDUZv2OT/n5C802LYw73eU41Qrc=", + "dev": true + }, + "lodash._basecopy": { + "version": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", + "dev": true + }, + "lodash._basefor": { + "version": "https://registry.npmjs.org/lodash._basefor/-/lodash._basefor-3.0.3.tgz", + "integrity": "sha1-dVC06SGO8J+tJDQ7YSAhx5tMIMI=", + "dev": true + }, + "lodash._bindcallback": { + "version": "https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz", + "integrity": "sha1-5THCdkTPi1epnhftlbNcdIeJOS4=", + "dev": true + }, + "lodash._getnative": { + "version": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=" + }, + "lodash.assign": { + "version": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", + "dev": true + }, + "lodash.camelcase": { + "version": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", + "dev": true + }, + "lodash.clonedeep": { + "version": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-3.0.2.tgz", + "integrity": "sha1-oKHkDYKl6on/WxR7hETtY9koJ9s=", + "dev": true + }, + "lodash.cond": { + "version": "https://registry.npmjs.org/lodash.cond/-/lodash.cond-4.5.2.tgz", + "integrity": "sha1-9HGh2khr5g9quVXRcRVSPdHSVdU=", + "dev": true + }, + "lodash.isarguments": { + "version": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=" + }, + "lodash.isarray": { + "version": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=" + }, + "lodash.keys": { + "version": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=" + }, + "lodash.memoize": { + "version": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, + "lodash.pickby": { + "version": "https://registry.npmjs.org/lodash.pickby/-/lodash.pickby-4.6.0.tgz", + "integrity": "sha1-feoh2MGNdwOifHBMFdO4SmfjOv8=", + "dev": true + }, + "lodash.uniq": { + "version": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "lolex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-1.3.2.tgz", + "integrity": "sha1-fD2mL/yzDw9agKJWbKJORdigHzE=" + }, + "longest": { + "version": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" + }, + "loose-envify": { + "version": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=" + }, + "lower-case": { + "version": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", + "dev": true + }, + "lru-cache": { + "version": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", + "integrity": "sha1-Yi4y6CSItJJ5EUpPns9F581rulU=", + "dev": true + }, + "macaddress": { + "version": "https://registry.npmjs.org/macaddress/-/macaddress-0.2.8.tgz", + "integrity": "sha1-WQTcU3w57G2+/q6QIycTX6hRHxI=", + "dev": true + }, + "makeerror": { + "version": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "dev": true + }, + "marked": { + "version": "https://registry.npmjs.org/marked/-/marked-0.3.6.tgz", + "integrity": "sha1-ssbGGPzOzk74bE/Gy4p8v1rtqNc=", + "dev": true + }, + "marked-terminal": { + "version": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-1.7.0.tgz", + "integrity": "sha1-yMRgiBx3LHYEtkNnAH7l938SWQQ=", + "dev": true + }, + "math-expression-evaluator": { + "version": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz", + "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=", + "dev": true + }, + "media-typer": { + "version": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "memory-fs": { + "version": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.3.0.tgz", + "integrity": "sha1-e8xrYp46Q+hx1+Kaymrop/FcuyA=" + }, + "merge": { + "version": "https://registry.npmjs.org/merge/-/merge-1.2.0.tgz", + "integrity": "sha1-dTHjnUlJwoGma4xabgJl6LBYlNo=", + "dev": true + }, + "merge-descriptors": { + "version": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "methods": { + "version": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "micromatch": { + "version": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=" + }, + "mime": { + "version": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz", + "integrity": "sha1-WCA+7Ybjpe8XrtK32evUfwpg3RA=", + "dev": true + }, + "mime-db": { + "version": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz", + "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=", + "dev": true + }, + "mime-types": { + "version": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", + "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=", + "dev": true + }, + "minimatch": { + "version": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=" + }, + "minimist": { + "version": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + }, + "mkdirp": { + "version": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=" + }, + "ms": { + "version": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "mute-stream": { + "version": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", + "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=", + "dev": true + }, + "nan": { + "version": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz", + "integrity": "sha1-5P805slf37WuzAjeZZb0NgWn20U=", + "optional": true + }, + "natural-compare": { + "version": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "ncname": { + "version": "https://registry.npmjs.org/ncname/-/ncname-1.0.0.tgz", + "integrity": "sha1-W1etGLHKCShk72Kwse2BlPODtxw=", + "dev": true + }, + "negotiator": { + "version": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", + "dev": true + }, + "no-case": { + "version": "https://registry.npmjs.org/no-case/-/no-case-2.3.1.tgz", + "integrity": "sha1-euuhxzpSGEJlVUt9wDuvcg34AIE=", + "dev": true + }, + "node-emoji": { + "version": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.5.1.tgz", + "integrity": "sha1-/ZGOQSdpv4xEgFEjgjOECyr/FqE=", + "dev": true + }, + "node-fetch": { + "version": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.1.tgz", + "integrity": "sha1-iZyz0KPJL5UsR/G4dvTIrqvUANU=" + }, + "node-int64": { + "version": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "dev": true + }, + "node-libs-browser": { + "version": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-0.7.0.tgz", + "integrity": "sha1-PicsCBnjCJNeJmdECNevDhSRuDs=", + "dependencies": { + "string_decoder": { + "version": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + } + } + }, + "node-notifier": { + "version": "https://registry.npmjs.org/node-notifier/-/node-notifier-4.6.1.tgz", + "integrity": "sha1-BW0UJE89zBzq3+aK+c/wxUc6M/M=", + "dev": true, + "dependencies": { + "minimist": { + "version": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "normalize-package-data": { + "version": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.8.tgz", + "integrity": "sha1-2Bntoqne29H/pWPqQHHZNngilbs=", + "dev": true + }, + "normalize-path": { + "version": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=" + }, + "normalize-range": { + "version": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "normalize-url": { + "version": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", + "dev": true + }, + "nth-check": { + "version": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", + "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", + "dev": true + }, + "num2fraction": { + "version": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, + "number-is-nan": { + "version": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "nwmatcher": { + "version": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.1.tgz", + "integrity": "sha1-eumwew6oBNt+JfBctf5Al9TklJ8=", + "dev": true + }, + "oauth-sign": { + "version": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "dev": true + }, + "object-assign": { + "version": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-component": { + "version": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", + "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=" + }, + "object.omit": { + "version": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=" + }, + "on-finished": { + "version": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true + }, + "on-headers": { + "version": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", + "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=", + "dev": true + }, + "once": { + "version": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true + }, + "onetime": { + "version": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "dev": true + }, + "open": { + "version": "https://registry.npmjs.org/open/-/open-0.0.5.tgz", + "integrity": "sha1-QsPhjslUZra/DcQvOilFw/DK2Pw=", + "dev": true + }, + "opn": { + "version": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz", + "integrity": "sha1-erwi5kTf9jsKltWrfyeQwPAavJU=", + "dev": true + }, + "optimist": { + "version": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=" + }, + "optionator": { + "version": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true, + "dependencies": { + "wordwrap": { + "version": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + } + } + }, + "options": { + "version": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", + "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=" + }, + "original": { + "version": "https://registry.npmjs.org/original/-/original-1.0.0.tgz", + "integrity": "sha1-kUf5P6FpbQS+YeAb1QuurKZWvTs=", + "dev": true, + "dependencies": { + "url-parse": { + "version": "https://registry.npmjs.org/url-parse/-/url-parse-1.0.5.tgz", + "integrity": "sha1-CFSGBCKv3P7+tsllxmLUgAFpkns=", + "dev": true + } + } + }, + "os-browserify": { + "version": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.2.1.tgz", + "integrity": "sha1-Y/xMzuXS13Y9Jrv4YBB45sLgBE8=" + }, + "os-homedir": { + "version": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + }, + "os-locale": { + "version": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true + }, + "os-tmpdir": { + "version": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + }, + "pako": { + "version": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=" + }, + "param-case": { + "version": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", + "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", + "dev": true + }, + "parse-glob": { + "version": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=" + }, + "parse-json": { + "version": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true + }, + "parse5": { + "version": "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz", + "integrity": "sha1-m387DeMr543CQBsXVzzK8Pb1nZQ=", + "dev": true + }, + "parsejson": { + "version": "https://registry.npmjs.org/parsejson/-/parsejson-0.0.3.tgz", + "integrity": "sha1-q343WfIJ7OmUN5c/fQ8fZK4OZKs=" + }, + "parseqs": { + "version": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", + "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=" + }, + "parseuri": { + "version": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", + "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=" + }, + "parseurl": { + "version": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz", + "integrity": "sha1-yKuMkiO6NIiKpkopeyiFO+wY2lY=", + "dev": true + }, + "path-browserify": { + "version": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", + "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=" + }, + "path-exists": { + "version": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=" + }, + "path-is-absolute": { + "version": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-is-inside": { + "version": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-parse": { + "version": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "dev": true + }, + "path-to-regexp": { + "version": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", + "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=" + }, + "path-type": { + "version": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true + }, + "pbkdf2-compat": { + "version": "https://registry.npmjs.org/pbkdf2-compat/-/pbkdf2-compat-2.0.1.tgz", + "integrity": "sha1-tuDI+plJTZTgURV1gCpZpcFC8og=" + }, + "performance-now": { + "version": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", + "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", + "dev": true + }, + "pify": { + "version": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + }, + "pinkie-promise": { + "version": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=" + }, + "pkg-dir": { + "version": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=" + }, + "pkg-up": { + "version": "https://registry.npmjs.org/pkg-up/-/pkg-up-1.0.0.tgz", + "integrity": "sha1-Pgj7RhUlxEIWJKM7n35tCvWwWiY=", + "dev": true + }, + "pluralize": { + "version": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", + "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=", + "dev": true + }, + "postcss": { + "version": "https://registry.npmjs.org/postcss/-/postcss-5.2.17.tgz", + "integrity": "sha1-z09Ze4ZNZcikkrLqvp1wbIecOIs=", + "dev": true, + "dependencies": { + "supports-color": { + "version": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true + } + } + }, + "postcss-calc": { + "version": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz", + "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=", + "dev": true + }, + "postcss-colormin": { + "version": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz", + "integrity": "sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=", + "dev": true + }, + "postcss-convert-values": { + "version": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz", + "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=", + "dev": true + }, + "postcss-discard-comments": { + "version": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz", + "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=", + "dev": true + }, + "postcss-discard-duplicates": { + "version": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz", + "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=", + "dev": true + }, + "postcss-discard-empty": { + "version": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz", + "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=", + "dev": true + }, + "postcss-discard-overridden": { + "version": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz", + "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=", + "dev": true + }, + "postcss-discard-unused": { + "version": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz", + "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=", + "dev": true + }, + "postcss-filter-plugins": { + "version": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz", + "integrity": "sha1-bYWGJTTXNaxCDkqFgG4fXUKG2Ew=", + "dev": true + }, + "postcss-load-config": { + "version": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-1.2.0.tgz", + "integrity": "sha1-U56a/J3chiASHr+djDZz4M5Q0oo=", + "dev": true + }, + "postcss-load-options": { + "version": "https://registry.npmjs.org/postcss-load-options/-/postcss-load-options-1.2.0.tgz", + "integrity": "sha1-sJixVZ3awt8EvAuzdfmaXP4rbYw=", + "dev": true + }, + "postcss-load-plugins": { + "version": "https://registry.npmjs.org/postcss-load-plugins/-/postcss-load-plugins-2.3.0.tgz", + "integrity": "sha1-dFdoEWWZrKLwCfrUJrABdQSdjZI=", + "dev": true + }, + "postcss-loader": { + "version": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-1.2.2.tgz", + "integrity": "sha1-u/ThmozehVl+DJv9lgFf53WhV6w=", + "dev": true + }, + "postcss-merge-idents": { + "version": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz", + "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=", + "dev": true + }, + "postcss-merge-longhand": { + "version": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz", + "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=", + "dev": true + }, + "postcss-merge-rules": { + "version": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz", + "integrity": "sha1-0d9d+qexrMO+VT8OnhDofGG19yE=", + "dev": true + }, + "postcss-message-helpers": { + "version": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz", + "integrity": "sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4=", + "dev": true + }, + "postcss-minify-font-values": { + "version": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz", + "integrity": "sha1-S1jttWZB66fIR0qzUmyv17vey2k=", + "dev": true + }, + "postcss-minify-gradients": { + "version": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz", + "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=", + "dev": true + }, + "postcss-minify-params": { + "version": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz", + "integrity": "sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=", + "dev": true + }, + "postcss-minify-selectors": { + "version": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz", + "integrity": "sha1-ssapjAByz5G5MtGkllCBFDEXNb8=", + "dev": true + }, + "postcss-modules-extract-imports": { + "version": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz", + "integrity": "sha1-thTJcgvmgW6u41+zpfqh26agXds=", + "dev": true, + "dependencies": { + "has-flag": { + "version": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "postcss": { + "version": "https://registry.npmjs.org/postcss/-/postcss-6.0.3.tgz", + "integrity": "sha1-t/Vls9lW+7hWXKfB4jnQUG5CfYs=", + "dev": true + }, + "supports-color": { + "version": "https://registry.npmjs.org/supports-color/-/supports-color-4.0.0.tgz", + "integrity": "sha1-M6fGgKpRLJ0D75KcrLuXTSA9J5A=", + "dev": true + } + } + }, + "postcss-modules-local-by-default": { + "version": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", + "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", + "dev": true, + "dependencies": { + "has-flag": { + "version": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "postcss": { + "version": "https://registry.npmjs.org/postcss/-/postcss-6.0.3.tgz", + "integrity": "sha1-t/Vls9lW+7hWXKfB4jnQUG5CfYs=", + "dev": true + }, + "supports-color": { + "version": "https://registry.npmjs.org/supports-color/-/supports-color-4.0.0.tgz", + "integrity": "sha1-M6fGgKpRLJ0D75KcrLuXTSA9J5A=", + "dev": true + } + } + }, + "postcss-modules-scope": { + "version": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", + "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", + "dev": true, + "dependencies": { + "has-flag": { + "version": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "postcss": { + "version": "https://registry.npmjs.org/postcss/-/postcss-6.0.3.tgz", + "integrity": "sha1-t/Vls9lW+7hWXKfB4jnQUG5CfYs=", + "dev": true + }, + "supports-color": { + "version": "https://registry.npmjs.org/supports-color/-/supports-color-4.0.0.tgz", + "integrity": "sha1-M6fGgKpRLJ0D75KcrLuXTSA9J5A=", + "dev": true + } + } + }, + "postcss-modules-values": { + "version": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", + "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", + "dev": true, + "dependencies": { + "has-flag": { + "version": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "postcss": { + "version": "https://registry.npmjs.org/postcss/-/postcss-6.0.3.tgz", + "integrity": "sha1-t/Vls9lW+7hWXKfB4jnQUG5CfYs=", + "dev": true + }, + "supports-color": { + "version": "https://registry.npmjs.org/supports-color/-/supports-color-4.0.0.tgz", + "integrity": "sha1-M6fGgKpRLJ0D75KcrLuXTSA9J5A=", + "dev": true + } + } + }, + "postcss-normalize-charset": { + "version": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz", + "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=", + "dev": true + }, + "postcss-normalize-url": { + "version": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz", + "integrity": "sha1-EI90s/L82viRov+j6kWSJ5/HgiI=", + "dev": true + }, + "postcss-ordered-values": { + "version": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz", + "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=", + "dev": true + }, + "postcss-reduce-idents": { + "version": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz", + "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=", + "dev": true + }, + "postcss-reduce-initial": { + "version": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz", + "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=", + "dev": true + }, + "postcss-reduce-transforms": { + "version": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz", + "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=", + "dev": true + }, + "postcss-selector-parser": { + "version": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", + "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=", + "dev": true + }, + "postcss-svgo": { + "version": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz", + "integrity": "sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=", + "dev": true + }, + "postcss-unique-selectors": { + "version": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz", + "integrity": "sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=", + "dev": true + }, + "postcss-value-parser": { + "version": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz", + "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=", + "dev": true + }, + "postcss-zindex": { + "version": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz", + "integrity": "sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=", + "dev": true + }, + "prelude-ls": { + "version": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "prepend-http": { + "version": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, + "preserve": { + "version": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=" + }, + "pretty-error": { + "version": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", + "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", + "dev": true + }, + "pretty-format": { + "version": "https://registry.npmjs.org/pretty-format/-/pretty-format-18.1.0.tgz", + "integrity": "sha1-+2Wob3p/kZSWPu6RhlwbzxA54oQ=", + "dev": true + }, + "private": { + "version": "https://registry.npmjs.org/private/-/private-0.1.7.tgz", + "integrity": "sha1-aM5eih7woju1cMwoU3tTMqumPvE=" + }, + "process": { + "version": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" + }, + "process-nextick-args": { + "version": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" + }, + "progress": { + "version": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", + "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", + "dev": true + }, + "promise": { + "version": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha1-BktyYCsY+Q8pGSuLG8QY/9Hr078=" + }, + "prop-types": { + "version": "https://registry.npmjs.org/prop-types/-/prop-types-15.5.10.tgz", + "integrity": "sha1-J5ffwxJhguOpXj37suiT3ddFYVQ=" + }, + "proxy-addr": { + "version": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.1.4.tgz", + "integrity": "sha1-J+VF9pYKRKYn2bREZ+NcG2tM4vM=", + "dev": true + }, + "prr": { + "version": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz", + "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=" + }, + "pseudomap": { + "version": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "punycode": { + "version": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + }, + "q": { + "version": "https://registry.npmjs.org/q/-/q-1.5.0.tgz", + "integrity": "sha1-3QG6ydBtMObyGa7LglPunr3DCPE=", + "dev": true + }, + "qs": { + "version": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", + "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", + "dev": true + }, + "query-string": { + "version": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "dev": true + }, + "querystring": { + "version": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" + }, + "querystring-es3": { + "version": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" + }, + "querystringify": { + "version": "https://registry.npmjs.org/querystringify/-/querystringify-0.0.4.tgz", + "integrity": "sha1-DPf4T5Rj/wrlHExLFC2VvjdyTZw=", + "dev": true + }, + "randomatic": { + "version": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha1-x6vpzIuHwLqodrGf3oP9RkeX44w=", + "dependencies": { + "is-number": { + "version": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dependencies": { + "kind-of": { + "version": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=" + } + } + }, + "kind-of": { + "version": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=" + } + } + }, + "range-parser": { + "version": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", + "dev": true + }, + "rc-align": { + "version": "https://registry.npmjs.org/rc-align/-/rc-align-2.3.4.tgz", + "integrity": "sha1-2Dvat1YPAULnKj3h1JXatroiUkk=" + }, + "rc-animate": { + "version": "https://registry.npmjs.org/rc-animate/-/rc-animate-2.4.0.tgz", + "integrity": "sha1-pRtH2t+K2a8Izd+1sCF7+oGu6AM=" + }, + "rc-slider": { + "version": "https://registry.npmjs.org/rc-slider/-/rc-slider-7.0.8.tgz", + "integrity": "sha1-G918v9jsG2QYulXlBoiLu1AVlVY=" + }, + "rc-tooltip": { + "version": "https://registry.npmjs.org/rc-tooltip/-/rc-tooltip-3.4.6.tgz", + "integrity": "sha1-7ZjeKntBLlJ8a9iiqX3d8Lq9LyE=" + }, + "rc-trigger": { + "version": "https://registry.npmjs.org/rc-trigger/-/rc-trigger-1.11.2.tgz", + "integrity": "sha1-XHWhkogUoFlePZEuChXKhT31Rk0=" + }, + "rc-util": { + "version": "https://registry.npmjs.org/rc-util/-/rc-util-4.0.4.tgz", + "integrity": "sha1-mYE92Qrufim2STmnCsF26tP0/zk=" + }, + "react": { + "version": "https://registry.npmjs.org/react/-/react-15.6.1.tgz", + "integrity": "sha1-uqhDTsZ4C96ZfNw4C3nNM7ljk98=" + }, + "react-addons-css-transition-group": { + "version": "https://registry.npmjs.org/react-addons-css-transition-group/-/react-addons-css-transition-group-15.6.0.tgz", + "integrity": "sha1-aYh89uSHTSXNZuIqaZ4p8NZIq6A=" + }, + "react-bootstrap": { + "version": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-0.30.10.tgz", + "integrity": "sha1-27ppCVlfKvTZGTfbD5bsjC3y0ag=" + }, + "react-bs-notifier": { + "version": "https://registry.npmjs.org/react-bs-notifier/-/react-bs-notifier-4.3.2.tgz", + "integrity": "sha1-G0Zj4aVKyg2DuH02wP1vrwQijcQ=" + }, + "react-dev-utils": { + "version": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-0.5.2.tgz", + "integrity": "sha1-UNC5YtOpS2wujyAR7WRo5BJLxBA=", + "dev": true + }, + "react-dom": { + "version": "https://registry.npmjs.org/react-dom/-/react-dom-15.6.1.tgz", + "integrity": "sha1-LLDtQZEDjlPCCes6eaI+Kkz5lHA=" + }, + "react-fileupload-progress": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/react-fileupload-progress/-/react-fileupload-progress-0.4.0.tgz", + "integrity": "sha1-li/8ACKo6WFy6q7NVAqNIyTaMnE=" + }, + "react-highcharts": { + "version": "https://registry.npmjs.org/react-highcharts/-/react-highcharts-12.0.0.tgz", + "integrity": "sha1-p8i19bVrN6/o5/4C7IvucuN2FYo=" + }, + "react-js-diagrams": { + "version": "https://registry.npmjs.org/react-js-diagrams/-/react-js-diagrams-3.1.3.tgz", + "integrity": "sha1-I5f+msM472e1ZnOxY6Oli5/J0RU=" + }, + "react-jss": { + "version": "https://registry.npmjs.org/react-jss/-/react-jss-6.1.1.tgz", + "integrity": "sha1-AaVI5lMbaRGGw+jYJQmA+yk48f4=" + }, + "react-overlays": { + "version": "https://registry.npmjs.org/react-overlays/-/react-overlays-0.6.12.tgz", + "integrity": "sha1-oHnHUMxCnX20x0dKlbS1QDPiVcM=" + }, + "react-prop-types": { + "version": "https://registry.npmjs.org/react-prop-types/-/react-prop-types-0.4.0.tgz", + "integrity": "sha1-+ZsL+0AGkpya8gUefBQUpcdbk9A=" + }, + "react-redux": { + "version": "https://registry.npmjs.org/react-redux/-/react-redux-5.0.5.tgz", + "integrity": "sha1-+OjHsjlCJXblLWt9sGQ5RpvphGo=" + }, + "react-router": { + "version": "https://registry.npmjs.org/react-router/-/react-router-4.1.1.tgz", + "integrity": "sha1-1Ejzt8G0Kab7sDOVCZlJxgax/pU=" + }, + "react-router-dom": { + "version": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-4.1.1.tgz", + "integrity": "sha1-MCGt4fLBYK+Xz5TiVZTF8pRYMCU=" + }, + "react-scripts": { + "version": "https://registry.npmjs.org/react-scripts/-/react-scripts-0.9.5.tgz", + "integrity": "sha1-6fBchCficTFmKpudepeG0f8Wuz8=", + "dev": true, + "dependencies": { + "babel-core": { + "version": "https://registry.npmjs.org/babel-core/-/babel-core-6.22.1.tgz", + "integrity": "sha1-nF/WWLoXctKNch9tJdlo/HriFkg=", + "dev": true + }, + "babel-loader": { + "version": "https://registry.npmjs.org/babel-loader/-/babel-loader-6.2.10.tgz", + "integrity": "sha1-re/CskIyDNXRXmWzHOoOixsC1LA=", + "dev": true + }, + "fsevents": { + "version": "https://registry.npmjs.org/fsevents/-/fsevents-1.0.17.tgz", + "integrity": "sha1-hTfz8SJyZ4dltP1lKMDx9m+PRVg=", + "dev": true, + "optional": true, + "dependencies": { + "abbrev": { + "version": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", + "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=", + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", + "integrity": "sha1-xQYbbg74qBd15Q9dZhUb9r83EQc=", + "dev": true + }, + "ansi-styles": { + "version": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true, + "optional": true + }, + "aproba": { + "version": "https://registry.npmjs.org/aproba/-/aproba-1.0.4.tgz", + "integrity": "sha1-JxNoB3XnYUyLoYbAZdTi5S0QcsA=", + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz", + "integrity": "sha1-gORw6VoIR5T+GJkmLFZnxuiN4bM=", + "dev": true, + "optional": true + }, + "asn1": { + "version": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true, + "optional": true + }, + "assert-plus": { + "version": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", + "dev": true, + "optional": true + }, + "asynckit": { + "version": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true, + "optional": true + }, + "aws-sign2": { + "version": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", + "dev": true, + "optional": true + }, + "aws4": { + "version": "https://registry.npmjs.org/aws4/-/aws4-1.5.0.tgz", + "integrity": "sha1-Cin/t5wxyecS7rCH6OemS0pW11U=", + "dev": true, + "optional": true + }, + "balanced-match": { + "version": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.0.tgz", + "integrity": "sha1-PKdrhSQccXC/fZcD57mqdGMAQNQ=", + "dev": true, + "optional": true + }, + "block-stream": { + "version": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "dev": true + }, + "boom": { + "version": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "dev": true + }, + "brace-expansion": { + "version": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", + "integrity": "sha1-cZfX6qm4fmSDkOph/GbIRCdCDfk=", + "dev": true + }, + "buffer-shims": { + "version": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", + "dev": true + }, + "caseless": { + "version": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", + "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", + "dev": true, + "optional": true + }, + "chalk": { + "version": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "optional": true, + "dependencies": { + "supports-color": { + "version": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true, + "optional": true + } + } + }, + "code-point-at": { + "version": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "combined-stream": { + "version": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "dev": true + }, + "commander": { + "version": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "dev": true, + "optional": true + }, + "concat-map": { + "version": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "console-control-strings": { + "version": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, + "core-util-is": { + "version": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cryptiles": { + "version": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "dev": true, + "optional": true + }, + "dashdash": { + "version": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "optional": true, + "dependencies": { + "assert-plus": { + "version": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true, + "optional": true + } + } + }, + "debug": { + "version": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true, + "optional": true + }, + "deep-extend": { + "version": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.1.tgz", + "integrity": "sha1-7+QRPQgIX05vlod1mBD4B0aeIlM=", + "dev": true, + "optional": true + }, + "delayed-stream": { + "version": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "delegates": { + "version": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true, + "optional": true + }, + "ecc-jsbn": { + "version": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "dev": true, + "optional": true + }, + "escape-string-regexp": { + "version": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "optional": true + }, + "extend": { + "version": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz", + "integrity": "sha1-WkdDU7nzNT3dgXbf03uRyDpG8dQ=", + "dev": true, + "optional": true + }, + "extsprintf": { + "version": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", + "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=", + "dev": true + }, + "forever-agent": { + "version": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true, + "optional": true + }, + "form-data": { + "version": "https://registry.npmjs.org/form-data/-/form-data-2.1.2.tgz", + "integrity": "sha1-icNTQAi5fq2ky7FX1Y9vXfAl6uQ=", + "dev": true, + "optional": true + }, + "fs.realpath": { + "version": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fstream": { + "version": "https://registry.npmjs.org/fstream/-/fstream-1.0.10.tgz", + "integrity": "sha1-YE6Kkv4m/9n2+uMDmdSYThqyKCI=", + "dev": true + }, + "fstream-ignore": { + "version": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", + "integrity": "sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=", + "dev": true, + "optional": true + }, + "gauge": { + "version": "https://registry.npmjs.org/gauge/-/gauge-2.7.2.tgz", + "integrity": "sha1-Fc7MMbAtBTRaXWsOFxzbOtIwd3Q=", + "dev": true, + "optional": true + }, + "generate-function": { + "version": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", + "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", + "dev": true, + "optional": true + }, + "generate-object-property": { + "version": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", + "dev": true, + "optional": true + }, + "getpass": { + "version": "https://registry.npmjs.org/getpass/-/getpass-0.1.6.tgz", + "integrity": "sha1-KD/9n8ElaECHUxHBtg6MQBhxEOY=", + "dev": true, + "optional": true, + "dependencies": { + "assert-plus": { + "version": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true, + "optional": true + } + } + }, + "glob": { + "version": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", + "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", + "dev": true + }, + "graceful-fs": { + "version": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "graceful-readlink": { + "version": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "dev": true, + "optional": true + }, + "har-validator": { + "version": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", + "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", + "dev": true, + "optional": true + }, + "has-ansi": { + "version": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "optional": true + }, + "has-unicode": { + "version": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true, + "optional": true + }, + "hawk": { + "version": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "dev": true, + "optional": true + }, + "hoek": { + "version": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "dev": true + }, + "http-signature": { + "version": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "dev": true, + "optional": true + }, + "inflight": { + "version": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true + }, + "inherits": { + "version": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ini": { + "version": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", + "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true + }, + "is-my-json-valid": { + "version": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz", + "integrity": "sha1-k27do8o8IR/ZjzstPgjaQ/eykVs=", + "dev": true, + "optional": true + }, + "is-property": { + "version": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", + "dev": true, + "optional": true + }, + "is-typedarray": { + "version": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true, + "optional": true + }, + "isarray": { + "version": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isstream": { + "version": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true, + "optional": true + }, + "jodid25519": { + "version": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz", + "integrity": "sha1-BtSRIlUJNBlHfUJWM2BuDpB4KWc=", + "dev": true, + "optional": true + }, + "jsbn": { + "version": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.0.tgz", + "integrity": "sha1-ZQmH2g3XT06/WhE3eiqi0nPpff0=", + "dev": true, + "optional": true + }, + "json-schema": { + "version": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true, + "optional": true + }, + "json-stringify-safe": { + "version": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true, + "optional": true + }, + "jsonpointer": { + "version": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", + "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", + "dev": true, + "optional": true + }, + "jsprim": { + "version": "https://registry.npmjs.org/jsprim/-/jsprim-1.3.1.tgz", + "integrity": "sha1-KnJW9wQSop7jZwqspiWZTE3P8lI=", + "dev": true, + "optional": true + }, + "mime-db": { + "version": "https://registry.npmjs.org/mime-db/-/mime-db-1.25.0.tgz", + "integrity": "sha1-wY29fHOl2/b0SgJNwNFloeexw5I=", + "dev": true + }, + "mime-types": { + "version": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.13.tgz", + "integrity": "sha1-4HqqnGxrmnyjASxpADrSWjnpKog=", + "dev": true + }, + "minimatch": { + "version": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha1-Kk5AkLlrLbBqnX3wEFWmKnfJt3Q=", + "dev": true + }, + "minimist": { + "version": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mkdirp": { + "version": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true + }, + "ms": { + "version": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true, + "optional": true + }, + "node-pre-gyp": { + "version": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.32.tgz", + "integrity": "sha1-/EUrN25zGbPSVfXzSFPvb9j+H9U=", + "dev": true, + "optional": true + }, + "nopt": { + "version": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true, + "optional": true + }, + "npmlog": { + "version": "https://registry.npmjs.org/npmlog/-/npmlog-4.0.2.tgz", + "integrity": "sha1-0DlQ4OeM4VJ7om0qdZLpNIrD518=", + "dev": true, + "optional": true + }, + "number-is-nan": { + "version": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "oauth-sign": { + "version": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "dev": true, + "optional": true + }, + "object-assign": { + "version": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", + "integrity": "sha1-ejs9DpgGPUP0wD8uiubNUahog6A=", + "dev": true, + "optional": true + }, + "once": { + "version": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true + }, + "path-is-absolute": { + "version": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "pinkie": { + "version": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true, + "optional": true + }, + "pinkie-promise": { + "version": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "dev": true + }, + "punycode": { + "version": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true, + "optional": true + }, + "qs": { + "version": "https://registry.npmjs.org/qs/-/qs-6.3.0.tgz", + "integrity": "sha1-9AOyZPI7wBIox0ExtAfxjV6l1EI=", + "dev": true, + "optional": true + }, + "rc": { + "version": "https://registry.npmjs.org/rc/-/rc-1.1.6.tgz", + "integrity": "sha1-Q2UbdrauU7XIAvEVH6P8OwWZack=", + "dev": true, + "optional": true, + "dependencies": { + "minimist": { + "version": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.2.tgz", + "integrity": "sha1-qeb+w8fdqF+LsbO6cChgRVb8gl4=", + "dev": true, + "optional": true + }, + "request": { + "version": "https://registry.npmjs.org/request/-/request-2.79.0.tgz", + "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=", + "dev": true, + "optional": true + }, + "rimraf": { + "version": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", + "integrity": "sha1-loAAk8vxoMhr2VtGJUZ1NcKd+gQ=", + "dev": true + }, + "semver": { + "version": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true, + "optional": true + }, + "sntp": { + "version": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "dev": true, + "optional": true + }, + "sshpk": { + "version": "https://registry.npmjs.org/sshpk/-/sshpk-1.10.1.tgz", + "integrity": "sha1-MOGl0ykkSXShr2FREznVla9mOLA=", + "dev": true, + "optional": true, + "dependencies": { + "assert-plus": { + "version": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true, + "optional": true + } + } + }, + "string-width": { + "version": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true + }, + "string_decoder": { + "version": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "stringstream": { + "version": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "dev": true, + "optional": true + }, + "strip-ansi": { + "version": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true + }, + "strip-json-comments": { + "version": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz", + "integrity": "sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=", + "dev": true, + "optional": true + }, + "supports-color": { + "version": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz", + "integrity": "sha1-2S3iaU6z9nMjlz1649i1W0wiGQo=", + "dev": true, + "optional": true + }, + "tar": { + "version": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", + "dev": true + }, + "tar-pack": { + "version": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.3.0.tgz", + "integrity": "sha1-MJMYFkGPVa/E0hd1r91nIM7kXa4=", + "dev": true, + "optional": true, + "dependencies": { + "once": { + "version": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", + "dev": true, + "optional": true + }, + "readable-stream": { + "version": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.5.tgz", + "integrity": "sha1-ZvqLcg4UOLNkaB8q0aY8YYRIydA=", + "dev": true, + "optional": true + } + } + }, + "tough-cookie": { + "version": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", + "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", + "dev": true, + "optional": true + }, + "tunnel-agent": { + "version": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", + "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", + "dev": true, + "optional": true + }, + "tweetnacl": { + "version": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true, + "optional": true + }, + "uid-number": { + "version": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz", + "integrity": "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=", + "dev": true, + "optional": true + }, + "util-deprecate": { + "version": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "uuid": { + "version": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz", + "integrity": "sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE=", + "dev": true, + "optional": true + }, + "verror": { + "version": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", + "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=", + "dev": true, + "optional": true + }, + "wide-align": { + "version": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.0.tgz", + "integrity": "sha1-QO3egCpx/qHwcNo+YtzaLnrdlq0=", + "dev": true, + "optional": true + }, + "wrappy": { + "version": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "xtend": { + "version": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true, + "optional": true + } + } + }, + "promise": { + "version": "https://registry.npmjs.org/promise/-/promise-7.1.1.tgz", + "integrity": "sha1-SJZUxpJha4qlWwck+oCbt9tJxb8=", + "dev": true + }, + "supports-color": { + "version": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true + }, + "webpack": { + "version": "https://registry.npmjs.org/webpack/-/webpack-1.14.0.tgz", + "integrity": "sha1-VPH/uSBRoyilsgV9auM8KJRiyCM=", + "dev": true + }, + "whatwg-fetch": { + "version": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.2.tgz", + "integrity": "sha1-/ilNHYnjbFvosxlQV/LkvHT8mA4=", + "dev": true + } + } + }, + "react-sortable-hoc": { + "version": "https://registry.npmjs.org/react-sortable-hoc/-/react-sortable-hoc-0.6.3.tgz", + "integrity": "sha1-q5+mmWB8X1hx0AiJIi+1JVkkKUc=" + }, + "react-transition-group": { + "version": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-1.2.0.tgz", + "integrity": "sha1-tR/JIbDDg1p+98Vxx5/ILHPpIE8=" + }, + "read-pkg": { + "version": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true + }, + "read-pkg-up": { + "version": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true + }, + "readable-stream": { + "version": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.2.tgz", + "integrity": "sha1-WgTfBeT1f+Pw3Gj90R3FyXx+b00=", + "dependencies": { + "isarray": { + "version": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + } + } + }, + "readdirp": { + "version": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", + "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=" + }, + "readline2": { + "version": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", + "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", + "dev": true + }, + "rechoir": { + "version": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true + }, + "recursive-readdir": { + "version": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.1.1.tgz", + "integrity": "sha1-oBz8f384pT7AlqCW9jpQSJw+KXw=", + "dev": true, + "dependencies": { + "minimatch": { + "version": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha1-Kk5AkLlrLbBqnX3wEFWmKnfJt3Q=", + "dev": true + } + } + }, + "redeyed": { + "version": "https://registry.npmjs.org/redeyed/-/redeyed-1.0.1.tgz", + "integrity": "sha1-6WwZO0DAgWsArshCaY5hGF5VSYo=", + "dev": true, + "dependencies": { + "esprima": { + "version": "https://registry.npmjs.org/esprima/-/esprima-3.0.0.tgz", + "integrity": "sha1-U88kes2ncxPlUcOqLnM0LT+099k=", + "dev": true + } + } + }, + "reduce-css-calc": { + "version": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", + "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=", + "dev": true, + "dependencies": { + "balanced-match": { + "version": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", + "dev": true + } + } + }, + "reduce-function-call": { + "version": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.2.tgz", + "integrity": "sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk=", + "dev": true, + "dependencies": { + "balanced-match": { + "version": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", + "dev": true + } + } + }, + "redux": { + "version": "https://registry.npmjs.org/redux/-/redux-3.7.0.tgz", + "integrity": "sha1-B6Yjyv2S7uir4wnRPRZTj2cHkm8=" + }, + "redux-logger": { + "version": "https://registry.npmjs.org/redux-logger/-/redux-logger-3.0.6.tgz", + "integrity": "sha1-91VZZvMJjzyIYExEnPC69XeCdL8=" + }, + "redux-thunk": { + "version": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.2.0.tgz", + "integrity": "sha1-5hWhbha0ehmlFXZhM9Hj6Zt4UuU=" + }, + "regenerate": { + "version": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.2.tgz", + "integrity": "sha1-0ZQcZ7rUN+G+dkM63Vs4X5WxkmA=" + }, + "regenerator-runtime": { + "version": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", + "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=" + }, + "regenerator-transform": { + "version": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.9.11.tgz", + "integrity": "sha1-On0GdSDLe3F2dp61/4aGkb7+EoM=" + }, + "regex-cache": { + "version": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz", + "integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=" + }, + "regexpu-core": { + "version": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", + "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=" + }, + "regjsgen": { + "version": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=" + }, + "regjsparser": { + "version": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "dependencies": { + "jsesc": { + "version": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" + } + } + }, + "relateurl": { + "version": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true + }, + "remove-trailing-separator": { + "version": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz", + "integrity": "sha1-abBi2XhyetFNxrVrpKt3L9jXBRE=" + }, + "renderkid": { + "version": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.1.tgz", + "integrity": "sha1-iYyr/Ivt5Le5ETWj/9Mj5YwNsxk=", + "dev": true, + "dependencies": { + "utila": { + "version": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz", + "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=", + "dev": true + } + } + }, + "repeat-element": { + "version": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=" + }, + "repeat-string": { + "version": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + }, + "repeating": { + "version": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=" + }, + "request": { + "version": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", + "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", + "dev": true + }, + "require-directory": { + "version": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-from-string": { + "version": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", + "integrity": "sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=", + "dev": true + }, + "require-main-filename": { + "version": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "require-uncached": { + "version": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", + "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", + "dev": true + }, + "requires-port": { + "version": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "resolve": { + "version": "https://registry.npmjs.org/resolve/-/resolve-1.3.3.tgz", + "integrity": "sha1-ZVkHw0aahoDcLeOidaj91paR8OU=", + "dev": true + }, + "resolve-from": { + "version": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", + "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "dev": true + }, + "resolve-pathname": { + "version": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-2.1.0.tgz", + "integrity": "sha1-6DWIAbhrg7F1YNTjw4LXrvIQCUQ=" + }, + "restore-cursor": { + "version": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "dev": true + }, + "right-align": { + "version": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=" + }, + "rimraf": { + "version": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", + "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", + "dev": true + }, + "ripemd160": { + "version": "https://registry.npmjs.org/ripemd160/-/ripemd160-0.2.0.tgz", + "integrity": "sha1-K/GYveFnys+lHAqSjoS2i74XH84=" + }, + "run-async": { + "version": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", + "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", + "dev": true + }, + "rx-lite": { + "version": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", + "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=", + "dev": true + }, + "safe-buffer": { + "version": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha1-iTMSr2myEj3vcfV4iQAWce6yyFM=" + }, + "samsam": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.1.2.tgz", + "integrity": "sha1-vsEf3IOp/aBjQBIQ5AF2wwJNFWc=" + }, + "sane": { + "version": "https://registry.npmjs.org/sane/-/sane-1.4.1.tgz", + "integrity": "sha1-iPdj10BA9fDCVrYWPbOZvxEKxxU=", + "dev": true, + "dependencies": { + "minimist": { + "version": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "sax": { + "version": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha1-KBYjTiN4vdxOU1T6tcqold9xANk=", + "dev": true + }, + "semver": { + "version": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true + }, + "send": { + "version": "https://registry.npmjs.org/send/-/send-0.15.3.tgz", + "integrity": "sha1-UBP5+ZAj31DRvZiSwZ4979HVMwk=", + "dev": true, + "dependencies": { + "debug": { + "version": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", + "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", + "dev": true + }, + "mime": { + "version": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", + "integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=", + "dev": true + } + } + }, + "serve-index": { + "version": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.0.tgz", + "integrity": "sha1-0rKA/FYNYW7oG0i/D6gqvtJIXOc=", + "dev": true + }, + "serve-static": { + "version": "https://registry.npmjs.org/serve-static/-/serve-static-1.12.3.tgz", + "integrity": "sha1-n0uhni8wMMVH+K+ZEHg47DjVseI=", + "dev": true + }, + "set-blocking": { + "version": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-immediate-shim": { + "version": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=" + }, + "setimmediate": { + "version": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + }, + "setprototypeof": { + "version": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", + "dev": true + }, + "sha.js": { + "version": "https://registry.npmjs.org/sha.js/-/sha.js-2.2.6.tgz", + "integrity": "sha1-F93t3F9yL7ZlAWWIlUYZd4ZzFbo=" + }, + "shallowequal": { + "version": "https://registry.npmjs.org/shallowequal/-/shallowequal-0.2.2.tgz", + "integrity": "sha1-HjL9W8q2rWiKSBLLDMBO/HXHAU4=" + }, + "shelljs": { + "version": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", + "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", + "dev": true, + "dependencies": { + "interpret": { + "version": "https://registry.npmjs.org/interpret/-/interpret-1.0.3.tgz", + "integrity": "sha1-y8NcYu7uc/Gat7EKgBURQBr8D5A=", + "dev": true + } + } + }, + "shellwords": { + "version": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.0.tgz", + "integrity": "sha1-Zq/Ue2oSky2Qccv9mKUueFzQuhQ=", + "dev": true + }, + "sinon": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-1.17.7.tgz", + "integrity": "sha1-RUKk9JugxFwF6y6d2dID4rjv4L8=" + }, + "slash": { + "version": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" + }, + "slice-ansi": { + "version": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", + "dev": true + }, + "sntp": { + "version": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "dev": true + }, + "socket.io-client": { + "version": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-1.7.4.tgz", + "integrity": "sha1-7J+CA1btme9tNX8HVtZIcXvdQoE=", + "dependencies": { + "debug": { + "version": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=" + }, + "ms": { + "version": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=" + } + } + }, + "socket.io-parser": { + "version": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.3.1.tgz", + "integrity": "sha1-3VMgJRA85Clpcya+/WQAX8/ltKA=", + "dependencies": { + "component-emitter": { + "version": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz", + "integrity": "sha1-KWWU8nU9qmOZbSrwjRWpURbJrsM=" + }, + "debug": { + "version": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=" + }, + "ms": { + "version": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=" + } + } + }, + "sockjs": { + "version": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.18.tgz", + "integrity": "sha1-2bKJMWyn33dZXvKZ4HXw+TfrQgc=", + "dev": true, + "dependencies": { + "faye-websocket": { + "version": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "dev": true + }, + "uuid": { + "version": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", + "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", + "dev": true + } + } + }, + "sockjs-client": { + "version": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.0.1.tgz", + "integrity": "sha1-iUOuBbRlR7wgVIFsQJACz14v4CY=", + "dev": true + }, + "sort-keys": { + "version": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "dev": true + }, + "source-list-map": { + "version": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.8.tgz", + "integrity": "sha1-xVCyq1Qn9rPyH1r+rYjE9Vh7IQY=" + }, + "source-map": { + "version": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=" + }, + "source-map-support": { + "version": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.15.tgz", + "integrity": "sha1-AyAt9lwG0r2MfsI2KhkwVv7407E=" + }, + "spdx-correct": { + "version": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "dev": true + }, + "spdx-expression-parse": { + "version": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", + "dev": true + }, + "spdx-license-ids": { + "version": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", + "dev": true + }, + "sprintf-js": { + "version": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", + "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "dev": true, + "dependencies": { + "assert-plus": { + "version": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "statuses": { + "version": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", + "dev": true + }, + "stream-browserify": { + "version": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", + "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=" + }, + "stream-cache": { + "version": "https://registry.npmjs.org/stream-cache/-/stream-cache-0.0.2.tgz", + "integrity": "sha1-GsWtaDJCjKVWZ9ve45Xa1ObbEY8=", + "dev": true + }, + "stream-http": { + "version": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.2.tgz", + "integrity": "sha1-QKBQ7I3DtTsz2ZCUFcAsC/Gr+60=" + }, + "strict-uri-encode": { + "version": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "dev": true + }, + "string-width": { + "version": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true + }, + "string.prototype.codepointat": { + "version": "https://registry.npmjs.org/string.prototype.codepointat/-/string.prototype.codepointat-0.2.0.tgz", + "integrity": "sha1-aybpvTr8qnvjtCabUm3huCAArHg=", + "dev": true + }, + "string_decoder": { + "version": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=" + }, + "stringstream": { + "version": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "dev": true + }, + "strip-ansi": { + "version": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=" + }, + "strip-bom": { + "version": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true + }, + "strip-json-comments": { + "version": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "style-loader": { + "version": "https://registry.npmjs.org/style-loader/-/style-loader-0.13.1.tgz", + "integrity": "sha1-RoKA77wEcwI806bNVuM7Wh1/w6k=", + "dev": true + }, + "supports-color": { + "version": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + }, + "svgo": { + "version": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz", + "integrity": "sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=", + "dev": true + }, + "symbol-observable": { + "version": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.4.tgz", + "integrity": "sha1-Kb9hXUqnEhvdiYsi1LP5vE4qoD0=" + }, + "symbol-tree": { + "version": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", + "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", + "dev": true + }, + "table": { + "version": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", + "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", + "dev": true, + "dependencies": { + "is-fullwidth-code-point": { + "version": "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": "https://registry.npmjs.org/string-width/-/string-width-2.0.0.tgz", + "integrity": "sha1-Y1xUNsxypuDDh87KJ41OLuxSaH4=", + "dev": true + } + } + }, + "tapable": { + "version": "https://registry.npmjs.org/tapable/-/tapable-0.1.10.tgz", + "integrity": "sha1-KcNXB8K3DlDQdIK10gLo7URtr9Q=" + }, + "test-exclude": { + "version": "https://registry.npmjs.org/test-exclude/-/test-exclude-3.3.0.tgz", + "integrity": "sha1-ehfKEjmYjJg2ewYhRW27fUvDiXc=", + "dev": true + }, + "text-table": { + "version": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "throat": { + "version": "https://registry.npmjs.org/throat/-/throat-3.2.0.tgz", + "integrity": "sha1-UMsGcO28QCN7njR9fh+I5GIK+DY=", + "dev": true + }, + "through": { + "version": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "timers-browserify": { + "version": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.2.tgz", + "integrity": "sha1-q0iDz1l9zVCvIRNJoA+8pWrIa4Y=" + }, + "tmpl": { + "version": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", + "dev": true + }, + "to-array": { + "version": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", + "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=" + }, + "to-arraybuffer": { + "version": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" + }, + "to-fast-properties": { + "version": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" + }, + "toetag": { + "version": "https://registry.npmjs.org/toetag/-/toetag-3.3.6.tgz", + "integrity": "sha1-DJNYdalVXeA3MOQpo6ydASn8QXw=" + }, + "toposort": { + "version": "https://registry.npmjs.org/toposort/-/toposort-1.0.3.tgz", + "integrity": "sha1-8CzYp0vYvi/A6YYRw7rLlaFxhpw=", + "dev": true + }, + "tough-cookie": { + "version": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", + "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", + "dev": true + }, + "tr46": { + "version": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "dev": true + }, + "trim-right": { + "version": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=" + }, + "tryit": { + "version": "https://registry.npmjs.org/tryit/-/tryit-1.0.3.tgz", + "integrity": "sha1-OTvnMKlEb9Hq1tpZoBQwjzbCics=", + "dev": true + }, + "tty-browserify": { + "version": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" + }, + "tunnel-agent": { + "version": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true + }, + "tweetnacl": { + "version": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true, + "optional": true + }, + "type-check": { + "version": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true + }, + "type-is": { + "version": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", + "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=", + "dev": true + }, + "typedarray": { + "version": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "ua-parser-js": { + "version": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.13.tgz", + "integrity": "sha1-zZ3S+GSTs/RNvu7zeA/adMXuFL4=" + }, + "uglify-js": { + "version": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.7.5.tgz", + "integrity": "sha1-RhLAx7qu4rp8SH3kkErhIgefLKg=", + "dependencies": { + "async": { + "version": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=" + } + } + }, + "uglify-to-browserify": { + "version": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=" + }, + "ultron": { + "version": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", + "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=" + }, + "uncontrollable": { + "version": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-4.1.0.tgz", + "integrity": "sha1-4DWCkSUuGGUiLZCTmxny9J+Bwak=" + }, + "uniq": { + "version": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "uniqid": { + "version": "https://registry.npmjs.org/uniqid/-/uniqid-4.1.1.tgz", + "integrity": "sha1-iSIN32t1GuUrX3JISGNShZa7hME=", + "dev": true + }, + "uniqs": { + "version": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", + "dev": true + }, + "unpipe": { + "version": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "upper-case": { + "version": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", + "dev": true + }, + "url": { + "version": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dependencies": { + "punycode": { + "version": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" + } + } + }, + "url-loader": { + "version": "https://registry.npmjs.org/url-loader/-/url-loader-0.5.7.tgz", + "integrity": "sha1-Z+h3l1n4AA2nSZSQZoDJQ6mwkl0=", + "dev": true + }, + "url-parse": { + "version": "https://registry.npmjs.org/url-parse/-/url-parse-1.1.9.tgz", + "integrity": "sha1-xn8dd11R8KGJEd17P/rSe7nlvRk=", + "dev": true, + "dependencies": { + "querystringify": { + "version": "https://registry.npmjs.org/querystringify/-/querystringify-1.0.0.tgz", + "integrity": "sha1-YoYkIRLFtxL6ZU5SZlK/ahP/Bcs=", + "dev": true + } + } + }, + "user-home": { + "version": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", + "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=", + "dev": true + }, + "util": { + "version": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dependencies": { + "inherits": { + "version": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" + } + } + }, + "util-deprecate": { + "version": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "utila": { + "version": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "dev": true + }, + "utils-merge": { + "version": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", + "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg=", + "dev": true + }, + "uuid": { + "version": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", + "integrity": "sha1-PdPT55Crwk17DToDT/q6vijrvAQ=", + "dev": true + }, + "validate-npm-package-license": { + "version": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", + "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "dev": true + }, + "value-equal": { + "version": "https://registry.npmjs.org/value-equal/-/value-equal-0.2.1.tgz", + "integrity": "sha1-wiCjBDYfzmmU277ao8fhobiVhx0=" + }, + "vary": { + "version": "https://registry.npmjs.org/vary/-/vary-1.1.1.tgz", + "integrity": "sha1-Z1Neu2lMHVIldFeYRmUyP1h+jTc=", + "dev": true + }, + "vendors": { + "version": "https://registry.npmjs.org/vendors/-/vendors-1.0.1.tgz", + "integrity": "sha1-N61zyO5Bf7PVgOeFMSMH0nSEfyI=", + "dev": true + }, + "verror": { + "version": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", + "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=", + "dev": true + }, + "vm-browserify": { + "version": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=" + }, + "walker": { + "version": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "dev": true + }, + "warning": { + "version": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", + "integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=" + }, + "watch": { + "version": "https://registry.npmjs.org/watch/-/watch-0.10.0.tgz", + "integrity": "sha1-d3mLLaD5kQ1ZXxrOWwwiWFIfIdw=", + "dev": true + }, + "watchpack": { + "version": "https://registry.npmjs.org/watchpack/-/watchpack-0.2.9.tgz", + "integrity": "sha1-Yuqkq15bo1/fwBgnVibjwPXj+ws=", + "dependencies": { + "async": { + "version": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=" + } + } + }, + "webidl-conversions": { + "version": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.1.tgz", + "integrity": "sha1-gBWherg+fhsxFjhIas6B2mziBqA=", + "dev": true + }, + "webpack": { + "version": "https://registry.npmjs.org/webpack/-/webpack-1.15.0.tgz", + "integrity": "sha1-T/MfU9sDM55VFkqdRo7gMklo/pg=", + "dependencies": { + "supports-color": { + "version": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=" + } + } + }, + "webpack-core": { + "version": "https://registry.npmjs.org/webpack-core/-/webpack-core-0.6.9.tgz", + "integrity": "sha1-/FcViMhVjad76e+23r3Fo7FyvcI=", + "dependencies": { + "source-map": { + "version": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=" + } + } + }, + "webpack-dev-middleware": { + "version": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.11.0.tgz", + "integrity": "sha1-CWkdCXOjCtH4Ksc6EuIIfwpHVPk=", + "dev": true, + "dependencies": { + "memory-fs": { + "version": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true + }, + "mime": { + "version": "https://registry.npmjs.org/mime/-/mime-1.3.6.tgz", + "integrity": "sha1-WR2E02U6awtKO5343lqoEI5y5eA=", + "dev": true + } + } + }, + "webpack-dev-server": { + "version": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-1.16.2.tgz", + "integrity": "sha1-i+vCxM4cRaFcct12nZugjbMGp5M=", + "dev": true, + "dependencies": { + "faye-websocket": { + "version": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", + "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", + "dev": true + }, + "sockjs-client": { + "version": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.4.tgz", + "integrity": "sha1-W6vjhrd15M8U51IJEUUmVAFsixI=", + "dev": true + }, + "supports-color": { + "version": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true + } + } + }, + "webpack-manifest-plugin": { + "version": "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-1.1.0.tgz", + "integrity": "sha1-a2xxiq3oolN5lXhLRr0umDYFfKo=", + "dev": true + }, + "webpack-sources": { + "version": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-0.1.5.tgz", + "integrity": "sha1-qh86vw8NdNtxEcQOUAuE+WZkB1A=", + "dev": true + }, + "websocket-driver": { + "version": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz", + "integrity": "sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY=", + "dev": true + }, + "websocket-extensions": { + "version": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.1.tgz", + "integrity": "sha1-domUmcGEtu91Q3fC27DNbLVdKec=", + "dev": true + }, + "whatwg-encoding": { + "version": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.1.tgz", + "integrity": "sha1-PGxFGhmO567FWx7GHQkgxngBpfQ=", + "dev": true, + "dependencies": { + "iconv-lite": { + "version": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", + "integrity": "sha1-H4irpKsLFQjoMSrMOTRfNumS4vI=", + "dev": true + } + } + }, + "whatwg-fetch": { + "version": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz", + "integrity": "sha1-nITsLc9oGH/wC8ZOEnS0QhduHIQ=" + }, + "whatwg-url": { + "version": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-4.8.0.tgz", + "integrity": "sha1-0pgaqRSMHgCkHFphMRZqtGg7vMA=", + "dev": true, + "dependencies": { + "webidl-conversions": { + "version": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "dev": true + } + } + }, + "whet.extend": { + "version": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz", + "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=", + "dev": true + }, + "which": { + "version": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", + "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=", + "dev": true + }, + "which-module": { + "version": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "dev": true + }, + "window-size": { + "version": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=" + }, + "wordwrap": { + "version": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" + }, + "worker-farm": { + "version": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.3.1.tgz", + "integrity": "sha1-QzMRK7SbF6oFC4eJXKayys9A5f8=", + "dev": true + }, + "wrap-ansi": { + "version": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true + }, + "wrappy": { + "version": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write": { + "version": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", + "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "dev": true + }, + "ws": { + "version": "https://registry.npmjs.org/ws/-/ws-1.1.2.tgz", + "integrity": "sha1-iiRPoFJAHgjJiGz0SoUYnh/UBn8=" + }, + "wtf-8": { + "version": "https://registry.npmjs.org/wtf-8/-/wtf-8-1.0.0.tgz", + "integrity": "sha1-OS2LotDxw00e4tYw8V0O+2jhBIo=" + }, + "xml-char-classes": { + "version": "https://registry.npmjs.org/xml-char-classes/-/xml-char-classes-1.0.0.tgz", + "integrity": "sha1-ZGV4SKIP/F31g6Qq2KJ3tFErvE0=", + "dev": true + }, + "xml-name-validator": { + "version": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz", + "integrity": "sha1-TYuPHszTQZqjYgYb7O9RXh5VljU=", + "dev": true + }, + "xmlhttprequest-ssl": { + "version": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz", + "integrity": "sha1-GFqIjATspGw+QHDZn3tJ3jUomS0=" + }, + "xtend": { + "version": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" + }, + "y18n": { + "version": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yallist": { + "version": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yargs": { + "version": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=" + }, + "yargs-parser": { + "version": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", + "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", + "dev": true, + "dependencies": { + "camelcase": { + "version": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + } + } + }, + "yeast": { + "version": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", + "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=" + } + } +} diff --git a/modules/ui/src/App.css b/modules/ui/src/App.css new file mode 100644 index 0000000..59a7928 --- /dev/null +++ b/modules/ui/src/App.css @@ -0,0 +1,16 @@ +.App { + +} + +.container { + padding-right: 5px; + padding-left: 5px; + margin-right: auto; + margin-left: auto; +} + +.container-fluid { + padding-right: 5px; + padding-left: 5px; + +} diff --git a/modules/ui/src/index.css b/modules/ui/src/index.css new file mode 100644 index 0000000..b4cc725 --- /dev/null +++ b/modules/ui/src/index.css @@ -0,0 +1,5 @@ +body { + margin: 0; + padding: 0; + font-family: sans-serif; +} diff --git a/modules/ui/static/bundle.js b/modules/ui/static/bundle.js index 8e4f222..fd0b963 100644 --- a/modules/ui/static/bundle.js +++ b/modules/ui/static/bundle.js @@ -1,27 +1,27 @@ -!function(e){function t(o){if(n[o])return n[o].exports;var r=n[o]={exports:{},id:o,loaded:!1};return e[o].call(r.exports,r,r.exports,t),r.loaded=!0,r.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}var r=n(1),i=o(r),a=n(20),s=o(a),l=n(349),u=o(l);n(794),s.default.render(i.default.createElement(u.default,null),document.getElementById("root"))},function(e,t,n){"use strict";e.exports=n(34)},function(e,t){function n(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}function r(e){if(c===setTimeout)return setTimeout(e,0);if((c===n||!c)&&setTimeout)return c=setTimeout,setTimeout(e,0);try{return c(e,0)}catch(t){try{return c.call(null,e,0)}catch(t){return c.call(this,e,0)}}}function i(e){if(d===clearTimeout)return clearTimeout(e);if((d===o||!d)&&clearTimeout)return d=clearTimeout,clearTimeout(e);try{return d(e)}catch(t){try{return d.call(null,e)}catch(t){return d.call(this,e)}}}function a(){m&&p&&(m=!1,p.length?h=p.concat(h):v=-1,h.length&&s())}function s(){if(!m){var e=r(a);m=!0;for(var t=h.length;t;){for(p=h,h=[];++v1)for(var n=1;n=0||Object.prototype.hasOwnProperty.call(e,o)&&(n[o]=e[o]);return n}},function(e,t,n){var o,r;/*! +!function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={exports:{},id:r,loaded:!1};return e[r].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}var o=n(1),i=r(o),a=n(18),s=r(a),l=n(389),u=r(l);n(933),s.default.render(i.default.createElement(u.default,null),document.getElementById("root"))},function(e,t,n){"use strict";e.exports=n(75)},function(e,t){function n(){throw new Error("setTimeout has not been defined")}function r(){throw new Error("clearTimeout has not been defined")}function o(e){if(c===setTimeout)return setTimeout(e,0);if((c===n||!c)&&setTimeout)return c=setTimeout,setTimeout(e,0);try{return c(e,0)}catch(t){try{return c.call(null,e,0)}catch(t){return c.call(this,e,0)}}}function i(e){if(d===clearTimeout)return clearTimeout(e);if((d===r||!d)&&clearTimeout)return d=clearTimeout,clearTimeout(e);try{return d(e)}catch(t){try{return d.call(null,e)}catch(t){return d.call(this,e)}}}function a(){m&&p&&(m=!1,p.length?h=p.concat(h):v=-1,h.length&&s())}function s(){if(!m){var e=o(a);m=!0;for(var t=h.length;t;){for(p=h,h=[];++v1)for(var n=1;n1?t-1:0),o=1;o1?t-1:0),o=1;o2?o-2:0),i=2;i=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}},function(e,t,n){(function(e){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e){return function(){for(var t=arguments.length,n=Array(t),r=0;r1?t-1:0),r=1;r1?t-1:0),r=1;r2?r-2:0),i=2;i2?r-2:0);for(var o=2;o2?o-2:0);for(var r=2;r0&&void 0!==arguments[0]?arguments[0]:u(),t=arguments[1];switch(t.type){case"UPDATE_CONFIG":return i({},e,{list:i({},e.list,r({},t.data.name,t.data))});case"LOAD_STATE":return i({},e,{list:t.payload.config});default:return e}});t.default=c},function(e,t){"use strict";function n(){for(var e=arguments.length,t=Array(e),n=0;n=0||Object.prototype.hasOwnProperty.call(e,o)&&(n[o]=e[o]);return n}Object.defineProperty(t,"__esModule",{value:!0}),t.CheckboxField=t.SelectField=t.SliderField=t.NumberField=t.TextField=void 0;var u=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:void 0;if(void 0===e){var t=this.props.form;e={};for(var n in t)switch(t[n].type){case"checkbox":e[t[n].name]=!1;break;default:e[t[n].name]=""}}else this.props.configfield&&!e.hasOwnProperty("config")&&(e.config={});this.setState({showModal:!0,data:e})}},{key:"hide",value:function(){this.setState({showModal:!1})}},{key:"_clear_config",value:function(e){var t={};for(var n in e)t[e[n].name]="";return t}},{key:"_handle",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(n)this.setState({data:(0,m.default)(this.state.data,{config:r({},e.name,{$set:t.target.value})})});else if(e.clear_config){var o,i=""==t.target.value?{}:this._clear_config(this.props.types[t.target.value].properties);this.setState({data:(0,m.default)(this.state.data,(o={},r(o,e.name,{$set:t.target.value}),r(o,"config",{$set:i}),o))})}else this.setState({data:(0,m.default)(this.state.data,r({},e.name,{$set:t.target.value}))})}},{key:"_handleSlider",value:function(e,t){arguments.length>2&&void 0!==arguments[2]&&arguments[2];this.setState({data:(0,m.default)(this.state.data,r({},e.name,{$set:t}))})}},{key:"_handleCheckBox",value:function(e,t){this.setState({data:(0,m.default)(this.state.data,r({},e.name,{$set:!this.state.data[e.name]}))})}},{key:"render_field",value:function(e,t){var n=this,o=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!e.condition||e.condition(this.state.data))switch(e.type){case"text":return f.default.createElement(g,{key:t,onChange:function(t){n._handle(e,t,o)},value:this.state.data[e.name],label:e.label});case"actor":return f.default.createElement(_,{onChange:function(t){n._handle(e,t,o)},value:this.state.data[e.name],key:t,label:e.label,options:this.props.actors});case"sensor":return f.default.createElement(_,{onChange:function(t){n._handle(e,t,o)},value:this.state.data[e.name],key:t,label:e.label,options:this.props.sensors});case"kettle":return f.default.createElement(_,{onChange:function(t){n._handle(e,t,o)},value:this.state.data[e.name],key:t,label:e.label,options:this.props.kettle});case"number":return f.default.createElement(b,{key:t,onChange:function(t){n._handle(e,t,o)},value:this.state.data[e.name],label:e.label});case"select":return f.default.createElement(_,{onChange:function(t){n._handle(e,t,o)},value:this.state.data[e.name],key:t,label:e.label,options:e.options});case"checkbox":return f.default.createElement(x,{checked:this.state.data[e.name]||!1,onChange:function(t){n._handleCheckBox(e,t)},value:this.state.data[e.name],key:t,label:e.label});case"slider":return f.default.createElement(E,{key:t,marks:e.marks,min:e.min,max:e.max,onChange:function(t){n._handleSlider(e,t)},value:this.state.data[e.name]});default:return}}},{key:"render_field_config",value:function(e,t){var n=this,o=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(e.configurable)switch(e.type){case"text":return f.default.createElement(g,{key:t,onChange:function(t){n._handle(e,t,o)},value:this.state.data.config[e.name],label:e.label});case"actor":return f.default.createElement(_,{onChange:function(t){n._handle(e,t,o)},value:this.state.data.config[e.name],key:t,label:e.label,options:this.props.actors});case"sensor":return f.default.createElement(_,{onChange:function(t){n._handle(e,t,o)},value:this.state.data.config[e.name],key:t,label:e.label,options:this.props.sensors});case"kettle":return f.default.createElement(_,{onChange:function(t){n._handle(e,t,o)},value:this.state.data.config[e.name],key:t,label:e.label,options:this.props.kettle});case"number":return f.default.createElement(b,{key:t,onChange:function(t){n._handle(e,t,o)},value:this.state.data.config[e.name],label:e.label});case"select":return f.default.createElement(_,{onChange:function(t){n._handle(e,t,o)},value:this.state.data.config[e.name],key:t,label:e.label,options:e.options});default:return}}},{key:"render_config",value:function(){var e=this;if(void 0!==this.state.data[this.props.configfield]&&""!==this.state.data[this.props.configfield]){var t=this.state.data[this.props.configfield];if(this.props.types.hasOwnProperty(t)){var n=this.props.types[t].properties||[];return n.map(function(t,n){return e.render_field_config(t,n,!0)})}return f.default.createElement("div",null,'Configuration Error. Type "',t,'" configured but not found')}}},{key:"_add",value:function(){this.props.btn_add(this.state.data)===!0&&this.hide()}},{key:"_save",value:function(){this.props.btn_save(this.state.data)===!0&&this.hide()}},{key:"_delete",value:function(){this.props.btn_delete(this.state.data)===!0&&this.hide()}},{key:"render_body",value:function(){var e=this,t=this.props.form;return this.props.configfield?f.default.createElement(p.Row,{className:"show-grid"},f.default.createElement(p.Col,{xs:12,sm:6,md:6},t.map(function(t,n){return e.render_field(t,n)})),f.default.createElement(p.Col,{xs:12,sm:6,md:6},this.render_config())):t.map(function(t,n){return e.render_field(t,n)})}},{key:"render",value:function(){var e=this.props,t=e.add,n=e.save,o=e.remove,r=e.title,i=e.bsSize,a=e.btn_save_label,s=e.btn_add_label,l=e.btn_delete_label;return f.default.createElement(p.Modal,{bsSize:i,animation:!1,show:this.state.showModal,onHide:this.hide.bind(this)},f.default.createElement(p.Modal.Header,null,f.default.createElement(p.Modal.Title,null,r||"Modal")),f.default.createElement(p.Modal.Body,null,this.render_body()),f.default.createElement(p.Modal.Footer,null,f.default.createElement(p.Button,{onClick:this.hide.bind(this)},"Close"),o?f.default.createElement(p.Button,{className:"btn-danger",onClick:this._delete.bind(this)},l):void 0,t?f.default.createElement(p.Button,{className:"btn-success",onClick:this._add.bind(this)},s):void 0,n?f.default.createElement(p.Button,{className:"btn-success",onClick:this._save.bind(this)},a):void 0))}}]),t}(d.Component);w.defaultProps={sensors:{},kettle:{},actors:{},bsSize:"small",btn_save_label:"Update",btn_add_label:"Add",btn_delete_label:"Delete"},t.default=w},function(e,t,n){(function(t){"use strict";var o=null;if("production"!==t.env.NODE_ENV){var r=n(274);o=r}e.exports={debugTool:o}}).call(t,n(2))},function(e,t,n){(function(t){"use strict";function o(){k.ReactReconcileTransaction&&x?void 0:"production"!==t.env.NODE_ENV?y(!1,"ReactUpdates: must inject a reconcile transaction class and batching strategy"):c("123")}function r(){this.reinitializeTransaction(),this.dirtyComponentsLength=null,this.callbackQueue=f.getPooled(),this.reconcileTransaction=k.ReactReconcileTransaction.getPooled(!0)}function i(e,t,n,r,i,a){return o(),x.batchedUpdates(e,t,n,r,i,a)}function a(e,t){return e._mountOrder-t._mountOrder}function s(e){var n=e.dirtyComponentsLength;n!==g.length?"production"!==t.env.NODE_ENV?y(!1,"Expected flush transaction's stored dirty-components length (%s) to match dirty-components array length (%s).",n,g.length):c("124",n,g.length):void 0,g.sort(a),b++;for(var o=0;o0&&void 0!==arguments[0]?arguments[0]:u(),t=arguments[1];switch(t.type){case"LOAD_STATE":return i({},e,{actors:t.payload.actors,config_type:t.payload.actor_types});case"UPDATE_ACTOR":case"ADD_ACTOR":return i({},e,{actors:i({},e.actors,r({},t.payload.id,t.payload))});case"DELETE_ACTOR":return delete e.actors[t.id],i({},e,{actors:i({},e.actors)});case"SWITCH_ACTOR":return i({},e,{actors:i({},e.actors,r({},t.payload.id,t.payload))});default:return e}});t.default=c},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n1){for(var E=Array(b),_=0;_1){for(var b=Array(g),E=0;E0&&void 0!==arguments[0]?arguments[0]:d(),t=arguments[1];switch(t.type){case"LOAD_STATE":return a({},e,{list:t.payload.fermenter,config_type:t.payload.fermentation_controller_types});case"DELETE_FERMENTER":return delete e.list[t.id],a({},e,{list:a({},e.list)});case"UPDATE_FERMENTER_TARGET_TEMP":return a({},e,{list:a({},e.list,i({},t.payload.id,(0,c.default)(e.list[t.payload.id],{target_temp:{$set:t.payload.target_temp}})))});case"UPDATE_FERMENTER_BREWNAME":return a({},e,{list:a({},e.list,i({},t.payload.id,(0,c.default)(e.list[t.payload.id],{brewname:{$set:t.payload.brewname}})))});case"ADD_FERMENTER_STEP":return a({},e,{list:a({},e.list,i({},t.payload.fermenter_id,a({},e.list[t.payload.fermenter_id],{steps:[].concat(r(e.list[t.payload.fermenter_id].steps),[t.payload])})))});case"DELETE_FERMENTER_STEP":return a({},e,{list:a({},e.list,i({},t.payload.fermenter_id,a({},e.list[t.payload.fermenter_id],{steps:e.list[t.payload.fermenter_id].steps.filter(function(e,n){return e.id!==t.payload.id})})))});case"UPDATE_FERMENTER_STEP":return a({},e,{list:a({},e.list,i({},t.payload.fermenter_id,a({},e.list[t.payload.fermenter_id],{steps:e.list[t.payload.fermenter_id].steps.map(function(e,n){return e.id!==t.payload.id?e:a({},e,t.payload)})})))});case"UPDATE_FERMENTER_STEPS":return a({},e,{list:a({},e.list,i({},t.payload.fermenter_id,a({},e.list[t.payload.fermenter_id],{steps:e.list[t.payload.fermenter_id].steps.map(function(e,n){return e.id!==t.payload.id?e:a({},e,t.payload)})})))});case"ADD_FERMENTER":case"UPDATE_FERMENTER":return a({},e,{list:a({},e.list,i({},t.payload.id,t.payload))});default:return e}});t.default=f},function(e,t,n){e.exports={default:n(409),__esModule:!0}},function(e,t,n){var o=n(77);e.exports=function(e){if(!o(e))throw TypeError(e+" is not an object!");return e}},function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,t,n){var o=n(45),r=n(80);e.exports=n(50)?function(e,t,n){return o.f(e,t,r(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t,n){var o=n(214),r=n(125);e.exports=Object.keys||function(e){return o(e,r)}},function(e,t){"use strict";function n(e){return e&&e.ownerDocument||document}Object.defineProperty(t,"__esModule",{value:!0}),t.default=n,e.exports=t.default},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(t)do if(t===e)return!0;while(t=t.parentNode);return!1}Object.defineProperty(t,"__esModule",{value:!0});var i=n(46),a=o(i);t.default=function(){return a.default?function(e,t){return e.contains?e.contains(t):e.compareDocumentPosition?e===t||!!(16&e.compareDocumentPosition(t)):r(e,t)}:r}(),e.exports=t.default},function(e,t,n){(function(e){function o(e,n){var o="b"+t.packets[e.type]+e.data.data;return n(o)}function r(e,n,o){if(!n)return t.encodeBase64Packet(e,o);var r=e.data,i=new Uint8Array(r),a=new Uint8Array(1+r.byteLength);a[0]=g[e.type];for(var s=0;s1?{type:b[r],data:e.substring(1)}:{type:b[r]}:E}var i=new Uint8Array(e),r=i[0],a=f(e,1);return _&&"blob"===n&&(a=new _([a])),{type:b[r],data:a}},t.decodeBase64Packet=function(e,t){var n=b[e.charAt(0)];if(!u)return{type:n,data:{base64:!0,data:e.substr(1)}};var o=u.decode(e.substr(1));return"blob"===t&&_&&(o=new _([o])),{type:n,data:o}},t.encodePayload=function(e,n,o){function r(e){return e.length+":"+e}function i(e,o){t.encodePacket(e,!!a&&n,!0,function(e){o(null,r(e))})}"function"==typeof n&&(o=n,n=null);var a=d(e);return n&&a?_&&!y?t.encodePayloadAsBlob(e,o):t.encodePayloadAsArrayBuffer(e,o):e.length?void l(e,i,function(e,t){return o(t.join(""))}):o("0:")},t.decodePayload=function(e,n,o){if("string"!=typeof e)return t.decodePayloadAsBinary(e,n,o);"function"==typeof n&&(o=n,n=null);var r;if(""==e)return o(E,0,1);for(var i,a,s="",l=0,u=e.length;l0;){for(var s=new Uint8Array(r),l=0===s[0],u="",c=1;255!=s[c];c++){if(u.length>310){a=!0;break}u+=s[c]}if(a)return o(E,0,1);r=f(r,2+u.length),u=parseInt(u);var d=f(r,0,u);if(l)try{d=String.fromCharCode.apply(null,new Uint8Array(d))}catch(e){var p=new Uint8Array(d);d="";for(var c=0;c0&&void 0!==arguments[0]?arguments[0]:"Question",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"ARE YOU SURE?",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){return!0},o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){return!0};this.setState({showModal:!0,title:e,message:t,confirm:n,cancel:o})}},{key:"hide",value:function(){this.setState({showModal:!1})}},{key:"_confirm",value:function(){this.props.confirm()===!0&&this.hide()}},{key:"_cancel",value:function(){this.props.cancel()===!0&&this.hide()}},{key:"render",value:function(){var e=this.props,t=e.cancel,n=e.confirm,o=e.message,r=e.title,i=e.bsSize,a=e.btn_confirm_label,s=e.btn_cancel_label;return u.default.createElement(c.Modal,{bsSize:i,animation:!1,show:this.state.showModal,onHide:this.hide.bind(this)},u.default.createElement(c.Modal.Header,null,u.default.createElement(c.Modal.Title,null,r||"Modal")),u.default.createElement(c.Modal.Body,null,o),u.default.createElement(c.Modal.Footer,null,n?u.default.createElement(c.Button,{className:"btn-success",onClick:this._confirm.bind(this)},a):void 0,t?u.default.createElement(c.Button,{className:"btn-danger",onClick:this._cancel.bind(this)},s):void 0))}}]),t}(l.Component);d.defaultProps={bsSize:"small",btn_confirm_label:"Confirm",btn_cancel_label:"Cancel"},t.default=d},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:u(),t=arguments[1];switch(t.type){case"LOAD_STATE":return i({},e,{sensors:t.payload.sensors,config_type:t.payload.sensor_types});case"SENSOR_UPDATE":return console.log("SENSOR_UPDATE",t.payload),i({},e,{sensors:i({},e.sensors,r({},t.payload.id,t.payload))});case"DELETE_SENSOR":return delete e.sensors[t.id],i({},e,{sensors:i({},e.sensors)});case"ADD_SENSOR":case"UPDATE_SENSOR":return i({},e,{sensors:i({},e.sensors,r({},t.payload.id,t.payload))});default:return e}});t.default=c},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.checkout_tag=t.git_pull=t.get_git_status=t.reboot=t.shutdown=t.set_time=t.load_state=void 0;var r=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:s(),t=arguments[1];switch(t.type){case"UPDATE_GIT_STATUS":return r({},e,{head:t.payload.headcommit,tags:t.payload.tags,branchname:t.payload.branchname,loading:!1});case"GIT_LOADING_STARTED":return r({},e,{loading:!0});case"GIT_LOADING_FINISED":return r({},e,{loading:!1});case"LOAD_STATE":return r({},e,{ready:!0});default:return e}});t.default=u},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var r=n(203),i=o(r);t.default=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:u(),t=arguments[1];switch(t.type){case"UPDATE_CONFIG":return i({},e,{list:i({},e.list,o({},t.payload.name,t.payload))});case"LOAD_STATE":return i({},e,{list:t.payload.config});default:return e}});t.default=c},function(e,t,n){(function(t){"use strict";function r(e,t){return 1===e.nodeType&&e.getAttribute(m)===String(t)||8===e.nodeType&&e.nodeValue===" react-text: "+t+" "||8===e.nodeType&&e.nodeValue===" react-empty: "+t+" "}function o(e){for(var t;t=e._renderedComponent;)e=t;return e}function i(e,t){var n=o(e);n._hostNode=t,t[y]=n}function a(e){var t=e._hostNode;t&&(delete t[y],e._hostNode=null)}function s(e,n){if(!(e._flags&v.hasCachedChildNodes)){var a=e._renderedChildren,s=n.firstChild;e:for(var l in a)if(a.hasOwnProperty(l)){var u=a[l],c=o(u)._domID;if(0!==c){for(;null!==s;s=s.nextSibling)if(r(s,c)){i(u,s);continue e}"production"!==t.env.NODE_ENV?h(!1,"Unable to find element with ID %s.",c):d("32",c)}}e._flags|=v.hasCachedChildNodes}}function l(e){if(e[y])return e[y];for(var t=[];!e[y];){if(t.push(e),!e.parentNode)return null;e=e.parentNode}for(var n,r;e&&(r=e[y]);e=t.pop())n=r,t.length&&s(r,e);return n}function u(e){var t=l(e);return null!=t&&t._hostNode===e?t:null}function c(e){if(void 0===e._hostNode?"production"!==t.env.NODE_ENV?h(!1,"getNodeFromInstance: Invalid argument."):d("33"):void 0,e._hostNode)return e._hostNode;for(var n=[];!e._hostNode;)n.push(e),e._hostParent?void 0:"production"!==t.env.NODE_ENV?h(!1,"React DOM tree root should always have a node reference."):d("34"),e=e._hostParent;for(;n.length;e=n.pop())s(e,e._hostNode);return e._hostNode}var d=n(15),f=n(50),p=n(320),h=n(12),m=f.ID_ATTRIBUTE_NAME,v=p,y="__reactInternalInstance$"+Math.random().toString(36).slice(2),g={getClosestInstanceFromNode:l,getInstanceFromNode:u,getNodeFromInstance:c,precacheChildNodes:s,precacheNode:i,uncacheNode:a};e.exports=g}).call(t,n(2))},function(e,t){"use strict";var n=!("undefined"==typeof window||!window.document||!window.document.createElement),r={canUseDOM:n,canUseWorkers:"undefined"!=typeof Worker,canUseEventListeners:n&&!(!window.addEventListener&&!window.attachEvent),canUseViewport:n&&!!window.screen,isInWorker:!n};e.exports=r},function(e,t){"use strict";function n(){for(var e=arguments.length,t=Array(e),n=0;n=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}Object.defineProperty(t,"__esModule",{value:!0}),t.CheckboxField=t.SelectField=t.SliderField=t.NumberField=t.TextField=void 0;var u=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:void 0;if(void 0===e){var t=this.props.form;e={};for(var n in t)switch(t[n].type){case"checkbox":e[t[n].name]=!1;break;default:e[t[n].name]=""}}else this.props.configfield&&!e.hasOwnProperty("config")&&(e.config={});this.setState({showModal:!0,data:e})}},{key:"hide",value:function(){this.setState({showModal:!1})}},{key:"_clear_config",value:function(e){var t={};for(var n in e)t[e[n].name]=e[n].default_value;return t}},{key:"_handle",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(n)this.setState({data:(0,m.default)(this.state.data,{config:o({},e.name,{$set:t.target.value})})});else if(e.clear_config){var r,i=""==t.target.value?{}:this._clear_config(this.props.types[t.target.value].properties);this.setState({data:(0,m.default)(this.state.data,(r={},o(r,e.name,{$set:t.target.value}),o(r,"config",{$set:i}),r))})}else this.setState({data:(0,m.default)(this.state.data,o({},e.name,{$set:t.target.value}))})}},{key:"_handleSlider",value:function(e,t){arguments.length>2&&void 0!==arguments[2]&&arguments[2];this.setState({data:(0,m.default)(this.state.data,o({},e.name,{$set:t}))})}},{key:"_handleCheckBox",value:function(e,t){this.setState({data:(0,m.default)(this.state.data,o({},e.name,{$set:!this.state.data[e.name]}))})}},{key:"render_field",value:function(e,t){var n=this,r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!e.condition||e.condition(this.state.data))switch(e.type){case"text":return f.default.createElement(g,{key:t,onChange:function(t){n._handle(e,t,r)},value:this.state.data[e.name],label:e.label});case"actor":return f.default.createElement(E,{onChange:function(t){n._handle(e,t,r)},value:this.state.data[e.name],key:t,label:e.label,options:this.props.actors});case"sensor":return f.default.createElement(E,{onChange:function(t){n._handle(e,t,r)},value:this.state.data[e.name],key:t,label:e.label,options:this.props.sensors});case"kettle":return f.default.createElement(E,{onChange:function(t){n._handle(e,t,r)},value:this.state.data[e.name],key:t,label:e.label,options:this.props.kettle});case"number":return f.default.createElement(b,{key:t,onChange:function(t){n._handle(e,t,r)},value:this.state.data[e.name],description:e.description,label:e.label});case"select":return f.default.createElement(E,{onChange:function(t){n._handle(e,t,r)},value:this.state.data[e.name],key:t,label:e.label,options:e.options});case"checkbox":return f.default.createElement(_,{checked:this.state.data[e.name]||!1,onChange:function(t){n._handleCheckBox(e,t)},value:this.state.data[e.name],key:t,label:e.label});case"slider":return f.default.createElement(x,{key:t,marks:e.marks,min:e.min,max:e.max,onChange:function(t){n._handleSlider(e,t)},value:this.state.data[e.name]});default:return}}},{key:"render_field_config",value:function(e,t){var n=this,r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(console.log("FIELD",e),e.configurable)switch(e.type){case"text":return f.default.createElement(g,{key:t,onChange:function(t){n._handle(e,t,r)},value:this.state.data.config[e.name],label:e.label,description:e.description});case"actor":return f.default.createElement(E,{onChange:function(t){n._handle(e,t,r)},value:this.state.data.config[e.name],key:t,label:e.label,options:this.props.actors,description:e.description});case"sensor":return f.default.createElement(E,{onChange:function(t){n._handle(e,t,r)},value:this.state.data.config[e.name],key:t,label:e.label,options:this.props.sensors,description:e.description});case"kettle":return f.default.createElement(E,{onChange:function(t){n._handle(e,t,r)},value:this.state.data.config[e.name],key:t,label:e.label,options:this.props.kettle,description:e.description});case"number":return f.default.createElement(b,{key:t,onChange:function(t){n._handle(e,t,r)},value:this.state.data.config[e.name],label:e.label,description:e.description});case"select":return f.default.createElement(E,{onChange:function(t){n._handle(e,t,r)},value:this.state.data.config[e.name],key:t,label:e.label,options:e.options,description:e.description});default:return}}},{key:"render_config",value:function(){var e=this;if(void 0!==this.state.data[this.props.configfield]&&""!==this.state.data[this.props.configfield]){var t=this.state.data[this.props.configfield];if(this.props.types.hasOwnProperty(t)){var n=this.props.types[t].properties||[];return n.map(function(t,n){return e.render_field_config(t,n,!0)})}return f.default.createElement("div",null,'Configuration Error. Type "',t,'" configured but not found')}}},{key:"_add",value:function(){this.props.btn_add(this.state.data)===!0&&this.hide()}},{key:"_save",value:function(){this.props.btn_save(this.state.data)===!0&&this.hide()}},{key:"_delete",value:function(){this.props.btn_delete(this.state.data)===!0&&this.hide()}},{key:"render_body",value:function(){var e=this,t=this.props.form;return this.props.configfield?f.default.createElement(p.Row,{className:"show-grid"},f.default.createElement(p.Col,{xs:12,sm:6,md:6},t.map(function(t,n){return e.render_field(t,n)})),f.default.createElement(p.Col,{xs:12,sm:6,md:6},this.render_config())):t.map(function(t,n){return e.render_field(t,n)})}},{key:"render",value:function(){var e=this.props,t=e.add,n=e.save,r=e.remove,o=e.title,i=e.bsSize,a=e.btn_save_label,s=e.btn_add_label,l=e.btn_delete_label;return f.default.createElement(p.Modal,{bsSize:i,animation:!1,show:this.state.showModal,onHide:this.hide.bind(this)},f.default.createElement(p.Modal.Header,null,f.default.createElement(p.Modal.Title,null,o||"Modal")),f.default.createElement(p.Modal.Body,null,this.render_body()),f.default.createElement(p.Modal.Footer,null,f.default.createElement(p.Button,{onClick:this.hide.bind(this)},"Close"),r?f.default.createElement(p.Button,{className:"btn-danger",onClick:this._delete.bind(this)},l):void 0,t?f.default.createElement(p.Button,{className:"btn-success",onClick:this._add.bind(this)},s):void 0,n?f.default.createElement(p.Button,{className:"btn-success",onClick:this._save.bind(this)},a):void 0))}}]),t}(d.Component);w.defaultProps={sensors:{},kettle:{},actors:{},bsSize:"small",btn_save_label:"Update",btn_add_label:"Add",btn_delete_label:"Delete"},t.default=w},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t,n){var r=0;return p.default.Children.map(e,function(e){return p.default.isValidElement(e)?t.call(n,e,r++):e})}function i(e,t,n){var r=0;p.default.Children.forEach(e,function(e){p.default.isValidElement(e)&&t.call(n,e,r++)})}function a(e){var t=0;return p.default.Children.forEach(e,function(e){p.default.isValidElement(e)&&++t}),t}function s(e,t,n){var r=0,o=[];return p.default.Children.forEach(e,function(e){p.default.isValidElement(e)&&t.call(n,e,r++)&&o.push(e)}),o}function l(e,t,n){var r=0,o=void 0;return p.default.Children.forEach(e,function(e){o||p.default.isValidElement(e)&&t.call(n,e,r++)&&(o=e)}),o}function u(e,t,n){var r=0,o=!0;return p.default.Children.forEach(e,function(e){o&&p.default.isValidElement(e)&&(t.call(n,e,r++)||(o=!1))}),o}function c(e,t,n){var r=0,o=!1;return p.default.Children.forEach(e,function(e){o||p.default.isValidElement(e)&&t.call(n,e,r++)&&(o=!0)}),o}function d(e){var t=[];return p.default.Children.forEach(e,function(e){p.default.isValidElement(e)&&t.push(e)}),t}t.__esModule=!0;var f=n(1),p=r(f);t.default={map:o,forEach:i,count:a,find:l,filter:s,every:u,some:c,toArray:d},e.exports=t.default},function(e,t,n){(function(t){"use strict";function r(e){var t=Function.prototype.toString,n=Object.prototype.hasOwnProperty,r=RegExp("^"+t.call(n).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");try{var o=t.call(e);return r.test(o)}catch(e){return!1}}function o(e){var t=u(e);if(t){var n=t.childIDs;c(e),n.forEach(o)}}function i(e,t,n){return"\n in "+(e||"Unknown")+(t?" (at "+t.fileName.replace(/^.*[\\\/]/,"")+":"+t.lineNumber+")":n?" (created by "+n+")":"")}function a(e){return null==e?"#empty":"string"==typeof e||"number"==typeof e?"#text":"string"==typeof e.type?e.type:e.type.displayName||e.type.name||"Unknown"}function s(e){var n,r=N.getDisplayName(e),o=N.getElement(e),a=N.getOwnerID(e);return a&&(n=N.getDisplayName(a)),"production"!==t.env.NODE_ENV?g(o,"ReactComponentTreeHook: Missing React element for debugID %s when building stack",e):void 0,i(r,o&&o._source,n)}var l,u,c,d,f,p,h,m=n(76),v=n(40),y=n(12),g=n(13),b="function"==typeof Array.from&&"function"==typeof Map&&r(Map)&&null!=Map.prototype&&"function"==typeof Map.prototype.keys&&r(Map.prototype.keys)&&"function"==typeof Set&&r(Set)&&null!=Set.prototype&&"function"==typeof Set.prototype.keys&&r(Set.prototype.keys);if(b){var x=new Map,E=new Set;l=function(e,t){x.set(e,t)},u=function(e){return x.get(e)},c=function(e){x.delete(e)},d=function(){return Array.from(x.keys())},f=function(e){E.add(e)},p=function(e){E.delete(e)},h=function(){return Array.from(E.keys())}}else{var _={},w={},O=function(e){return"."+e},C=function(e){return parseInt(e.substr(1),10)};l=function(e,t){var n=O(e);_[n]=t},u=function(e){var t=O(e);return _[t]},c=function(e){var t=O(e);delete _[t]},d=function(){return Object.keys(_).map(C)},f=function(e){var t=O(e);w[t]=!0},p=function(e){var t=O(e);delete w[t]},h=function(){return Object.keys(w).map(C)}}var k=[],N={onSetChildren:function(e,n){var r=u(e);r?void 0:"production"!==t.env.NODE_ENV?y(!1,"Item must have been set"):m("144"),r.childIDs=n;for(var o=0;o0&&void 0!==arguments[0]?arguments[0]:u(),t=arguments[1];switch(t.type){case"LOAD_STATE":return i({},e,{actors:t.payload.actors,config_type:t.payload.actor_types});case"UPDATE_ACTOR":case"ADD_ACTOR":return i({},e,{actors:i({},e.actors,o({},t.payload.id,t.payload))});case"DELETE_ACTOR":return delete e.actors[t.id],i({},e,{actors:i({},e.actors)});case"SWITCH_ACTOR":return i({},e,{actors:i({},e.actors,o({},t.payload.id,t.payload))});default:return e}});t.default=c},function(e,t){var n=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(e,t,n){var r=n(64),o=n(238),i=n(154),a=Object.defineProperty;t.f=n(53)?Object.defineProperty:function(e,t,n){if(r(e),t=i(t,!0),r(n),o)try{return a(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(e[t]=n.value),e}},function(e,t,n){(function(t){"use strict";function r(e,t){return(e&t)===t}var o=n(15),i=n(12),a={MUST_USE_PROPERTY:1,HAS_BOOLEAN_VALUE:4,HAS_NUMERIC_VALUE:8,HAS_POSITIVE_NUMERIC_VALUE:24,HAS_OVERLOADED_BOOLEAN_VALUE:32,injectDOMPropertyConfig:function(e){var n=a,s=e.Properties||{},u=e.DOMAttributeNamespaces||{},c=e.DOMAttributeNames||{},d=e.DOMPropertyNames||{},f=e.DOMMutationMethods||{};e.isCustomAttribute&&l._isCustomAttributeFunctions.push(e.isCustomAttribute);for(var p in s){l.properties.hasOwnProperty(p)?"production"!==t.env.NODE_ENV?i(!1,"injectDOMPropertyConfig(...): You're trying to inject DOM property '%s' which has already been injected. You may be accidentally injecting the same DOM property config twice, or you may be injecting two configs that have conflicting property names.",p):o("48",p):void 0;var h=p.toLowerCase(),m=s[p],v={attributeName:h,attributeNamespace:null,propertyName:p,mutationMethod:null,mustUseProperty:r(m,n.MUST_USE_PROPERTY),hasBooleanValue:r(m,n.HAS_BOOLEAN_VALUE),hasNumericValue:r(m,n.HAS_NUMERIC_VALUE),hasPositiveNumericValue:r(m,n.HAS_POSITIVE_NUMERIC_VALUE),hasOverloadedBooleanValue:r(m,n.HAS_OVERLOADED_BOOLEAN_VALUE)};if(v.hasBooleanValue+v.hasNumericValue+v.hasOverloadedBooleanValue<=1?void 0:"production"!==t.env.NODE_ENV?i(!1,"DOMProperty: Value can be one of boolean, overloaded boolean, or numeric value, but not a combination: %s",p):o("50",p),"production"!==t.env.NODE_ENV&&(l.getPossibleStandardName[h]=p),c.hasOwnProperty(p)){var y=c[p];v.attributeName=y,"production"!==t.env.NODE_ENV&&(l.getPossibleStandardName[y]=p)}u.hasOwnProperty(p)&&(v.attributeNamespace=u[p]),d.hasOwnProperty(p)&&(v.propertyName=d[p]),f.hasOwnProperty(p)&&(v.mutationMethod=f[p]),l.properties[p]=v}}},s=":A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",l={ID_ATTRIBUTE_NAME:"data-reactid",ROOT_ATTRIBUTE_NAME:"data-reactroot",ATTRIBUTE_NAME_START_CHAR:s,ATTRIBUTE_NAME_CHAR:s+"\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040",properties:{},getPossibleStandardName:"production"!==t.env.NODE_ENV?{autofocus:"autoFocus"}:null,_isCustomAttributeFunctions:[],isCustomAttribute:function(e){for(var t=0;t0&&void 0!==arguments[0]?arguments[0]:"Question",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"ARE YOU SURE?",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){return!0},r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){return!0};this.setState({showModal:!0,title:e,message:t,confirm:n,cancel:r})}},{key:"hide",value:function(){this.setState({showModal:!1})}},{key:"_confirm",value:function(){this.props.confirm()===!0&&this.hide()}},{key:"_cancel",value:function(){this.props.cancel()===!0&&this.hide()}},{key:"render",value:function(){var e=this.props,t=e.cancel,n=e.confirm,r=e.message,o=e.title,i=e.bsSize,a=e.btn_confirm_label,s=e.btn_cancel_label;return u.default.createElement(c.Modal,{bsSize:i,animation:!1,show:this.state.showModal,onHide:this.hide.bind(this)},u.default.createElement(c.Modal.Header,null,u.default.createElement(c.Modal.Title,null,o||"Modal")),u.default.createElement(c.Modal.Body,null,r),u.default.createElement(c.Modal.Footer,null,n?u.default.createElement(c.Button,{className:"btn-success",onClick:this._confirm.bind(this)},a):void 0,t?u.default.createElement(c.Button,{className:"btn-danger",onClick:this._cancel.bind(this)},s):void 0))}}]),t}(l.Component);d.defaultProps={bsSize:"small",btn_confirm_label:"Confirm",btn_cancel_label:"Cancel"},t.default=d},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t0&&void 0!==arguments[0]?arguments[0]:u(),t=arguments[1];switch(t.type){case"LOAD_STATE":return i({},e,{list:t.payload.steps,type:t.payload.step_types});case"UPDATE_ALL_STEPS":return i({},e,{list:t.payload});case"ADD_STEP":return i({},e,{list:[].concat(o(e.list),[t.payload])});case"REMOVE_STEP":return i({},e,{list:e.list.filter(function(e,n){return e.id!==t.payload})});case"UPDATE_STEP":return i({},e,{list:e.list.map(function(e,n){return e.id!==t.payload.id?e:i({},e,t.payload)})});default:return e}});t.default=c},function(e,t,n){e.exports=!n(65)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},function(e,t,n){function r(e,t){var n=i(e,t);return o(n)?n:void 0}var o=n(604),i=n(634);e.exports=r},function(e,t,n){(function(t){"use strict";var r=n(15),o=n(12),i=function(e){var t=this;if(t.instancePool.length){var n=t.instancePool.pop();return t.call(n,e),n}return new t(e)},a=function(e,t){var n=this;if(n.instancePool.length){var r=n.instancePool.pop();return n.call(r,e,t),r}return new n(e,t)},s=function(e,t,n){var r=this;if(r.instancePool.length){var o=r.instancePool.pop();return r.call(o,e,t,n),o}return new r(e,t,n)},l=function(e,t,n,r){var o=this;if(o.instancePool.length){var i=o.instancePool.pop();return o.call(i,e,t,n,r),i}return new o(e,t,n,r)},u=function(e){var n=this;e instanceof n?void 0:"production"!==t.env.NODE_ENV?o(!1,"Trying to release an instance into a pool of a different type."):r("25"),e.destructor(),n.instancePool.length1){for(var x=Array(b),E=0;E1){for(var b=Array(g),x=0;x0&&void 0!==arguments[0]?arguments[0]:d(),t=arguments[1];switch(t.type){case"LOAD_STATE":return a({},e,{list:t.payload.fermenter,config_type:t.payload.fermentation_controller_types});case"DELETE_FERMENTER":return delete e.list[t.id],a({},e,{list:a({},e.list)});case"UPDATE_FERMENTER_TARGET_TEMP":return a({},e,{list:a({},e.list,i({},t.payload.id,(0,c.default)(e.list[t.payload.id],{target_temp:{$set:t.payload.target_temp}})))});case"UPDATE_FERMENTER_BREWNAME":return a({},e,{list:a({},e.list,i({},t.payload.id,(0,c.default)(e.list[t.payload.id],{brewname:{$set:t.payload.brewname}})))});case"ADD_FERMENTER_STEP":return a({},e,{list:a({},e.list,i({},t.payload.fermenter_id,a({},e.list[t.payload.fermenter_id],{steps:[].concat(o(e.list[t.payload.fermenter_id].steps),[t.payload])})))});case"DELETE_FERMENTER_STEP":return a({},e,{list:a({},e.list,i({},t.payload.fermenter_id,a({},e.list[t.payload.fermenter_id],{steps:e.list[t.payload.fermenter_id].steps.filter(function(e,n){return e.id!==t.payload.id})})))});case"UPDATE_FERMENTER_STEP":return a({},e,{list:a({},e.list,i({},t.payload.fermenter_id,a({},e.list[t.payload.fermenter_id],{steps:e.list[t.payload.fermenter_id].steps.map(function(e,n){return e.id!==t.payload.id?e:a({},e,t.payload)})})))});case"UPDATE_FERMENTER_STEPS":return a({},e,{list:a({},e.list,i({},t.payload.fermenter_id,a({},e.list[t.payload.fermenter_id],{steps:e.list[t.payload.fermenter_id].steps.map(function(e,n){return e.id!==t.payload.id?e:a({},e,t.payload)})})))});case"ADD_FERMENTER":case"UPDATE_FERMENTER":return a({},e,{list:a({},e.list,i({},t.payload.id,t.payload))});default:return e}});t.default=f},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}Object.defineProperty(t,"__esModule",{value:!0}),t.action=t.remove=t.save=t.add=void 0;var i=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:u(),t=arguments[1];switch(t.type){case"LOAD_STATE":return i({},e,{sensors:t.payload.sensors,config_type:t.payload.sensor_types});case"SENSOR_UPDATE":return console.log("SENSOR_UPDATE",t.payload),i({},e,{sensors:i({},e.sensors,o({},t.payload.id,t.payload))});case"DELETE_SENSOR":return delete e.sensors[t.id],i({},e,{sensors:i({},e.sensors)});case"ADD_SENSOR":case"UPDATE_SENSOR":return i({},e,{sensors:i({},e.sensors,o({},t.payload.id,t.payload))});default:return e}});t.default=c},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n1?{type:b[o],data:e.substring(1)}:{type:b[o]}:x}var i=new Uint8Array(e),o=i[0],a=f(e,1);return E&&"blob"===n&&(a=new E([a])),{type:b[o],data:a}},t.decodeBase64Packet=function(e,t){var n=b[e.charAt(0)];if(!u)return{type:n,data:{base64:!0,data:e.substr(1)}};var r=u.decode(e.substr(1));return"blob"===t&&E&&(r=new E([r])),{type:n,data:r}},t.encodePayload=function(e,n,r){function o(e){return e.length+":"+e}function i(e,r){t.encodePacket(e,!!a&&n,!0,function(e){r(null,o(e))})}"function"==typeof n&&(r=n,n=null);var a=d(e);return n&&a?E&&!y?t.encodePayloadAsBlob(e,r):t.encodePayloadAsArrayBuffer(e,r):e.length?void l(e,i,function(e,t){return r(t.join(""))}):r("0:")},t.decodePayload=function(e,n,r){if("string"!=typeof e)return t.decodePayloadAsBinary(e,n,r);"function"==typeof n&&(r=n,n=null);var o;if(""==e)return r(x,0,1);for(var i,a,s="",l=0,u=e.length;l0;){for(var s=new Uint8Array(o),l=0===s[0],u="",c=1;255!=s[c];c++){if(u.length>310){a=!0;break}u+=s[c]}if(a)return r(x,0,1);o=f(o,2+u.length),u=parseInt(u);var d=f(o,0,u);if(l)try{d=String.fromCharCode.apply(null,new Uint8Array(d))}catch(e){var p=new Uint8Array(d);d="";for(var c=0;c0&&void 0!==arguments[0]?arguments[0]:s(),t=arguments[1];switch(t.type){case"UPDATE_GIT_STATUS":return o({},e,{head:t.payload.headcommit,tags:t.payload.tags,branchname:t.payload.branchname,loading:!1});case"GIT_LOADING_STARTED":return o({},e,{loading:!0});case"GIT_LOADING_FINISED":return o({},e,{loading:!1});case"LOAD_STATE":return o({},e,{ready:!0});default:return e}});t.default=u},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n(11),i=n(26),a=r(i),s=n(52),l=function(e,t){return{title:"Step Config",bsSize:"large",form:[{label:"Name",name:"name",type:"text"},{label:"Type",clear_config:!0,name:"type",type:"select",options:Object.keys(e.steps.type)}],types:e.steps.type,configfield:"type",actors:e.actor.actors,sensors:e.sensor.sensors,kettle:e.kettle.list}},u=function(e,t,n){return{btn_save:function(t){return e((0,s.save)(t)),!0},btn_add:function(t){return e((0,s.add)(t)),!0},btn_delete:function(t){return e((0,s.remove)(t)),!0}}},c=(0,o.connect)(l,u,null,{withRef:!0})(a.default);t.default=c},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var o=n(435),i=r(o),a=n(434),s=r(a),l="function"==typeof s.default&&"symbol"==typeof i.default?function(e){return typeof e}:function(e){return e&&"function"==typeof s.default&&e.constructor===s.default&&e!==s.default.prototype?"symbol":typeof e};t.default="function"==typeof s.default&&"symbol"===l(i.default)?function(e){return"undefined"==typeof e?"undefined":l(e)}:function(e){return e&&"function"==typeof s.default&&e.constructor===s.default&&e!==s.default.prototype?"symbol":"undefined"==typeof e?"undefined":l(e)}},function(e,t,n){function r(e){if(e)return o(e)}function o(e){for(var t in r.prototype)e[t]=r.prototype[t];return e}e.exports=r,r.prototype.on=r.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this},r.prototype.once=function(e,t){function n(){this.off(e,n),t.apply(this,arguments)}return n.fn=t,this.on(e,n),this},r.prototype.off=r.prototype.removeListener=r.prototype.removeAllListeners=r.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var n=this._callbacks["$"+e];if(!n)return this;if(1==arguments.length)return delete this._callbacks["$"+e],this;for(var r,o=0;o-1?void 0:"production"!==t.env.NODE_ENV?s(!1,"EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `%s`.",e):a("96",e),!c.plugins[o]){n.extractEvents?void 0:"production"!==t.env.NODE_ENV?s(!1,"EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `%s` does not.",e):a("97",e),c.plugins[o]=n;var i=n.eventTypes;for(var d in i)r(i[d],n,d)?void 0:"production"!==t.env.NODE_ENV?s(!1,"EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.",d,e):a("98",d,e)}}}function r(e,n,o){c.eventNameDispatchConfigs.hasOwnProperty(o)?"production"!==t.env.NODE_ENV?s(!1,"EventPluginHub: More than one plugin attempted to publish the same event name, `%s`.",o):a("99",o):void 0,c.eventNameDispatchConfigs[o]=e;var r=e.phasedRegistrationNames;if(r){for(var l in r)if(r.hasOwnProperty(l)){var u=r[l];i(u,n,o)}return!0}return!!e.registrationName&&(i(e.registrationName,n,o),!0)}function i(e,n,o){if(c.registrationNameModules[e]?"production"!==t.env.NODE_ENV?s(!1,"EventPluginHub: More than one plugin attempted to publish the same registration name, `%s`.",e):a("100",e):void 0,c.registrationNameModules[e]=n,c.registrationNameDependencies[e]=n.eventTypes[o].dependencies,"production"!==t.env.NODE_ENV){var r=e.toLowerCase();c.possibleRegistrationNames[r]=e,"onDoubleClick"===e&&(c.possibleRegistrationNames.ondblclick=e)}}var a=n(14),s=n(11),l=null,u={},c={plugins:[],eventNameDispatchConfigs:{},registrationNameModules:{},registrationNameDependencies:{},possibleRegistrationNames:"production"!==t.env.NODE_ENV?{}:null,injectEventPluginOrder:function(e){l?"production"!==t.env.NODE_ENV?s(!1,"EventPluginRegistry: Cannot inject event plugin ordering more than once. You are likely trying to load more than one copy of React."):a("101"):void 0,l=Array.prototype.slice.call(e),o()},injectEventPluginsByName:function(e){var n=!1;for(var r in e)if(e.hasOwnProperty(r)){var i=e[r];u.hasOwnProperty(r)&&u[r]===i||(u[r]?"production"!==t.env.NODE_ENV?s(!1,"EventPluginRegistry: Cannot inject two different event plugins using the same name, `%s`.",r):a("102",r):void 0,u[r]=i,n=!0)}n&&o()},getPluginModuleForEvent:function(e){var t=e.dispatchConfig;if(t.registrationName)return c.registrationNameModules[t.registrationName]||null;if(void 0!==t.phasedRegistrationNames){var n=t.phasedRegistrationNames;for(var o in n)if(n.hasOwnProperty(o)){var r=c.registrationNameModules[n[o]];if(r)return r}}return null},_resetEventPlugins:function(){l=null;for(var e in u)u.hasOwnProperty(e)&&delete u[e];c.plugins.length=0;var n=c.eventNameDispatchConfigs;for(var o in n)n.hasOwnProperty(o)&&delete n[o];var r=c.registrationNameModules;for(var i in r)r.hasOwnProperty(i)&&delete r[i];if("production"!==t.env.NODE_ENV){var a=c.possibleRegistrationNames;for(var s in a)a.hasOwnProperty(s)&&delete a[s]}}};e.exports=c}).call(t,n(2))},function(e,t,n){"use strict";function o(e){return Object.prototype.hasOwnProperty.call(e,m)||(e[m]=p++,d[e[m]]={}),d[e[m]]}var r,i=n(16),a=n(86),s=n(680),l=n(284),u=n(290),c=n(175),d={},f=!1,p=0,h={topAbort:"abort",topAnimationEnd:u("animationend")||"animationend",topAnimationIteration:u("animationiteration")||"animationiteration",topAnimationStart:u("animationstart")||"animationstart",topBlur:"blur",topCanPlay:"canplay",topCanPlayThrough:"canplaythrough",topChange:"change",topClick:"click",topCompositionEnd:"compositionend",topCompositionStart:"compositionstart",topCompositionUpdate:"compositionupdate",topContextMenu:"contextmenu",topCopy:"copy",topCut:"cut",topDoubleClick:"dblclick",topDrag:"drag",topDragEnd:"dragend",topDragEnter:"dragenter",topDragExit:"dragexit",topDragLeave:"dragleave",topDragOver:"dragover",topDragStart:"dragstart",topDrop:"drop",topDurationChange:"durationchange",topEmptied:"emptied",topEncrypted:"encrypted",topEnded:"ended",topError:"error",topFocus:"focus",topInput:"input",topKeyDown:"keydown",topKeyPress:"keypress",topKeyUp:"keyup",topLoadedData:"loadeddata",topLoadedMetadata:"loadedmetadata",topLoadStart:"loadstart",topMouseDown:"mousedown",topMouseMove:"mousemove",topMouseOut:"mouseout",topMouseOver:"mouseover",topMouseUp:"mouseup",topPaste:"paste",topPause:"pause",topPlay:"play",topPlaying:"playing",topProgress:"progress",topRateChange:"ratechange",topScroll:"scroll",topSeeked:"seeked",topSeeking:"seeking",topSelectionChange:"selectionchange",topStalled:"stalled",topSuspend:"suspend",topTextInput:"textInput",topTimeUpdate:"timeupdate",topTouchCancel:"touchcancel",topTouchEnd:"touchend",topTouchMove:"touchmove",topTouchStart:"touchstart",topTransitionEnd:u("transitionend")||"transitionend",topVolumeChange:"volumechange",topWaiting:"waiting",topWheel:"wheel"},m="_reactListenersID"+String(Math.random()).slice(2),v=i({},s,{ReactEventListener:null,injection:{injectReactEventListener:function(e){e.setHandleTopLevel(v.handleTopLevel),v.ReactEventListener=e}},setEnabled:function(e){v.ReactEventListener&&v.ReactEventListener.setEnabled(e)},isEnabled:function(){return!(!v.ReactEventListener||!v.ReactEventListener.isEnabled())},listenTo:function(e,t){for(var n=t,r=o(n),i=a.registrationNameDependencies[e],s=0;s0&&void 0!==arguments[0]?arguments[0]:c(),t=arguments[1];switch(t.type){case"LOAD_STATE":return i({},e,{list:t.payload.kettle,config_type:t.payload.controller_types});case"DELETE_KETTLE":return delete e.list[t.id],i({},e,{list:i({},e.list)});case"UPDATE_KETTLE_TARGET_TEMP":return i({},e,{list:i({},e.list,r({},t.payload.id,(0,u.default)(e.list[t.payload.id],{target_temp:{$set:t.payload.target_temp}})))});case"ADD_KETTLE":case"UPDATE_KETTLE":return i({},e,{list:i({},e.list,r({},t.payload.id,t.payload))});default:return e}});t.default=d},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t0&&void 0!==arguments[0]?arguments[0]:u(),t=arguments[1];switch(t.type){case"LOAD_STATE":return i({},e,{list:t.payload.steps,type:t.payload.step_types});case"UPDATE_ALL_STEPS":return i({},e,{list:t.payload});case"ADD_STEP":return i({},e,{list:[].concat(r(e.list),[t.payload])});case"REMOVE_STEP":return i({},e,{list:e.list.filter(function(e,n){return e.id!==t.payload})});case"UPDATE_STEP":return i({},e,{list:e.list.map(function(e,n){return e.id!==t.payload.id?e:i({},e,t.payload)})});default:return e}});t.default=c},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var r=n(392),i=o(r),a=n(391),s=o(a),l="function"==typeof s.default&&"symbol"==typeof i.default?function(e){return typeof e}:function(e){return e&&"function"==typeof s.default&&e.constructor===s.default&&e!==s.default.prototype?"symbol":typeof e};t.default="function"==typeof s.default&&"symbol"===l(i.default)?function(e){return"undefined"==typeof e?"undefined":l(e)}:function(e){return e&&"function"==typeof s.default&&e.constructor===s.default&&e!==s.default.prototype?"symbol":"undefined"==typeof e?"undefined":l(e)}},function(e,t){e.exports=function(e,t){var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}},function(e,t,n){var o=n(124);e.exports=function(e){return Object(o(e))}},function(e,t){var n=0,o=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++n+o).toString(36))}},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n(46),i=o(r),a=function(){};i.default&&(a=function(){return document.addEventListener?function(e,t,n,o){return e.addEventListener(t,n,o||!1)}:document.attachEvent?function(e,t,n){return e.attachEvent("on"+t,function(t){t=t||window.event,t.target=t.target||t.srcElement,t.currentTarget=e,n.call(e,t)})}:void 0}()),t.default=a,e.exports=t.default},function(e,t){"use strict";function n(e){return e===e.window?e:9===e.nodeType&&(e.defaultView||e.parentWindow)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=n,e.exports=t.default},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e,t,n){var o="",r="",i=t;if("string"==typeof t){if(void 0===n)return e.style[(0,a.default)(t)]||(0,c.default)(e).getPropertyValue((0,l.default)(t));(i={})[t]=n}Object.keys(i).forEach(function(t){var n=i[t];n||0===n?(0,m.default)(t)?r+=t+"("+n+") ":o+=(0,l.default)(t)+": "+n+";":(0,f.default)(e,(0,l.default)(t))}),r&&(o+=p.transform+": "+r+";"),e.style.cssText+=";"+o}Object.defineProperty(t,"__esModule",{value:!0}),t.default=r;var i=n(227),a=o(i),s=n(482),l=o(s),u=n(477),c=o(u),d=n(478),f=o(d),p=n(226),h=n(479),m=o(h);e.exports=t.default},function(e,t,n){(function(o){function r(){return"undefined"!=typeof document&&"WebkitAppearance"in document.documentElement.style||window.console&&(console.firebug||console.exception&&console.table)||navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31}function i(){var e=arguments,n=this.useColors;if(e[0]=(n?"%c":"")+this.namespace+(n?" %c":" ")+e[0]+(n?"%c ":" ")+"+"+t.humanize(this.diff),!n)return e;var o="color: "+this.color;e=[e[0],o,"color: inherit"].concat(Array.prototype.slice.call(e,1));var r=0,i=0;return e[0].replace(/%[a-z%]/g,function(e){"%%"!==e&&(r++,"%c"===e&&(i=r))}),e.splice(i,0,o),e}function a(){return"object"==typeof console&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function s(e){try{null==e?t.storage.removeItem("debug"):t.storage.debug=e}catch(e){}}function l(){try{return t.storage.debug}catch(e){}if("undefined"!=typeof o&&"env"in o)return o.env.DEBUG}function u(){try{return window.localStorage}catch(e){}}t=e.exports=n(489),t.log=a,t.formatArgs=i,t.save=s,t.load=l,t.useColors=r,t.storage="undefined"!=typeof chrome&&"undefined"!=typeof chrome.storage?chrome.storage.local:u(),t.colors=["lightseagreen","forestgreen","goldenrod","dodgerblue","darkorchid","crimson"],t.formatters.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}},t.enable(l())}).call(t,n(2))},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=t.isBrowser="object"===("undefined"==typeof window?"undefined":n(window))&&"object"===("undefined"==typeof document?"undefined":n(document))&&9===document.nodeType;t.default=o},function(e,t,n){(function(o){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var i=n(8),a=r(i),s=n(3),l=r(s),u=n(4),c=r(u),d=n(6),f=r(d),p=n(5),h=r(p),m=n(9),v=r(m),y=n(222),g=r(y),b=n(64),E=r(b),_=n(150),x=r(_),w=n(1),C=r(w),O=n(7),N=r(O),T=n(20),k=r(T),P=n(109),S=r(P),M=n(17),A=r(M),D=n(110),R=r(D),I=n(114),j=r(I),L=n(18),B=r(L),V=n(249),F=r(V),U=n(594),H=r(U),W=n(251),z=r(W),Y=n(10),G=n(23),q=r(G),X=n(641),K=n(28),$=r(K),J=z.default.defaultProps.bsRole,Z=H.default.defaultProps.bsRole,Q={dropup:N.default.bool,id:(0,R.default)(N.default.oneOfType([N.default.string,N.default.number])),componentClass:A.default,children:(0,S.default)((0,X.requiredRoles)(J,Z),(0,X.exclusiveRoles)(Z)),disabled:N.default.bool,pullRight:N.default.bool,open:N.default.bool,onClose:N.default.func,onToggle:N.default.func,onSelect:N.default.func,role:N.default.string,rootCloseEvent:N.default.oneOf(["click","mousedown"]),onMouseEnter:N.default.func,onMouseLeave:N.default.func},ee={componentClass:F.default},te=function(e){function t(n,o){(0,c.default)(this,t);var r=(0,f.default)(this,e.call(this,n,o));return r.handleClick=r.handleClick.bind(r),r.handleKeyDown=r.handleKeyDown.bind(r),r.handleClose=r.handleClose.bind(r),r._focusInDropdown=!1,r.lastOpenEventType=null,r}return(0,h.default)(t,e),t.prototype.componentDidMount=function(){this.focusNextOnOpen()},t.prototype.componentWillUpdate=function(e){!e.open&&this.props.open&&(this._focusInDropdown=(0,E.default)(k.default.findDOMNode(this.menu),(0,g.default)(document)))},t.prototype.componentDidUpdate=function(e){var t=this.props.open,n=e.open;t&&!n&&this.focusNextOnOpen(),!t&&n&&this._focusInDropdown&&(this._focusInDropdown=!1,this.focus())},t.prototype.handleClick=function(e){this.props.disabled||this.toggleOpen(e,{source:"click"})},t.prototype.handleKeyDown=function(e){if(!this.props.disabled)switch(e.keyCode){case x.default.codes.down:this.props.open?this.menu.focusNext&&this.menu.focusNext():this.toggleOpen(e,{source:"keydown"}),e.preventDefault();break;case x.default.codes.esc:case x.default.codes.tab:this.handleClose(e,{source:"keydown"})}},t.prototype.toggleOpen=function(e,t){var n=!this.props.open;n&&(this.lastOpenEventType=t.source),this.props.onToggle&&this.props.onToggle(n,e,t)},t.prototype.handleClose=function(e,t){this.props.open&&this.toggleOpen(e,t)},t.prototype.focusNextOnOpen=function(){var e=this.menu;e.focusNext&&("keydown"!==this.lastOpenEventType&&"menuitem"!==this.props.role||e.focusNext())},t.prototype.focus=function(){var e=k.default.findDOMNode(this.toggle);e&&e.focus&&e.focus()},t.prototype.renderToggle=function(e,t){var n=this,r=function(e){n.toggle=e};return"string"==typeof e.ref?"production"!==o.env.NODE_ENV?(0,B.default)(!1,"String refs are not supported on `` components. To apply a ref to the component use the callback signature:\n\n https://facebook.github.io/react/docs/more-about-refs.html#the-ref-callback-attribute"):void 0:r=(0,q.default)(e.ref,r),(0,w.cloneElement)(e,(0,l.default)({},t,{ref:r,bsClass:(0,Y.prefix)(t,"toggle"),onClick:(0,q.default)(e.props.onClick,this.handleClick),onKeyDown:(0,q.default)(e.props.onKeyDown,this.handleKeyDown)}))},t.prototype.renderMenu=function(e,t){var n=this,r=t.id,i=t.onClose,s=t.onSelect,u=t.rootCloseEvent,c=(0,a.default)(t,["id","onClose","onSelect","rootCloseEvent"]),d=function(e){n.menu=e};return"string"==typeof e.ref?"production"!==o.env.NODE_ENV?(0,B.default)(!1,"String refs are not supported on `` components. To apply a ref to the component use the callback signature:\n\n https://facebook.github.io/react/docs/more-about-refs.html#the-ref-callback-attribute"):void 0:d=(0,q.default)(e.ref,d),(0,w.cloneElement)(e,(0,l.default)({},c,{ref:d,labelledBy:r,bsClass:(0,Y.prefix)(c,"menu"),onClose:(0,q.default)(e.props.onClose,i,this.handleClose),onSelect:(0,q.default)(e.props.onSelect,s,function(e,t){return n.handleClose(t,{source:"select"})}),rootCloseEvent:u}))},t.prototype.render=function(){var e,t=this,n=this.props,o=n.componentClass,r=n.id,i=n.dropup,s=n.disabled,u=n.pullRight,c=n.open,d=n.onClose,f=n.onSelect,p=n.role,h=n.bsClass,m=n.className,y=n.rootCloseEvent,g=n.children,b=(0,a.default)(n,["componentClass","id","dropup","disabled","pullRight","open","onClose","onSelect","role","bsClass","className","rootCloseEvent","children"]);delete b.onToggle;var E=(e={},e[h]=!0,e.open=c,e.disabled=s,e);return i&&(E[h]=!1,E.dropup=!0),C.default.createElement(o,(0,l.default)({},b,{className:(0,v.default)(m,E)}),$.default.map(g,function(e){switch(e.props.bsRole){case J:return t.renderToggle(e,{id:r,disabled:s,open:c,role:p,bsClass:h});case Z:return t.renderMenu(e,{id:r,open:c,pullRight:u,bsClass:h,onClose:d,onSelect:f,rootCloseEvent:y});default:return e}}))},t}(C.default.Component);te.propTypes=Q,te.defaultProps=ee,(0,Y.bsClass)("dropdown",te);var ne=(0,j.default)(te,{open:"onToggle"});ne.Toggle=z.default,ne.Menu=H.default,t.default=ne,e.exports=t.default}).call(t,n(2))},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var r=n(3),i=o(r),a=n(4),s=o(a),l=n(6),u=o(l),c=n(5),d=o(c),f=n(9),p=o(f),h=n(1),m=o(h),v=n(7),y=o(v),g=n(299),b=o(g),E={in:y.default.bool,mountOnEnter:y.default.bool,unmountOnExit:y.default.bool,transitionAppear:y.default.bool,timeout:y.default.number,onEnter:y.default.func,onEntering:y.default.func,onEntered:y.default.func,onExit:y.default.func,onExiting:y.default.func,onExited:y.default.func},_={in:!1,timeout:300,mountOnEnter:!1,unmountOnExit:!1,transitionAppear:!1},x=function(e){function t(){return(0,s.default)(this,t),(0,u.default)(this,e.apply(this,arguments))}return(0,d.default)(t,e),t.prototype.render=function(){return m.default.createElement(b.default,(0,i.default)({},this.props,{className:(0,p.default)(this.props.className,"fade"),enteredClassName:"in",enteringClassName:"in"}))},t}(m.default.Component);x.propTypes=E,x.defaultProps=_,t.default=x,e.exports=t.default},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e,t){var n=t.propTypes,o={},r={};return(0,a.default)(e).forEach(function(e){var t=e[0],i=e[1];n[t]?o[t]=i:r[t]=i}),[o,r]}t.__esModule=!0;var i=n(204),a=o(i);t.default=r,e.exports=t.default},function(e,t,n){"use strict";function o(e,t,n,o){return r.call(this,e,t,n,o)}var r=n(88),i=n(284),a=n(173),s={screenX:null,screenY:null,clientX:null,clientY:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,getModifierState:a,button:function(e){var t=e.button;return"which"in e?t:2===t?2:4===t?1:0},buttons:null,relatedTarget:function(e){return e.relatedTarget||(e.fromElement===e.srcElement?e.toElement:e.fromElement)},pageX:function(e){return"pageX"in e?e.pageX:e.clientX+i.currentScrollLeft},pageY:function(e){return"pageY"in e?e.pageY:e.clientY+i.currentScrollTop}};r.augmentClass(o,s),e.exports=o},function(e,t,n){(function(t){"use strict";var o=n(14),r=n(11),i={},a={reinitializeTransaction:function(){this.transactionWrappers=this.getTransactionWrappers(),this.wrapperInitData?this.wrapperInitData.length=0:this.wrapperInitData=[],this._isInTransaction=!1},_isInTransaction:!1,getTransactionWrappers:null,isInTransaction:function(){return!!this._isInTransaction},perform:function(e,n,i,a,s,l,u,c){this.isInTransaction()?"production"!==t.env.NODE_ENV?r(!1,"Transaction.perform(...): Cannot initialize a transaction when there is already an outstanding transaction."):o("27"):void 0;var d,f;try{this._isInTransaction=!0,d=!0,this.initializeAll(0),f=e.call(n,i,a,s,l,u,c),d=!1}finally{try{if(d)try{this.closeAll(0)}catch(e){}else this.closeAll(0)}finally{this._isInTransaction=!1}}return f},initializeAll:function(e){for(var t=this.transactionWrappers,n=e;n]/;e.exports=o},function(e,t,n){"use strict";var o,r=n(21),i=n(163),a=/^[ \r\n\t\f]/,s=/<(!--|link|noscript|meta|script|style)[ \r\n\t\f\/>]/,l=n(171),u=l(function(e,t){if(e.namespaceURI!==i.svg||"innerHTML"in e)e.innerHTML=t;else{o=o||document.createElement("div"),o.innerHTML=""+t+"";for(var n=o.firstChild;n.firstChild;)e.appendChild(n.firstChild)}});if(r.canUseDOM){var c=document.createElement("div");c.innerHTML=" ",""===c.innerHTML&&(u=function(e,t){if(e.parentNode&&e.parentNode.replaceChild(e,e),a.test(t)||"<"===t[0]&&s.test(t)){e.innerHTML=String.fromCharCode(65279)+t;var n=e.firstChild;1===n.data.length?e.removeChild(n):n.deleteData(0,1)}else e.innerHTML=t}),c=null}e.exports=u},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(){function e(){for(var e=arguments.length,t=Array(e),o=0;o>",s=i||n;if(null==t[n])return new Error("The "+r+" `"+s+"` is required to make "+("`"+a+"` accessible for users of assistive ")+"technologies such as screen readers.");for(var l=arguments.length,u=Array(l>5?l-5:0),c=5;c>",l=a||o;if(null==n[o])return t?new Error("Required "+i+" `"+l+"` was not specified "+("in `"+s+"`.")):null;for(var u=arguments.length,c=Array(u>6?u-6:0),d=6;d=31}function i(){var e=arguments,n=this.useColors;if(e[0]=(n?"%c":"")+this.namespace+(n?" %c":" ")+e[0]+(n?"%c ":" ")+"+"+t.humanize(this.diff),!n)return e;var o="color: "+this.color;e=[e[0],o,"color: inherit"].concat(Array.prototype.slice.call(e,1));var r=0,i=0;return e[0].replace(/%[a-z%]/g,function(e){"%%"!==e&&(r++,"%c"===e&&(i=r))}),e.splice(i,0,o),e}function a(){return"object"==typeof console&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function s(e){try{null==e?t.storage.removeItem("debug"):t.storage.debug=e}catch(e){}}function l(){try{return t.storage.debug}catch(e){}if("undefined"!=typeof o&&"env"in o)return o.env.DEBUG}function u(){try{return window.localStorage}catch(e){}}t=e.exports=n(786),t.log=a,t.formatArgs=i,t.save=s,t.load=l,t.useColors=r,t.storage="undefined"!=typeof chrome&&"undefined"!=typeof chrome.storage?chrome.storage.local:u(),t.colors=["lightseagreen","forestgreen","goldenrod","dodgerblue","darkorchid","crimson"],t.formatters.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}},t.enable(l())}).call(t,n(2))},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e,t,n,o,r){n&&(e._notifying=!0,n.call.apply(n,[e,o].concat(r)),e._notifying=!1),e._values[t]=o,e.unmounted||e.forceUpdate()}t.__esModule=!0;var i=n(799),a=o(i),s={shouldComponentUpdate:function(){return!this._notifying}};t.default=(0,a.default)(s,r),e.exports=t.default},function(e,t,n){(function(t){"use strict";function o(e,t){!i.isUndefined(e)&&i.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}function r(){var e;return"undefined"!=typeof XMLHttpRequest?e=n(188):"undefined"!=typeof t&&(e=n(188)),e}var i=n(29),a=n(346),s={"Content-Type":"application/x-www-form-urlencoded"},l={adapter:r(),transformRequest:[function(e,t){ -return a(t,"Content-Type"),i.isFormData(e)||i.isArrayBuffer(e)||i.isBuffer(e)||i.isStream(e)||i.isFile(e)||i.isBlob(e)?e:i.isArrayBufferView(e)?e.buffer:i.isURLSearchParams(e)?(o(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):i.isObject(e)?(o(t,"application/json;charset=utf-8"),JSON.stringify(e)):e}],transformResponse:[function(e){if("string"==typeof e)try{e=JSON.parse(e)}catch(e){}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,validateStatus:function(e){return e>=200&&e<300}};l.headers={common:{Accept:"application/json, text/plain, */*"}},i.forEach(["delete","get","head"],function(e){l.headers[e]={}}),i.forEach(["post","put","patch"],function(e){l.headers[e]=i.merge(s)}),e.exports=l}).call(t,n(2))},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n(13),i=n(30),a=o(i),s=n(48),l=function(e,t){return{title:"Actor Modal",bsSize:"large",form:[{label:"Name",name:"name",type:"text"},{label:"Hide on Dashboard",name:"hide",type:"checkbox"},{label:"Type",clear_config:!0,name:"type",type:"select",options:Object.keys(e.actor.config_type)}],types:e.actor.config_type,configfield:"type"}},u=function(e,t){return{btn_save:function(t){return e((0,s.save)(t)),!0},btn_add:function(t){return e((0,s.add)(t)),!0},btn_delete:function(t){return e((0,s.remove)(t)),!0}}},c=(0,r.connect)(l,u,null,{withRef:!0})(a.default);t.default=c},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n(1),i=o(r),a=n(13),s=n(30),l=o(s),u=n(48),c=(n(22),{0:i.default.createElement("strong",null,"0%"),25:"25%",50:"50%",75:"75%",100:{style:{color:"red"},label:i.default.createElement("strong",null,"100%")}}),d=function(e,t){return{title:t.actor_name?"Power for "+t.actor_name:"Power for Actor",form:[{label:"Power",name:"power",type:"slider",min:0,max:100,marks:c}]}},f=function(e,t){return{btn_save:function(n){return e((0,u.set_power)(t.actor_id,n.power)),!0},btn_add:function(e){return!0},btn_delete:function(e){return!0}}};t.default=(0,a.connect)(d,f,null,{withRef:!0})(l.default)},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:s(),t=arguments[1];switch(t.type){case"UPDATE_FILES":return r({},e,{files:t.payload});case"SENSOR_DATA_LOADED":return r({},e,{chart_config:r({},e.chart_config,{series:t.payload})});case"UPDATE_ACTIONS":return r({},e,{chart_config:r({},e.chart_config,{xAxis:r({},e.chart_config.xAxis,{plotLines:t.payload})})});default:return e}});t.default=u},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n(13),i=n(30),a=o(i),s=n(72),l=function(e,t){return{title:"Sensor Modal",bsSize:"large",form:[{label:"Name",name:"name",type:"text"},{label:"Hide on Dashboard",name:"hide",type:"checkbox"},{label:"Type",clear_config:!0,name:"type",type:"select",options:Object.keys(e.sensor.config_type)}],types:e.sensor.config_type,configfield:"type"}},u=function(e,t,n){return{btn_save:function(t){return e((0,s.save)(t)),!0},btn_add:function(t){return e((0,s.add)(t)),!0},btn_delete:function(t){return e((0,s.remove)(t)),!0}}},c=(0,r.connect)(l,u,null,{withRef:!0})(a.default);t.default=c},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n(13),i=n(30),a=o(i),s=n(92),l=function(e,t){return{title:"Step Modal",bsSize:"large",form:[{label:"Name",name:"name",type:"text"},{label:"Type",clear_config:!0,name:"type",type:"select",options:Object.keys(e.steps.type)}],types:e.steps.type,configfield:"type",actors:e.actor.actors,sensors:e.sensor.sensors,kettle:e.kettle.list}},u=function(e,t,n){return{btn_save:function(t){return e((0,s.save)(t)),!0},btn_add:function(t){return e((0,s.add)(t)),!0},btn_delete:function(t){return e((0,s.remove)(t)),!0}}},c=(0,r.connect)(l,u,null,{withRef:!0})(a.default);t.default=c},function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},function(e,t,n){var o=n(412);e.exports=function(e,t,n){if(o(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,o){return e.call(t,n,o)};case 3:return function(n,o,r){return e.call(t,n,o,r)}}return function(){return e.apply(t,arguments)}}},function(e,t){e.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},function(e,t){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(e,t){e.exports=!0},function(e,t,n){var o=n(59),r=n(428),i=n(125),a=n(131)("IE_PROTO"),s=function(){},l="prototype",u=function(){var e,t=n(208)("iframe"),o=i.length,r="<",a=">";for(t.style.display="none",n(418).appendChild(t),t.src="javascript:",e=t.contentWindow.document,e.open(),e.write(r+"script"+a+"document.F=Object"+r+"/script"+a),e.close(),u=e.F;o--;)delete u[l][i[o]];return u()};e.exports=Object.create||function(e,t){var n;return null!==e?(s[l]=o(e),n=new s,s[l]=null,n[a]=e):n=u(),void 0===t?n:r(n,t)}},function(e,t,n){var o=n(79),r=n(80),i=n(41),a=n(134),s=n(51),l=n(209),u=Object.getOwnPropertyDescriptor;t.f=n(50)?u:function(e,t){if(e=i(e),t=a(t,!0),l)try{return u(e,t)}catch(e){}if(s(e,t))return r(!o.f.call(e,t),e[t])}},function(e,t){t.f=Object.getOwnPropertySymbols},function(e,t,n){var o=n(45).f,r=n(51),i=n(37)("toStringTag");e.exports=function(e,t,n){e&&!r(e=n?e:e.prototype,i)&&o(e,i,{configurable:!0,value:t})}},function(e,t,n){var o=n(132)("keys"),r=n(96);e.exports=function(e){return o[e]||(o[e]=r(e))}},function(e,t,n){var o=n(44),r="__core-js_shared__",i=o[r]||(o[r]={});e.exports=function(e){return i[e]||(i[e]={})}},function(e,t){var n=Math.ceil,o=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?o:n)(e)}},function(e,t,n){var o=n(77);e.exports=function(e,t){if(!o(e))return e;var n,r;if(t&&"function"==typeof(n=e.toString)&&!o(r=n.call(e)))return r;if("function"==typeof(n=e.valueOf)&&!o(r=n.call(e)))return r;if(!t&&"function"==typeof(n=e.toString)&&!o(r=n.call(e)))return r;throw TypeError("Can't convert object to primitive value")}},function(e,t,n){var o=n(44),r=n(26),i=n(126),a=n(136),s=n(45).f;e.exports=function(e){var t=r.Symbol||(r.Symbol=i?{}:o.Symbol||{});"_"==e.charAt(0)||e in t||s(t,e,{value:a.f(e)})}},function(e,t,n){t.f=n(37)},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n(101),i=o(r),a="",s="";if(i.default){var l={Moz:"-moz-",ms:"-ms-",O:"-o-",Webkit:"-webkit-"},u=document.createElement("p").style,c="Transform";for(var d in l)if(d+c in u){a=d,s=l[d];break}}t.default={js:a,css:s}},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n(46),i=o(r),a=function(){};i.default&&(a=function(){return document.addEventListener?function(e,t,n,o){return e.removeEventListener(t,n,o||!1)}:document.attachEvent?function(e,t,n){return e.detachEvent("on"+t,n)}:void 0}()),t.default=a,e.exports=t.default},function(e,t,n){function o(e){this.path=e.path,this.hostname=e.hostname,this.port=e.port,this.secure=e.secure,this.query=e.query,this.timestampParam=e.timestampParam,this.timestampRequests=e.timestampRequests,this.readyState="",this.agent=e.agent||!1,this.socket=e.socket,this.enablesXDR=e.enablesXDR,this.pfx=e.pfx,this.key=e.key,this.passphrase=e.passphrase,this.cert=e.cert,this.ca=e.ca,this.ciphers=e.ciphers,this.rejectUnauthorized=e.rejectUnauthorized,this.forceNode=e.forceNode,this.extraHeaders=e.extraHeaders,this.localAddress=e.localAddress}var r=n(65),i=n(76);e.exports=o,i(o.prototype),o.prototype.onError=function(e,t){var n=new Error(e);return n.type="TransportError",n.description=t,this.emit("error",n),this},o.prototype.open=function(){return"closed"!==this.readyState&&""!==this.readyState||(this.readyState="opening",this.doOpen()),this},o.prototype.close=function(){return"opening"!==this.readyState&&"open"!==this.readyState||(this.doClose(),this.onClose()),this},o.prototype.send=function(e){if("open"!==this.readyState)throw new Error("Transport not open");this.write(e)},o.prototype.onOpen=function(){this.readyState="open",this.writable=!0,this.emit("open")},o.prototype.onData=function(e){var t=r.decodePacket(e,this.socket.binaryType);this.onPacket(t)},o.prototype.onPacket=function(e){this.emit("packet",e)},o.prototype.onClose=function(){this.readyState="closed",this.emit("close")}},function(e,t,n){(function(t){var o=n(507);e.exports=function(e){var n=e.xdomain,r=e.xscheme,i=e.enablesXDR;try{if("undefined"!=typeof XMLHttpRequest&&(!n||o))return new XMLHttpRequest}catch(e){}try{if("undefined"!=typeof XDomainRequest&&!r&&i)return new XDomainRequest}catch(e){}if(!n)try{return new(t[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(e){}}}).call(t,function(){return this}())},function(e,t){"use strict";function n(e,t){return e===t?0!==e||0!==t||1/e===1/t:e!==e&&t!==t}function o(e,t){if(n(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var o=Object.keys(e),i=Object.keys(t);if(o.length!==i.length)return!1;for(var a=0;a2&&void 0!==arguments[2]?arguments[2]:{},o=n.indent,i=void 0===o?0:o,a=t.fallbacks,l="";if(i++,a)if(Array.isArray(a))for(var u=0;u0&&void 0!==arguments[0]?arguments[0]:c(),t=arguments[1];switch(t.type){case"LOAD_STATE":return i({},e,{list:t.payload.kettle,config_type:t.payload.controller_types});case"DELETE_KETTLE":return delete e.list[t.id],i({},e,{list:i({},e.list)});case"UPDATE_KETTLE_TARGET_TEMP":return i({},e,{list:i({},e.list,o({},t.payload.id,(0,u.default)(e.list[t.payload.id],{target_temp:{$set:t.payload.target_temp}})))});case"ADD_KETTLE":case"UPDATE_KETTLE":return i({},e,{list:i({},e.list,o({},t.payload.id,t.payload))});default:return e}});t.default=d},function(e,t){e.exports=function(e,t){var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}},function(e,t,n){var r=n(144);e.exports=function(e){return Object(r(e))}},function(e,t){var n=0,r=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++n+r).toString(36))}},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n(42),i=r(o),a=function(){};i.default&&(a=function(){return document.addEventListener?function(e,t,n,r){return e.addEventListener(t,n,r||!1)}:document.attachEvent?function(e,t,n){return e.attachEvent("on"+t,function(t){t=t||window.event,t.target=t.target||t.srcElement,t.currentTarget=e,n.call(e,t)})}:void 0}()),t.default=a,e.exports=t.default},function(e,t){"use strict";function n(e){return e===e.window?e:9===e.nodeType&&(e.defaultView||e.parentWindow)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=n,e.exports=t.default},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t,n){var r="",o="",i=t;if("string"==typeof t){if(void 0===n)return e.style[(0,a.default)(t)]||(0,c.default)(e).getPropertyValue((0,l.default)(t));(i={})[t]=n}Object.keys(i).forEach(function(t){var n=i[t];n||0===n?(0,m.default)(t)?o+=t+"("+n+") ":r+=(0,l.default)(t)+": "+n+";":(0,f.default)(e,(0,l.default)(t))}),o&&(r+=p.transform+": "+o+";"),e.style.cssText+=";"+r}Object.defineProperty(t,"__esModule",{value:!0}),t.default=o;var i=n(259),a=r(i),s=n(518),l=r(s),u=n(513),c=r(u),d=n(514),f=r(d),p=n(159),h=n(515),m=r(h);e.exports=t.default},function(e,t,n){(function(r){function o(){return"undefined"!=typeof document&&"WebkitAppearance"in document.documentElement.style||window.console&&(console.firebug||console.exception&&console.table)||navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31}function i(){var e=arguments,n=this.useColors;if(e[0]=(n?"%c":"")+this.namespace+(n?" %c":" ")+e[0]+(n?"%c ":" ")+"+"+t.humanize(this.diff),!n)return e;var r="color: "+this.color;e=[e[0],r,"color: inherit"].concat(Array.prototype.slice.call(e,1));var o=0,i=0;return e[0].replace(/%[a-z%]/g,function(e){"%%"!==e&&(o++,"%c"===e&&(i=o))}),e.splice(i,0,r),e}function a(){return"object"==typeof console&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function s(e){try{null==e?t.storage.removeItem("debug"):t.storage.debug=e}catch(e){}}function l(){try{return t.storage.debug}catch(e){}if("undefined"!=typeof r&&"env"in r)return r.env.DEBUG}function u(){try{return window.localStorage}catch(e){}}t=e.exports=n(526),t.log=a,t.formatArgs=i,t.save=s,t.load=l,t.useColors=o,t.storage="undefined"!=typeof chrome&&"undefined"!=typeof chrome.storage?chrome.storage.local:u(),t.colors=["lightseagreen","forestgreen","goldenrod","dodgerblue","darkorchid","crimson"],t.formatters.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}},t.enable(l())}).call(t,n(2))},function(e,t,n){(function(t){"use strict";var n={};"production"!==t.env.NODE_ENV&&Object.freeze(n),e.exports=n}).call(t,n(2))},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=t.isBrowser="object"===("undefined"==typeof window?"undefined":n(window))&&"object"===("undefined"==typeof document?"undefined":n(document))&&9===document.nodeType;t.default=r},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var i=Object.assign||function(e){for(var t=1;t` components. To apply a ref to the component use the callback signature:\n\n https://facebook.github.io/react/docs/more-about-refs.html#the-ref-callback-attribute"):void 0:o=(0,q.default)(e.ref,o),(0,w.cloneElement)(e,(0,l.default)({},t,{ref:o,bsClass:(0,Y.prefix)(t,"toggle"),onClick:(0,q.default)(e.props.onClick,this.handleClick),onKeyDown:(0,q.default)(e.props.onKeyDown,this.handleKeyDown)}))},t.prototype.renderMenu=function(e,t){var n=this,o=t.id,i=t.onClose,s=t.onSelect,u=t.rootCloseEvent,c=(0,a.default)(t,["id","onClose","onSelect","rootCloseEvent"]),d=function(e){n.menu=e};return"string"==typeof e.ref?"production"!==r.env.NODE_ENV?(0,B.default)(!1,"String refs are not supported on `` components. To apply a ref to the component use the callback signature:\n\n https://facebook.github.io/react/docs/more-about-refs.html#the-ref-callback-attribute"):void 0:d=(0,q.default)(e.ref,d),(0,w.cloneElement)(e,(0,l.default)({},c,{ref:d,labelledBy:o,bsClass:(0,Y.prefix)(c,"menu"),onClose:(0,q.default)(e.props.onClose,i,this.handleClose),onSelect:(0,q.default)(e.props.onSelect,s,function(e,t){return n.handleClose(t,{source:"select"})}),rootCloseEvent:u}))},t.prototype.render=function(){var e,t=this,n=this.props,r=n.componentClass,o=n.id,i=n.dropup,s=n.disabled,u=n.pullRight,c=n.open,d=n.onClose,f=n.onSelect,p=n.role,h=n.bsClass,m=n.className,y=n.rootCloseEvent,g=n.children,b=(0,a.default)(n,["componentClass","id","dropup","disabled","pullRight","open","onClose","onSelect","role","bsClass","className","rootCloseEvent","children"]);delete b.onToggle;var x=(e={},e[h]=!0,e.open=c,e.disabled=s,e);return i&&(x[h]=!1,x.dropup=!0),O.default.createElement(r,(0,l.default)({},b,{className:(0,v.default)(m,x)}),$.default.map(g,function(e){switch(e.props.bsRole){case J:return t.renderToggle(e,{id:o,disabled:s,open:c,role:p,bsClass:h});case Z:return t.renderMenu(e,{id:o,open:c,pullRight:u,bsClass:h,onClose:d,onSelect:f,rootCloseEvent:y});default:return e}}))},t}(O.default.Component);te.propTypes=Q,te.defaultProps=ee,(0,Y.bsClass)("dropdown",te);var ne=(0,I.default)(te,{open:"onToggle"});ne.Toggle=W.default,ne.Menu=H.default,t.default=ne,e.exports=t.default}).call(t,n(2))},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var o=n(4),i=r(o),a=n(5),s=r(a),l=n(7),u=r(l),c=n(6),d=r(c),f=n(8),p=r(f),h=n(1),m=r(h),v=n(3),y=r(v),g=n(343),b=r(g),x={in:y.default.bool,mountOnEnter:y.default.bool,unmountOnExit:y.default.bool,transitionAppear:y.default.bool,timeout:y.default.number,onEnter:y.default.func,onEntering:y.default.func,onEntered:y.default.func,onExit:y.default.func,onExiting:y.default.func,onExited:y.default.func},E={in:!1,timeout:300,mountOnEnter:!1,unmountOnExit:!1,transitionAppear:!1},_=function(e){function t(){return(0,s.default)(this,t),(0,u.default)(this,e.apply(this,arguments))}return(0,d.default)(t,e),t.prototype.render=function(){return m.default.createElement(b.default,(0,i.default)({},this.props,{className:(0,p.default)(this.props.className,"fade"),enteredClassName:"in",enteringClassName:"in"}))},t}(m.default.Component);_.propTypes=x,_.defaultProps=E,t.default=_,e.exports=t.default},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){var n=t.propTypes,r={},o={};return(0,a.default)(e).forEach(function(e){var t=e[0],i=e[1];n[t]?r[t]=i:o[t]=i}),[r,o]}t.__esModule=!0;var i=n(233),a=r(i);t.default=o,e.exports=t.default},function(e,t,n){(function(t){"use strict";function r(){if(l)for(var e in u){var n=u[e],r=l.indexOf(e);if(r>-1?void 0:"production"!==t.env.NODE_ENV?s(!1,"EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `%s`.",e):a("96",e),!c.plugins[r]){n.extractEvents?void 0:"production"!==t.env.NODE_ENV?s(!1,"EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `%s` does not.",e):a("97",e),c.plugins[r]=n;var i=n.eventTypes;for(var d in i)o(i[d],n,d)?void 0:"production"!==t.env.NODE_ENV?s(!1,"EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.",d,e):a("98",d,e)}}}function o(e,n,r){c.eventNameDispatchConfigs.hasOwnProperty(r)?"production"!==t.env.NODE_ENV?s(!1,"EventPluginHub: More than one plugin attempted to publish the same event name, `%s`.",r):a("99",r):void 0,c.eventNameDispatchConfigs[r]=e;var o=e.phasedRegistrationNames;if(o){for(var l in o)if(o.hasOwnProperty(l)){var u=o[l];i(u,n,r)}return!0}return!!e.registrationName&&(i(e.registrationName,n,r),!0)}function i(e,n,r){if(c.registrationNameModules[e]?"production"!==t.env.NODE_ENV?s(!1,"EventPluginHub: More than one plugin attempted to publish the same registration name, `%s`.",e):a("100",e):void 0,c.registrationNameModules[e]=n,c.registrationNameDependencies[e]=n.eventTypes[r].dependencies,"production"!==t.env.NODE_ENV){var o=e.toLowerCase();c.possibleRegistrationNames[o]=e,"onDoubleClick"===e&&(c.possibleRegistrationNames.ondblclick=e)}}var a=n(15),s=n(12),l=null,u={},c={plugins:[],eventNameDispatchConfigs:{},registrationNameModules:{},registrationNameDependencies:{},possibleRegistrationNames:"production"!==t.env.NODE_ENV?{}:null,injectEventPluginOrder:function(e){l?"production"!==t.env.NODE_ENV?s(!1,"EventPluginRegistry: Cannot inject event plugin ordering more than once. You are likely trying to load more than one copy of React."):a("101"):void 0,l=Array.prototype.slice.call(e),r()},injectEventPluginsByName:function(e){var n=!1;for(var o in e)if(e.hasOwnProperty(o)){var i=e[o];u.hasOwnProperty(o)&&u[o]===i||(u[o]?"production"!==t.env.NODE_ENV?s(!1,"EventPluginRegistry: Cannot inject two different event plugins using the same name, `%s`.",o):a("102",o):void 0,u[o]=i,n=!0)}n&&r()},getPluginModuleForEvent:function(e){var t=e.dispatchConfig;if(t.registrationName)return c.registrationNameModules[t.registrationName]||null;if(void 0!==t.phasedRegistrationNames){var n=t.phasedRegistrationNames;for(var r in n)if(n.hasOwnProperty(r)){var o=c.registrationNameModules[n[r]];if(o)return o}}return null},_resetEventPlugins:function(){l=null;for(var e in u)u.hasOwnProperty(e)&&delete u[e];c.plugins.length=0;var n=c.eventNameDispatchConfigs;for(var r in n)n.hasOwnProperty(r)&&delete n[r];var o=c.registrationNameModules;for(var i in o)o.hasOwnProperty(i)&&delete o[i];if("production"!==t.env.NODE_ENV){var a=c.possibleRegistrationNames;for(var s in a)a.hasOwnProperty(s)&&delete a[s]}}};e.exports=c}).call(t,n(2))},function(e,t,n){"use strict";function r(e){return Object.prototype.hasOwnProperty.call(e,m)||(e[m]=p++,d[e[m]]={}),d[e[m]]}var o,i=n(19),a=n(121),s=n(814),l=n(329),u=n(849),c=n(202),d={},f=!1,p=0,h={topAbort:"abort",topAnimationEnd:u("animationend")||"animationend",topAnimationIteration:u("animationiteration")||"animationiteration",topAnimationStart:u("animationstart")||"animationstart",topBlur:"blur",topCanPlay:"canplay",topCanPlayThrough:"canplaythrough",topChange:"change",topClick:"click",topCompositionEnd:"compositionend",topCompositionStart:"compositionstart",topCompositionUpdate:"compositionupdate",topContextMenu:"contextmenu",topCopy:"copy",topCut:"cut",topDoubleClick:"dblclick",topDrag:"drag",topDragEnd:"dragend",topDragEnter:"dragenter",topDragExit:"dragexit",topDragLeave:"dragleave",topDragOver:"dragover",topDragStart:"dragstart",topDrop:"drop",topDurationChange:"durationchange",topEmptied:"emptied",topEncrypted:"encrypted",topEnded:"ended",topError:"error",topFocus:"focus",topInput:"input",topKeyDown:"keydown",topKeyPress:"keypress",topKeyUp:"keyup",topLoadedData:"loadeddata",topLoadedMetadata:"loadedmetadata",topLoadStart:"loadstart",topMouseDown:"mousedown",topMouseMove:"mousemove",topMouseOut:"mouseout",topMouseOver:"mouseover",topMouseUp:"mouseup",topPaste:"paste",topPause:"pause",topPlay:"play",topPlaying:"playing",topProgress:"progress",topRateChange:"ratechange",topScroll:"scroll",topSeeked:"seeked",topSeeking:"seeking",topSelectionChange:"selectionchange",topStalled:"stalled",topSuspend:"suspend",topTextInput:"textInput",topTimeUpdate:"timeupdate",topTouchCancel:"touchcancel",topTouchEnd:"touchend",topTouchMove:"touchmove",topTouchStart:"touchstart",topTransitionEnd:u("transitionend")||"transitionend",topVolumeChange:"volumechange",topWaiting:"waiting",topWheel:"wheel"},m="_reactListenersID"+String(Math.random()).slice(2),v=i({},s,{ReactEventListener:null,injection:{injectReactEventListener:function(e){e.setHandleTopLevel(v.handleTopLevel),v.ReactEventListener=e}},setEnabled:function(e){v.ReactEventListener&&v.ReactEventListener.setEnabled(e)},isEnabled:function(){return!(!v.ReactEventListener||!v.ReactEventListener.isEnabled())},listenTo:function(e,t){for(var n=t,o=r(n),i=a.registrationNameDependencies[e],s=0;s]/;e.exports=r},function(e,t,n){"use strict";var r,o=n(22),i=n(191),a=/^[ \r\n\t\f]/,s=/<(!--|link|noscript|meta|script|style)[ \r\n\t\f\/>]/,l=n(198),u=l(function(e,t){if(e.namespaceURI!==i.svg||"innerHTML"in e)e.innerHTML=t;else{r=r||document.createElement("div"),r.innerHTML=""+t+"";for(var n=r.firstChild;n.firstChild;)e.appendChild(n.firstChild)}});if(o.canUseDOM){var c=document.createElement("div"); +c.innerHTML=" ",""===c.innerHTML&&(u=function(e,t){if(e.parentNode&&e.parentNode.replaceChild(e,e),a.test(t)||"<"===t[0]&&s.test(t)){e.innerHTML=String.fromCharCode(65279)+t;var n=e.firstChild;1===n.data.length?e.removeChild(n):n.deleteData(0,1)}else e.innerHTML=t}),c=null}e.exports=u},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(){function e(){for(var e=arguments.length,t=Array(e),r=0;r>",s=i||n;if(null==t[n])return new Error("The "+o+" `"+s+"` is required to make "+("`"+a+"` accessible for users of assistive ")+"technologies such as screen readers.");for(var l=arguments.length,u=Array(l>5?l-5:0),c=5;c>",l=a||r;if(null==n[r])return t?new Error("Required "+i+" `"+l+"` was not specified "+("in `"+s+"`.")):null;for(var u=arguments.length,c=Array(u>6?u-6:0),d=6;d=r.length)for(var o=n-r.length;o--+1;)r.push(void 0);return r.splice(n,0,r.splice(t,1)[0]),r}function r(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;rt?t:n}function a(e){return"px"===e.substr(-2)?parseFloat(e):0}function s(e){var t=window.getComputedStyle(e);return{top:a(t.marginTop),right:a(t.marginRight),bottom:a(t.marginBottom),left:a(t.marginLeft)}}function l(e,t){var n=t.displayName||t.name;return n?e+"("+n+")":e}Object.defineProperty(t,"__esModule",{value:!0}),t.arrayMove=n,t.omit=r,t.closest=o,t.limit=i,t.getElementMargin=s,t.provideDisplayName=l;t.events={start:["touchstart","mousedown"],move:["touchmove","mousemove"],end:["touchend","touchcancel","mouseup"]},t.vendorPrefix=function(){if("undefined"==typeof window||"undefined"==typeof document)return"";var e=window.getComputedStyle(document.documentElement,"")||["-moz-hidden-iframe"],t=(Array.prototype.slice.call(e).join("").match(/-(moz|webkit|ms)-/)||""===e.OLink&&["","o"])[1];switch(t){case"ms":return"ms";default:return t&&t.length?t[0].toUpperCase()+t.substr(1):""}}()},function(e,t,n){(function(t){"use strict";var n=!1;if("production"!==t.env.NODE_ENV)try{Object.defineProperty({},"x",{get:function(){}}),n=!0}catch(e){}e.exports=n}).call(t,n(2))},function(e,t,n){(function(r){function o(){return"undefined"!=typeof document&&"WebkitAppearance"in document.documentElement.style||window.console&&(console.firebug||console.exception&&console.table)||navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31}function i(){var e=arguments,n=this.useColors;if(e[0]=(n?"%c":"")+this.namespace+(n?" %c":" ")+e[0]+(n?"%c ":" ")+"+"+t.humanize(this.diff),!n)return e;var r="color: "+this.color;e=[e[0],r,"color: inherit"].concat(Array.prototype.slice.call(e,1));var o=0,i=0;return e[0].replace(/%[a-z%]/g,function(e){"%%"!==e&&(o++,"%c"===e&&(i=o))}),e.splice(i,0,r),e}function a(){return"object"==typeof console&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function s(e){try{null==e?t.storage.removeItem("debug"):t.storage.debug=e}catch(e){}}function l(){try{return t.storage.debug}catch(e){}if("undefined"!=typeof r&&"env"in r)return r.env.DEBUG}function u(){try{return window.localStorage}catch(e){}}t=e.exports=n(925),t.log=a,t.formatArgs=i,t.save=s,t.load=l,t.useColors=o,t.storage="undefined"!=typeof chrome&&"undefined"!=typeof chrome.storage?chrome.storage.local:u(),t.colors=["lightseagreen","forestgreen","goldenrod","dodgerblue","darkorchid","crimson"],t.formatters.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}},t.enable(l())}).call(t,n(2))},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t,n,r,o){n&&(e._notifying=!0,n.call.apply(n,[e,r].concat(o)),e._notifying=!1),e._values[t]=r,e.unmounted||e.forceUpdate()}t.__esModule=!0;var i=n(938),a=r(i),s={shouldComponentUpdate:function(){return!this._notifying}};t.default=(0,a.default)(s,o),e.exports=t.default},function(e,t,n){(function(t){"use strict";function r(e,t){!i.isUndefined(e)&&i.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}function o(){var e;return"undefined"!=typeof XMLHttpRequest?e=n(214):"undefined"!=typeof t&&(e=n(214)),e}var i=n(30),a=n(386),s={"Content-Type":"application/x-www-form-urlencoded"},l={adapter:o(),transformRequest:[function(e,t){return a(t,"Content-Type"),i.isFormData(e)||i.isArrayBuffer(e)||i.isBuffer(e)||i.isStream(e)||i.isFile(e)||i.isBlob(e)?e:i.isArrayBufferView(e)?e.buffer:i.isURLSearchParams(e)?(r(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):i.isObject(e)?(r(t,"application/json;charset=utf-8"),JSON.stringify(e)):e}],transformResponse:[function(e){if("string"==typeof e)try{e=JSON.parse(e)}catch(e){}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,validateStatus:function(e){return e>=200&&e<300}};l.headers={common:{Accept:"application/json, text/plain, */*"}},i.forEach(["delete","get","head"],function(e){l.headers[e]={}}),i.forEach(["post","put","patch"],function(e){l.headers[e]=i.merge(s)}),e.exports=l}).call(t,n(2))},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n(11),i=n(26),a=r(i),s=n(47),l=function(e,t){return{title:"Actor Modal",bsSize:"large",form:[{label:"Name",name:"name",type:"text"},{label:"Hide on Dashboard",name:"hide",type:"checkbox"},{label:"Type",clear_config:!0,name:"type",type:"select",options:Object.keys(e.actor.config_type)}],types:e.actor.config_type,configfield:"type",actors:e.actor.actors,sensors:e.sensor.sensors,kettle:e.kettle.list}},u=function(e,t){return{btn_save:function(t){return e((0,s.save)(t)),!0},btn_add:function(t){return e((0,s.add)(t)),!0},btn_delete:function(t){return e((0,s.remove)(t)),!0}}},c=(0,o.connect)(l,u,null,{withRef:!0})(a.default);t.default=c},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n(1),i=r(o),a=n(11),s=n(26),l=r(s),u=n(47),c=(n(20),{0:i.default.createElement("strong",null,"0%"),25:"25%",50:"50%",75:"75%",100:{style:{color:"red"},label:i.default.createElement("strong",null,"100%")}}),d=function(e,t){return{title:t.actor_name?"Power for "+t.actor_name:"Power for Actor",form:[{label:"Power",name:"power",type:"slider",min:0,max:100,marks:c}]}},f=function(e,t){return{btn_save:function(n){return e((0,u.set_power)(t.actor_id,n.power)),!0},btn_add:function(e){return!0},btn_delete:function(e){return!0}}};t.default=(0,a.connect)(d,f,null,{withRef:!0})(l.default)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:s(),t=arguments[1];switch(t.type){case"UPDATE_FILES":return o({},e,{files:t.payload});case"SENSOR_DATA_LOADED":return o({},e,{chart_config:o({},e.chart_config,{series:t.payload})});case"UPDATE_ACTIONS":return o({},e,{chart_config:o({},e.chart_config,{xAxis:o({},e.chart_config.xAxis,{plotLines:t.payload})})});default:return e}});t.default=u},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n(11),i=n(26),a=r(i),s=n(60),l=function(e,t){return{title:"Sensor Modal",bsSize:"large",form:[{label:"Name",name:"name",type:"text"},{label:"Hide on Dashboard",name:"hide",type:"checkbox"},{label:"Type",clear_config:!0,name:"type",type:"select",options:Object.keys(e.sensor.config_type)}],types:e.sensor.config_type,configfield:"type",actors:e.actor.actors,sensors:e.sensor.sensors,kettle:e.kettle.list}},u=function(e,t,n){return{btn_save:function(t){return e((0,s.save)(t)),!0},btn_add:function(t){return e((0,s.add)(t)),!0},btn_delete:function(t){return e((0,s.remove)(t)),!0}}},c=(0,o.connect)(l,u,null,{withRef:!0})(a.default);t.default=c},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n(1),i=(r(o),n(11)),a=n(26),s=r(a),l=n(20),u=function(e,t){return{title:"Brew Name",form:[{label:"Brew Name",name:"name",type:"text"}]}},c=function(e,t){return{btn_save:function(t){return e((0,l.save)({name:"brew_name",value:t.name})),!0},btn_add:function(e){return!0},btn_delete:function(e){return!0}}},d=(0,i.connect)(u,c,null,{withRef:!0})(s.default);t.default=d},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n(11),i=n(426),a=r(i),s=n(52),l=n(78),u=r(l),c=n(1),d=r(c),f=function(e){switch(e.state){case"D":return d.default.createElement("i",{className:"fa fa-check"});case"A":return d.default.createElement("i",{className:"fa fa-circle-o-notch fa-spin"});default:return}},p=function(e,t){return{modal:function(){return d.default.createElement(u.default,{remove:!0,save:!0,ref:"modal"})},columns:[{label:"Name",name:"name"},{label:"Type",name:"type"},{label:"State",name:"state",render:f},{label:"Start",render:function(e){return e.start?new Date(1e3*e.start).toLocaleTimeString():void 0}},{label:"End",render:function(e){return e.end?new Date(1e3*e.end).toLocaleTimeString():void 0}}],data:e.steps.list}},h=function(e,t,n){return{sort_step:function(t){e((0,s.sort_steps)(t))}}},m=(0,o.connect)(p,h,null,{withRef:!0})(a.default);t.default=m},function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},function(e,t,n){var r=n(453);e.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,o){return e.call(t,n,r,o)}}return function(){return e.apply(t,arguments)}}},function(e,t){e.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},function(e,t){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(e,t){e.exports=!0},function(e,t,n){var r=n(64),o=n(469),i=n(145),a=n(151)("IE_PROTO"),s=function(){},l="prototype",u=function(){var e,t=n(237)("iframe"),r=i.length,o="<",a=">";for(t.style.display="none",n(459).appendChild(t),t.src="javascript:",e=t.contentWindow.document,e.open(),e.write(o+"script"+a+"document.F=Object"+o+"/script"+a),e.close(),u=e.F;r--;)delete u[l][i[r]];return u()};e.exports=Object.create||function(e,t){var n;return null!==e?(s[l]=r(e),n=new s,s[l]=null,n[a]=e):n=u(),void 0===t?n:o(n,t)}},function(e,t,n){var r=n(83),o=n(84),i=n(41),a=n(154),s=n(54),l=n(238),u=Object.getOwnPropertyDescriptor;t.f=n(53)?u:function(e,t){if(e=i(e),t=a(t,!0),l)try{return u(e,t)}catch(e){}if(s(e,t))return o(!r.f.call(e,t),e[t])}},function(e,t){t.f=Object.getOwnPropertySymbols},function(e,t,n){var r=n(49).f,o=n(54),i=n(37)("toStringTag");e.exports=function(e,t,n){e&&!o(e=n?e:e.prototype,i)&&r(e,i,{configurable:!0,value:t})}},function(e,t,n){var r=n(152)("keys"),o=n(103);e.exports=function(e){return r[e]||(r[e]=o(e))}},function(e,t,n){var r=n(48),o="__core-js_shared__",i=r[o]||(r[o]={});e.exports=function(e){return i[e]||(i[e]={})}},function(e,t){var n=Math.ceil,r=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?r:n)(e)}},function(e,t,n){var r=n(81);e.exports=function(e,t){if(!r(e))return e;var n,o;if(t&&"function"==typeof(n=e.toString)&&!r(o=n.call(e)))return o;if("function"==typeof(n=e.valueOf)&&!r(o=n.call(e)))return o;if(!t&&"function"==typeof(n=e.toString)&&!r(o=n.call(e)))return o;throw TypeError("Can't convert object to primitive value")}},function(e,t,n){var r=n(48),o=n(25),i=n(146),a=n(156),s=n(49).f;e.exports=function(e){var t=o.Symbol||(o.Symbol=i?{}:r.Symbol||{});"_"==e.charAt(0)||e in t||s(t,e,{value:a.f(e)})}},function(e,t,n){t.f=n(37)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n(109),i=r(o),a="",s="";if(i.default){var l={Moz:"-moz-",ms:"-ms-",O:"-o-",Webkit:"-webkit-"},u=document.createElement("p").style,c="Transform";for(var d in l)if(d+c in u){a=d,s=l[d];break}}t.default={js:a,css:s}},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n(42),i=r(o),a=function(){};i.default&&(a=function(){return document.addEventListener?function(e,t,n,r){return e.removeEventListener(t,n,r||!1)}:document.attachEvent?function(e,t,n){return e.detachEvent("on"+t,n)}:void 0}()),t.default=a,e.exports=t.default},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(){for(var e=document.createElement("div").style,t={O:function(e){return"o"+e.toLowerCase()},Moz:function(e){return e.toLowerCase()},Webkit:function(e){return"webkit"+e},ms:function(e){return"MS"+e}},n=Object.keys(t),r=void 0,o=void 0,i="",a=0;a2&&void 0!==arguments[2]?arguments[2]:{},r="";if(!t)return r;var i=n.indent,a=void 0===i?0:i,l=t.fallbacks;if(a++,l)if(Array.isArray(l))for(var u=0;uo}function a(e){return e.touches.length>1||"touchend"===e.type.toLowerCase()&&e.touches.length>0}function s(e,t){var n=t.marks,o=t.step,r=t.min,i=Object.keys(n).map(parseFloat);if(null!==o){var a=Math.round((e-r)/o)*o+r;i.push(a)}var s=i.map(function(t){return Math.abs(e-t)});return i[s.indexOf(Math.min.apply(Math,(0,v.default)(s)))]}function l(e){var t=e.toString(),n=0;return t.indexOf(".")>=0&&(n=t.length-t.indexOf(".")-1),n}function u(e,t){return e?t.clientY:t.pageX}function c(e,t){return e?t.touches[0].clientY:t.touches[0].pageX}function d(e,t){var n=t.getBoundingClientRect();return e?n.top+.5*n.height:n.left+.5*n.width}function f(e,t){var n=t.max,o=t.min;return e<=o?o:e>=n?n:e}function p(e,t){var n=t.step,o=s(e,t);return null===n?o:parseFloat(o.toFixed(l(n)))}function h(e){e.stopPropagation(),e.preventDefault()}Object.defineProperty(t,"__esModule",{value:!0});var m=n(205),v=o(m);t.isEventFromHandle=r,t.isValueOutOfRange=i,t.isNotTouchEvent=a,t.getClosestPoint=s,t.getPrecision=l,t.getMousePosition=u,t.getTouchPosition=c,t.getHandleCenterPosition=d,t.ensureValueInRange=f,t.ensureValuePrecision=p,t.pauseEvent=h;var y=n(20)},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e,t,n){var o=l.default.unstable_batchedUpdates?function(e){l.default.unstable_batchedUpdates(n,e)}:n;return(0,a.default)(e,t,o)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=r;var i=n(329),a=o(i),s=n(20),l=o(s);e.exports=t.default},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e){e.offsetHeight}function i(e,t){var n=t["offset"+(0,T.default)(e)],o=S[e];return n+parseInt((0,b.default)(t,o[0]),10)+parseInt((0,b.default)(t,o[1]),10)}t.__esModule=!0;var a=n(3),s=o(a),l=n(8),u=o(l),c=n(4),d=o(c),f=n(6),p=o(f),h=n(5),m=o(h),v=n(9),y=o(v),g=n(99),b=o(g),E=n(1),_=o(E),x=n(7),w=o(x),C=n(299),O=o(C),N=n(266),T=o(N),k=n(23),P=o(k),S={height:["marginTop","marginBottom"],width:["marginLeft","marginRight"]},M={in:w.default.bool,mountOnEnter:w.default.bool,unmountOnExit:w.default.bool,transitionAppear:w.default.bool,timeout:w.default.number,onEnter:w.default.func,onEntering:w.default.func,onEntered:w.default.func,onExit:w.default.func,onExiting:w.default.func,onExited:w.default.func,dimension:w.default.oneOfType([w.default.oneOf(["height","width"]),w.default.func]),getDimensionValue:w.default.func,role:w.default.string},A={in:!1,timeout:300,mountOnEnter:!1,unmountOnExit:!1,transitionAppear:!1,dimension:"height",getDimensionValue:i},D=function(e){function t(n,o){(0,d.default)(this,t);var r=(0,p.default)(this,e.call(this,n,o));return r.handleEnter=r.handleEnter.bind(r),r.handleEntering=r.handleEntering.bind(r),r.handleEntered=r.handleEntered.bind(r),r.handleExit=r.handleExit.bind(r),r.handleExiting=r.handleExiting.bind(r),r}return(0,m.default)(t,e),t.prototype.handleEnter=function(e){var t=this._dimension();e.style[t]="0"},t.prototype.handleEntering=function(e){var t=this._dimension();e.style[t]=this._getScrollDimensionValue(e,t)},t.prototype.handleEntered=function(e){var t=this._dimension();e.style[t]=null},t.prototype.handleExit=function(e){var t=this._dimension();e.style[t]=this.props.getDimensionValue(t,e)+"px",r(e)},t.prototype.handleExiting=function(e){var t=this._dimension();e.style[t]="0"},t.prototype._dimension=function(){return"function"==typeof this.props.dimension?this.props.dimension():this.props.dimension},t.prototype._getScrollDimensionValue=function(e,t){return e["scroll"+(0,T.default)(t)]+"px"},t.prototype.render=function(){var e=this.props,t=e.onEnter,n=e.onEntering,o=e.onEntered,r=e.onExit,i=e.onExiting,a=e.className,l=(0,u.default)(e,["onEnter","onEntering","onEntered","onExit","onExiting","className"]);delete l.dimension,delete l.getDimensionValue;var c=(0,P.default)(this.handleEnter,t),d=(0,P.default)(this.handleEntering,n),f=(0,P.default)(this.handleEntered,o),p=(0,P.default)(this.handleExit,r),h=(0,P.default)(this.handleExiting,i),m={width:"width"===this._dimension()};return _.default.createElement(O.default,(0,s.default)({},l,{"aria-expanded":l.role?l.in:null,className:(0,y.default)(a,m),exitedClassName:"collapse",exitingClassName:"collapsing",enteredClassName:"collapse in",enteringClassName:"collapsing",onEnter:c,onEntering:d,onEntered:f,onExit:p,onExiting:h}))},t}(_.default.Component);D.propTypes=M,D.defaultProps=A,t.default=D,e.exports=t.default},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var r=n(3),i=o(r),a=n(8),s=o(a),l=n(4),u=o(l),c=n(6),d=o(c),f=n(5),p=o(f),h=n(9),m=o(h),v=n(1),y=o(v),g=n(7),b=o(g),E=n(10),_={glyph:b.default.string.isRequired},x=function(e){function t(){return(0,u.default)(this,t),(0,d.default)(this,e.apply(this,arguments))}return(0,p.default)(t,e),t.prototype.render=function(){var e,t=this.props,n=t.glyph,o=t.className,r=(0,s.default)(t,["glyph","className"]),a=(0,E.splitBsProps)(r),l=a[0],u=a[1],c=(0,i.default)({},(0,E.getClassSet)(l),(e={},e[(0,E.prefix)(l,n)]=!0,e));return y.default.createElement("span",(0,i.default)({},u,{className:(0,m.default)(o,c)}))},t}(y.default.Component);x.propTypes=_,t.default=(0,E.bsClass)("glyphicon",x),e.exports=t.default},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var r=n(3),i=o(r),a=n(8),s=o(a),l=n(4),u=o(l),c=n(6),d=o(c),f=n(5),p=o(f),h=n(9),m=o(h),v=n(1),y=o(v),g=n(17),b=o(g),E=n(608),_=o(E),x=n(609),w=o(x),C=n(610),O=o(C),N=n(611),T=o(N),k=n(612),P=o(k),S=n(613),M=o(S),A=n(10),D={componentClass:b.default},R={componentClass:"div"},I=function(e){function t(){return(0,u.default)(this,t),(0,d.default)(this,e.apply(this,arguments))}return(0,p.default)(t,e),t.prototype.render=function(){var e=this.props,t=e.componentClass,n=e.className,o=(0,s.default)(e,["componentClass","className"]),r=(0,A.splitBsProps)(o),a=r[0],l=r[1],u=(0,A.getClassSet)(a);return y.default.createElement(t,(0,i.default)({},l,{className:(0,m.default)(n,u)}))},t}(y.default.Component);I.propTypes=D,I.defaultProps=R,I.Heading=w.default,I.Body=_.default,I.Left=O.default,I.Right=M.default,I.List=T.default,I.ListItem=P.default,t.default=(0,A.bsClass)("media",I),e.exports=t.default},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var r=n(8),i=o(r),a=n(4),s=o(a),l=n(6),u=o(l),c=n(5),d=o(c),f=n(1),p=o(f),h=n(7),m=o(h),v=n(114),y=o(v),g="tab",b="pane",E=m.default.oneOfType([m.default.string,m.default.number]),_={id:function(e){var t=null;if(!e.generateChildId){for(var n=arguments.length,o=Array(n>1?n-1:0),r=1;r-1&&navigator.userAgent.indexOf("Edge")===-1||navigator.userAgent.indexOf("Firefox")>-1)){var m=window.location.protocol.indexOf("http")===-1&&navigator.userAgent.indexOf("Firefox")===-1;console.debug("Download the React DevTools "+(m?"and use an HTTP server (instead of a file: URL) ":"")+"for a better development experience: https://fb.me/react-devtools")}var v=function(){};"production"!==t.env.NODE_ENV?f((v.name||v.toString()).indexOf("testFn")!==-1,"It looks like you're using a minified copy of the development build of React. When deploying React apps to production, make sure to use the production build which skips development warnings and is faster. See https://fb.me/react-minification for more details."):void 0;var y=document.documentMode&&document.documentMode<8;"production"!==t.env.NODE_ENV?f(!y,'Internet Explorer is running in compatibility mode; please add the following tag to your HTML to prevent this from happening: '):void 0;for(var g=[Array.isArray,Array.prototype.every,Array.prototype.forEach,Array.prototype.indexOf,Array.prototype.map,Date.now,Function.prototype.bind,Object.keys,String.prototype.trim],b=0;b0&&o.length<20?n+" (keys: "+o.join(", ")+")":n}function i(e,n){var o=l.get(e);if(!o){if("production"!==t.env.NODE_ENV){var r=e.constructor;"production"!==t.env.NODE_ENV?f(!n,"%s(...): Can only update a mounted or mounting component. This usually means you called %s() on an unmounted component. This is a no-op. Please check the code for the %s component.",n,n,r&&(r.displayName||r.name)||"ReactClass"):void 0}return null}return"production"!==t.env.NODE_ENV&&("production"!==t.env.NODE_ENV?f(null==s.current,"%s(...): Cannot update during an existing state transition (such as within `render` or another component's constructor). Render methods should be a pure function of props and state; constructor side-effects are an anti-pattern, but can be moved to `componentWillMount`.",n):void 0),o}var a=n(14),s=n(40),l=n(69),u=n(31),c=n(32),d=n(11),f=n(12),p={isMounted:function(e){if("production"!==t.env.NODE_ENV){var n=s.current;null!==n&&("production"!==t.env.NODE_ENV?f(n._warnedAboutRefsInRender,"%s is accessing isMounted inside its render() function. render() should be a pure function of props and state. It should never access something that requires stale data from the previous render, such as refs. Move this logic to componentDidMount and componentDidUpdate instead.",n.getName()||"A component"):void 0,n._warnedAboutRefsInRender=!0)}var o=l.get(e);return!!o&&!!o._renderedComponent},enqueueCallback:function(e,t,n){p.validateCallback(t,n);var r=i(e);return r?(r._pendingCallbacks?r._pendingCallbacks.push(t):r._pendingCallbacks=[t],void o(r)):null},enqueueCallbackInternal:function(e,t){e._pendingCallbacks?e._pendingCallbacks.push(t):e._pendingCallbacks=[t],o(e)},enqueueForceUpdate:function(e){var t=i(e,"forceUpdate");t&&(t._pendingForceUpdate=!0,o(t))},enqueueReplaceState:function(e,t,n){var r=i(e,"replaceState");r&&(r._pendingStateQueue=[t],r._pendingReplaceState=!0,void 0!==n&&null!==n&&(p.validateCallback(n,"replaceState"),r._pendingCallbacks?r._pendingCallbacks.push(n):r._pendingCallbacks=[n]),o(r))},enqueueSetState:function(e,n){"production"!==t.env.NODE_ENV&&(u.debugTool.onSetState(),"production"!==t.env.NODE_ENV?f(null!=n,"setState(...): You passed an undefined or null state object; instead, use forceUpdate()."):void 0);var r=i(e,"setState");if(r){var a=r._pendingStateQueue||(r._pendingStateQueue=[]);a.push(n),o(r)}},enqueueElementInternal:function(e,t,n){e._pendingElement=t,e._context=n,o(e)},validateCallback:function(e,n){e&&"function"!=typeof e?"production"!==t.env.NODE_ENV?d(!1,"%s(...): Expected the last optional `callback` argument to be a function. Instead received: %s.",n,r(e)):a("122",n,r(e)):void 0}};e.exports=p}).call(t,n(2))},function(e,t){"use strict";var n=function(e){return"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(t,n,o,r){MSApp.execUnsafeLocalFunction(function(){return e(t,n,o,r)})}:e};e.exports=n},function(e,t){"use strict";function n(e){var t,n=e.keyCode;return"charCode"in e?(t=e.charCode,0===t&&13===n&&(t=13)):t=n,t>=32||13===t?t:0}e.exports=n},function(e,t){"use strict";function n(e){var t=this,n=t.nativeEvent;if(n.getModifierState)return n.getModifierState(e);var o=r[e];return!!o&&!!n[o]}function o(e){return n}var r={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};e.exports=o},function(e,t){"use strict";function n(e){var t=e.target||e.srcElement||window;return t.correspondingUseElement&&(t=t.correspondingUseElement),3===t.nodeType?t.parentNode:t}e.exports=n},function(e,t,n){"use strict";/** +for(o=97;o<123;o++)n[String.fromCharCode(o)]=o-32;for(var o=48;o<58;o++)n[o-48]=o;for(o=1;o<13;o++)n["f"+o]=o+111;for(o=0;o<10;o++)n["numpad "+o]=o+96;var i=t.names=t.title={};for(o in n)i[n[o]]=o;for(var a in r)n[a]=r[a]},function(e,t,n){var r=n(55),o=n(44),i=r(o,"Map");e.exports=i},function(e,t,n){function r(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t-1&&e%1==0&&e-1&&e%1==0&&e<=r}var r=9007199254740991;e.exports=n},function(e,t,n){function r(e){if(!a(e)||o(e)!=s)return!1;var t=i(e);if(null===t)return!0;var n=d.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&c.call(n)==f}var o=n(71),i=n(630),a=n(72),s="[object Object]",l=Function.prototype,u=Object.prototype,c=l.toString,d=u.hasOwnProperty,f=c.call(Object);e.exports=r},function(e,t){t.encode=function(e){var t="";for(var n in e)e.hasOwnProperty(n)&&(t.length&&(t+="&"),t+=encodeURIComponent(n)+"="+encodeURIComponent(e[n]));return t},t.decode=function(e){for(var t={},n=e.split("&"),r=0,o=n.length;rr}function a(e){return e.touches.length>1||"touchend"===e.type.toLowerCase()&&e.touches.length>0}function s(e,t){var n=t.marks,r=t.step,o=t.min,i=Object.keys(n).map(parseFloat);if(null!==r){var a=Math.round((e-o)/r)*r+o;i.push(a)}var s=i.map(function(t){return Math.abs(e-t)});return i[s.indexOf(Math.min.apply(Math,(0,v.default)(s)))]}function l(e){var t=e.toString(),n=0;return t.indexOf(".")>=0&&(n=t.length-t.indexOf(".")-1),n}function u(e,t){return e?t.clientY:t.pageX}function c(e,t){return e?t.touches[0].clientY:t.touches[0].pageX}function d(e,t){var n=t.getBoundingClientRect();return e?n.top+.5*n.height:n.left+.5*n.width}function f(e,t){var n=t.max,r=t.min;return e<=r?r:e>=n?n:e}function p(e,t){var n=t.step,r=s(e,t);return null===n?r:parseFloat(r.toFixed(l(n)))}function h(e){e.stopPropagation(),e.preventDefault()}Object.defineProperty(t,"__esModule",{value:!0});var m=n(234),v=r(m);t.isEventFromHandle=o,t.isValueOutOfRange=i,t.isNotTouchEvent=a,t.getClosestPoint=s,t.getPrecision=l,t.getMousePosition=u,t.getTouchPosition=c,t.getHandleCenterPosition=d,t.ensureValueInRange=f,t.ensureValuePrecision=p,t.pauseEvent=h;var y=n(18)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t,n){var r=l.default.unstable_batchedUpdates?function(e){l.default.unstable_batchedUpdates(n,e)}:n;return(0,a.default)(e,t,r)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=o;var i=n(369),a=r(i),s=n(18),l=r(s);e.exports=t.default},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e){e.offsetHeight}function i(e,t){var n=t["offset"+(0,N.default)(e)],r=P[e];return n+parseInt((0,b.default)(t,r[0]),10)+parseInt((0,b.default)(t,r[1]),10)}t.__esModule=!0;var a=n(4),s=r(a),l=n(9),u=r(l),c=n(5),d=r(c),f=n(7),p=r(f),h=n(6),m=r(h),v=n(8),y=r(v),g=n(106),b=r(g),x=n(1),E=r(x),_=n(3),w=r(_),O=n(343),C=r(O),k=n(315),N=r(k),T=n(23),S=r(T),P={height:["marginTop","marginBottom"],width:["marginLeft","marginRight"]},M={in:w.default.bool,mountOnEnter:w.default.bool,unmountOnExit:w.default.bool,transitionAppear:w.default.bool,timeout:w.default.number,onEnter:w.default.func,onEntering:w.default.func,onEntered:w.default.func,onExit:w.default.func,onExiting:w.default.func,onExited:w.default.func,dimension:w.default.oneOfType([w.default.oneOf(["height","width"]),w.default.func]),getDimensionValue:w.default.func,role:w.default.string},A={in:!1,timeout:300,mountOnEnter:!1,unmountOnExit:!1,transitionAppear:!1,dimension:"height",getDimensionValue:i},D=function(e){function t(n,r){(0,d.default)(this,t);var o=(0,p.default)(this,e.call(this,n,r));return o.handleEnter=o.handleEnter.bind(o),o.handleEntering=o.handleEntering.bind(o),o.handleEntered=o.handleEntered.bind(o),o.handleExit=o.handleExit.bind(o),o.handleExiting=o.handleExiting.bind(o),o}return(0,m.default)(t,e),t.prototype.handleEnter=function(e){var t=this._dimension();e.style[t]="0"},t.prototype.handleEntering=function(e){var t=this._dimension();e.style[t]=this._getScrollDimensionValue(e,t)},t.prototype.handleEntered=function(e){var t=this._dimension();e.style[t]=null},t.prototype.handleExit=function(e){var t=this._dimension();e.style[t]=this.props.getDimensionValue(t,e)+"px",o(e)},t.prototype.handleExiting=function(e){var t=this._dimension();e.style[t]="0"},t.prototype._dimension=function(){return"function"==typeof this.props.dimension?this.props.dimension():this.props.dimension},t.prototype._getScrollDimensionValue=function(e,t){return e["scroll"+(0,N.default)(t)]+"px"},t.prototype.render=function(){var e=this.props,t=e.onEnter,n=e.onEntering,r=e.onEntered,o=e.onExit,i=e.onExiting,a=e.className,l=(0,u.default)(e,["onEnter","onEntering","onEntered","onExit","onExiting","className"]);delete l.dimension,delete l.getDimensionValue;var c=(0,S.default)(this.handleEnter,t),d=(0,S.default)(this.handleEntering,n),f=(0,S.default)(this.handleEntered,r),p=(0,S.default)(this.handleExit,o),h=(0,S.default)(this.handleExiting,i),m={width:"width"===this._dimension()};return E.default.createElement(C.default,(0,s.default)({},l,{"aria-expanded":l.role?l.in:null,className:(0,y.default)(a,m),exitedClassName:"collapse",exitingClassName:"collapsing",enteredClassName:"collapse in",enteringClassName:"collapsing",onEnter:c,onEntering:d,onEntered:f,onExit:p,onExiting:h}))},t}(E.default.Component);D.propTypes=M,D.defaultProps=A,t.default=D,e.exports=t.default},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var o=n(4),i=r(o),a=n(9),s=r(a),l=n(5),u=r(l),c=n(7),d=r(c),f=n(6),p=r(f),h=n(8),m=r(h),v=n(1),y=r(v),g=n(3),b=r(g),x=n(10),E={glyph:b.default.string.isRequired},_=function(e){function t(){return(0,u.default)(this,t),(0,d.default)(this,e.apply(this,arguments))}return(0,p.default)(t,e),t.prototype.render=function(){var e,t=this.props,n=t.glyph,r=t.className,o=(0,s.default)(t,["glyph","className"]),a=(0,x.splitBsProps)(o),l=a[0],u=a[1],c=(0,i.default)({},(0,x.getClassSet)(l),(e={},e[(0,x.prefix)(l,n)]=!0,e));return y.default.createElement("span",(0,i.default)({},u,{className:(0,m.default)(r,c)}))},t}(y.default.Component);_.propTypes=E,t.default=(0,x.bsClass)("glyphicon",_),e.exports=t.default},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var o=n(4),i=r(o),a=n(9),s=r(a),l=n(5),u=r(l),c=n(7),d=r(c),f=n(6),p=r(f),h=n(8),m=r(h),v=n(1),y=r(v),g=n(16),b=r(g),x=n(739),E=r(x),_=n(740),w=r(_),O=n(741),C=r(O),k=n(742),N=r(k),T=n(743),S=r(T),P=n(744),M=r(P),A=n(10),D={componentClass:b.default},R={componentClass:"div"},j=function(e){function t(){return(0,u.default)(this,t),(0,d.default)(this,e.apply(this,arguments))}return(0,p.default)(t,e),t.prototype.render=function(){var e=this.props,t=e.componentClass,n=e.className,r=(0,s.default)(e,["componentClass","className"]),o=(0,A.splitBsProps)(r),a=o[0],l=o[1],u=(0,A.getClassSet)(a);return y.default.createElement(t,(0,i.default)({},l,{className:(0,m.default)(n,u)}))},t}(y.default.Component);j.propTypes=D,j.defaultProps=R,j.Heading=w.default,j.Body=E.default,j.Left=C.default,j.Right=M.default,j.List=N.default,j.ListItem=S.default,t.default=(0,A.bsClass)("media",j),e.exports=t.default},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var o=n(9),i=r(o),a=n(5),s=r(a),l=n(7),u=r(l),c=n(6),d=r(c),f=n(1),p=r(f),h=n(3),m=r(h),v=n(133),y=r(v),g="tab",b="pane",x=m.default.oneOfType([m.default.string,m.default.number]),E={id:function(e){var t=null;if(!e.generateChildId){for(var n=arguments.length,r=Array(n>1?n-1:0),o=1;o0&&r.length<20?n+" (keys: "+r.join(", ")+")":n}function i(e,n){var r=l.get(e);if(!r){if("production"!==t.env.NODE_ENV){var o=e.constructor;"production"!==t.env.NODE_ENV?f(!n,"%s(...): Can only update a mounted or mounting component. This usually means you called %s() on an unmounted component. This is a no-op. Please check the code for the %s component.",n,n,o&&(o.displayName||o.name)||"ReactClass"):void 0}return null}return"production"!==t.env.NODE_ENV&&("production"!==t.env.NODE_ENV?f(null==s.current,"%s(...): Cannot update during an existing state transition (such as within `render` or another component's constructor). Render methods should be a pure function of props and state; constructor side-effects are an anti-pattern, but can be moved to `componentWillMount`.",n):void 0),r}var a=n(15),s=n(40),l=n(95),u=n(33),c=n(39),d=n(12),f=n(13),p={isMounted:function(e){if("production"!==t.env.NODE_ENV){var n=s.current;null!==n&&("production"!==t.env.NODE_ENV?f(n._warnedAboutRefsInRender,"%s is accessing isMounted inside its render() function. render() should be a pure function of props and state. It should never access something that requires stale data from the previous render, such as refs. Move this logic to componentDidMount and componentDidUpdate instead.",n.getName()||"A component"):void 0,n._warnedAboutRefsInRender=!0)}var r=l.get(e);return!!r&&!!r._renderedComponent},enqueueCallback:function(e,t,n){p.validateCallback(t,n);var o=i(e);return o?(o._pendingCallbacks?o._pendingCallbacks.push(t):o._pendingCallbacks=[t],void r(o)):null},enqueueCallbackInternal:function(e,t){e._pendingCallbacks?e._pendingCallbacks.push(t):e._pendingCallbacks=[t],r(e)},enqueueForceUpdate:function(e){var t=i(e,"forceUpdate");t&&(t._pendingForceUpdate=!0,r(t))},enqueueReplaceState:function(e,t,n){var o=i(e,"replaceState");o&&(o._pendingStateQueue=[t],o._pendingReplaceState=!0,void 0!==n&&null!==n&&(p.validateCallback(n,"replaceState"),o._pendingCallbacks?o._pendingCallbacks.push(n):o._pendingCallbacks=[n]),r(o))},enqueueSetState:function(e,n){"production"!==t.env.NODE_ENV&&(u.debugTool.onSetState(),"production"!==t.env.NODE_ENV?f(null!=n,"setState(...): You passed an undefined or null state object; instead, use forceUpdate()."):void 0);var o=i(e,"setState");if(o){var a=o._pendingStateQueue||(o._pendingStateQueue=[]);a.push(n),r(o)}},enqueueElementInternal:function(e,t,n){e._pendingElement=t,e._context=n,r(e)},validateCallback:function(e,n){e&&"function"!=typeof e?"production"!==t.env.NODE_ENV?d(!1,"%s(...): Expected the last optional `callback` argument to be a function. Instead received: %s.",n,o(e)):a("122",n,o(e)):void 0}};e.exports=p}).call(t,n(2))},function(e,t){"use strict";var n=function(e){return"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(t,n,r,o){MSApp.execUnsafeLocalFunction(function(){return e(t,n,r,o)})}:e};e.exports=n},function(e,t){"use strict";function n(e){var t,n=e.keyCode;return"charCode"in e?(t=e.charCode,0===t&&13===n&&(t=13)):t=n,t>=32||13===t?t:0}e.exports=n},function(e,t){"use strict";function n(e){var t=this,n=t.nativeEvent;if(n.getModifierState)return n.getModifierState(e);var r=o[e];return!!r&&!!n[r]}function r(e){return n}var o={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};e.exports=r},function(e,t){"use strict";function n(e){var t=e.target||e.srcElement||window;return t.correspondingUseElement&&(t=t.correspondingUseElement),3===t.nodeType?t.parentNode:t}e.exports=n},function(e,t,n){"use strict";/** * Checks if an event is supported in the current execution environment. * * NOTE: This will not work correctly for non-generic events such as `change`, @@ -35,57 +35,57 @@ for(r=97;r<123;r++)n[String.fromCharCode(r)]=r-32;for(var r=48;r<58;r++)n[r-48]= * @internal * @license Modernizr 3.0.0pre (Custom Build) | MIT */ -function o(e,t){if(!i.canUseDOM||t&&!("addEventListener"in document))return!1;var n="on"+e,o=n in document;if(!o){var a=document.createElement("div");a.setAttribute(n,"return;"),o="function"==typeof a[n]}return!o&&r&&"wheel"===e&&(o=document.implementation.hasFeature("Events.wheel","3.0")),o}var r,i=n(21);i.canUseDOM&&(r=document.implementation&&document.implementation.hasFeature&&document.implementation.hasFeature("","")!==!0),e.exports=o},function(e,t){"use strict";function n(e,t){var n=null===e||e===!1,o=null===t||t===!1;if(n||o)return n===o;var r=typeof e,i=typeof t;return"string"===r||"number"===r?"string"===i||"number"===i:"object"===i&&e.type===t.type&&e.key===t.key}e.exports=n},function(e,t,n){(function(t){"use strict";var o=n(16),r=n(27),i=n(12),a=r;if("production"!==t.env.NODE_ENV){var s=["address","applet","area","article","aside","base","basefont","bgsound","blockquote","body","br","button","caption","center","col","colgroup","dd","details","dir","div","dl","dt","embed","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","iframe","img","input","isindex","li","link","listing","main","marquee","menu","menuitem","meta","nav","noembed","noframes","noscript","object","ol","p","param","plaintext","pre","script","section","select","source","style","summary","table","tbody","td","template","textarea","tfoot","th","thead","title","tr","track","ul","wbr","xmp"],l=["applet","caption","html","table","td","th","marquee","object","template","foreignObject","desc","title"],u=l.concat(["button"]),c=["dd","dt","li","option","optgroup","p","rp","rt"],d={current:null,formTag:null,aTagInScope:null,buttonTagInScope:null,nobrTagInScope:null,pTagInButtonScope:null,listItemTagAutoclosing:null,dlItemTagAutoclosing:null},f=function(e,t,n){var r=o({},e||d),i={tag:t,instance:n};return l.indexOf(t)!==-1&&(r.aTagInScope=null,r.buttonTagInScope=null,r.nobrTagInScope=null),u.indexOf(t)!==-1&&(r.pTagInButtonScope=null),s.indexOf(t)!==-1&&"address"!==t&&"div"!==t&&"p"!==t&&(r.listItemTagAutoclosing=null,r.dlItemTagAutoclosing=null),r.current=i,"form"===t&&(r.formTag=i),"a"===t&&(r.aTagInScope=i),"button"===t&&(r.buttonTagInScope=i),"nobr"===t&&(r.nobrTagInScope=i),"p"===t&&(r.pTagInButtonScope=i),"li"===t&&(r.listItemTagAutoclosing=i),"dd"!==t&&"dt"!==t||(r.dlItemTagAutoclosing=i),r},p=function(e,t){switch(t){case"select":return"option"===e||"optgroup"===e||"#text"===e;case"optgroup":return"option"===e||"#text"===e;case"option":return"#text"===e;case"tr":return"th"===e||"td"===e||"style"===e||"script"===e||"template"===e;case"tbody":case"thead":case"tfoot":return"tr"===e||"style"===e||"script"===e||"template"===e;case"colgroup":return"col"===e||"template"===e;case"table":return"caption"===e||"colgroup"===e||"tbody"===e||"tfoot"===e||"thead"===e||"style"===e||"script"===e||"template"===e;case"head":return"base"===e||"basefont"===e||"bgsound"===e||"link"===e||"meta"===e||"title"===e||"noscript"===e||"noframes"===e||"style"===e||"script"===e||"template"===e;case"html":return"head"===e||"body"===e;case"#document":return"html"===e}switch(e){case"h1":case"h2":case"h3":case"h4":case"h5":case"h6":return"h1"!==t&&"h2"!==t&&"h3"!==t&&"h4"!==t&&"h5"!==t&&"h6"!==t;case"rp":case"rt":return c.indexOf(t)===-1;case"body":case"caption":case"col":case"colgroup":case"frame":case"head":case"html":case"tbody":case"td":case"tfoot":case"th":case"thead":case"tr":return null==t}return!0},h=function(e,t){switch(e){case"address":case"article":case"aside":case"blockquote":case"center":case"details":case"dialog":case"dir":case"div":case"dl":case"fieldset":case"figcaption":case"figure":case"footer":case"header":case"hgroup":case"main":case"menu":case"nav":case"ol":case"p":case"section":case"summary":case"ul":case"pre":case"listing":case"table":case"hr":case"xmp":case"h1":case"h2":case"h3":case"h4":case"h5":case"h6":return t.pTagInButtonScope;case"form":return t.formTag||t.pTagInButtonScope;case"li":return t.listItemTagAutoclosing;case"dd":case"dt":return t.dlItemTagAutoclosing;case"button":return t.buttonTagInScope;case"a":return t.aTagInScope;case"nobr":return t.nobrTagInScope}return null},m=function(e){if(!e)return[];var t=[];do t.push(e);while(e=e._currentElement._owner);return t.reverse(),t},v={};a=function(e,n,o,r){r=r||d;var a=r.current,s=a&&a.tag;null!=n&&("production"!==t.env.NODE_ENV?i(null==e,"validateDOMNesting: when childText is passed, childTag should be null"):void 0,e="#text");var l=p(e,s)?null:a,u=l?null:h(e,r),c=l||u;if(c){var f,y=c.tag,g=c.instance,b=o&&o._currentElement._owner,E=g&&g._currentElement._owner,_=m(b),x=m(E),w=Math.min(_.length,x.length),C=-1;for(f=0;f "),P=!!l+"|"+e+"|"+y+"|"+k;if(v[P])return;v[P]=!0;var S=e,M="";if("#text"===e?/\S/.test(n)?S="Text nodes":(S="Whitespace text nodes",M=" Make sure you don't have any extra whitespace between tags on each line of your source code."):S="<"+e+">",l){var A="";"table"===y&&"tr"===e&&(A+=" Add a to your code to match the DOM tree generated by the browser."),"production"!==t.env.NODE_ENV?i(!1,"validateDOMNesting(...): %s cannot appear as a child of <%s>.%s See %s.%s",S,y,M,k,A):void 0}else"production"!==t.env.NODE_ENV?i(!1,"validateDOMNesting(...): %s cannot appear as a descendant of <%s>. See %s.",S,y,k):void 0}},a.updatedAncestorInfo=f,a.isTagValidInContext=function(e,t){t=t||d;var n=t.current,o=n&&n.tag;return p(e,o)&&!h(e,t)}}e.exports=a}).call(t,n(2))},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e,t){return e="function"==typeof e?e():e,a.default.findDOMNode(e)||t}Object.defineProperty(t,"__esModule",{value:!0}),t.default=r;var i=n(20),a=o(i);e.exports=t.default},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e,t,n,o,r){var a=e[t],l="undefined"==typeof a?"undefined":i(a);return s.default.isValidElement(a)?new Error("Invalid "+o+" `"+r+"` of type ReactElement "+("supplied to `"+n+"`, expected a ReactComponent or a ")+"DOMElement. You can usually obtain a ReactComponent or DOMElement from a ReactElement by attaching a ref to it."):"object"===l&&"function"==typeof a.render||1===a.nodeType?null:new Error("Invalid "+o+" `"+r+"` of value `"+a+"` "+("supplied to `"+n+"`, expected a ReactComponent or a ")+"DOMElement.")}t.__esModule=!0;var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},a=n(1),s=o(a),l=n(111),u=o(l);t.default=(0,u.default)(r)},function(e,t){"use strict";function n(e){"undefined"!=typeof console&&"function"==typeof console.error&&console.error(e);try{throw new Error(e)}catch(e){}}t.__esModule=!0,t.default=n},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}t.__esModule=!0;var s=Object.assign||function(e){for(var t=1;t may have only one child element"),this.unlisten=o.listen(function(){e.setState({match:e.computeMatch(o.location.pathname)})})},t.prototype.componentWillReceiveProps=function(e){(0,u.default)(this.props.history===e.history,"You cannot change ")},t.prototype.componentWillUnmount=function(){this.unlisten()},t.prototype.render=function(){var e=this.props.children;return e?p.default.Children.only(e):null},t}(p.default.Component);v.propTypes={history:m.default.object.isRequired,children:m.default.node},v.contextTypes={router:m.default.object},v.childContextTypes={router:m.default.object.isRequired},t.default=v},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var r=n(555),i=o(r),a={},s=1e4,l=0,u=function(e,t){var n=""+t.end+t.strict,o=a[n]||(a[n]={});if(o[e])return o[e];var r=[],u=(0,i.default)(e,r,t),c={re:u,keys:r};return l1&&void 0!==arguments[1]?arguments[1]:{};"string"==typeof t&&(t={path:t});var n=t,o=n.path,r=void 0===o?"/":o,i=n.exact,a=void 0!==i&&i,s=n.strict,l=void 0!==s&&s,c=u(r,{end:a,strict:l}),d=c.re,f=c.keys,p=d.exec(e);if(!p)return null;var h=p[0],m=p.slice(1),v=e===h;return a&&!v?null:{path:r,url:"/"===r&&""===h?"/":h,isExact:v,params:f.reduce(function(e,t,n){return e[t.name]=m[n],e},{})}};t.default=c},function(e,t,n){(function(t){"use strict";function o(e,t,n){this.props=e,this.context=t,this.refs=s,this.updater=n||i}var r=n(56),i=n(184),a=n(112),s=n(52),l=n(11),u=n(12);if(o.prototype.isReactComponent={},o.prototype.setState=function(e,n){"object"!=typeof e&&"function"!=typeof e&&null!=e?"production"!==t.env.NODE_ENV?l(!1,"setState(...): takes an object of state variables to update or a function which returns an object of state variables."):r("85"):void 0,this.updater.enqueueSetState(this,e),n&&this.updater.enqueueCallback(this,n,"setState")},o.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this),e&&this.updater.enqueueCallback(this,e,"forceUpdate")},"production"!==t.env.NODE_ENV){var c={isMounted:["isMounted","Instead, make sure to clean up subscriptions and pending requests in componentWillUnmount to prevent memory leaks."],replaceState:["replaceState","Refactor your code to use setState instead (see https://github.com/facebook/react/issues/3236)."]},d=function(e,n){a&&Object.defineProperty(o.prototype,e,{get:function(){"production"!==t.env.NODE_ENV?u(!1,"%s(...) is deprecated in plain JavaScript React classes. %s",n[0],n[1]):void 0}})};for(var f in c)c.hasOwnProperty(f)&&d(f,c[f])}e.exports=o}).call(t,n(2))},function(e,t,n){(function(t){"use strict";function o(e,n){if("production"!==t.env.NODE_ENV){var o=e.constructor;"production"!==t.env.NODE_ENV?r(!1,"%s(...): Can only update a mounted or mounting component. This usually means you called %s() on an unmounted component. This is a no-op. Please check the code for the %s component.",n,n,o&&(o.displayName||o.name)||"ReactClass"):void 0}}var r=n(12),i={isMounted:function(e){return!1},enqueueCallback:function(e,t){},enqueueForceUpdate:function(e){o(e,"forceUpdate")},enqueueReplaceState:function(e,t){o(e,"replaceState")},enqueueSetState:function(e,t){o(e,"setState")}};e.exports=i}).call(t,n(2))},function(e,t,n){(function(e){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(){}t.__esModule=!0,t.compose=t.applyMiddleware=t.bindActionCreators=t.combineReducers=t.createStore=void 0;var i=n(318),a=o(i),s=n(782),l=o(s),u=n(781),c=o(u),d=n(780),f=o(d),p=n(317),h=o(p),m=n(319),v=o(m);"production"!==e.env.NODE_ENV&&"string"==typeof r.name&&"isCrushed"!==r.name&&(0,v.default)("You are currently using minified code outside of NODE_ENV === 'production'. This means that you are running a slower development build of Redux. You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify or DefinePlugin for webpack (http://stackoverflow.com/questions/30030031) to ensure you have the correct code for your production build."),t.createStore=a.default,t.combineReducers=l.default,t.bindActionCreators=c.default,t.applyMiddleware=f.default,t.compose=h.default}).call(t,n(2))},function(e,t,n){function o(){}function r(e){var n="",o=!1;return n+=e.type,t.BINARY_EVENT!=e.type&&t.BINARY_ACK!=e.type||(n+=e.attachments,n+="-"),e.nsp&&"/"!=e.nsp&&(o=!0,n+=e.nsp),null!=e.id&&(o&&(n+=",",o=!1),n+=e.id),null!=e.data&&(o&&(n+=","),n+=f.stringify(e.data)),d("encoded %j as %s",e,n),n}function i(e,t){function n(e){var n=h.deconstructPacket(e),o=r(n.packet),i=n.buffers;i.unshift(o),t(i)}h.removeBlobs(e,n)}function a(){this.reconstructor=null}function s(e){var n={},o=0;if(n.type=Number(e.charAt(0)),null==t.types[n.type])return c();if(t.BINARY_EVENT==n.type||t.BINARY_ACK==n.type){for(var r="";"-"!=e.charAt(++o)&&(r+=e.charAt(o),o!=e.length););if(r!=Number(r)||"-"!=e.charAt(o))throw new Error("Illegal attachments");n.attachments=Number(r)}if("/"==e.charAt(o+1))for(n.nsp="";++o;){var i=e.charAt(o);if(","==i)break;if(n.nsp+=i,o==e.length)break}else n.nsp="/";var a=e.charAt(o+1);if(""!==a&&Number(a)==a){for(n.id="";++o;){var i=e.charAt(o);if(null==i||Number(i)!=i){--o;break}if(n.id+=e.charAt(o),o==e.length)break}n.id=Number(n.id)}return e.charAt(++o)&&(n=l(n,e.substr(o))),d("decoded %s as %j",e,n),n}function l(e,t){try{e.data=f.parse(t)}catch(e){return c()}return e}function u(e){this.reconPack=e,this.buffers=[]}function c(e){return{type:t.ERROR,data:"parser error"}}var d=n(790)("socket.io-parser"),f=n(516),p=n(789),h=n(788),m=n(323);t.protocol=4,t.types=["CONNECT","DISCONNECT","EVENT","ACK","ERROR","BINARY_EVENT","BINARY_ACK"],t.CONNECT=0,t.DISCONNECT=1,t.EVENT=2,t.ACK=3,t.ERROR=4,t.BINARY_EVENT=5,t.BINARY_ACK=6,t.Encoder=o,t.Decoder=a,o.prototype.encode=function(e,n){if(d("encoding packet %j",e),t.BINARY_EVENT==e.type||t.BINARY_ACK==e.type)i(e,n);else{var o=r(e);n([o])}},p(a.prototype),a.prototype.add=function(e){var n;if("string"==typeof e)n=s(e),t.BINARY_EVENT==n.type||t.BINARY_ACK==n.type?(this.reconstructor=new u(n),0===this.reconstructor.reconPack.attachments&&this.emit("decoded",n)):this.emit("decoded",n);else{if(!m(e)&&!e.base64)throw new Error("Unknown type: "+e);if(!this.reconstructor)throw new Error("got binary data when not reconstructing a packet");n=this.reconstructor.takeBinaryData(e),n&&(this.reconstructor=null,this.emit("decoded",n))}},a.prototype.destroy=function(){this.reconstructor&&this.reconstructor.finishedReconstruction()},u.prototype.takeBinaryData=function(e){if(this.buffers.push(e),this.buffers.length==this.reconPack.attachments){var t=h.reconstructPacket(this.reconPack,this.buffers);return this.finishedReconstruction(),t}return null},u.prototype.finishedReconstruction=function(){this.reconPack=null,this.buffers=[]}},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children=[],e.webpackPolyfill=1),e}},function(e,t,n){(function(t){"use strict";var o=n(29),r=n(338),i=n(341),a=n(347),s=n(345),l=n(191),u="undefined"!=typeof window&&window.btoa&&window.btoa.bind(window)||n(340);e.exports=function(e){return new Promise(function(c,d){var f=e.data,p=e.headers;o.isFormData(f)&&delete p["Content-Type"];var h=new XMLHttpRequest,m="onreadystatechange",v=!1;if("test"===t.env.NODE_ENV||"undefined"==typeof window||!window.XDomainRequest||"withCredentials"in h||s(e.url)||(h=new window.XDomainRequest,m="onload",v=!0,h.onprogress=function(){},h.ontimeout=function(){}),e.auth){var y=e.auth.username||"",g=e.auth.password||"";p.Authorization="Basic "+u(y+":"+g)}if(h.open(e.method.toUpperCase(),i(e.url,e.params,e.paramsSerializer),!0),h.timeout=e.timeout,h[m]=function(){if(h&&(4===h.readyState||v)&&(0!==h.status||h.responseURL&&0===h.responseURL.indexOf("file:"))){var t="getAllResponseHeaders"in h?a(h.getAllResponseHeaders()):null,n=e.responseType&&"text"!==e.responseType?h.response:h.responseText,o={data:n,status:1223===h.status?204:h.status,statusText:1223===h.status?"No Content":h.statusText,headers:t,config:e,request:h};r(c,d,o),h=null}},h.onerror=function(){d(l("Network Error",e)),h=null},h.ontimeout=function(){d(l("timeout of "+e.timeout+"ms exceeded",e,"ECONNABORTED")),h=null},o.isStandardBrowserEnv()){var b=n(343),E=(e.withCredentials||s(e.url))&&e.xsrfCookieName?b.read(e.xsrfCookieName):void 0;E&&(p[e.xsrfHeaderName]=E)}if("setRequestHeader"in h&&o.forEach(p,function(e,t){"undefined"==typeof f&&"content-type"===t.toLowerCase()?delete p[t]:h.setRequestHeader(t,e)}),e.withCredentials&&(h.withCredentials=!0),e.responseType)try{h.responseType=e.responseType}catch(t){if("json"!==e.responseType)throw t}"function"==typeof e.onDownloadProgress&&h.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&h.upload&&h.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then(function(e){h&&(h.abort(),d(e),h=null)}),void 0===f&&(f=null),h.send(f)})}}).call(t,n(2))},function(e,t){"use strict";function n(e){this.message=e}n.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},n.prototype.__CANCEL__=!0,e.exports=n},function(e,t){"use strict";e.exports=function(e){return!(!e||!e.__CANCEL__)}},function(e,t,n){"use strict";var o=n(337);e.exports=function(e,t,n,r){var i=new Error(e);return o(i,t,n,r)}},function(e,t){"use strict";e.exports=function(e,t){return function(){for(var n=new Array(arguments.length),o=0;o0&&h==v?u.default.createElement(d.Button,{className:"btn btn-sm btn-success",onClick:function(){f(n.id)}},u.default.createElement("i",{className:"fa fa-play"})):void 0,g>0?u.default.createElement(d.Button,{className:"btn btn-sm btn-warning",onClick:function(){f(n.id)}},u.default.createElement("i",{className:"fa fa-forward"})):void 0,u.default.createElement(d.Button,{className:"btn btn-sm btn-success",onClick:function(){e.refs.step_modal_new.wrappedInstance.show({fermenter_id:n.id,name:"",temp:"",days:"",minutes:"",hours:""})}},u.default.createElement("i",{className:"fa fa-plus"}))),u.default.createElement("div",{className:"clearfix"})),u.default.createElement("div",{className:"list-group"},n.steps?n.steps.map(this.render_step.bind(this)):void 0,u.default.createElement(O.default,{ref:"step_modal",save:!0,remove:!0}),u.default.createElement(O.default,{ref:"step_modal_new",add:!0}))))}}]),t}(l.Component),S=function(e,t){var n=e.fermenter.list[t.id];return{data:n,cooler:n.cooler?e.actor.actors[n.cooler]||{}:{},heater:n.heater?e.actor.actors[n.heater]||{}:{},sensor:n.sensor?e.sensor.sensors[n.sensor]||{}:{},sensor2:n.sensor2?e.sensor.sensors[n.sensor2]||{}:{},sensor3:n.sensor3?e.sensor.sensors[n.sensor3]||{}:{},inactive_count:n.steps?n.steps.filter(function(e){return"I"===e.state}).length:0,active_count:n.steps?n.steps.filter(function(e){return"A"===e.state}).length:0,count:n.steps?n.steps.length:0,unit:(0,k.get_parameter)(e,"unit","C")}},M=function(e,t,n){return{start:function(t){ -e((0,p.start)(t))},stop:function(t){e((0,p.stop)(t))},toggle:function(t){e((0,f.toggle)(t))},toggle_automatic:function(t){e((0,p.toggle_automatic)(t))}}};P.contextTypes={router:u.default.PropTypes.shape({history:u.default.PropTypes.object.isRequired})},t.default=(0,c.connect)(S,M,null,{withRef:!0})(P)},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n(13),i=n(30),a=o(i),s=n(91),l=function(e,t){return{title:"Kettle Modal ",bsSize:"large",form:[{label:"Name",name:"name",type:"text"},{label:"Logic",clear_config:!0,name:"logic",type:"select",options:Object.keys(e.kettle.config_type)},{label:"Actor",name:"heater",type:"actor"},{label:"Agitator",name:"agitator",type:"actor"},{label:"Sensor",name:"sensor",type:"sensor"}],types:e.kettle.config_type,configfield:"logic",actors:e.actor.actors,sensors:e.sensor.sensors}},u=function(e,t,n){return{btn_save:function(t){return e((0,s.save)(t)),!0},btn_add:function(t){return e((0,s.add)(t)),!0},btn_delete:function(t){return e((0,s.remove)(t)),!0}}},c=(0,r.connect)(l,u,null,{withRef:!0})(a.default);t.default=c},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:c(),t=arguments[1];switch(t.type){case"ADDON_UPDATE_FINISHED":return i({},e,r({},t.payload,(0,u.default)(e[t.payload],{loading:{$set:!1}})));case"ADDON_UPDATE_STARTED":case"ADDON_DOWNLOAD_STARTED":return i({},e,r({},t.payload,(0,u.default)(e[t.payload],{loading:{$set:!0}})));case"ADDON_DOWNLOADED":return i({},e,r({},t.payload,(0,u.default)(e[t.payload],{installed:{$set:!0},loading:{$set:!1}})));case"DELETE_ADDON":return i({},e,r({},t.payload,(0,u.default)(e[t.payload],{installed:{$set:!1}})));case"SET_ADDON_LIST":return i({},t.payload);default:return e}});t.default=d},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t0&&void 0!==arguments[0]?arguments[0]:s(),t=arguments[1];switch(t.type){case"LOAD_STATE":return[].concat(r(t.payload.messages));case"NOTIFY":return[].concat(r(e),[t.payload]);case"DISMISS_NOTIFICATION":return e.filter(function(e,n){return e.id!==t.id});default:return e}});t.default=l},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n(13),i=n(30),a=o(i),s=n(73),l=function(e,t){return{title:"Set Date and Time",form:[{label:"Date",name:"date",type:"text"},{label:"Time",name:"time",type:"text"}]}},u=function(e,t){return{btn_save:function(t){return e((0,s.set_time)(t.date,t.time)),!0},btn_add:function(e){return!0},btn_delete:function(e){return!0}}};t.default=(0,r.connect)(l,u,null,{withRef:!0})(a.default)},function(e,t,n){e.exports={default:n(401),__esModule:!0}},function(e,t,n){e.exports={default:n(402),__esModule:!0}},function(e,t,n){e.exports={default:n(404),__esModule:!0}},function(e,t,n){e.exports={default:n(405),__esModule:!0}},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var r=n(201),i=o(r);t.default=function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);tl;)o(s,n=t[l++])&&(~i(u,n)||u.push(n));return u}},function(e,t,n){var o=n(36),r=n(26),i=n(60);e.exports=function(e,t){var n=(r.Object||{})[e]||Object[e],a={};a[e]=t(n),o(o.S+o.F*i(function(){n(1)}),"Object",a)}},function(e,t,n){var o=n(62),r=n(41),i=n(79).f;e.exports=function(e){return function(t){for(var n,a=r(t),s=o(a),l=s.length,u=0,c=[];l>u;)i.call(a,n=s[u++])&&c.push(e?[n,a[n]]:a[n]);return c}}},function(e,t,n){e.exports=n(61)},function(e,t,n){var o=n(133),r=Math.min;e.exports=function(e){return e>0?r(o(e),9007199254740991):0}},function(e,t,n){"use strict";var o=n(431)(!0);n(211)(String,"String",function(e){this._t=String(e),this._i=0},function(){var e,t=this._t,n=this._i;return n>=t.length?{value:void 0,done:!0}:(e=o(t,n),this._i+=e.length,{value:e,done:!1})})},function(e,t){e.exports=function(){var e=[];return e.toString=function(){for(var e=[],t=0;t0&&void 0!==arguments[0]?arguments[0]:(0,a.default)();try{return e.activeElement}catch(e){}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=r;var i=n(63),a=o(i);e.exports=t.default},function(e,t){"use strict";function n(e,t){return e.classList?!!t&&e.classList.contains(t):(" "+e.className+" ").indexOf(" "+t+" ")!==-1}Object.defineProperty(t,"__esModule",{value:!0}),t.default=n,e.exports=t.default},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e){var t=(0,c.default)(e),n=(0,l.default)(t),o=t&&t.documentElement,r={top:0,left:0,height:0,width:0};if(t)return(0,a.default)(o,e)?(void 0!==e.getBoundingClientRect&&(r=e.getBoundingClientRect()),r={top:r.top+(n.pageYOffset||o.scrollTop)-(o.clientTop||0),left:r.left+(n.pageXOffset||o.scrollLeft)-(o.clientLeft||0),width:(null==r.width?e.offsetWidth:r.width)||0,height:(null==r.height?e.offsetHeight:r.height)||0}):r}Object.defineProperty(t,"__esModule",{value:!0}),t.default=r;var i=n(64),a=o(i),s=n(98),l=o(s),u=n(63),c=o(u);e.exports=t.default},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e,t){var n=(0,a.default)(e);return void 0===t?n?"pageYOffset"in n?n.pageYOffset:n.document.documentElement.scrollTop:e.scrollTop:void(n?n.scrollTo("pageXOffset"in n?n.pageXOffset:n.document.documentElement.scrollLeft,t):e.scrollTop=t)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=r;var i=n(98),a=o(i);e.exports=t.default},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(){for(var e=document.createElement("div").style,t={O:function(e){return"o"+e.toLowerCase()},Moz:function(e){return e.toLowerCase()},Webkit:function(e){return"webkit"+e},ms:function(e){return"MS"+e}},n=Object.keys(t),o=void 0,r=void 0,i="",a=0;a=t[t.length-1].options.index)return void t.push(e);for(var o=0;on)return void t.splice(o,0,e)}}},{key:"reset",value:function(){this.registry=[]}},{key:"remove",value:function(e){var t=this.registry.indexOf(e);this.registry.splice(t,1)}},{key:"toString",value:function(e){return this.registry.filter(function(e){return e.attached}).map(function(t){return t.toString(e)}).join("\n")}}]),e}();t.default=r},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(e.Renderer)return e.Renderer;var t=e.virtual||!a.default;return t?c.default:l.default}Object.defineProperty(t,"__esModule",{value:!0}),t.default=r;var i=n(101),a=o(i),s=n(532),l=o(s),u=n(533),c=o(u)},function(e,t){"use strict";function n(e){return Array.isArray(e)?Array.isArray(e[0])?n(e.map(o)):e.join(", "):e}Object.defineProperty(t,"__esModule",{value:!0}),t.default=n;var o=function(e){return e.join(" ")}},function(e,t,n){var o=n(552),r=o.Symbol;e.exports=r},function(e,t){var n=/^(?:(?![^:@]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,o=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];e.exports=function(e){var t=e,r=e.indexOf("["),i=e.indexOf("]");r!=-1&&i!=-1&&(e=e.substring(0,r)+e.substring(r,i).replace(/:/g,";")+e.substring(i,e.length));for(var a=n.exec(e||""),s={},l=14;l--;)s[o[l]]=a[l]||"";return r!=-1&&i!=-1&&(s.source=t,s.host=s.host.substring(1,s.host.length-1).replace(/;/g,":"),s.authority=s.authority.replace("[","").replace("]","").replace(/;/g,":"),s.ipv6uri=!0),s}},function(e,t,n){(function(t){"use strict";var o=n(27),r=n(11),i=n(12),a=n(243),s=n(556);e.exports=function(e,n){function l(e){var t=e&&(T&&e[T]||e[k]);if("function"==typeof t)return t}function u(e,t){return e===t?0!==e||1/e===1/t:e!==e&&t!==t}function c(e){this.message=e,this.stack=""}function d(e){function o(o,u,d,f,p,h,m){if(f=f||P,h=h||d,m!==a)if(n)r(!1,"Calling PropTypes validators directly is not supported by the `prop-types` package. Use `PropTypes.checkPropTypes()` to call them. Read more at http://fb.me/use-check-prop-types");else if("production"!==t.env.NODE_ENV&&"undefined"!=typeof console){var v=f+":"+d;!s[v]&&l<3&&(i(!1,"You are manually calling a React.PropTypes validation function for the `%s` prop on `%s`. This is deprecated and will throw in the standalone `prop-types` package. You may be seeing this warning due to a third-party PropTypes library. See https://fb.me/react-warning-dont-call-proptypes for details.",h,f),s[v]=!0,l++)}return null==u[d]?o?new c(null===u[d]?"The "+p+" `"+h+"` is marked as required "+("in `"+f+"`, but its value is `null`."):"The "+p+" `"+h+"` is marked as required in "+("`"+f+"`, but its value is `undefined`.")):null:e(u,d,f,p,h)}if("production"!==t.env.NODE_ENV)var s={},l=0;var u=o.bind(null,!1);return u.isRequired=o.bind(null,!0),u}function f(e){function t(t,n,o,r,i,a){var s=t[n],l=C(s);if(l!==e){var u=O(s);return new c("Invalid "+r+" `"+i+"` of type "+("`"+u+"` supplied to `"+o+"`, expected ")+("`"+e+"`."))}return null}return d(t)}function p(){return d(o.thatReturnsNull)}function h(e){function t(t,n,o,r,i){if("function"!=typeof e)return new c("Property `"+i+"` of component `"+o+"` has invalid PropType notation inside arrayOf.");var s=t[n];if(!Array.isArray(s)){var l=C(s);return new c("Invalid "+r+" `"+i+"` of type "+("`"+l+"` supplied to `"+o+"`, expected an array."))}for(var u=0;u1?(!n&&t&&(o.className+=" "+t),p.default.createElement("div",o)):p.default.Children.only(o.children)},t}(f.Component);v.propTypes={children:m.default.any,className:m.default.string,visible:m.default.bool,hiddenClassName:m.default.string},t.default=v,e.exports=t.default},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var r=n(3),i=o(r),a=n(8),s=o(a),l=n(4),u=o(l),c=n(6),d=o(c),f=n(5),p=o(f),h=n(9),m=o(h),v=n(1),y=o(v),g=n(7),b=o(g),E=n(38),_=o(E),x={active:b.default.bool,href:b.default.string,title:b.default.node,target:b.default.string},w={active:!1},C=function(e){function t(){return(0,u.default)(this,t),(0,d.default)(this,e.apply(this,arguments))}return(0,p.default)(t,e),t.prototype.render=function(){var e=this.props,t=e.active,n=e.href,o=e.title,r=e.target,a=e.className,l=(0,s.default)(e,["active","href","title","target","className"]),u={href:n,title:o,target:r};return y.default.createElement("li",{className:(0,m.default)(a,{active:t})},t?y.default.createElement("span",l):y.default.createElement(_.default,(0,i.default)({},l,u)))},t}(y.default.Component);C.propTypes=x,C.defaultProps=w,t.default=C,e.exports=t.default},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var r=n(3),i=o(r),a=n(8),s=o(a),l=n(4),u=o(l),c=n(6),d=o(c),f=n(5),p=o(f),h=n(9),m=o(h),v=n(1),y=o(v),g=n(7),b=o(g),E=n(109),_=o(E),x=n(85),w=o(x),C=n(10),O={vertical:b.default.bool,justified:b.default.bool,block:(0,_.default)(b.default.bool,function(e){var t=e.block,n=e.vertical;return t&&!n?new Error("`block` requires `vertical` to be set to have any effect"):null})},N={block:!1,justified:!1,vertical:!1},T=function(e){function t(){return(0,u.default)(this,t),(0,d.default)(this,e.apply(this,arguments))}return(0,p.default)(t,e),t.prototype.render=function(){var e,t=this.props,n=t.block,o=t.justified,r=t.vertical,a=t.className,l=(0,s.default)(t,["block","justified","vertical","className"]),u=(0,C.splitBsProps)(l),c=u[0],d=u[1],f=(0,i.default)({},(0,C.getClassSet)(c),(e={},e[(0,C.prefix)(c)]=!r,e[(0,C.prefix)(c,"vertical")]=r,e[(0,C.prefix)(c,"justified")]=o,e[(0,C.prefix)(w.default.defaultProps,"block")]=n,e));return y.default.createElement("div",(0,i.default)({},d,{className:(0,m.default)(a,f)}))},t}(y.default.Component);T.propTypes=O,T.defaultProps=N,t.default=(0,C.bsClass)("btn-group",T),e.exports=t.default},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var r=n(3),i=o(r),a=n(8),s=o(a),l=n(4),u=o(l),c=n(6),d=o(c),f=n(5),p=o(f),h=n(9),m=o(h),v=n(1),y=o(v),g=n(7),b=o(g),E=n(20),_=o(E),x=n(642),w=o(x),C={direction:b.default.oneOf(["prev","next"]),onAnimateOutEnd:b.default.func,active:b.default.bool,animateIn:b.default.bool,animateOut:b.default.bool,index:b.default.number},O={active:!1,animateIn:!1,animateOut:!1},N=function(e){function t(n,o){(0,u.default)(this,t);var r=(0,d.default)(this,e.call(this,n,o));return r.handleAnimateOutEnd=r.handleAnimateOutEnd.bind(r),r.state={direction:null},r.isUnmounted=!1,r}return(0,p.default)(t,e),t.prototype.componentWillReceiveProps=function(e){this.props.active!==e.active&&this.setState({direction:null})},t.prototype.componentDidUpdate=function(e){var t=this,n=this.props.active,o=e.active;!n&&o&&w.default.addEndEventListener(_.default.findDOMNode(this),this.handleAnimateOutEnd),n!==o&&setTimeout(function(){return t.startAnimation()},20)},t.prototype.componentWillUnmount=function(){this.isUnmounted=!0},t.prototype.handleAnimateOutEnd=function(){this.isUnmounted||this.props.onAnimateOutEnd&&this.props.onAnimateOutEnd(this.props.index)},t.prototype.startAnimation=function(){this.isUnmounted||this.setState({direction:"prev"===this.props.direction?"right":"left"})},t.prototype.render=function(){var e=this.props,t=e.direction,n=e.active,o=e.animateIn,r=e.animateOut,a=e.className,l=(0,s.default)(e,["direction","active","animateIn","animateOut","className"]);delete l.onAnimateOutEnd,delete l.index;var u={item:!0,active:n&&!o||r};return t&&n&&o&&(u[t]=!0),this.state.direction&&(o||r)&&(u[this.state.direction]=!0),y.default.createElement("div",(0,i.default)({},l,{className:(0,m.default)(a,u)}))},t}(y.default.Component);N.propTypes=C,N.defaultProps=O,t.default=N,e.exports=t.default},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var r=n(3),i=o(r),a=n(8),s=o(a),l=n(4),u=o(l),c=n(6),d=o(c),f=n(5),p=o(f),h=n(1),m=o(h),v=n(7),y=o(v),g=n(9),b=o(g),E=n(85),_=o(E),x=n(38),w=o(x),C=n(10),O={noCaret:y.default.bool,open:y.default.bool,title:y.default.string,useAnchor:y.default.bool},N={open:!1,useAnchor:!1,bsRole:"toggle"},T=function(e){function t(){return(0,u.default)(this,t),(0,d.default)(this,e.apply(this,arguments))}return(0,p.default)(t,e),t.prototype.render=function(){var e=this.props,t=e.noCaret,n=e.open,o=e.useAnchor,r=e.bsClass,a=e.className,l=e.children,u=(0,s.default)(e,["noCaret","open","useAnchor","bsClass","className","children"]);delete u.bsRole;var c=o?w.default:_.default,d=!t;return m.default.createElement(c,(0,i.default)({},u,{role:"button",className:(0,b.default)(a,r),"aria-haspopup":!0,"aria-expanded":n}),l||u.title,d&&" ",d&&m.default.createElement("span",{className:"caret"}))},t}(m.default.Component);T.propTypes=O,T.defaultProps=N,t.default=(0,C.bsClass)("dropdown-toggle",T),e.exports=t.default},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var r=n(3),i=o(r),a=n(8),s=o(a),l=n(4),u=o(l),c=n(6),d=o(c),f=n(5),p=o(f),h=n(9),m=o(h),v=n(1),y=o(v),g=n(7),b=o(g),E=n(17),_=o(E),x=n(10),w={fluid:b.default.bool,componentClass:_.default},C={componentClass:"div",fluid:!1},O=function(e){function t(){return(0,u.default)(this,t),(0,d.default)(this,e.apply(this,arguments))}return(0,p.default)(t,e),t.prototype.render=function(){var e=this.props,t=e.fluid,n=e.componentClass,o=e.className,r=(0,s.default)(e,["fluid","componentClass","className"]),a=(0,x.splitBsProps)(r),l=a[0],u=a[1],c=(0,x.prefix)(l,t&&"fluid");return y.default.createElement(n,(0,i.default)({},u,{className:(0,m.default)(o,c)}))},t}(y.default.Component);O.propTypes=w,O.defaultProps=C,t.default=(0,x.bsClass)("container",O),e.exports=t.default},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var r=n(58),i=o(r),a=n(3),s=o(a),l=n(8),u=o(l),c=n(4),d=o(c),f=n(6),p=o(f),h=n(5),m=o(h),v=n(9),y=o(v),g=n(1),b=o(g),E=n(7),_=o(E),x=n(10),w=n(24),C={active:_.default.any,disabled:_.default.any,header:_.default.node,listItem:_.default.bool,onClick:_.default.func,href:_.default.string,type:_.default.string},O={listItem:!1},N=function(e){function t(){return(0,d.default)(this,t),(0,p.default)(this,e.apply(this,arguments))}return(0,m.default)(t,e),t.prototype.renderHeader=function(e,t){return b.default.isValidElement(e)?(0,g.cloneElement)(e,{className:(0,y.default)(e.props.className,t)}):b.default.createElement("h4",{className:t},e)},t.prototype.render=function(){var e=this.props,t=e.active,n=e.disabled,o=e.className,r=e.header,i=e.listItem,a=e.children,l=(0,u.default)(e,["active","disabled","className","header","listItem","children"]),c=(0,x.splitBsProps)(l),d=c[0],f=c[1],p=(0,s.default)({},(0,x.getClassSet)(d),{active:t,disabled:n}),h=void 0;return f.href?h="a":f.onClick?(h="button",f.type=f.type||"button"):h=i?"li":"span",f.className=(0,y.default)(o,p),r?b.default.createElement(h,f,this.renderHeader(r,(0,x.prefix)(d,"heading")),b.default.createElement("p",{className:(0,x.prefix)(d,"text")},a)):b.default.createElement(h,f,a)},t}(b.default.Component);N.propTypes=C,N.defaultProps=O,t.default=(0,x.bsClass)("list-group-item",(0,x.bsStyles)((0,i.default)(w.State),N)),e.exports=t.default},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var r=n(3),i=o(r),a=n(8),s=o(a),l=n(4),u=o(l),c=n(6),d=o(c),f=n(5),p=o(f),h=n(9),m=o(h),v=n(1),y=o(v),g=n(17),b=o(g),E=n(10),_={componentClass:b.default},x={componentClass:"div"},w=function(e){function t(){return(0,u.default)(this,t),(0,d.default)(this,e.apply(this,arguments))}return(0,p.default)(t,e),t.prototype.render=function(){var e=this.props,t=e.componentClass,n=e.className,o=(0,s.default)(e,["componentClass","className"]),r=(0,E.splitBsProps)(o),a=r[0],l=r[1],u=(0,E.getClassSet)(a);return y.default.createElement(t,(0,i.default)({},l,{className:(0,m.default)(n,u)}))},t}(y.default.Component);w.propTypes=_,w.defaultProps=x,t.default=(0,E.bsClass)("modal-body",w),e.exports=t.default},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var r=n(3),i=o(r),a=n(8),s=o(a),l=n(4),u=o(l),c=n(6),d=o(c),f=n(5),p=o(f),h=n(9),m=o(h),v=n(1),y=o(v),g=n(17),b=o(g),E=n(10),_={componentClass:b.default},x={componentClass:"div"},w=function(e){function t(){return(0,u.default)(this,t),(0,d.default)(this,e.apply(this,arguments))}return(0,p.default)(t,e),t.prototype.render=function(){var e=this.props,t=e.componentClass,n=e.className,o=(0,s.default)(e,["componentClass","className"]),r=(0,E.splitBsProps)(o),a=r[0],l=r[1],u=(0,E.getClassSet)(a);return y.default.createElement(t,(0,i.default)({},l,{className:(0,m.default)(n,u)}))},t}(y.default.Component);w.propTypes=_,w.defaultProps=x,t.default=(0,E.bsClass)("modal-footer",w),e.exports=t.default},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var r=n(3),i=o(r),a=n(8),s=o(a),l=n(4),u=o(l),c=n(6),d=o(c),f=n(5),p=o(f),h=n(9),m=o(h),v=n(1),y=o(v),g=n(7),b=o(g),E=n(10),_=n(23),x=o(_),w={"aria-label":b.default.string,closeButton:b.default.bool,onHide:b.default.func},C={"aria-label":"Close",closeButton:!1},O={$bs_modal:b.default.shape({onHide:b.default.func})},N=function(e){function t(){return(0,u.default)(this,t),(0,d.default)(this,e.apply(this,arguments))}return(0,p.default)(t,e),t.prototype.render=function(){var e=this.props,t=e["aria-label"],n=e.closeButton,o=e.onHide,r=e.className,a=e.children,l=(0,s.default)(e,["aria-label","closeButton","onHide","className","children"]),u=this.context.$bs_modal,c=(0,E.splitBsProps)(l),d=c[0],f=c[1],p=(0,E.getClassSet)(d);return y.default.createElement("div",(0,i.default)({},f,{className:(0,m.default)(r,p)}),n&&y.default.createElement("button",{type:"button",className:"close","aria-label":t,onClick:(0,x.default)(u&&u.onHide,o)},y.default.createElement("span",{"aria-hidden":"true"},"×")),a)},t}(y.default.Component);N.propTypes=w,N.defaultProps=C,N.contextTypes=O,t.default=(0,E.bsClass)("modal-header",N),e.exports=t.default},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var r=n(3),i=o(r),a=n(8),s=o(a),l=n(4),u=o(l),c=n(6),d=o(c),f=n(5),p=o(f),h=n(9),m=o(h),v=n(1),y=o(v),g=n(17),b=o(g),E=n(10),_={componentClass:b.default},x={componentClass:"h4"},w=function(e){function t(){return(0,u.default)(this,t),(0,d.default)(this,e.apply(this,arguments))}return(0,p.default)(t,e),t.prototype.render=function(){var e=this.props,t=e.componentClass,n=e.className,o=(0,s.default)(e,["componentClass","className"]),r=(0,E.splitBsProps)(o),a=r[0],l=r[1],u=(0,E.getClassSet)(a);return y.default.createElement(t,(0,i.default)({},l,{className:(0,m.default)(n,u)}))},t}(y.default.Component);w.propTypes=_,w.defaultProps=x,t.default=(0,E.bsClass)("modal-title",w),e.exports=t.default},function(e,t,n){(function(o){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var i=n(3),a=r(i),s=n(8),l=r(s),u=n(4),c=r(u),d=n(6),f=r(d),p=n(5),h=r(p),m=n(9),v=r(m),y=n(150),g=r(y),b=n(1),E=r(b),_=n(7),x=r(_),w=n(20),C=r(w),O=n(109),N=r(O),T=n(18),k=r(T),P=n(10),S=n(23),M=r(S),A=n(28),D=r(A),R={activeKey:x.default.any,activeHref:x.default.string,stacked:x.default.bool,justified:(0,N.default)(x.default.bool,function(e){var t=e.justified,n=e.navbar;return t&&n?Error("justified navbar `Nav`s are not supported"):null}),onSelect:x.default.func,role:x.default.string,navbar:x.default.bool,pullRight:x.default.bool,pullLeft:x.default.bool},I={justified:!1,pullRight:!1,pullLeft:!1,stacked:!1},j={$bs_navbar:x.default.shape({bsClass:x.default.string,onSelect:x.default.func}),$bs_tabContainer:x.default.shape({activeKey:x.default.any,onSelect:x.default.func.isRequired,getTabId:x.default.func.isRequired,getPaneId:x.default.func.isRequired})},L=function(e){function t(){return(0,c.default)(this,t),(0,f.default)(this,e.apply(this,arguments))}return(0,h.default)(t,e),t.prototype.componentDidUpdate=function(){var e=this;if(this._needsRefocus){this._needsRefocus=!1;var t=this.props.children,n=this.getActiveProps(),o=n.activeKey,r=n.activeHref,i=D.default.find(t,function(t){return e.isActive(t,o,r)}),a=D.default.toArray(t),s=a.indexOf(i),l=C.default.findDOMNode(this).children,u=l&&l[s];u&&u.firstChild&&u.firstChild.focus()}},t.prototype.handleTabKeyDown=function(e,t){var n=void 0;switch(t.keyCode){case g.default.codes.left:case g.default.codes.up:n=this.getNextActiveChild(-1);break;case g.default.codes.right:case g.default.codes.down:n=this.getNextActiveChild(1);break;default:return}t.preventDefault(),e&&n&&null!=n.props.eventKey&&e(n.props.eventKey),this._needsRefocus=!0},t.prototype.getNextActiveChild=function(e){var t=this,n=this.props.children,o=n.filter(function(e){return null!=e.props.eventKey&&!e.props.disabled}),r=this.getActiveProps(),i=r.activeKey,a=r.activeHref,s=D.default.find(n,function(e){return t.isActive(e,i,a)}),l=o.indexOf(s);if(l===-1)return o[0];var u=l+e,c=o.length;return u>=c?u=0:u<0&&(u=c-1),o[u]},t.prototype.getActiveProps=function(){var e=this.context.$bs_tabContainer;return e?("production"!==o.env.NODE_ENV?(0,k.default)(null==this.props.activeKey&&!this.props.activeHref,"Specifying a `